@@ -3,9 +3,10 @@ C:\Users\weiwei\Desktop\PSH_Script\PSHTest\utils.ps1
3
3
4
4
5
5
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
9
10
$rootFolder = " C:\temp"
10
11
cd $rootFolder
11
12
@@ -21,13 +22,17 @@ BeforeAll {
21
22
$ctxoauth2 = New-AzStorageContext - StorageAccountName $storageAccountName2
22
23
23
24
$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
24
28
$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
26
30
$localSrcFile = " C:\temp\testfile_10240K_0" # The file need exist before test, and should be 512 bytes aligned
27
31
$localDestFile = " C:\temp\test1.txt" # test will create the file
28
32
$containerName = GetRandomContainerName
29
33
# $containerName = "weitest"
30
-
34
+
35
+ $blobCopySrcFile10M = " D:\storageRegressionTestFiles\test10mb"
31
36
32
37
New-AzStorageContainer $containerName - Context $ctx
33
38
New-AzStorageShare $containerName - Context $ctx
@@ -1142,6 +1147,96 @@ Describe "dataplane test" {
1142
1147
$Error.Count | should - be 0
1143
1148
}
1144
1149
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
+
1145
1240
It " Test case name" {
1146
1241
$Error.Clear ()
1147
1242
0 commit comments