Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[InAccountRestore] Introducing new PowerShell commands for InAccount Restore of Deleted Database/ Containers feature #19601

Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/CosmosDB/CosmosDB.Test/CosmosDB.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PsModuleName>CosmosDB</PsModuleName>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)..\..\Az.Test.props" />
<ItemGroup>
<PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.1" />
<PackageReference Include="Microsoft.Azure.Management.Network" Version="23.0.0" />
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="3.7.0-preview" />
<PackageReference Include="Microsoft.Azure.Management.CosmosDB" Version="3.8.0-preview" />
</ItemGroup>
</Project>
28 changes: 28 additions & 0 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/MongoOperationsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,33 @@ public void TestMongoMigrateThroughputCmdlets()
{
TestRunner.RunTestScript("Test-MongoMigrateThroughputCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoInAccountRestoreOperationsCmdlets()
{
TestRunner.RunTestScript("Test-MongoInAccountRestoreOperationsCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoInAccountRestoreOperationsSharedRUResourcesCmdlets()
{
TestRunner.RunTestScript("Test-MongoInAccountRestoreOperationsSharedRUResourcesCmdlets");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoDBCollectionThroughputRedistributionCmdlet()
{
TestRunner.RunTestScript("Test-MongoDBCollectionAdaptiveRUCmdlets");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestMongoDBCollectionMergeCmdlet()
{
TestRunner.RunTestScript("Test-MongoDBCollectionMergeCmdlet");
}
}
}
381 changes: 381 additions & 0 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/MongoOperationsTests.ps1

Large diffs are not rendered by default.

18 changes: 16 additions & 2 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/RestoreTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,23 @@ public void TestMongoDBCollectionBackupInformationCmdLets()

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestUpdateCosmosDBAccountBackupPolicyCmdLet()
public void TestUpdateCosmosDBAccountBackupPolicyToContinuous30DaysCmdLets()
{
TestRunner.RunTestScript("Test-UpdateCosmosDBAccountBackupPolicyCmdLet");
TestRunner.RunTestScript( "Test-UpdateCosmosDBAccountBackupPolicyToContinuous30DaysCmdLets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestUpdateCosmosDBAccountBackupPolicyToContinuous7DaysCmdLets()
{
TestRunner.RunTestScript("Test-UpdateCosmosDBAccountBackupPolicyToContinuous7DaysCmdLets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestProvisionCosmosDBAccountBackupPolicyWithContinuous7DaysCmdLets()
{
TestRunner.RunTestScript("Test-ProvisionCosmosDBAccountBackupPolicyWithContinuous7DaysCmdLets");
}
}
}
134 changes: 124 additions & 10 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/RestoreTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ function Test-RestoreFromNewAccountCmdlets {
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime

$restorableSqlDatabases = Get-AzCosmosDBSqlRestorableDatabase -Location $sourceCosmosDBAccount.Location -DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $restorableSqlDatabases
Expand Down Expand Up @@ -139,6 +140,7 @@ function Test-MongoRestoreAccountCmdlets {
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime

$NewDatabase = New-AzCosmosDBMongoDBDatabase -AccountName $sourceCosmosDBAccountName -ResourceGroupName $rgName -Name $databaseName -Throughput $ThroughputValue
$NewCollection = New-AzCosmosDBMongoDBCollection -AccountName $sourceCosmosDBAccountName -ResourceGroupName $rgName -DatabaseName $databaseName -Throughput $CollectionThroughputValue -Name $CollectionName -Shard $ShardKey
Expand Down Expand Up @@ -218,6 +220,7 @@ function Test-RestoreFailuresAccountCmdlets {
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime

$restorableSqlDatabases = Get-AzCosmosDBSqlRestorableDatabase -Location $sourceCosmosDBAccount.Location -DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $restorableSqlDatabases
Expand Down Expand Up @@ -246,9 +249,9 @@ function Test-RestoreFailuresAccountCmdlets {
}

function Test-SqlContainerBackupInformationCmdLets {
$rgName = "CosmosDBResourceGroup14"
$rgName = "CosmosDBResourceGroup52"
$location = "Central US"
$cosmosDBAccountName = "cosmosdb-1214"
$cosmosDBAccountName = "cosmosdb-1252"
$databaseName = "TestDB1";
$collectionName = "TestCollectionInDB1";
$apiKind = "Sql"
Expand Down Expand Up @@ -326,10 +329,10 @@ function Test-MongoDBCollectionBackupInformationCmdLets {
Assert-NotNull $backupInfo.LatestRestorableTimestamp
}

function Test-UpdateCosmosDBAccountBackupPolicyCmdLet {
$rgName = "CosmosDBResourceGroup20"
function Test-UpdateCosmosDBAccountBackupPolicyToContinuous30DaysCmdLets {
$rgName = "PSCosmosDBResourceGroup20"
$location = "Central US"
$cosmosDBAccountName = "cosmosdb-1220"
$cosmosDBAccountName = "ps-cosmosdb-1220"
$apiKind = "Sql"
$consistencyLevel = "Session"
$locations = @()
Expand All @@ -345,11 +348,122 @@ function Test-UpdateCosmosDBAccountBackupPolicyCmdLet {
}

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous
Start-TestSleep -Seconds 50
Start-Sleep -s (60)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.TargetType
Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.StartTime
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.TargetType
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.StartTime

Start-Sleep -s (60 * 5)

while (
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Completed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Failed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupType -ne "Continuous")
{
Start-Sleep -s 60

# keep polling the migration Status
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
}

Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous30Days" $updatedCosmosDBAccount.BackupPolicy.Tier

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous -ContinuousTier Continuous7Days
Start-Sleep -s (60 * 2)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous7Days" $updatedCosmosDBAccount.BackupPolicy.Tier
}

function Test-UpdateCosmosDBAccountBackupPolicyToContinuous7DaysCmdLets {
$rgName = "PSCosmosDBResourceGroup50"
$location = "Central US"
$cosmosDBAccountName = "ps-cosmosdb-1250"
$apiKind = "Sql"
$consistencyLevel = "Session"
$locations = @()
$locations += New-AzCosmosDBLocationObject -Location $location -FailoverPriority 0 -IsZoneRedundant 0

$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location

Try {
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $cosmosDBAccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel
}
Catch {
Assert-AreEqual $_.Exception.Message ("Resource with Name " + $cosmosDBAccountName + " already exists.")
}

$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous -ContinuousTier Continuous7Days
Start-Sleep -s (60)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.TargetType
#Assert-NotNull $updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.StartTime

Start-Sleep -s (60 * 5)

while (
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Completed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupPolicyMigrationState.Status -ne "Failed" -and
$updatedCosmosDBAccount.BackupPolicy.BackupType -ne "Continuous")
{
Start-Sleep -s 60

# keep polling the migration Status
$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
}

Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous7Days" $updatedCosmosDBAccount.BackupPolicy.Tier

# If we don't provide the continuoustier, it should not trigger the update to continuous30days
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Start-Sleep -s (60 * 2)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual "Continuous7Days" $updatedCosmosDBAccount.BackupPolicy.Tier

# Provide continuoustier explicitly, it should triggered the update to continuous30days
$updatedCosmosDBAccount = Update-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName -BackupPolicyType Continuous -ContinuousTier Continuous30Days
Start-Sleep -s (60 * 2)

$updatedCosmosDBAccount = Get-AzCosmosDBAccount -ResourceGroupName $rgName -Name $cosmosDBAccountName
Assert-AreEqual "Continuous" $updatedCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous30Days" $updatedCosmosDBAccount.BackupPolicy.Tier
}

function Test-ProvisionCosmosDBAccountBackupPolicyWithContinuous7DaysCmdLets {
#use an existing account with the following information
$rgName = "PSCosmosDBResourceGroup51"
$location = "West US"
$sourceCosmosDBAccountName = "ps-cosmosdb-1251"
$consistencyLevel = "Session"
$apiKind = "Sql"
$locations = @()
$locations += New-AzCosmosDBLocationObject -Location "West Us" -FailoverPriority 0 -IsZoneRedundant 0

$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $sourceCosmosDBAccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel -BackupPolicyType Continuous -ContinuousTier Continuous7Days

$sourceCosmosDBAccount = Get-AzCosmosDBAccount -Name $sourceCosmosDBAccountName -ResourceGroupName $rgName
Assert-AreEqual "Continuous" $sourceCosmosDBAccount.BackupPolicy.BackupType
Assert-AreEqual "Continuous7Days" $sourceCosmosDBAccount.BackupPolicy.Tier

$sourceRestorableAccount = Get-AzCosmosDBRestorableDatabaseAccount -Location $sourceCosmosDBAccount.Location -DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.Id
Assert-NotNull $sourceRestorableAccount.Location
Assert-NotNull $sourceRestorableAccount.DatabaseAccountInstanceId
Assert-NotNull $sourceRestorableAccount.RestorableLocations
Assert-AreEqual $sourceRestorableAccount.RestorableLocations.Count 1
Assert-AreEqual $sourceRestorableAccount.DatabaseAccountInstanceId $sourceCosmosDBAccount.InstanceId
Assert-NotNull $sourceRestorableAccount.DatabaseAccountName
Assert-NotNull $sourceRestorableAccount.CreationTime
Assert-NotNull $sourceRestorableAccount.OldestRestorableTime
}
28 changes: 28 additions & 0 deletions src/CosmosDB/CosmosDB.Test/ScenarioTests/SqlOperationsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,20 @@ public void TestSqlOperationsCmdletsUsingInputObject()
TestRunner.RunTestScript("Test-SqlOperationsCmdletsUsingInputObject");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlInAccountRestoreOperationsCmdlets()
{
TestRunner.RunTestScript("Test-SqlInAccountRestoreOperationsCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlInAccountRestoreOperationsSharedResourcesCmdlets()
{
TestRunner.RunTestScript("Test-SqlInAccountRestoreOperationsSharedResourcesCmdlets");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlThroughputCmdlets()
Expand Down Expand Up @@ -71,5 +85,19 @@ public void TestClientEncryptionKeyCmdletsUsingInputObject()
{
TestRunner.RunTestScript("Test-ClientEncryptionKeyCmdletsUsingInputObject");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlContainerMergeCmdlet()
{
TestRunner.RunTestScript("Test-SqlContainerMergeCmdlet");
}

[Fact(Skip = "Cannot acquire token credential for a specific audience. No support from test framework. I have verified the tests manually.")]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestSqlContainerAdaptiveRUCmdlets()
{
TestRunner.RunTestScript("Test-SqlContainerAdaptiveRUCmdlets");
}
}
}
Loading