Skip to content

Commit 184bdc7

Browse files
authored
[CosmosDB] NoTimeStamp Based Restore Fixes for GA PowerShell commands for InAccount Restore of Deleted Database/ Containers feature for SQL/Mongo/Table/Gremlinowershell stable (#24199)
* fixing source code for ntbr in powershell stable * added test to cover new scenarios with ntbr and fixed existing test affected with current change * add delay before listing * mongo ntbr test recording update
1 parent 1a1314d commit 184bdc7

22 files changed

+39740
-3137
lines changed

src/CosmosDB/CosmosDB.Test/ScenarioTests/GremlinOperationsTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ public void TestGremlinInAccountRestoreOperationsNoTimestampCmdlets()
6565
TestRunner.RunTestScript("Test-GremlinInAccountRestoreOperationsNoTimestampCmdlets");
6666
}
6767

68+
[Fact]
69+
[Trait(Category.AcceptanceType, Category.CheckIn)]
70+
public void TestGremlinInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2()
71+
{
72+
TestRunner.RunTestScript("Test-GremlinInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2");
73+
}
74+
6875
[Fact]
6976
[Trait(Category.AcceptanceType, Category.CheckIn)]
7077
public void TestGremlinInAccountRestoreOperationsSharedRUResourcesCmdlets()

src/CosmosDB/CosmosDB.Test/ScenarioTests/GremlinOperationsTests.ps1

Lines changed: 168 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -527,8 +527,172 @@ function Test-GremlinInAccountRestoreOperationsCmdlets
527527
}
528528
Finally
529529
{
530-
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $GraphName
531-
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
530+
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $GraphName
531+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
532+
}
533+
}
534+
535+
<#
536+
.SYNOPSIS
537+
1. Create database.
538+
2. Create container.
539+
3. Get database.
540+
4. Get container.
541+
5. Delete container.
542+
6. Restore non-existent container and expect failure.
543+
7. Restore container (from #5).
544+
8. Delete database.
545+
9. Restore container and expect failure (due to the database being offline).
546+
10. Restore database.
547+
11. Restore container.
548+
12. Restore container again and expect failure (as the collection is already online).
549+
13. Delete database.
550+
14. Restore non-existent database and expect failure.
551+
15. Restore database.
552+
16. Restore database again and expect failure (as the database already exists).
553+
17. Restore collection.
554+
#>
555+
function Test-GremlinInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2
556+
{
557+
$AccountName = "iar-gremlingraph-ntbr"
558+
$rgName = "CosmosDBResourceGroup50"
559+
$DatabaseName = "dbName"
560+
$ContainerName = "collection1"
561+
$location = "West US"
562+
$PartitionKeyPathValue = "/foo"
563+
$PartitionKeyKindValue = "Hash"
564+
$apiKind = "Gremlin"
565+
$consistencyLevel = "Session"
566+
$locations = @()
567+
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 0 -IsZoneRedundant 0
568+
569+
Try {
570+
571+
$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location
572+
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $AccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel -BackupPolicyType Continuous
573+
574+
# 1. Create a new database
575+
$NewDatabase = New-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
576+
Assert-AreEqual $NewDatabase.Name $DatabaseName
577+
578+
# 2. Create a new container
579+
$NewContainer = New-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName -PartitionKeyPath $PartitionKeyPathValue -PartitionKeyKind $PartitionKeyKindValue
580+
Assert-AreEqual $NewContainer.Name $ContainerName
581+
582+
# 3. Get a database
583+
$Database = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
584+
Assert-AreEqual $NewDatabase.Id $Database.Id
585+
Assert-AreEqual $NewDatabase.Name $Database.Name
586+
Assert-NotNull($Database)
587+
588+
# 4. Get a container
589+
$Container = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
590+
Assert-AreEqual $NewContainer.Id $Container.Id
591+
Assert-AreEqual $NewContainer.Name $Container.Name
592+
Assert-NotNull($Container)
593+
594+
Start-TestSleep -s 50
595+
596+
# 5. Remove container
597+
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
598+
599+
Start-TestSleep -s 50
600+
601+
# 6. Restore non-existent container - expect failure
602+
$InvalidContainerName = "Invalid-Container459"
603+
$RestoreInvalidContainerResult = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $InvalidContainerName
604+
Assert-Null $RestoreInvalidContainerResult
605+
606+
# 7. Restore deleted container in #5
607+
Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
608+
609+
Start-TestSleep -s 50
610+
611+
# list containers
612+
$ListContainers = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
613+
Assert-NotNull($ListContainers)
614+
615+
# 8. Delete database
616+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
617+
618+
Start-TestSleep -s 100
619+
620+
# list databases
621+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
622+
Assert-Null($ListDatabases)
623+
624+
# 9. Restore container - expect failure (database is offline)
625+
$RestoreContainerWhenDatabaseOfflineResult = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
626+
Assert-Null $RestoreContainerWhenDatabaseOfflineResult
627+
628+
# 10. Restore deleted database
629+
Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
630+
631+
Start-TestSleep -s 50
632+
633+
# list databases
634+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
635+
Assert-NotNull($ListDatabases)
636+
637+
Start-TestSleep -s 50
638+
639+
# 11. Restore collection
640+
$RestoredCollection = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
641+
642+
Start-TestSleep -s 50
643+
644+
# list containers
645+
$ListContainers = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
646+
Assert-NotNull($ListContainers)
647+
648+
# 12. Restore container again - expect failure (collection already online)
649+
$SecondInAccountContainerRestore = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
650+
Assert-Null $SecondInAccountContainerRestore
651+
652+
# 13. Delete database
653+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
654+
655+
Start-TestSleep -s 100
656+
657+
# list databases
658+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
659+
Assert-Null($ListDatabases)
660+
661+
# 14. Restore non-existent database - expect failure
662+
$InvalidDatabaseName = "InvalidDatabaseName"
663+
$RestoreInvalidDatabase = Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $InvalidDatabaseName
664+
Assert-Null $RestoreInvalidDatabase
665+
666+
667+
# 15. Restore database
668+
Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
669+
670+
Start-TestSleep -s 50
671+
672+
# list databases
673+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
674+
Assert-NotNull($ListDatabases)
675+
676+
# 16. Restore database again - expect failure (database already exists)
677+
$SecondInAccountDatabaseRestore = Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
678+
Assert-Null $SecondInAccountDatabaseRestore
679+
680+
# 17. Restore collection
681+
$RestoredCollection = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
682+
Start-TestSleep -s 50
683+
Assert-NotNull $RestoredCollection
684+
685+
# list containers
686+
$ListContainers = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
687+
Assert-NotNull $ListContainers
688+
}
689+
Catch {
690+
Write-Output "Error: $_"
691+
throw $_
692+
}
693+
Finally {
694+
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
695+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
532696
}
533697
}
534698

@@ -602,7 +766,7 @@ function Test-GremlinInAccountRestoreOperationsNoTimestampCmdlets
602766
$IsGraphRemoved = Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $graphName -PassThru
603767
Assert-AreEqual $IsGraphRemoved true
604768

605-
Start-TestSleep -s 50
769+
Start-TestSleep -s 100
606770

607771
$Restoredgraph = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $graphName
608772

@@ -630,12 +794,11 @@ function Test-GremlinInAccountRestoreOperationsNoTimestampCmdlets
630794
Catch {
631795
Assert-AreEqual $_.Exception.Message.Contains("No graph with name") true
632796
}
633-
634797
Start-TestSleep -s 50
635798

636799
# List graphs
637800
$Listgraphs = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
638-
Assert-Null($Listgraphs)
801+
Assert-NotNull($Listgraphs)
639802

640803
# List databases
641804
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName

src/CosmosDB/CosmosDB.Test/ScenarioTests/MongoOperationsTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ public void TestMongoInAccountRestoreOperationsCmdlets()
5959
TestRunner.RunTestScript("Test-MongoInAccountRestoreOperationsCmdlets");
6060
}
6161

