Skip to content

Commit 9fff852

Browse files
author
Maddie Clayton
authored
Merge pull request Azure#8508 from Azure/TaskPSDeletedItemsCmdlets
Add cmdlets for ADL deleted items seach and restore
2 parents 3a38d3b + f861bd3 commit 9fff852

File tree

15 files changed

+3036
-14
lines changed

15 files changed

+3036
-14
lines changed

src/DataLakeStore/DataLakeStore.Test/ScenarioTests/AdlsAliasTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,12 @@ public void TestNegativeAdlsAccount()
8585
{
8686
NewInstance.RunPsTest(_logger, string.Format("Test-NegativeDataLakeStoreAccount -location '{0}'", AdlsTestsBase.ResourceGroupLocation));
8787
}
88+
89+
[Fact]
90+
[Trait(Category.AcceptanceType, Category.CheckIn)]
91+
public void TestAdlsEnumerateAndRestoreDeletedItem()
92+
{
93+
NewInstance.RunPsTest(_logger, string.Format("Test-AdlsEnumerateAndRestoreDeletedItem -location '{0}'", AdlsTestsBase.ResourceGroupLocation));
94+
}
8895
}
8996
}

src/DataLakeStore/DataLakeStore.Test/ScenarioTests/AdlsAliasTests.ps1

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -989,4 +989,104 @@ function CreateAndGetVirtualNetwork ($resourceGroupName, $vnetName, $location =
989989
$getVnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroupName
990990

991991
return $getVnet
992+
}
993+
994+
<#
995+
.SYNOPSIS
996+
Tests DataLakeStore deleted items operations (Enumerate, Restore).
997+
#>
998+
function Test-AdlsEnumerateAndRestoreDeletedItem
999+
{
1000+
param
1001+
(
1002+
$fileToCopy,
1003+
$location
1004+
)
1005+
1006+
if ([string]::IsNullOrEmpty($location))
1007+
{
1008+
$location = Get-Location -providerNamespace "Microsoft.CognitiveServices" -resourceType "accounts" -preferredLocation "West US";
1009+
}
1010+
1011+
try
1012+
{
1013+
# Creating Account
1014+
$resourceGroupName = Get-ResourceGroupName
1015+
$accountName = Get-DataLakeStoreAccountName
1016+
New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
1017+
$accountCreated = New-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Location $location
1018+
1019+
Assert-AreEqual $accountName $accountCreated.Name
1020+
Assert-AreEqual $location $accountCreated.Location
1021+
Assert-AreEqual "Microsoft.DataLakeStore/accounts" $accountCreated.Type
1022+
Assert-True {$accountCreated.Id -like "*$resourceGroupName*"}
1023+
1024+
# In loop to check if account exists
1025+
for ($i = 0; $i -le 60; $i++)
1026+
{
1027+
[array]$accountGet = Get-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName
1028+
if ($accountGet[0].ProvisioningState -like "Succeeded")
1029+
{
1030+
Assert-AreEqual $accountName $accountGet[0].Name
1031+
Assert-AreEqual $location $accountGet[0].Location
1032+
Assert-AreEqual "Microsoft.DataLakeStore/accounts" $accountGet[0].Type
1033+
Assert-True {$accountGet[0].Id -like "*$resourceGroupName*"}
1034+
break
1035+
}
1036+
1037+
Write-Host "account not yet provisioned. current state: $($accountGet[0].ProvisioningState)"
1038+
[Microsoft.WindowsAzure.Commands.Utilities.Common.TestMockSupport]::Delay(30000)
1039+
Assert-False {$i -eq 60} " Data Lake Store account is not in succeeded state even after 30 min."
1040+
}
1041+
1042+
# define all the files and folders
1043+
$folderToCreate1 = "/adlfolder1"
1044+
$folderToCreate2 = "/adlfolder2"
1045+
$fileToCreate1 = "/adlfolder1/adlfile1"
1046+
$fileToCreate2 = "/adlfolder2/adlfile2"
1047+
1048+
# Create and get Empty folder
1049+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate1 -Folder
1050+
Assert-NotNull $result "No value was returned on folder creation"
1051+
1052+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate2 -Folder
1053+
Assert-NotNull $result "No value was returned on folder creation"
1054+
1055+
# Create and get Empty File
1056+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $fileToCreate1
1057+
Assert-NotNull $result "No value was returned on empty file creation"
1058+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $fileToCreate2
1059+
Assert-NotNull $result "No value was returned on empty file creation"
1060+
1061+
# delete a file
1062+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $fileToCreate1 -force -passthru } "Remove File Failed"
1063+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $fileToCreate1}
1064+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $fileToCreate2 -force -passthru } "Remove File Failed"
1065+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $fileToCreate2}
1066+
1067+
# search delete folder
1068+
$out = Get-AdlStoreDeletedItem -Account $accountName -filter "adlfolder1" -Count 1000
1069+
foreach($item in $out)
1070+
{
1071+
Assert-True { Restore-AdlStoreDeletedItem -Account $accountName -Path $item.TrashDirPath -Destination $item.OriginalPath -Type "file" -Force -Passthru}
1072+
}
1073+
1074+
$out = Get-AdlStoreDeletedItem -Account $accountName -filter "adlfolder2" -Count 1000
1075+
foreach($item in $out)
1076+
{
1077+
Assert-True { Restore-AdlStoreDeletedItem -Account $accountName $item -Force -Passthru}
1078+
}
1079+
1080+
# Delete Data Lake account
1081+
Assert-True {Remove-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Force -PassThru} "Remove Account failed."
1082+
1083+
# Verify that it is gone by trying to get it again
1084+
Assert-Throws {Get-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName}
1085+
}
1086+
finally
1087+
{
1088+
# cleanup the resource group that was used in case it still exists. This is a best effort task, we ignore failures here.
1089+
Invoke-HandledCmdlet -Command {Remove-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Force -ErrorAction SilentlyContinue} -IgnoreFailures
1090+
Invoke-HandledCmdlet -Command {Remove-AzureRmResourceGroup -Name $resourceGroupName -Force -ErrorAction SilentlyContinue} -IgnoreFailures
1091+
}
9921092
}

