Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,17 @@ public void Disk_CRUD_WithArchitecture_EmptyDisk()
{
Disk_CRUD_WithArchitecture_Execute(DiskCreateOption.Empty, "Disk_CRUD_WithArchitecture_EmptyDisk", diskSizeGB: 5);
}

[Fact]
public void Disk_CRUD_WithDiskControllerType()
{
Disk_CRUD_WithDiskControllerType_Execute(DiskCreateOption.Empty, "Disk_CRUD_WithDiskControllerType", diskSizeGB: 5);
}

[Fact]
public void Disk_CRUD_OptimizeFrequentAttach()
{
Disk_OptimizeFrequentAttach_Execute(DiskCreateOption.Empty, "Disk_CRUD_OptimizeFrequentAttach", diskSizeGB: 32, location: "eastus2euap");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1613,6 +1613,173 @@ protected void Disk_CRUD_WithArchitecture_Execute(string diskCreateOption, strin
}
}
}


protected void Disk_CRUD_WithDiskControllerType_Execute(string diskCreateOption, string methodName, int? diskSizeGB = null, string location = null)
{
using (MockContext context = MockContext.Start(this.GetType(), methodName))
{
EnsureClientsInitialized(context);
DiskRPLocation = location ?? DiskRPLocation;

// Data
var rgName = TestUtilities.GenerateName(TestPrefix);
var diskName = TestUtilities.GenerateName(DiskNamePrefix);
IList<string> zones = null;
Disk disk = GenerateDefaultDisk(diskCreateOption, rgName, diskSizeGB, zones, location);
disk.SupportedCapabilities = new SupportedCapabilities { DiskControllerTypes = "SCSI" };

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

// **********
// TEST
// **********
// Put disk with SCSI diskControllerTypes
Disk diskOut = m_CrpClient.Disks.CreateOrUpdate(rgName, diskName, disk);
Validate(disk, diskOut, DiskRPLocation);

// Get
diskOut = m_CrpClient.Disks.Get(rgName, diskName);
Validate(disk, diskOut, DiskRPLocation);
Assert.NotNull(diskOut.SupportedCapabilities);
Assert.Equal("SCSI", diskOut.SupportedCapabilities.DiskControllerTypes);

// Get disk access
AccessUri accessUri = m_CrpClient.Disks.GrantAccess(rgName, diskName, AccessDataDefault);
Assert.NotNull(accessUri.AccessSAS);

// Get
diskOut = m_CrpClient.Disks.Get(rgName, diskName);
Validate(disk, diskOut, DiskRPLocation);

// Patch
const string tagKey = "tagKey";
var updatedisk = new DiskUpdate
{
Tags = new Dictionary<string, string>() { { tagKey, "tagvalue" } },
SupportedCapabilities = new SupportedCapabilities { DiskControllerTypes = "SCSI, NVMe" }
};
diskOut = m_CrpClient.Disks.Update(rgName, diskName, updatedisk);
Validate(disk, diskOut, DiskRPLocation);

// Get
diskOut = m_CrpClient.Disks.Get(rgName, diskName);
Validate(disk, diskOut, DiskRPLocation);
Assert.NotNull(diskOut.SupportedCapabilities);
Assert.Equal("SCSI, NVMe", diskOut.SupportedCapabilities.DiskControllerTypes);

// End disk access
m_CrpClient.Disks.RevokeAccess(rgName, diskName);

// Delete
m_CrpClient.Disks.Delete(rgName, diskName);

try
{
// Ensure it was really deleted
m_CrpClient.Disks.Get(rgName, diskName);
Assert.False(true);
}
catch (CloudException ex)
{
Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode);
}
}
finally
{
// Delete resource group
m_ResourcesClient.ResourceGroups.Delete(rgName);
}
}
}

protected void Disk_OptimizeFrequentAttach_Execute(string diskCreateOption, string methodName, int? diskSizeGB = null, string location = null)
{
using (MockContext context = MockContext.Start(this.GetType(), methodName))
{
EnsureClientsInitialized(context);
DiskRPLocation = location ?? DiskRPLocation;

// Data
var rgName = TestUtilities.GenerateName(TestPrefix);
var diskName = TestUtilities.GenerateName(DiskNamePrefix);
// m_CrpClient.Disks.RevokeAccess(rgName, diskName);
IList<string> zones = null;
Disk disk = GenerateDefaultDisk(diskCreateOption, rgName, diskSizeGB, zones, location);
disk.OptimizedForFrequentAttach = true;

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

// **********
// TEST
// **********
// Put disk with SCSI diskControllerTypes
Disk diskOut = m_CrpClient.Disks.CreateOrUpdate(rgName, diskName, disk);
Validate(disk, diskOut, DiskRPLocation);

// Get
diskOut = m_CrpClient.Disks.Get(rgName, diskName);
Validate(disk, diskOut, DiskRPLocation);
Assert.True(diskOut.OptimizedForFrequentAttach);


// Patch
const string tagKey = "tagKey";
var updatedisk = new DiskUpdate
{
OptimizedForFrequentAttach = false
};
diskOut = m_CrpClient.Disks.Update(rgName, diskName, updatedisk);
Validate(disk, diskOut, DiskRPLocation);

// Get
diskOut = m_CrpClient.Disks.Get(rgName, diskName);
Validate(disk, diskOut, DiskRPLocation);
Assert.NotNull(diskOut.SupportedCapabilities);
Assert.False(diskOut.OptimizedForFrequentAttach);

// Delete
m_CrpClient.Disks.Delete(rgName, diskName);

try
{
// Ensure it was really deleted
m_CrpClient.Disks.Get(rgName, diskName);
Assert.False(true);
}
catch (CloudException ex)
{
Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode);
}
}
finally
{
// Delete resource group
m_ResourcesClient.ResourceGroups.Delete(rgName);
}
}
}

#endregion

#region Generation
Expand Down
Loading