private async Task UltraSSD_CRUD_Helper(string location, string methodName, bool useZones = false, bool sharedDisks = false)
        {
            EnsureClientsInitialized(DefaultLocation);

            // Data
            var  rgName   = Recording.GenerateAssetName(TestPrefix);
            var  diskName = Recording.GenerateAssetName(DiskNamePrefix);
            Disk disk     = GenerateBaseDisk("Empty");

            disk.Sku        = new DiskSku(DiskStorageAccountTypes.UltraSSDLRS, "Ultra");
            disk.DiskSizeGB = 32;
            if (useZones)
            {
                disk.Zones = new List <string> {
                    "1"
                };
            }
            disk.DiskMBpsReadWrite = 8;
            disk.DiskIopsReadWrite = 512;
            disk.Location          = location;
            if (sharedDisks)
            {
                disk.DiskIopsReadOnly = 512;
                disk.DiskMBpsReadOnly = 8;
                disk.MaxShares        = 2;
            }
            await ResourceGroupsOperations.CreateOrUpdateAsync(rgName, new ResourceGroup(location));

            // Put
            Disk diskOut = await WaitForCompletionAsync(await DisksOperations.StartCreateOrUpdateAsync(rgName, diskName, disk));

            Validate(disk, diskOut, location);

            // Get
            diskOut = (await DisksOperations.GetAsync(rgName, diskName)).Value;
            Validate(disk, diskOut, location);

            // Patch
            const string tagKey     = "tagKey";
            var          updatedisk = new DiskUpdate();

            updatedisk.Tags = new Dictionary <string, string>()
            {
                { tagKey, "tagValue" }
            };
            updatedisk.DiskMBpsReadWrite = 9;
            updatedisk.DiskIopsReadWrite = 600;
            if (sharedDisks)
            {
                updatedisk.DiskMBpsReadOnly = 9;
                updatedisk.DiskIopsReadOnly = 600;
                updatedisk.MaxShares        = 3;
            }
            updatedisk.Sku = new DiskSku(DiskStorageAccountTypes.UltraSSDLRS, "Ultra");
            diskOut        = await WaitForCompletionAsync(await DisksOperations.StartUpdateAsync(rgName, diskName, updatedisk));

            Validate(disk, diskOut, location, update: true);
            Assert.AreEqual(updatedisk.DiskIopsReadWrite, diskOut.DiskIopsReadWrite);
            Assert.AreEqual(updatedisk.DiskMBpsReadWrite, diskOut.DiskMBpsReadWrite);
            if (sharedDisks)
            {
                Assert.AreEqual(updatedisk.DiskIopsReadOnly, diskOut.DiskIopsReadOnly);
                Assert.AreEqual(updatedisk.DiskMBpsReadOnly, diskOut.DiskMBpsReadOnly);
                Assert.AreEqual(updatedisk.MaxShares, diskOut.MaxShares);
            }

            // Get
            diskOut = await DisksOperations.GetAsync(rgName, diskName);

            Validate(disk, diskOut, location, update: true);
            Assert.AreEqual(updatedisk.DiskIopsReadWrite, diskOut.DiskIopsReadWrite);
            Assert.AreEqual(updatedisk.DiskMBpsReadWrite, diskOut.DiskMBpsReadWrite);
            if (sharedDisks)
            {
                Assert.AreEqual(updatedisk.DiskIopsReadOnly, diskOut.DiskIopsReadOnly);
                Assert.AreEqual(updatedisk.DiskMBpsReadOnly, diskOut.DiskMBpsReadOnly);
                Assert.AreEqual(updatedisk.MaxShares, diskOut.MaxShares);
            }

            // Delete
            await WaitForCompletionAsync(await DisksOperations.StartDeleteAsync(rgName, diskName));

            try
            {
                // Ensure it was really deleted
                await DisksOperations.GetAsync(rgName, diskName);

                Assert.False(true);
            }
            catch (Exception ex)
            {
                Assert.NotNull(ex);
                //Assert.AreEqual(HttpStatusCode.NotFound, ex.Response.StatusCode);
            }
        }
예제 #2
0
        protected async Task Disk_CRUD_Execute(string diskCreateOption, string methodName, int?diskSizeGB = null, string location = null, IList <string> zones = null)
        {
            EnsureClientsInitialized(DefaultLocation);
            DiskRPLocation = location ?? DiskRPLocation;

            // Data
            var  rgName   = Recording.GenerateAssetName(TestPrefix);
            var  diskName = Recording.GenerateAssetName(DiskNamePrefix);
            Disk disk     = await GenerateDefaultDisk(diskCreateOption, rgName, diskSizeGB, zones, location);

            // **********
            // SETUP
            // **********
            // Create resource group, unless create option is import in which case resource group will be created with vm,
            // or copy in which casethe resource group will be created with the original disk.
            if (diskCreateOption != DiskCreateOption.Import && diskCreateOption != DiskCreateOption.Copy)
            {
                await ResourceGroupsOperations.CreateOrUpdateAsync(rgName, new ResourceGroup(DiskRPLocation));
            }

            // **********
            // TEST
            // **********
            // Put
            Disk diskOut = await WaitForCompletionAsync((await DisksOperations.StartCreateOrUpdateAsync(rgName, diskName, disk)));

            Validate(disk, diskOut, DiskRPLocation);

            // Get
            diskOut = await DisksOperations.GetAsync(rgName, diskName);

            Validate(disk, diskOut, DiskRPLocation);
            //string resourceGroupName, string diskName, AccessLevel access, int durationInSeconds, CancellationToken cancellationToken = default
            // Get disk access
            AccessUri accessUri = await WaitForCompletionAsync(await DisksOperations.StartGrantAccessAsync(rgName, diskName, new GrantAccessData(AccessDataDefault.Access, AccessDataDefault.DurationInSeconds)));

            Assert.NotNull(accessUri.AccessSAS);

            // Get
            diskOut = await DisksOperations.GetAsync(rgName, diskName);

            Validate(disk, diskOut, DiskRPLocation);

            // Patch
            // TODO: Bug 9865640 - DiskRP doesn't follow patch semantics for zones: skip this for zones
            if (zones == null)
            {
                const string tagKey     = "tageKey";
                var          updatedisk = new DiskUpdate();
                updatedisk.Tags = new Dictionary <string, string>()
                {
                    { tagKey, "tagvalue" }
                };
                diskOut = await WaitForCompletionAsync(await DisksOperations.StartUpdateAsync(rgName, diskName, updatedisk));

                Validate(disk, diskOut, DiskRPLocation);
            }

            // Get
            diskOut = await DisksOperations.GetAsync(rgName, diskName);

            Validate(disk, diskOut, DiskRPLocation);

            // End disk access
            await WaitForCompletionAsync(await DisksOperations.StartRevokeAccessAsync(rgName, diskName));

            // Delete
            await WaitForCompletionAsync(await DisksOperations.StartDeleteAsync(rgName, diskName));

            try
            {
                // Ensure it was really deleted
                await DisksOperations.GetAsync(rgName, diskName);

                Assert.False(true);
            }
            catch (Exception ex)
            {
                Assert.NotNull(ex);
                //Assert.AreEqual(HttpStatusCode.NotFound, ex.Response.StatusCode);
            }
        }