@@ -722,7 +722,7 @@ function Test-DataLakeStoreFileSystem
722
722
Assert-True {Remove-AzDataLakeStoreItem - Account $accountName - paths $summaryFolder - force - recurse - passthru} " Remove folder failed"
723
723
Assert-Throws {Get-AzDataLakeStoreItem - Account $accountName - path $summaryFolder }
724
724
Assert-True {Remove-AzDataLakeStoreItem - Account $accountName - paths $encodingFolder - force - recurse - passthru} " Remove folder failed"
725
-
725
+
726
726
# Delete Data Lake account
727
727
Assert-True {Remove-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName - Force - PassThru} " Remove Account failed."
728
728
@@ -760,7 +760,7 @@ function Test-DataLakeStoreFileSystemPermissions
760
760
$accountName = Get-DataLakeStoreAccountName
761
761
New-AzResourceGroup - Name $resourceGroupName - Location $location
762
762
$accountCreated = New-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName - Location $location - DisableEncryption
763
-
763
+
764
764
Assert-AreEqual $accountName $accountCreated.Name
765
765
Assert-AreEqual $location $accountCreated.Location
766
766
Assert-AreEqual " Microsoft.DataLakeStore/accounts" $accountCreated.Type
@@ -998,6 +998,87 @@ function CreateAndGetVirtualNetwork ($resourceGroupName, $vnetName, $location =
998
998
return $getVnet
999
999
}
1000
1000
1001
+ <#
1002
+ . SYNOPSIS
1003
+ Helper function to create files and folders in DataLakeStore account.
1004
+ #>
1005
+ function Create-FilesAndFolders
1006
+ {
1007
+ param
1008
+ (
1009
+ [string ]$accountName
1010
+ )
1011
+
1012
+ $folderToCreate1 = " /adlTestDir1"
1013
+ $folderToCreate2 = " /adlTestDir2"
1014
+ $fileToCreate1 = " /adlTestDir1/adlfile1"
1015
+ $fileToCreate2 = " /adlTestDir2/adlfile2"
1016
+
1017
+ $result = New-AzDataLakeStoreItem - Account $accountName - path $folderToCreate1 - Folder
1018
+ Assert-NotNull $result " No value was returned on folder creation"
1019
+
1020
+ $result = New-AzDataLakeStoreItem - Account $accountName - path $folderToCreate2 - Folder
1021
+ Assert-NotNull $result " No value was returned on folder creation"
1022
+
1023
+ $result = New-AzDataLakeStoreItem - Account $accountName - path $fileToCreate1
1024
+ Assert-NotNull $result " No value was returned on empty file creation"
1025
+
1026
+ $result = New-AzDataLakeStoreItem - Account $accountName - path $fileToCreate2
1027
+ Assert-NotNull $result " No value was returned on empty file creation"
1028
+ }
1029
+
1030
+ <#
1031
+ . SYNOPSIS
1032
+ Helper function to delete files and folders in DataLakeStore account.
1033
+ #>
1034
+ function Delete-FilesAndFolders
1035
+ {
1036
+ param
1037
+ (
1038
+ [string ]$accountName
1039
+ )
1040
+
1041
+ $itemsToDelete = @ (
1042
+ " /adlTestDir1/adlfile1" ,
1043
+ " /adlTestDir2/adlfile2" ,
1044
+ " /adlTestDir1" ,
1045
+ " /adlTestDir2"
1046
+ )
1047
+
1048
+ foreach ($item in $itemsToDelete ) {
1049
+ if (Test-AzDataLakeStoreItem - Account $accountName - Path $item ) {
1050
+ Write-Host " Deleting item: $item "
1051
+ Assert-True { Remove-AzDataLakeStoreItem - Account $accountName - Paths $item - Force - Passthru } " Remove item failed: $item "
1052
+ } else {
1053
+ Write-Host " Item does not exist: $item "
1054
+ }
1055
+ }
1056
+ }
1057
+
1058
+ function Restore-DeletedItems {
1059
+ param (
1060
+ [string ]$accountName ,
1061
+ [array ]$items
1062
+ )
1063
+
1064
+ foreach ($item in $items ) {
1065
+ if ([string ]::IsNullOrEmpty($item.TrashDirPath ) -or [string ]::IsNullOrEmpty($item.OriginalPath )) {
1066
+ continue
1067
+ }
1068
+
1069
+ # Check if the destination already exists
1070
+ $relativeOriginalPath = $item.OriginalPath -replace " ^adl://[^/]+" , " "
1071
+ if (Test-AzDataLakeStoreItem - Account $accountName - Path $relativeOriginalPath ) {
1072
+ continue
1073
+ }
1074
+
1075
+ # Attempt to restore the item
1076
+ Assert-True {
1077
+ Restore-AzDataLakeStoreDeletedItem - Account $accountName - Path $item.TrashDirPath - Destination $item.OriginalPath - Type $item.Type - Force - Passthru
1078
+ }
1079
+ }
1080
+ }
1081
+
1001
1082
<#
1002
1083
. SYNOPSIS
1003
1084
Tests DataLakeStore deleted items operations (Enumerate, Restore).
@@ -1007,7 +1088,9 @@ function Test-EnumerateAndRestoreDataLakeStoreDeletedItem
1007
1088
param
1008
1089
(
1009
1090
$fileToCopy ,
1010
- $location
1091
+ $location ,
1092
+ $accountName
1093
+
1011
1094
)
1012
1095
1013
1096
if ([string ]::IsNullOrEmpty($location ))
@@ -1017,84 +1100,85 @@ function Test-EnumerateAndRestoreDataLakeStoreDeletedItem
1017
1100
1018
1101
try
1019
1102
{
1020
- # Creating Account
1021
- $resourceGroupName = Get-ResourceGroupName
1022
- $accountName = Get-DataLakeStoreAccountName + " -c12" # testing accountname validation
1023
- New-AzResourceGroup - Name $resourceGroupName - Location $location
1024
- $accountCreated = New-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName - Location $location
1025
-
1026
- Assert-AreEqual $accountName $accountCreated.Name
1027
- Assert-AreEqual $location $accountCreated.Location
1028
- Assert-AreEqual " Microsoft.DataLakeStore/accounts" $accountCreated.Type
1029
- Assert-True {$accountCreated.Id -like " *$resourceGroupName *" }
1030
-
1031
- # In loop to check if account exists
1032
- for ($i = 0 ; $i -le 60 ; $i ++ )
1033
- {
1034
- [array ]$accountGet = Get-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName
1035
- if ($accountGet [0 ].ProvisioningState -like " Succeeded" )
1036
- {
1037
- Assert-AreEqual $accountName $accountGet [0 ].Name
1038
- Assert-AreEqual $location $accountGet [0 ].Location
1039
- Assert-AreEqual " Microsoft.DataLakeStore/accounts" $accountGet [0 ].Type
1040
- Assert-True {$accountGet [0 ].Id -like " *$resourceGroupName *" }
1041
- break
1042
- }
1043
-
1044
- Write-Host " account not yet provisioned. current state: $ ( $accountGet [0 ].ProvisioningState) "
1045
- [Microsoft.WindowsAzure.Commands.Utilities.Common.TestMockSupport ]::Delay(30000 )
1046
- Assert-False {$i -eq 60 } " Data Lake Store account is not in succeeded state even after 30 min."
1047
- }
1048
-
1049
- # define all the files and folders
1050
- $folderToCreate1 = " /adlfolderTest1"
1051
- $folderToCreate2 = " /adlfolderTest2"
1052
- $fileToCreate1 = " /adlfolderTest1/adlfile1"
1053
- $fileToCreate2 = " /adlfolderTest2/adlfile2"
1054
-
1055
- # Create and get Empty folder
1056
- $result = New-AzDataLakeStoreItem - Account $accountName - path $folderToCreate1 - Folder
1057
- Assert-NotNull $result " No value was returned on folder creation"
1058
-
1059
- $result = New-AzDataLakeStoreItem - Account $accountName - path $folderToCreate2 - Folder
1060
- Assert-NotNull $result " No value was returned on folder creation"
1103
+ Create- FilesAndFolders - accountName $accountName
1104
+ Delete- FilesAndFolders - accountName $accountName
1061
1105
1062
- # Create and get Empty File
1063
- $result = New-AzDataLakeStoreItem - Account $accountName - path $fileToCreate1
1064
- Assert-NotNull $result " No value was returned on empty file creation"
1065
- $result = New-AzDataLakeStoreItem - Account $accountName - path $fileToCreate2
1066
- Assert-NotNull $result " No value was returned on empty file creation"
1067
-
1068
- # delete a file
1069
- Assert-True {Remove-AzDataLakeStoreItem - Account $accountName - paths $fileToCreate1 - force - passthru } " Remove File Failed"
1070
- Assert-Throws {Get-AzDataLakeStoreItem - Account $accountName - path $fileToCreate1 }
1071
- Assert-True {Remove-AzDataLakeStoreItem - Account $accountName - paths $fileToCreate2 - force - passthru } " Remove File Failed"
1072
- Assert-Throws {Get-AzDataLakeStoreItem - Account $accountName - path $fileToCreate2 }
1073
-
1074
- # search delete folder
1075
- $out = Get-AzDataLakeStoreDeletedItem - Account $accountName - filter " adlfolderTest1" - Count 1000
1076
- foreach ($item in $out )
1077
- {
1078
- Restore-AzDataLakeStoreDeletedItem - Account $accountName - Path $item.TrashDirPath - Destination $item.OriginalPath - Type " file" - Force - Passthru
1079
- Assert-True { Restore-AzDataLakeStoreDeletedItem - Account $accountName - Path $item.TrashDirPath - Destination $item.OriginalPath - Type " file" - Force - Passthru}
1080
- }
1081
-
1082
- $out = Get-AzDataLakeStoreDeletedItem - Account $accountName - filter " adlfolderTest2" - Count 1000
1083
- foreach ($item in $out )
1084
- {
1085
- Assert-True { Restore-AzDataLakeStoreDeletedItem - Account $accountName $item - Force - Passthru}
1086
- }
1087
-
1088
- # Delete Data Lake account
1089
- Assert-True {Remove-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName - Force - PassThru} " Remove Account failed."
1106
+ # search deleted folder
1107
+ $out = Get-AzDataLakeStoreDeletedItem - Account $accountName - filter " adlTestDir1" - Count 1000
1108
+ Restore-DeletedItems - accountName $accountName - items $out
1090
1109
1091
- # Verify that it is gone by trying to get it again
1092
- Assert-Throws { Get-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName }
1110
+ $out = Get-AzDataLakeStoreDeletedItem - Account $accountName - filter " adlTestDir2 " - Count 1000
1111
+ Restore-DeletedItems - accountName $accountName - items $out
1093
1112
}
1094
1113
finally
1095
1114
{
1096
- # cleanup the resource group that was used in case it still exists. This is a best effort task, we ignore failures here.
1097
- Invoke-HandledCmdlet - Command { Remove-AzDataLakeStoreAccount - ResourceGroupName $resourceGroupName - Name $accountName - Force - ErrorAction SilentlyContinue} - IgnoreFailures
1098
- Invoke-HandledCmdlet - Command { Remove-AzResourceGroup - Name $resourceGroupName - Force - ErrorAction SilentlyContinue} - IgnoreFailures
1115
+ Delete - FilesAndFolders - accountName $accountName
1116
+ # Skip cleanup for existing account and resource group
1117
+ Write-Host " Skipping cleanup for existing account and resource group. "
1099
1118
}
1119
+ }
1120
+
1121
+ <#
1122
+ . SYNOPSIS
1123
+ Tests DataLakeStore deleted items operations with token (Enumerate with pagination).
1124
+ #>
1125
+ function Test-EnumerateDataLakeStoreDeletedItemsWithToken
1126
+ {
1127
+ param
1128
+ (
1129
+ $fileToCopy ,
1130
+ $location ,
1131
+ $accountName
1132
+ )
1133
+
1134
+ if ([string ]::IsNullOrEmpty($location ))
1135
+ {
1136
+ $location = Get-Location - providerNamespace " Microsoft.CognitiveServices" - resourceType " accounts" - preferredLocation " West US" ;
1137
+ }
1138
+
1139
+ try
1140
+ {
1141
+ Create- FilesAndFolders - accountName $accountName
1142
+ Delete- FilesAndFolders - accountName $accountName
1143
+
1144
+ # Test basic enumeration with token
1145
+ $out = Get-AzDataLakeStoreDeletedItemsWithToken - Account $accountName - filter " adlTestDir1" - Count 2
1146
+ Assert-NotNull $out " No deleted items found for adlTestDir1"
1147
+
1148
+ # Check if we have pagination results
1149
+ $hasMoreResults = $false
1150
+ $continuationToken = $null
1151
+
1152
+ foreach ($item in $out ) {
1153
+ if ($item.ContinuationToken -ne $null -and $item.ContinuationToken -ne " " ) {
1154
+ $hasMoreResults = $true
1155
+ $continuationToken = $item.ContinuationToken
1156
+ break
1157
+ }
1158
+ }
1159
+
1160
+ # If there are more results, test pagination
1161
+ if ($hasMoreResults ) {
1162
+ $out2 = Get-AzDataLakeStoreDeletedItemsWithToken - Account $accountName - filter " adlTestDir1" - Count 2 - ListAfter $continuationToken
1163
+ Assert-NotNull $out2 " Failed to get deleted items with continuation token"
1164
+ }
1165
+
1166
+ # Test with different filter
1167
+ $out3 = Get-AzDataLakeStoreDeletedItemsWithToken - Account $accountName - filter " adlTestDir2" - Count 2
1168
+ Assert-NotNull $out3 " No deleted items found for adlTestDir2"
1169
+
1170
+ # Verify that the items returned have the expected properties
1171
+ foreach ($item in $out ) {
1172
+ if ($null -ne $item.DeletedItem ) {
1173
+ Assert-NotNull $item.DeletedItem.OriginalPath " DeletedItem should have OriginalPath"
1174
+ Assert-NotNull $item.DeletedItem.TrashDirPath " DeletedItem should have TrashDirPath"
1175
+ Assert-NotNull $item.DeletedItem.Type " DeletedItem should have Type"
1176
+ }
1177
+ }
1178
+ }
1179
+ finally
1180
+ {
1181
+ # Skip cleanup for existing account and resource group
1182
+ Write-Host " Skipping cleanup for existing account and resource group."
1183
+ }
1100
1184
}
0 commit comments