62+
[Fact]
63+
[Trait(Category.AcceptanceType, Category.CheckIn)]
64+
public void TestMongoDBInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2()
65+
{
66+
TestRunner.RunTestScript("Test-MongoDBInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2");
67+
}
68+
6269
[Fact]
6370
[Trait(Category.AcceptanceType, Category.CheckIn)]
6471
public void TestMongoInAccountRestoreOperationsNoTimestampCmdlets()

src/CosmosDB/CosmosDB.Test/ScenarioTests/MongoOperationsTests.ps1

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,170 @@ Try {
420420
}
421421
}
422422

423+
<#
424+
.SYNOPSIS
425+
1. Create database.
426+
2. Create container.
427+
3. Get database.
428+
4. Get container.
429+
5. Delete container.
430+
6. Restore non-existent container and expect failure.
431+
7. Restore container (from #5).
432+
8. Delete database.
433+
9. Restore container and expect failure (due to the database being offline).
434+
10. Restore database.
435+
11. Restore container.
436+
12. Restore container again and expect failure (as the collection is already online).
437+
13. Delete database.
438+
14. Restore non-existent database and expect failure.
439+
15. Restore database.
440+
16. Restore database again and expect failure (as the database already exists).
441+
17. Restore collection.
442+
#>
443+
function Test-MongoDBInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2
444+
{
445+
$AccountName = "mongodb-iar25"
446+
$rgName = "CosmosDBResourceGroup49"
447+
$DatabaseName = "mongodbName6"
448+
$ContainerName = "container1"
449+
$location = "West US"
450+
$consistencyLevel = "Session"
451+
$apiKind = "MongoDB"
452+
$PartitionKeyPathValue = "/foo/bar"
453+
$PartitionKeyKindValue = "Hash"
454+
455+
$locations = @()
456+
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 0 -IsZoneRedundant 0
457+
Try {
458+
$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location
459+
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $AccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel -BackupPolicyType Continuous
460+
461+
# 1. Create a new database
462+
$NewDatabase = New-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
463+
Assert-AreEqual $NewDatabase.Name $DatabaseName
464+
465+
# 2. Create a new container
466+
$NewContainer = New-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
467+
Assert-AreEqual $NewContainer.Name $ContainerName
468+
469+
# 3. Get a database
470+
$Database = Get-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
471+
Assert-AreEqual $NewDatabase.Id $Database.Id
472+
Assert-AreEqual $NewDatabase.Name $Database.Name
473+
Assert-NotNull($Database)
474+
475+
# 4. Get a container
476+
$Container = Get-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
477+
Assert-AreEqual $NewContainer.Id $Container.Id
478+
Assert-AreEqual $NewContainer.Name $Container.Name
479+
Assert-NotNull($Container)
480+
481+
Start-TestSleep -s 50
482+
483+
# 5. Remove container
484+
Remove-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
485+
486+
Start-TestSleep -s 50
487+
488+
# 6. Restore non-existent container - expect failure
489+
$InvalidContainerName = "Invalid-Container459"
490+
$RestoreInvalidContainerResult = Restore-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $InvalidContainerName
491+
Assert-Null $RestoreInvalidContainerResult
492+
493+
# 7. Restore deleted container in #5
494+
Restore-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
495+
496+
Start-TestSleep -s 50
497+
498+
# list containers
499+
$ListContainers = Get-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
500+
Assert-NotNull($ListContainers)
501+
502+
# 8. Delete database
503+
Remove-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
504+
505+
Start-TestSleep -s 100
506+
507+
# list databases
508+
$ListDatabases = Get-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName
509+
Assert-Null($ListDatabases)
510+
511+
# 9. Restore container - expect failure (database is offline)
512+
$RestoreContainerWhenDatabaseOfflineResult = Restore-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
513+
Assert-Null $RestoreContainerWhenDatabaseOfflineResult
514+
515+
# 10. Restore deleted database
516+
Restore-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
517+
518+
Start-TestSleep -s 50
519+
520+
# list databases
521+
$ListDatabases = Get-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName
522+
Assert-NotNull($ListDatabases)
523+
524+
Start-TestSleep -s 50
525+
526+
# 11. Restore collection
527+
$RestoredCollection = Restore-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
528+
529+
Start-TestSleep -s 50
530+
531+
# list containers
532+
$ListContainers = Get-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
533+
Assert-NotNull($ListContainers)
534+
535+
# 12. Restore container again - expect failure (collection already online)
536+
$SecondInAccountContainerRestore = Restore-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
537+
Assert-Null $SecondInAccountContainerRestore
538+
539+
# 13. Delete database
540+
Remove-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
541+
Start-TestSleep -s 100
542+
543+
# list databases
544+
$ListDatabases = Get-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName
545+
Assert-Null($ListDatabases)
546+
547+
# 14. Restore non-existent database - expect failure
548+
$InvalidDatabaseName = "InvalidDatabaseName"
549+
$RestoreInvalidDatabase = Restore-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $InvalidDatabaseName
550+
Assert-Null $RestoreInvalidDatabase
551+
552+
553+
# 15. Restore database
554+
Restore-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
555+
556+
Start-TestSleep -s 50
557+
558+
# list databases
559+
$ListDatabases = Get-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName
560+
Assert-NotNull($ListDatabases)
561+
562+
# 16. Restore database again - expect failure (database already exists)
563+
$SecondInAccountDatabaseRestore = Restore-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
564+
Assert-Null $SecondInAccountDatabaseRestore
565+
566+
# 17. Restore collection
567+
$RestoredCollection = Restore-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
568+
Start-TestSleep -s 50
569+
Assert-NotNull $RestoredCollection
570+
571+
Start-TestSleep -s 100
572+
573+
# list containers
574+
$ListContainers = Get-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
575+
Assert-NotNull $ListContainers
576+
}
577+
Catch {
578+
Write-Output "Error: $_"
579+
throw $_
580+
}
581+
Finally {
582+
Remove-AzCosmosDBMongoDBCollection -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
583+
Remove-AzCosmosDBMongoDBDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
584+
}
585+
}
586+
423587
function Test-MongoInAccountRestoreOperationsNoTimestampCmdlets
424588
{
425589
$AccountName = "mongo-db00049"

0 commit comments

Comments
 (0)