Skip to content

Commit 793f696

Browse files
committed
add cross blob type copy test. Update config
1 parent 95cb181 commit 793f696

File tree

2 files changed

+102
-8
lines changed

2 files changed

+102
-8
lines changed

src/Storage/RegressionTests/dataplane.ps1

Lines changed: 100 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ C:\Users\weiwei\Desktop\PSH_Script\PSHTest\utils.ps1
33

44

55
BeforeAll {
6-
Import-Module C:\Users\weiwei\Desktop\PSH_Script\Assert.ps1
7-
Import-Module C:\Users\weiwei\Desktop\PSH_Script\PSHTest\utils.ps1
8-
$config = (Get-Content D:\code\azure-powershell\src\Storage\RegressionTests\config.json -Raw | ConvertFrom-Json).dataplane
6+
$filePathConfig = (Get-Content D:\psh_scripts\config.json -Raw | ConvertFrom-Json).filePaths
7+
Import-Module $filePathConfig.assert
8+
Import-Module $filePathConfig.utils
9+
$config = (Get-Content D:\psh_scripts\config.json -Raw | ConvertFrom-Json).dataplane
910
$rootFolder = "C:\temp"
1011
cd $rootFolder
1112

@@ -21,13 +22,17 @@ BeforeAll {
2122
$ctxoauth2 = New-AzStorageContext -StorageAccountName $storageAccountName2
2223

2324
$ctx = New-AzStorageContext -StorageAccountName weirp1 -StorageAccountKey $config.credentials.storageAccountKey
25+
$ctx2 = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName2).Context
26+
27+
# TODO: extract all the paths here to config file
2428
$localSmallSrcFile = "C:\temp\testfile_1K_0"
25-
$localBigSrcFile = "C:\Users\weiwei\source\repos\genreateFile\genreateFile\bin\Debug\testfile_300000K_0"
29+
$localBigSrcFile = $config.files.localBigSrcFile
2630
$localSrcFile = "C:\temp\testfile_10240K_0" #The file need exist before test, and should be 512 bytes aligned
2731
$localDestFile = "C:\temp\test1.txt" # test will create the file
2832
$containerName = GetRandomContainerName
2933
# $containerName = "weitest"
30-
34+
35+
$blobCopySrcFile10M = "D:\storageRegressionTestFiles\test10mb"
3136

3237
New-AzStorageContainer $containerName -Context $ctx
3338
New-AzStorageShare $containerName -Context $ctx
@@ -1142,6 +1147,96 @@ Describe "dataplane test" {
11421147
$Error.Count | should -be 0
11431148
}
11441149

1150+
It "Cross type blob copy" {
1151+
$Error.Clear()
1152+
1153+
$blobTypes = @("Block", "Page", "Append")
1154+
1155+
$containerSAS = New-AzStorageContainerSASToken -Name $containerName -Permission rwdl -ExpiryTime (Get-Date).AddDays(100) -Context $ctx
1156+
$sasctx = New-AzStorageContext -StorageAccountName $ctx.StorageAccountName -SasToken $containerSAS
1157+
1158+
# Create the containers and upload the src blobs
1159+
if ($false) {
1160+
New-AzStorageContainer -Name $containerName -Context $ctx
1161+
New-AzStorageContainer -Name $containerName -Context $ctx2
1162+
1163+
foreach ($srcType in $blobTypes) {
1164+
$smallSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile10M -Container $containerName -Blob "$($srctype)SmallSource" -Context $ctx -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"}
1165+
$largeSrcBlob = Set-AzStorageBlobContent -File $localBigSrcFile -Container $containerName -Blob "$($srctype)LargeSource" -Context $ctx -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"}
1166+
}
1167+
}
1168+
1169+
# tests for 9 directions of blob type conversions
1170+
foreach ($srcType in $blobTypes) {
1171+
foreach ($destType in $blobTypes) {
1172+
# Small src file. Key ctx
1173+
$smallDestBlob = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $ctx -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest" -DestContext $ctx2 -DestBlobType $destType -Force
1174+
$smallDestBlob.Name | Should -Be "$($srctype)TO$($desttype)SmallDest"
1175+
$smallDestBlob.BlobProperties.ContentType | Should -Be "image/jpeg"
1176+
$smallDestBlob.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length
1177+
$smallDestBlob.BlobProperties.Metadata.Count | Should -Be 2
1178+
$smallDestBlob.BlobBaseClient.AccountName | Should -Be $storageAccountName2
1179+
1180+
# compare content
1181+
$smallDestBlob | Get-AzStorageBlobContent -Destination $localDestFile -Force
1182+
CompareFileMD5 $localBigSrcFile $localDestFile
1183+
del $localDestFile
1184+
$smallDestBlob | Remove-AzStorageBlob
1185+
1186+
# Small src file. Sas ctx
1187+
$smallDestBlob2 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $sasctx -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest2" -DestBlobType $destType -Force
1188+
$smallDestBlob2.Name | Should -Be "$($srctype)TO$($desttype)SmallDest2"
1189+
$smallDestBlob2.BlobProperties.ContentType | Should -Be "image/jpeg"
1190+
$smallDestBlob2.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length
1191+
$smallDestBlob2.BlobProperties.Metadata | Should -Be 2
1192+
$smallDestBlob2.BlobBaseClient.AccountName | Should -Be $storageAccountName
1193+
1194+
$smallDestBlob2 | Get-AzStorageBlobContent -Destination $localDestFile -Force
1195+
CompareFileMD5 $localBigSrcFile $localDestFile
1196+
del $localDestFile
1197+
$smallDestBlob2 | Remove-AzStorageBlob
1198+
1199+
# Small src file. oauth ctx
1200+
$smallDestBlob3 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srctype)SmallSource" -Context $ctxoauth1 -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)SmallDest3" -DestContext $ctxoauth2 -DestBlobType $destType -Force
1201+
$smallDestBlob3.Name | Should -Be "$($srctype)TO$($desttype)SmallDest3"
1202+
$smallDestBlob3.BlobProperties.ContentType | Should -Be "image/jpeg"
1203+
$smallDestBlob3.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length
1204+
$smallDestBlob3.BlobProperties.Metadata | Should -Be 2
1205+
$smallDestBlob3.BlobBaseClient.AccountName | Should -Be $storageAccountName2
1206+
1207+
$smallDestBlob3 | Get-AzStorageBlobContent -Destination $localDestFile -Force
1208+
CompareFileMD5 $localBigSrcFile $localDestFile
1209+
del $localDestFile
1210+
$smallDestBlob3 | Remove-AzStorageBlob
1211+
1212+
$largeDestBlob = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "$($srcType)BigSource" -Context $ctx -DestContainer $containerName -DestBlob "$($srcType)TO$($destType)BigDest" -DestContext $ctxoauth1 -DestBlobType $destType -Force
1213+
$largeDestBlob.Name | Should -Be "$($srcType)TO$($destType)BigDest"
1214+
$largeDestBlob.BlobProperties.ContentType | Should -Be "image/jpeg"
1215+
$largeDestBlob.BlobProperties.ContentLength | Should -Be (Get-Item $blobCopySrcFile10M).Length
1216+
$largeDestBlob.BlobProperties.Metadata | Should -Be 2
1217+
$largeDestBlob.BlobBaseClient.AccountName | Should -Be $storageAccountName
1218+
1219+
$largeDestBlob | Get-AzStorageBlobContent -Destination $localDestFile -Force
1220+
CompareFileMD5 $localBigSrcFile $localDestFile
1221+
del $localDestFile
1222+
$largeDestBlob | Remove-AzStorageBlob
1223+
}
1224+
}
1225+
1226+
# Block to block with access tier and rehydrate priority set
1227+
$blockToBlock1 = Copy-AzStorageBlob -SrcContainer $containerName -SrcBlob "BlockSmallSource" -Context $ctx -DestContainer $containerName -DestBlob "BlockToBlockWithAccessTier" -DestContext $ctx2 -DestBlobType $destType -StandardBlobTier "Cool" -RehydratePriority High -Force
1228+
$blockToBlock1.AccessTier | Should -Be "Cool"
1229+
1230+
# blob version
1231+
$smallSrcBlob = Set-AzStorageBlobContent -File $blobCopySrcFile10M -Container $containerName -Blob "$($srctype)SmallSource" -Context $ctx -BlobType $srctype -Properties @{"ContentType" = "image/jpeg"} -Metadata @{"tag1" = "value1"; "tag2" = "value2"}
1232+
$blobs = Get-AzStorageBlob -Container $containerName -Context $ctx -IncludeVersion
1233+
$blobVersion = $blob[1]
1234+
$destBlob = $blobVersion | Copy-AzStorageBlob -DestBlob "blobVersionToBlock" -DestBlobType Block -DestContext $ctx2 -Force
1235+
$destBlob.Name | Should -Be "blobVersionToBlock"
1236+
1237+
$Error.Count | should -be 0
1238+
}
1239+
11451240
It "Test case name" {
11461241
$Error.Clear()
11471242

src/Storage/RegressionTests/utils.ps1

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
2-
3-
Import-Module C:\Users\weiwei\Desktop\PSH_Script\Assert.ps1
1+
$filePathConfig = (Get-Content D:\psh_scripts\config.json -Raw | ConvertFrom-Json).filePaths
2+
Import-Module $filePathConfig.assert
43

54

65
function Assert-AreEqual

0 commit comments

Comments
 (0)