Skip to content

Commit

Permalink
Merge pull request AzureRT#30 from romahamu/makar/test_basic_scenarios
Browse files Browse the repository at this point in the history
Add Cache, StorageTarget, and Operations tests
  • Loading branch information
rebecca-makar authored Mar 9, 2020
2 parents 7939b01 + 65883e6 commit f761467
Show file tree
Hide file tree
Showing 4 changed files with 335 additions and 2 deletions.
110 changes: 109 additions & 1 deletion src/StorageCache/HPCCache.Test/ScenarioTests/HPCCacheTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,113 @@ public void TestGetCacheByResourceGroupAndName()
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test Flush-AzHpcCache by resource group and name.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestFlushCache()
{
var scripts = new string[]
{
string.Format(
"{0} {1} {2}",
"Test-FlushCache",
this.fixture.ResourceGroup.Name,
this.fixture.Cache.Name),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test Start/Stop-AzHpcCache by resource group and name.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestStartStopCache()
{
var scripts = new string[]
{
string.Format(
"{0} {1} {2}",
"Test-Stop-Start-Cache",
this.fixture.ResourceGroup.Name,
this.fixture.Cache.Name),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}


/// <summary>
/// Test New-AzHpcCache and Remove-AzHpcCache.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestNewCacheRemoveCache()
{
var scripts = new string[]
{
string.Format(
"{0} {1} {2} {3} {4} {5}",
"Test-NewCache-RemoveCache",
this.fixture.ResourceGroup.Name,
this.fixture.SubscriptionID,
this.fixture.ResourceGroup.Location,
this.fixture.VirtualNetwork.Name,
this.fixture.SubNet.Name)
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test Set-AzHpcCache by resource group and name.
/// </summary>
[Fact(Skip = "Bug in SetCache if cache has no tags, causes null pointer exception - internal server error.")]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestSetCache()
{
var scripts = new string[]
{
string.Format(
"{0} {1} {2}",
"Test-SetCache",
this.fixture.ResourceGroup.Name,
this.fixture.Cache.Name),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test Get-AzHpcCacheUsageModels.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestGetUsageModels()
{
var scripts = new string[]
{
string.Format(
"{0}",
"Test-GetUsageModels"),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test Get-AzHpcCacheSku.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestGetSku()
{
var scripts = new string[]
{
string.Format(
"{0}",
"Test-GetSku"),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}
}
}
}
119 changes: 119 additions & 0 deletions src/StorageCache/HPCCache.Test/ScenarioTests/HPCCacheTest.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,122 @@ function Test-GetAzHPCCacheByNameAndResourceGroup
write-host $cacheObj
Assert-AreEqual $CacheName $cacheObj.CacheName
}

function Test-FlushCache
{
Param($ResourceGroupName, $CacheName)
$bool = Flush-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName -PassThru -Force
Assert-AreEqual $bool True
$cacheObj = Get-AzHPCCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName
Assert-AreEqual $CacheName $cacheObj.CacheName
Assert-AreEqual "Flushing" $cacheObj.Health.state

if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
{
# In loop to check if cache is healthy yet
for ($i = 0; $i -le 5; $i++)
{
Start-Sleep -s 60
$cacheGet = Get-AzHPCCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName
if ([string]::Compare("Healthy", $cacheGet.Health.state, $True) -eq 0)
{
Assert-AreEqual $CacheName $cacheGet.CacheName
Assert-AreEqual "Healthy" $cacheGet.Health.state
break
}
Assert-False {$i -eq 5} "Cache is not Healthy after 5 min."
}
}
}

function Test-Stop-Start-Cache
{
Param($ResourceGroupName, $CacheName)
$bool = Stop-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName -PassThru -Force
Assert-AreEqual $bool True

if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
{
# In loop to check if cache is stopped
for ($i = 0; $i -le 15; $i++)
{
Start-Sleep -s 60
$cacheGet = Get-AzHPCCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName
if ([string]::Compare("Stopped", $cacheGet.Health.state, $True) -eq 0)
{
Assert-AreEqual $CacheName $cacheGet.CacheName
Assert-AreEqual "Stopped" $cacheGet.Health.state
break
}
Assert-False {$i -eq 15} "Cache is not Stopped after 15 min."
}
}
$boolStart = Start-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName -PassThru -Force
Assert-AreEqual $boolStart True

if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
{
# In loop to check if cache is healthy/started
for ($i = 0; $i -le 20; $i++)
{
Start-Sleep -s 60
$cacheGet = Get-AzHPCCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName
if ([string]::Compare("Healthy", $cacheGet.Health.state, $True) -eq 0)
{
Assert-AreEqual $CacheName $cacheGet.CacheName
Assert-AreEqual "Healthy" $cacheGet.Health.state
break
}
Assert-False {$i -eq 20} "Cache is not Healthy after 20 min."
}
}
}

function Test-NewCache-RemoveCache
{
Param($ResourceGroupName, $SubID, $Location, $Vnet, $Subnet)
$cache = "powershell2"
$sku = "Standard_2G"
$subnetUri = "/subscriptions/" + $SubID +"/resourceGroups/" + $ResourceGroupName + "/providers/Microsoft.Network/virtualNetworks/" + $Vnet + "/subnets/" + $Subnet
$cacheCreate = New-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $cache -Location $Location -CacheSize 3072 -Sku $sku -SubnetUri $subnetUri
Start-Sleep -s 2
$cacheCreated = Get-AzHpcCache -ResourceGroupName $resourceGroupName -CacheName $cache

Assert-AreEqual $cache $cacheCreated.CacheName
Assert-AreEqual $Location $cacheCreated.Location
Assert-AreEqual $ResourceGroupName $cacheCreated.ResourceGroupName
Assert-AreEqual 3072 $cacheCreated.CacheSize

$bool = Remove-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $cache -PassThru -Force
Assert-AreEqual $bool True
$getOnRemovedCache = Get-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $cache
Assert-AreEqual $cache $getOnRemovedCache.CacheName
Assert-AreEqual "Stopping" $getOnRemovedCache.Health.state
}

function Test-SetCache
{
Param($ResourceGroupName, $CacheName)
$tags = @{"tag1" = "value1"; "tag2" = "value2"}
$updateCache = Set-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName -Tag $tags
Assert-Match $updateCache.Tags '"tag2": "value2" "tag1": "value1"'
Start-Sleep -s 2
$getCache = Get-AzHpcCache -ResourceGroupName $ResourceGroupName -CacheName $CacheName
Assert-AreEqual $CacheName $getCache.CacheName
Assert-Match getCache.Tags '"tag2": "value2" "tag1": "value1"'
}

function Test-GetUsageModels
{
$usagemodel = Get-AzHpcCacheUsageModels
Assert-AreEqual 3 $usagemodel.TargetType.Count
Assert-AreEqual "READ_HEAVY_INFREQ" $usagemodel.Name.GetValue(0)
Assert-AreEqual "WRITE_WORKLOAD_15" $usagemodel.Name.GetValue(1)
Assert-AreEqual "WRITE_AROUND" $usagemodel.Name.GetValue(2)
}

function Test-GetSku
{
$sku = Get-AzHpcCacheSku
Assert-AreEqual "caches" $sku.Get(1).ResourceType
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,43 @@ public void TestGetAzHPCCacheStorageTargetByNameAndResourceGroup()
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test Set-AzHpcCacheST by resource group, cachenme, storagetarget.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestSetStorgeTarget()
{
var scripts = new string[]
{
string.Format(
"{0} {1} {2} {3}",
"Test-SetStorageTarget",
this.fixture.ResourceGroup.Name,
this.fixture.Cache.Name,
this.storageAccountFixture.StorageTarget.Name),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}

/// <summary>
/// Test New Set Remove and Get resource group, cachenme, storagetarget.
/// </summary>
[Fact]
[Trait(Category.AcceptanceType, Category.LiveOnly)]
public void TestNewGetSetRemoveST()
{
var scripts = new string[]
{
string.Format(
"{0} {1} {2} {3}",
"Test-New-Get-Remove-StorageTarget",
this.fixture.ResourceGroup.Name,
this.fixture.Cache.Name,
this.fixture.SubscriptionID),
};
HpcCacheController.NewInstance.RunPsTest(this.logger, scripts);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,71 @@
$storageTargetObj = Get-AzHPCCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $StorageTargetName
Assert-AreEqual $StorageTargetName $storageTargetObj.Name
}

function Test-New-Get-Remove-StorageTarget
{
Param($ResourceGroupName, $CacheName, $SubscriptionID)
$StorageAccountName = "cmdletsa"
$stName = "powershellstoragetarget"
$junctions = @(@{"namespacePath"="/msazure";"targetPath"="/";"nfsExport"="/"})
$containerId = "/subscriptions/" + $SubscriptionID +"/resourceGroups/" + $ResourceGroupName + "/providers/Microsoft.Storage/storageAccounts/" + $storageAccountName + "/blobServices/default/containers/cmdletcontnr4"
New-AzHpcCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName -CLFS -StorageContainerID $containerID -Junctions $junctions
Start-Sleep -s 5
$storageTarget = Get-AzHPCCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName
Assert-AreEqual $stName $storageTarget.Name
Assert-AreEqual "CLFS" $storageTarget.TargetType

if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
{
# In loop to check if StorageTarget is Succeeded
for ($i = 0; $i -le 20; $i++)
{
Start-Sleep -s 30
$storageTargetGet = Get-AzHPCCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName
if ([string]::Compare("Succeeded", $storageTargetGet.ProvisioningState, $True) -eq 0)
{
Assert-AreEqual $stName $storageTargetGet.Name
Assert-AreEqual "Succeeded" $storageTargetGet.ProvisioningState
break
}
Assert-False {$i -eq 20} "StorageTarget is not done completeling after 10 minutes."
}
}

$storageTargetRemove = Remove-AzHPCCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName -PassThru -Force
Assert-AreEqual $storageTargetRemove True
if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
{
Start-Sleep -s 120
}
}


function Test-SetStorageTarget
{
Param($ResourceGroupName, $CacheName, $stName)
$junctions = @(@{"namespacePath"="/abcdefgh";"targetPath"="/";"nfsExport"="/"})
Set-AzHpcCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName -CLFS -Junctions $junctions
Start-Sleep -s 5
$storageTarget = Get-AzHPCCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName
Assert-AreEqual $stName $storageTarget.Name
Assert-AreEqual "CLFS" $storageTarget.TargetType

if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
{
# In loop to check if StorageTarget is Succeeded
for ($i = 0; $i -le 20; $i++)
{
Start-Sleep -s 30
$storageTargetGet = Get-AzHPCCacheStorageTarget -ResourceGroupName $ResourceGroupName -CacheName $CacheName -StorageTargetName $stName
if ([string]::Compare("Succeeded", $storageTargetGet.ProvisioningState, $True) -eq 0)
{
Assert-AreEqual $stName $storageTargetGet.Name
Assert-AreEqual "Succeeded" $storageTargetGet.ProvisioningState
Assert-AreEqual "/abcdefgh" $storageTargetGet.Junctions.nameSpacePath
break
}
Assert-False {$i -eq 20} "StorageTarget is not done completeling after 10 minutes."
}
}
}

0 comments on commit f761467

Please sign in to comment.