src/DataLakeStore/DataLakeStore.Test/ScenarioTests/AdlsTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,12 @@ public void TestNegativeAdlsAccount()
8383
{
8484
NewInstance.RunPsTest(_logger, string.Format("Test-NegativeDataLakeStoreAccount -location '{0}'", AdlsTestsBase.ResourceGroupLocation));
8585
}
86+
87+
[Fact]
88+
[Trait(Category.AcceptanceType, Category.CheckIn)]
89+
public void TestAdlsEnumerateAndRestoreDeletedItem()
90+
{
91+
NewInstance.RunPsTest(_logger, string.Format("Test-EnumerateAndRestoreDataLakeStoreDeletedItem -location '{0}'", AdlsTestsBase.ResourceGroupLocation));
92+
}
8693
}
8794
}

src/DataLakeStore/DataLakeStore.Test/ScenarioTests/AdlsTests.ps1

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -989,4 +989,104 @@ function CreateAndGetVirtualNetwork ($resourceGroupName, $vnetName, $location =
989989
$getVnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroupName
990990

991991
return $getVnet
992+
}
993+
994+
<#
995+
.SYNOPSIS
996+
Tests DataLakeStore deleted items operations (Enumerate, Restore).
997+
#>
998+
function Test-EnumerateAndRestoreDataLakeStoreDeletedItem
999+
{
1000+
param
1001+
(
1002+
$fileToCopy,
1003+
$location
1004+
)
1005+
1006+
if ([string]::IsNullOrEmpty($location))
1007+
{
1008+
$location = Get-Location -providerNamespace "Microsoft.CognitiveServices" -resourceType "accounts" -preferredLocation "West US";
1009+
}
1010+
1011+
try
1012+
{
1013+
# Creating Account
1014+
$resourceGroupName = Get-ResourceGroupName
1015+
$accountName = Get-DataLakeStoreAccountName
1016+
New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
1017+
$accountCreated = New-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Location $location
1018+
1019+
Assert-AreEqual $accountName $accountCreated.Name
1020+
Assert-AreEqual $location $accountCreated.Location
1021+
Assert-AreEqual "Microsoft.DataLakeStore/accounts" $accountCreated.Type
1022+
Assert-True {$accountCreated.Id -like "*$resourceGroupName*"}
1023+
1024+
# In loop to check if account exists
1025+
for ($i = 0; $i -le 60; $i++)
1026+
{
1027+
[array]$accountGet = Get-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName
1028+
if ($accountGet[0].ProvisioningState -like "Succeeded")
1029+
{
1030+
Assert-AreEqual $accountName $accountGet[0].Name
1031+
Assert-AreEqual $location $accountGet[0].Location
1032+
Assert-AreEqual "Microsoft.DataLakeStore/accounts" $accountGet[0].Type
1033+
Assert-True {$accountGet[0].Id -like "*$resourceGroupName*"}
1034+
break
1035+
}
1036+
1037+
Write-Host "account not yet provisioned. current state: $($accountGet[0].ProvisioningState)"
1038+
[Microsoft.WindowsAzure.Commands.Utilities.Common.TestMockSupport]::Delay(30000)
1039+
Assert-False {$i -eq 60} " Data Lake Store account is not in succeeded state even after 30 min."
1040+
}
1041+
1042+
# define all the files and folders
1043+
$folderToCreate1 = "/adlfolder1"
1044+
$folderToCreate2 = "/adlfolder2"
1045+
$fileToCreate1 = "/adlfolder1/adlfile1"
1046+
$fileToCreate2 = "/adlfolder2/adlfile2"
1047+
1048+
# Create and get Empty folder
1049+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate1 -Folder
1050+
Assert-NotNull $result "No value was returned on folder creation"
1051+
1052+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $folderToCreate2 -Folder
1053+
Assert-NotNull $result "No value was returned on folder creation"
1054+
1055+
# Create and get Empty File
1056+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $fileToCreate1
1057+
Assert-NotNull $result "No value was returned on empty file creation"
1058+
$result = New-AzureRMDataLakeStoreItem -Account $accountName -path $fileToCreate2
1059+
Assert-NotNull $result "No value was returned on empty file creation"
1060+
1061+
# delete a file
1062+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $fileToCreate1 -force -passthru } "Remove File Failed"
1063+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $fileToCreate1}
1064+
Assert-True {Remove-AdlStoreItem -Account $accountName -paths $fileToCreate2 -force -passthru } "Remove File Failed"
1065+
Assert-Throws {Get-AdlStoreItem -Account $accountName -path $fileToCreate2}
1066+
1067+
# search delete folder
1068+
$out = Get-AzDataLakeStoreDeletedItem -Account $accountName -filter "adlfolder1" -Count 1000
1069+
foreach($item in $out)
1070+
{
1071+
Assert-True { Restore-AzDataLakeStoreDeletedItem -Account $accountName -Path $item.TrashDirPath -Destination $item.OriginalPath -Type "file" -Force -Passthru}
1072+
}
1073+
1074+
$out = Get-AzDataLakeStoreDeletedItem -Account $accountName -filter "adlfolder2" -Count 1000
1075+
foreach($item in $out)
1076+
{
1077+
Assert-True { Restore-AzDataLakeStoreDeletedItem -Account $accountName $item -Force -Passthru}
1078+
}
1079+
1080+
# Delete Data Lake account
1081+
Assert-True {Remove-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Force -PassThru} "Remove Account failed."
1082+
1083+
# Verify that it is gone by trying to get it again
1084+
Assert-Throws {Get-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName}
1085+
}
1086+
finally
1087+
{
1088+
# cleanup the resource group that was used in case it still exists. This is a best effort task, we ignore failures here.
1089+
Invoke-HandledCmdlet -Command {Remove-AzureRMDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $accountName -Force -ErrorAction SilentlyContinue} -IgnoreFailures
1090+
Invoke-HandledCmdlet -Command {Remove-AzureRmResourceGroup -Name $resourceGroupName -Force -ErrorAction SilentlyContinue} -IgnoreFailures
1091+
}
9921092
}

0 commit comments

Comments
 (0)