diff --git a/src/Storage/RegressionTests/README.md b/src/Storage/RegressionTests/README.md new file mode 100644 index 000000000000..283f42cd0a02 --- /dev/null +++ b/src/Storage/RegressionTests/README.md @@ -0,0 +1,20 @@ +#Before running the tests: +1. Create a directory called "data" under directory "RegressionTests" and create files with following names and sizes: + | File Name | Size | + |--------------------|---------| + | testfile_1K_0 | 1KB | + | testfile_10M | 10M | + | testfile_300M | 300M | + | testfile_2048K | 2048K | + | testfile_10240K_0 | 10240K | + | testfile_300000K_0 | 300000K | + +2. Create a directoy called "created" under directory "RegressionTests" +3. Fill in the placeholders in config_template.xml and change its name to config.xml + +#To run the tests line by line: + +1. If using local builds of the modules, import Az.Accounts and Az.Storage with the following commands: + Import-Module {path to azure-powershell}\azure-powershell\artifacts\Debug\Az.Accounts\Az.Accounts.psd1 + Import-Module {path to azure-powershell}\azure-powershell\artifacts\Debug\Az.Storage\Az.Storage.psd1 +2. cd to {path to auzre-powershell repo}\azure-powershell\src\Storage\RegressionTests diff --git a/src/Storage/RegressionTests/dataplane.ps1 b/src/Storage/RegressionTests/dataplane.ps1 index bcf0105cb776..3c170577058d 100644 --- a/src/Storage/RegressionTests/dataplane.ps1 +++ b/src/Storage/RegressionTests/dataplane.ps1 @@ -2,14 +2,14 @@ BeforeAll { # Modify the path to your own - Import-Module $PSScriptRoot\utils.ps1 + Import-Module .\utils.ps1 - [xml]$config = Get-Content D:\code\azure-powershell\src\Storage\RegressionTests\config.xml + [xml]$config = Get-Content .\config.xml $globalNode = $config.SelectSingleNode("config/section[@id='global']") $testNode = $config.SelectSingleNode("config/section[@id='dataplane']") - $rootFolder = "C:\temp" # The folder should be created before tests - cd $rootFolder + # $rootFolder = "C:\temp" # The folder should be created before tests + # cd $rootFolder $resourceGroupName = $globalNode.resourceGroupName $storageAccountName = $testNode.SelectSingleNode("accountName[@id='1']").'#text' @@ -26,11 +26,11 @@ BeforeAll { $ctx = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey1 $ctx2 = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName2).Context - $localSrcFile = "C:\temp\testfile_10240K_0" # The file needs to exist before tests, and the size should be 10240K - $localSmallSrcFile = "C:\temp\testfile_1K_0" # The file needs to exist before tests, abd the size should be 1K - $localBigSrcFile = "C:\temp\testfile_300000K_0"# The file needs to exist before tests, and the size should be 300000K + $localSrcFile = ".\data\testfile_10240K_0" # The file needs to exist before tests, and the size should be 10240K + $localSmallSrcFile = ".\data\testfile_1K_0" # The file needs to exist before tests, abd the size should be 1K + $localBigSrcFile = ".\data\testfile_300000K_0"# The file needs to exist before tests, and the size should be 300000K - $localDestFile = "C:\temp\test1.txt" # test will create the file + $localDestFile = ".\created\test1.txt" # test will create the file $containerName = GetRandomContainerName New-AzStorageContainer $containerName -Context $ctx @@ -47,8 +47,8 @@ Describe "dataplane test" { It "Blob Version test" -Tag "blobversion" { $Error.Clear() - $localSrcFile = "C:\temp\testfile_2048K" #The file need exist before test, and should be 512 bytes aligned - $localDestFile = "C:\temp\testversion.txt" # test will create the file + $localSrcFile = ".\data\testfile_2048K" #The file need exist before test, and should be 512 bytes aligned + $localDestFile = ".\created\testversion.txt" # test will create the file $blobname = "aa.txt" $blobname2 = "bb.txt" @@ -149,7 +149,7 @@ Describe "dataplane test" { $false | should -be $blobsnapshot.BlobBaseClient.Exists().value #cleanup - #Remove-AzStorageContainer $containerName -Context $ctx -Force + # Remove-AzStorageContainer $containerName -Context $ctx -Force $Error.Count | should -be 0 } @@ -171,8 +171,8 @@ Describe "dataplane test" { $sas = New-AzStorageBlobSASToken -container $containerName -Blob test.txt -Permission w -Context $ctx $ctxsas = New-AzStorageContext -StorageAccountName $ctx.StorageAccountName -SasToken $sas $a = Set-AzStorageBlobContent -File $localSrcFile -Container $containerName -Blob test.txt -Force -Properties @{"ContentType" = "image/jpeg"; "ContentMD5" = "i727sP7HigloQDsqadNLHw=="} -Metadata @{"tag1" = "value1"; "tag2" = "value22" } -Context $ctxsas - $a = Set-AzStorageBlobContent -File testfile_2048K -Container $containerName -Blob test.txt -Force -Properties @{"ContentType" = "image/jpeg"; "ContentMD5" = "i727sP7HigloQDsqadNLHw=="} -Metadata @{"tag1" = "value1"; "tag2" = "value22" } -Context $ctxsas - $a = Set-AzStorageBlobContent -File .\testfile_2048K -Container $containerName -Blob test.txt -Force -Context $ctxsas -StandardBlobTier cool + # upload blob with access tier + $a = Set-AzStorageBlobContent -File $localSrcFile -Container $containerName -Blob test.txt -Force -Context $ctx -StandardBlobTier cool $a.ICloudBlob.Properties.StandardBlobTier | should -Be "Cool" $b = Get-AzStorageContainer -Name $containerName -Context $ctx |Get-AzStorageBlob $b.Count | Should -BeGreaterOrEqual 1 @@ -181,6 +181,7 @@ Describe "dataplane test" { $sas = New-AzStorageBlobSASToken -container $containerName -Blob test.txt -Permission w -Context $ctx $ctxsas = New-AzStorageContext -StorageAccountName $ctx.StorageAccountName -SasToken $sas.Substring(1) $bs = Get-AzStorageBlob -Container $containerName -Context $ctx + $bs[0].BlobType | Should -Not -Be $null $bs[0].ListBlobProperties | should -Not -Be $null $bs[0].ListBlobProperties.Properties | should -Not -Be $null $bs[0].ListBlobProperties.Properties.BlobType | should -Not -Be $null @@ -236,10 +237,10 @@ Describe "dataplane test" { # download blob Get-AzStorageBlobContent -Container $containerName -Blob test1.txt -Destination $localDestFile -Force -Context $ctx del $localDestFile - Get-AzStorageBlobContent -Container $containerName -Blob test1.txt -Destination test1.txt -Force -Context $ctx + Get-AzStorageBlobContent -Container $containerName -Blob test1.txt -Destination $localDestFile -Force -Context $ctx del $localDestFile Get-AzStorageBlobContent -Container $containerName -Blob test1.txt -Force -Context $ctx - del $localDestFile + del test1.txt $Error.Count | should -be 0 } @@ -302,7 +303,7 @@ Describe "dataplane test" { $t | wait-job $t.State | should -be "Completed" - $t = Set-AzStorageBlobContent -File testfile_2048K -Container $containerName -Blob test.txt -Force -Context $ctx -asjob + $t = Set-AzStorageBlobContent -File .\data\testfile_2048K -Container $containerName -Blob test.txt -Force -Context $ctx -asjob $t | wait-job $t.State | should -be "Completed" @@ -313,7 +314,7 @@ Describe "dataplane test" { $t.State | should -be "Completed" del $localDestFile - $t = Get-AzStorageBlobContent -Container $containerName -Blob test.txt -Destination test1.txt -Force -Context $ctx -asjob + $t = Get-AzStorageBlobContent -Container $containerName -Blob test.txt -Destination $localDestFile -Force -Context $ctx -asjob $t | wait-job $t.State | should -be "Completed" del $localDestFile @@ -350,7 +351,7 @@ Describe "dataplane test" { Get-AzStorageShare -Context $ctx Set-AzStorageShareQuota -ShareName $containerName -Quota 500 -Context $ctx New-AzStorageDirectory -ShareName $containerName -Path testdir -Context $ctx - Set-AzStorageFileContent -source testfile_2048K -ShareName $containerName -Path test.txt -Force -Context $ctx + Set-AzStorageFileContent -source .\data\testfile_2048K -ShareName $containerName -Path test.txt -Force -Context $ctx Set-AzStorageFileContent -source $localSrcFile -ShareName $containerName -Path test.txt -PreserveSMBAttribute -Force -Context $ctx $file = Get-AzStorageFile -ShareName $containerName -Path test.txt -Context $ctx $localFileProperties = Get-ItemProperty $localSrcFile @@ -376,9 +377,9 @@ Describe "dataplane test" { Get-AzStorageFile -ShareName $containerName -Context $ctx Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination $localDestFile -Force -Context $ctx del $localDestFile - Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination test1.txt -Force -Context $ctx + Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination $localDestFile -Force -Context $ctx del $localDestFile - Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination .\test1.txt -Force -Context $ctx + Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination $localDestFile -Force -Context $ctx del $localDestFile Get-AzStorageFileContent -ShareName $containerName -Path test1.txt -PreserveSMBAttribute -Force -Context $ctx $file = Get-AzStorageFile -ShareName $containerName -Context $ctx | ? {$_.Name -eq "test1.txt"} @@ -387,11 +388,11 @@ Describe "dataplane test" { $localFileProperties.LastWriteTime.ToUniversalTime().Ticks | should -Be $file[0].ListFileProperties.Properties.LastWrittenOn.ToUniversalTime().Ticks $localFileProperties.Attributes.ToString() | should -Be $file[0].ListFileProperties.FileAttributes.ToString() - # $localFileProperties.CreationTime.ToUniversalTime().Ticks | should -Be $file[0].FileProperties.SmbProperties.FileCreatedOn.ToUniversalTime().Ticks - # $localFileProperties.LastWriteTime.ToUniversalTime().Ticks | should -Be $file[0].FileProperties.SmbProperties.FileLastWrittenOn.ToUniversalTime().Ticks - # $localFileProperties.Attributes.ToString() | should -Be $file[0].FileProperties.SmbProperties.FileAttributes.ToString() + # $localFileProperties.CreationTime.ToUniversalTime().Ticks | should -Be $file[0].FileProperties.SmbProperties.FileCreatedOn.ToUniversalTime().Ticks + # $localFileProperties.LastWriteTime.ToUniversalTime().Ticks | should -Be $file[0].FileProperties.SmbProperties.FileLastWrittenOn.ToUniversalTime().Ticks + # $localFileProperties.Attributes.ToString() | should -Be $file[0].FileProperties.SmbProperties.FileAttributes.ToString() - del $localDestFile -Force + # del $localDestFile -Force $Error.Count | should -be 0 } @@ -403,7 +404,7 @@ Describe "dataplane test" { $t | wait-job $t.State | should -be "Completed" - $t = Set-AzStorageFileContent -source .\testfile_2048K -ShareName $containerName -Path test.txt -Force -Context $ctx -asjob + $t = Set-AzStorageFileContent -source .\data\testfile_2048K -ShareName $containerName -Path test.txt -Force -Context $ctx -asjob $t | wait-job $t.State | should -be "Completed" @@ -414,7 +415,7 @@ Describe "dataplane test" { $t.State | should -be "Completed" del $localDestFile - $t = Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination ..\temp\test1.txt -Force -Context $ctx -asjob + $t = Get-AzStorageFileContent -ShareName $containerName -Path test.txt -Destination $localDestFile -Force -Context $ctx -asjob $t | wait-job $t.State | should -be "Completed" del $localDestFile @@ -632,10 +633,9 @@ Describe "dataplane test" { AllowedHeaders=@("x-ms-meta-target*","x-ms-meta-customheader"); MaxAgeInSeconds=30; AllowedMethods=@("Put")}) - sleep 20 + sleep 30 $rule = Get-AzStorageCORSRule -ServiceType table -Context $ctx $rule.count | should -be 2 - 2 | should -be $rule.Count Remove-AzStorageCORSRule -ServiceType table -Context $ctx sleep 30 $rule = Get-AzStorageCORSRule -ServiceType table -Context $ctx @@ -664,7 +664,6 @@ Describe "dataplane test" { get-AzStorageContainerStoredAccessPolicy -Container $containerName -Context $ctx $Error.Count | should -be 0 - } It "Share access policy" -Tag "accesspolicy" { @@ -780,10 +779,10 @@ Describe "dataplane test" { It "Upload Download FileTree" { $Error.Clear() - Upload_Download_BlobTree $ctx c:\temp 'Block' - Upload_Download_BlobTree $ctx c:\temp 'Page' - Upload_Download_BlobTree $ctx c:\temp 'Append' - Upload_Download_FileTree $ctx c:\temp + Upload_Download_BlobTree $ctx ((Get-Location).ToString()+"\data") 'Block' + Upload_Download_BlobTree $ctx ((Get-Location).ToString()+"\data") 'Page' + Upload_Download_BlobTree $ctx ((Get-Location).ToString()+"\data") 'Append' + Upload_Download_FileTree $ctx ((Get-Location).ToString()+"\data") $Error.Count | should -be 0 } @@ -1091,7 +1090,7 @@ Describe "dataplane test" { $accountName = $testNode.SelectSingleNode("accountName[@id='3']").'#text' $ctx = (Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountName).Context - $localSrcFile = "C:\temp\testfile_1K_0" + $localSrcFile = ".\data\testfile_1K_0" $filesystemName = "retestsoftdelete" # enable soft delete (on blob, also on hns) @@ -1150,17 +1149,40 @@ Describe "dataplane test" { $blobTypes = @("Block", "Page", "Append") - $containerSAS = New-AzStorageContainerSASToken -Name $containerName -Permission rwdl -ExpiryTime (Get-Date).AddDays(100) -Context $ctx - $sasctx = New-AzStorageContext -StorageAccountName $ctx.StorageAccountName -SasToken $containerSAS + $account1 = New-AzStorageAccount -ResourceGroupName $resourceGroupName -Name "testblobcopy1" -SkuName Standard_LRS -Location eastus2 + $account2 = New-AzStorageAccount -ResourceGroupName $resourceGroupName -Name "testblobcopy2" -SkuName Standard_LRS -Location eastus2 + + Update-AzStorageBlobServiceProperty -ResourceGroupName $resourceGroupName -StorageAccountName "testblobcopy1" -IsVersioningEnabled $true + + $ctx11 = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name "testblobcopy1").Context + $ctx12 = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name "testblobcopy2").Context + + $ctxoauth11 = New-AzStorageContext -StorageAccountName "testblobcopy1" + $ctxoauth12 = New-AzStorageContext -StorageAccountName "testblobcopy2" + + $containerSAS = New-AzStorageContainerSASToken -Name $containerName -Permission rwdl -ExpiryTime (Get-Date).AddDays(100) -Context $ctx11 + $sasctx = New-AzStorageContext -StorageAccountName $ctx11.StorageAccountName -SasToken $containerSAS + + $blobCopySrcFile10M = ".\data\testfile_10M" + $blobCopySrcFile300M = ".\data\testfile_300M" + + try { + Remove-AzStorageContainer -Name $containerName -Context $ctx11 -Force -ErrorAction Stop + Remove-AzStorageContainer -Name $containerName -Context $ctx12 -Force -ErrorAction Stop + } + catch + { + "Containers don't exist" + } # Create the containers and upload the src blobs - if ($false) { - New-AzStorageContainer -Name $containerName -Context $ctx - New-AzStorageContainer -Name $containerName -Context $ctx2 + if ($true) { + New-AzStorageContainer -Name $containerName -Context $ctx11 + New-AzStorageContainer -Name $containerName -Context $ctx12 foreach ($srcType in $blobTypes) { - $smallSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile10M -Container $containerName -Blob "$($srctype)SmallSource" -Context $ctx -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"} - $largeSrcBlob = Set-AzStorageBlobContent -File $localBigSrcFile -Container $containerName -Blob "$($srctype)LargeSource" -Context $ctx -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"} + $smallSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile10M -Container $containerName -Blob "$($srctype)SmallSource" -Context $ctx11 -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"} -Force + $largeSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile300M -Container $containerName -Blob "$($srctype)LargeSource" -Context $ctx11 -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"} -Force } } @@ -1168,16 +1190,18 @@ Describe "dataplane test" { foreach ($srcType in $blobTypes) { foreach ($destType in $blobTypes) { # Small src file. Key ctx - $smallDestBlob = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $ctx -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest" -DestContext $ctx2 -DestBlobType $destType -Force + $smallDestBlob = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $ctx11 -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest" -DestContext $ctx12 -DestBlobType $destType -Force $smallDestBlob.Name | Should -Be "$($srctype)TO$($desttype)SmallDest" $smallDestBlob.BlobProperties.ContentType | Should -Be "image/jpeg" $smallDestBlob.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length $smallDestBlob.BlobProperties.Metadata.Count | Should -Be 2 - $smallDestBlob.BlobBaseClient.AccountName | Should -Be $storageAccountName2 + $smallDestBlob.BlobBaseClient.AccountName | Should -Be "testblobcopy2" # compare content $smallDestBlob | Get-AzStorageBlobContent -Destination $localDestFile -Force - CompareFileMD5 $localBigSrcFile $localDestFile + $path1 = (Get-Location).ToString()+$blobCopySrcFile10M + $path2 = (Get-Location).ToString()+$localDestFile + CompareFileMD5 $path1 $path2 del $localDestFile $smallDestBlob | Remove-AzStorageBlob @@ -1186,52 +1210,56 @@ Describe "dataplane test" { $smallDestBlob2.Name | Should -Be "$($srctype)TO$($desttype)SmallDest2" $smallDestBlob2.BlobProperties.ContentType | Should -Be "image/jpeg" $smallDestBlob2.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length - $smallDestBlob2.BlobProperties.Metadata | Should -Be 2 - $smallDestBlob2.BlobBaseClient.AccountName | Should -Be $storageAccountName + $smallDestBlob2.BlobProperties.Metadata.Count | Should -Be 2 + $smallDestBlob2.BlobBaseClient.AccountName | Should -Be "testblobcopy1" $smallDestBlob2 | Get-AzStorageBlobContent -Destination $localDestFile -Force - CompareFileMD5 $localBigSrcFile $localDestFile + CompareFileMD5 $path1 $path2 del $localDestFile $smallDestBlob2 | Remove-AzStorageBlob # Small src file. oauth ctx - $smallDestBlob3 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $ctxoauth1 -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest3" -DestContext $ctxoauth2 -DestBlobType $destType -Force + $smallDestBlob3 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $ctxoauth11 -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest3" -DestContext $ctxoauth12 -DestBlobType $destType -Force $smallDestBlob3.Name | Should -Be "$($srctype)TO$($desttype)SmallDest3" $smallDestBlob3.BlobProperties.ContentType | Should -Be "image/jpeg" $smallDestBlob3.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length - $smallDestBlob3.BlobProperties.Metadata | Should -Be 2 - $smallDestBlob3.BlobBaseClient.AccountName | Should -Be $storageAccountName2 + $smallDestBlob3.BlobProperties.Metadata.Count | Should -Be 2 + $smallDestBlob3.BlobBaseClient.AccountName | Should -Be "testblobcopy2" $smallDestBlob3 | Get-AzStorageBlobContent -Destination $localDestFile -Force - CompareFileMD5 $localBigSrcFile $localDestFile + CompareFileMD5 $path1 $path2 del $localDestFile $smallDestBlob3 | Remove-AzStorageBlob - $largeDestBlob = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srcType)BigSource" -Context $ctx -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)BigDest" -DestContext $ctxoauth1 -DestBlobType $destType -Force + $largeDestBlob = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srcType)LargeSource" -Context $ctx11 -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)BigDest" -DestContext $ctxoauth11 -DestBlobType $destType -Force $largeDestBlob.Name | Should -Be "$($srcType)TO$($destType)BigDest" $largeDestBlob.BlobProperties.ContentType | Should -Be "image/jpeg" - $largeDestBlob.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length - $largeDestBlob.BlobProperties.Metadata | Should -Be 2 - $largeDestBlob.BlobBaseClient.AccountName | Should -Be $storageAccountName + $largeDestBlob.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile300M).Length + $largeDestBlob.BlobProperties.Metadata.Count | Should -Be 2 + $largeDestBlob.BlobBaseClient.AccountName | Should -Be "testblobcopy1" $largeDestBlob | Get-AzStorageBlobContent -Destination $localDestFile -Force - CompareFileMD5 $localBigSrcFile $localDestFile + $path1 = (Get-Location).ToString()+$blobCopySrcFile300M + CompareFileMD5 $path1 $path2 del $localDestFile $largeDestBlob | Remove-AzStorageBlob } } # Block to block with access tier and rehydrate priority set - $blockToBlock1 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "BlockSmallSource" -Context $ctx -DestContainer $containerName -DestBlob "BlockToBlockWithAccessTier" -DestContext $ctx2 -DestBlobType $destType -StandardBlobTier "Cool" -RehydratePriority High -Force + $blockToBlock1 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "BlockSmallSource" -Context $ctx11 -DestContainer $containerName -DestBlob "BlockToBlockWithAccessTier" -DestContext $ctx12 -DestBlobType Block -StandardBlobTier "Cool" -RehydratePriority High -Force $blockToBlock1.AccessTier | Should -Be "Cool" # blob version - $smallSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile10M -Container $containerName -Blob "$($srctype)SmallSource" -Context $ctx -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"} - $blobs = Get-AzStorageBlob -Container $containerName -Context $ctx -IncludeVersion - $blobVersion = $blob[1] - $destBlob = $blobVersion | Copy-AzStorageBlob -DestBlob "blobVersionToBlock" -DestBlobType Block -DestContext $ctx2 -Force + $smallSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile10M -Container $containerName -Blob "$($srctype)SmallSource" -Context $ctx11 -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"} -Force + $blobs = Get-AzStorageBlob -Container $containerName -Context $ctx11 -IncludeVersion -Prefix "$($srctype)SmallSource" + $blobVersion = $blobs[1] + $destBlob = $blobVersion | Copy-AzStorageBlob -DestContainer $containerName -DestBlob "blobVersionToBlock" -DestBlobType Block -DestContext $ctx12 -Force $destBlob.Name | Should -Be "blobVersionToBlock" + Remove-AzStorageAccount -ResourceGroupName $resourceGroupName -Name "testblobcopy1" -Force + Remove-AzStorageAccount -ResourceGroupName $resourceGroupName -Name "testblobcopy2" -Force + $Error.Count | should -be 0 } @@ -1276,7 +1304,7 @@ Describe "dataplane test" { ### Delete $share2 = Get-AzStorageShare -Name $shareName2 -Context $ctx - Set-AzStorageFileContent -ShareName $shareName2 -Source C:\temp\1.txt -Path testfile -Context $ctx -Force + Set-AzStorageFileContent -ShareName $shareName2 -Source $localSrcFile -Path testfile -Context $ctx -Force Remove-AzStorageShare -Share $share2.CloudFileShare -Force $share2.ShareClient.Exists().Value | should -be $false @@ -1605,8 +1633,6 @@ Describe "dataplane test" { $f.ShareFileClient.AccountName | should -be $ctx2.StorageAccountName $f.ShareFileClient.Path | should -be "dir1/copydest" - - # Get copy state ## Prepare a big blob $biglocalfile = $localBigSrcFile diff --git a/src/Storage/RegressionTests/runStable.ps1 b/src/Storage/RegressionTests/runStable.ps1 index 4176fa2dd214..4d27cab1a923 100644 --- a/src/Storage/RegressionTests/runStable.ps1 +++ b/src/Storage/RegressionTests/runStable.ps1 @@ -3,14 +3,14 @@ #Import-Module d:\code\PSH_Dev\artifacts\Debug\Az.Accounts\Az.Accounts.psd1 #Import-Module d:\code\PSH_Dev\artifacts\Debug\Az.Storage\Az.Storage.psd1 - +cd $PSScriptRoot Import-Module $PSScriptRoot\utils.ps1 # Import-Module $PSScriptRoot\Assert.ps1 # $preview = $true -Invoke-Pester $PSScriptRoott\dataplane.ps1 -Show All -Strict # -TagFilter ToTest # -TagFilter blobversion,qq +Invoke-Pester $PSScriptRoot\dataplane.ps1 -Show All -Strict # -TagFilter ToTest # -TagFilter blobversion,qq Invoke-Pester $PSScriptRoot\adls.ps1 -Show All -Strict Invoke-Pester $PSScriptRoot\adls_setaclresusive.ps1 -Show All -Strict Invoke-Pester $PSScriptRoot\srp.ps1 -Show All -Strict -ExcludeTagFilter "longrunning" # -TagFilter "fail" diff --git a/src/Storage/RegressionTests/srp.ps1 b/src/Storage/RegressionTests/srp.ps1 index 21f23cd96c7c..4908e0ce44bb 100644 --- a/src/Storage/RegressionTests/srp.ps1 +++ b/src/Storage/RegressionTests/srp.ps1 @@ -1,13 +1,9 @@ # Invoke-Pester C:\Users\weiwei\Desktop\PSH_Script\PSHTest\dataplane.ps1 -Show All -Strict -ExcludeTagFilter "Preview" BeforeAll { - # Import-Module D:\code\azure-powershell\artifacts\Debug\Az.Accounts\Az.Accounts.psd1 - # Import-Module D:\code\azure-powershell\artifacts\Debug\Az.Storage\Az.Storage.psd1 + Import-Module .\utils.ps1 - # Modify the path to your own - Import-Module $PSScriptRoot\utils.ps1 - - [xml]$config = Get-Content D:\code\azure-powershell\src\Storage\RegressionTests\config.xml + [xml]$config = Get-Content .\config.xml $globalNode = $config.SelectSingleNode("config/section[@id='global']") $testNode = $config.SelectSingleNode("config/section[@id='srp']") @@ -1469,7 +1465,7 @@ Describe "Management plan test" { $t = Get-AzResourceGroup | ? {$_.ResourceGroupName -like "testUid*"} | Remove-AzResourceGroup -Force -asjob - $rgName = 'testUid'; + $rgName = "testUid2" $keyvaultName = $testNode.userIdentity.SelectSingleNode("keyVaultName[@id='1']").'#text' $keyvaultUri = "https://$($keyvaultName).vault.azure.net:443" $keyname = "wrappingKey" @@ -1519,53 +1515,53 @@ Describe "Management plan test" { # remove-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $rgName # create 2 User identity, and give them access to keyvault - $userId3 = New-AzUserAssignedIdentity -ResourceGroupName $rgName -Name regressiontestid3 + $userId3 = New-AzUserAssignedIdentity -ResourceGroupName $rgName -Name regressiontestid3 -Location $location Set-AzKeyVaultAccessPolicy -VaultName $keyvaultName -ResourceGroupName $rgName -ObjectId $userId3.PrincipalId -PermissionsToKeys get,wrapkey,unwrapkey -BypassObjectIdValidation $useridentity= $userId3.Id - $userId4 = New-AzUserAssignedIdentity -ResourceGroupName $rgName -Name regressiontestid4 + $userId4 = New-AzUserAssignedIdentity -ResourceGroupName $rgName -Name regressiontestid4 -Location $location Set-AzKeyVaultAccessPolicy -VaultName $keyvaultName -ResourceGroupName $rgName -ObjectId $userId4.PrincipalId -PermissionsToKeys get,wrapkey,unwrapkey -BypassObjectIdValidation $useridentity2= $userId4.Id # Remove-AzUserAssignedIdentity -ResourceGroupName $rgName -Name regressiontestid3 } # Create Account with UAI (SystemAssignedUserAssigned) - $storageAccountName = $accountNamePrefix+"1" - $account = New-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Kind StorageV2 -SkuName Standard_LRS -Location eastus2 ` - -UserAssignedIdentityId $useridentity -IdentityType SystemAssignedUserAssigned ` - -KeyName $keyname -KeyVaultUri $keyvaultUri -KeyVaultUserAssignedIdentityId $useridentity #-debug + $storageAccountName = $accountNamePrefix+"1" + $account = New-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Kind StorageV2 -SkuName Standard_LRS -Location eastus2 ` + -UserAssignedIdentityId $useridentity -IdentityType SystemAssignedUserAssigned ` + -KeyName $keyname -KeyVaultUri $keyvaultUri -KeyVaultUserAssignedIdentityId $useridentity #-debug - $account.Identity.Type | should -be "SystemAssigned,UserAssigned" - $account.Identity.UserAssignedIdentities.Count | should -BeGreaterOrEqual 1 - $account.Encryption.KeySource | Should -Be Microsoft.Keyvault - $account.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity | Should -Be $useridentity - $account.Encryption.KeyVaultProperties.KeyVaultUri | Should -Be $keyvaultUri - $account.Encryption.KeyVaultProperties.KeyName | Should -Be $keyname + $account.Identity.Type | should -be "SystemAssigned,UserAssigned" + $account.Identity.UserAssignedIdentities.Count | should -BeGreaterOrEqual 1 + $account.Encryption.KeySource | Should -Be Microsoft.Keyvault + $account.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity | Should -Be $useridentity + $account.Encryption.KeyVaultProperties.KeyVaultUri | Should -Be $keyvaultUri + $account.Encryption.KeyVaultProperties.KeyName | Should -Be $keyname # 10 CMK1+UAI1 -> CMK2+UAI2 - $account = Set-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -IdentityType SystemAssignedUserAssigned -UserAssignedIdentityId $useridentity2 -KeyVaultUserAssignedIdentityId $useridentity2 - $account.Identity.Type | should -be "SystemAssigned,UserAssigned" - $account.Identity.UserAssignedIdentities.Count | should -Be 1 - $account.Identity.UserAssignedIdentities[$useridentity2] | should -Not -be $null - $account.Encryption.KeySource | Should -Be Microsoft.Keyvault - $account.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity | Should -Be $useridentity2 - $account.Encryption.KeyVaultProperties.KeyVaultUri | Should -Be $keyvaultUri - $account.Encryption.KeyVaultProperties.KeyName | Should -Be $keyname + $account = Set-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -IdentityType SystemAssignedUserAssigned -UserAssignedIdentityId $useridentity2 -KeyVaultUserAssignedIdentityId $useridentity2 + $account.Identity.Type | should -be "SystemAssigned,UserAssigned" + $account.Identity.UserAssignedIdentities.Count | should -Be 1 + $account.Identity.UserAssignedIdentities[$useridentity2] | should -Not -be $null + $account.Encryption.KeySource | Should -Be Microsoft.Keyvault + $account.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity | Should -Be $useridentity2 + $account.Encryption.KeyVaultProperties.KeyVaultUri | Should -Be $keyvaultUri + $account.Encryption.KeyVaultProperties.KeyName | Should -Be $keyname - if($false) - { - Sleep 600 + if($false) + { + Sleep 600 - $account = Set-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -KeyVaultUri $keyvaultUri2 -KeyName $keyname2 -KeyVersion $keyversion2 - $account.Identity.UserAssignedIdentities.Count | should -Be 1 - $account.Identity.UserAssignedIdentities[$useridentity2] | should -Not -be $null - $account.Encryption.KeySource | Should -Be Microsoft.Keyvault - $account.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity | Should -Be $useridentity2 - $account.Encryption.KeyVaultProperties.KeyVaultUri | Should -Be $keyvaultUri2 - $account.Encryption.KeyVaultProperties.KeyName | Should -Be $keyname2 - $account.Encryption.KeyVaultProperties.KeyVersion | Should -Be $keyversion2 - } + $account = Set-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -KeyVaultUri $keyvaultUri2 -KeyName $keyname2 -KeyVersion $keyversion2 + $account.Identity.UserAssignedIdentities.Count | should -Be 1 + $account.Identity.UserAssignedIdentities[$useridentity2] | should -Not -be $null + $account.Encryption.KeySource | Should -Be Microsoft.Keyvault + $account.Encryption.EncryptionIdentity.EncryptionUserAssignedIdentity | Should -Be $useridentity2 + $account.Encryption.KeyVaultProperties.KeyVaultUri | Should -Be $keyvaultUri2 + $account.Encryption.KeyVaultProperties.KeyName | Should -Be $keyname2 + $account.Encryption.KeyVaultProperties.KeyVersion | Should -Be $keyversion2 + } - remove-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Force -AsJob + remove-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Force -AsJob #1 MMK -> CMK with SAI: # create MMK account @@ -1611,7 +1607,7 @@ Describe "Management plan test" { #2 MMK-> CMK with UAI: # create MMK account $storageAccountName = $accountNamePrefix+"33" - $account = New-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Kind StorageV2 -SkuName Standard_LRS -Location eastus2euap -AssignIdentity + $account = New-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Kind StorageV2 -SkuName Standard_LRS -Location eastus2 -AssignIdentity Sleep 60 @@ -1646,7 +1642,7 @@ Describe "Management plan test" { # 5 CMK with UAI1 -> CMK with UAI2: # create account CMK with UAI (UserAssigned) $storageAccountName = $accountNamePrefix+"44" - $account = New-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Kind StorageV2 -SkuName Standard_LRS -Location eastus2euap -AssignIdentity -UserAssignedIdentityId $useridentity -IdentityType UserAssigned ` + $account = New-AzStorageAccount -ResourceGroupName $rgName -Name $storageAccountName -Kind StorageV2 -SkuName Standard_LRS -Location eastus2 -AssignIdentity -UserAssignedIdentityId $useridentity -IdentityType UserAssigned ` -KeyName $keyname -KeyVaultUri $keyvaultUri -KeyVaultUserAssignedIdentityId $useridentity $account.Identity.Type | should -be "UserAssigned" $account.Identity.UserAssignedIdentities.Count | should -Be 1 diff --git a/src/Storage/RegressionTests/utils.ps1 b/src/Storage/RegressionTests/utils.ps1 index 6dd672d155d5..56628fa6c185 100644 --- a/src/Storage/RegressionTests/utils.ps1 +++ b/src/Storage/RegressionTests/utils.ps1 @@ -219,8 +219,8 @@ function ValidBlob # check blob content is same as source $destblob = $b | Get-AzStorageBlobContent -Destination $localDestFile -Force - $srchash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($localSrcFile))) - $desthash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($localDestFile))) + $srchash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes((Get-Location).ToString() + $localSrcFile.Substring(1)))) + $desthash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes((Get-Location).ToString() + $localSrcFile.Substring(1)))) $srchash | should -Be $desthash # check blob properties