Skip to content

Commit a7354be

Browse files
authored
Merge main changes into Az.CosmosDB-preview-2024 (#24252)
* cherry-pick stable change into preview; stable:#24199 * 1 out of 7 fixed * fixing other 2 tests * fixing remaining 4 tests failure due to session record
1 parent 30e6d50 commit a7354be

22 files changed

+37878
-2740
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
@@ -780,8 +780,172 @@ function Test-GremlinInAccountRestoreOperationsCmdlets
780780
}
781781
Finally
782782
{
783-
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $GraphName
784-
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
783+
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $GraphName
784+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
785+
}
786+
}
787+
788+
<#
789+
.SYNOPSIS
790+
1. Create database.
791+
2. Create container.
792+
3. Get database.
793+
4. Get container.
794+
5. Delete container.
795+
6. Restore non-existent container and expect failure.
796+
7. Restore container (from #5).
797+
8. Delete database.
798+
9. Restore container and expect failure (due to the database being offline).
799+
10. Restore database.
800+
11. Restore container.
801+
12. Restore container again and expect failure (as the collection is already online).
802+
13. Delete database.
803+
14. Restore non-existent database and expect failure.
804+
15. Restore database.
805+
16. Restore database again and expect failure (as the database already exists).
806+
17. Restore collection.
807+
#>
808+
function Test-GremlinInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2
809+
{
810+
$AccountName = "iar-gremlingraph-ntbr"
811+
$rgName = "CosmosDBResourceGroup50"
812+
$DatabaseName = "dbName"
813+
$ContainerName = "collection1"
814+
$location = "West US"
815+
$PartitionKeyPathValue = "/foo"
816+
$PartitionKeyKindValue = "Hash"
817+
$apiKind = "Gremlin"
818+
$consistencyLevel = "Session"
819+
$locations = @()
820+
$locations += New-AzCosmosDBLocationObject -LocationName "West US" -FailoverPriority 0 -IsZoneRedundant 0
821+
822+
Try {
823+
824+
$resourceGroup = New-AzResourceGroup -ResourceGroupName $rgName -Location $location
825+
New-AzCosmosDBAccount -ResourceGroupName $rgName -LocationObject $locations -Name $AccountName -ApiKind $apiKind -DefaultConsistencyLevel $consistencyLevel -BackupPolicyType Continuous
826+
827+
# 1. Create a new database
828+
$NewDatabase = New-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
829+
Assert-AreEqual $NewDatabase.Name $DatabaseName
830+
831+
# 2. Create a new container
832+
$NewContainer = New-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName -PartitionKeyPath $PartitionKeyPathValue -PartitionKeyKind $PartitionKeyKindValue
833+
Assert-AreEqual $NewContainer.Name $ContainerName
834+
835+
# 3. Get a database
836+
$Database = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
837+
Assert-AreEqual $NewDatabase.Id $Database.Id
838+
Assert-AreEqual $NewDatabase.Name $Database.Name
839+
Assert-NotNull($Database)
840+
841+
# 4. Get a container
842+
$Container = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
843+
Assert-AreEqual $NewContainer.Id $Container.Id
844+
Assert-AreEqual $NewContainer.Name $Container.Name
845+
Assert-NotNull($Container)
846+
847+
Start-TestSleep -s 50
848+
849+
# 5. Remove container
850+
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
851+
852+
Start-TestSleep -s 50
853+
854+
# 6. Restore non-existent container - expect failure
855+
$InvalidContainerName = "Invalid-Container459"
856+
$RestoreInvalidContainerResult = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $InvalidContainerName
857+
Assert-Null $RestoreInvalidContainerResult
858+
859+
# 7. Restore deleted container in #5
860+
Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
861+
862+
Start-TestSleep -s 50
863+
864+
# list containers
865+
$ListContainers = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
866+
Assert-NotNull($ListContainers)
867+
868+
# 8. Delete database
869+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
870+
871+
Start-TestSleep -s 100
872+
873+
# list databases
874+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
875+
Assert-Null($ListDatabases)
876+
877+
# 9. Restore container - expect failure (database is offline)
878+
$RestoreContainerWhenDatabaseOfflineResult = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
879+
Assert-Null $RestoreContainerWhenDatabaseOfflineResult
880+
881+
# 10. Restore deleted database
882+
Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
883+
884+
Start-TestSleep -s 50
885+
886+
# list databases
887+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
888+
Assert-NotNull($ListDatabases)
889+
890+
Start-TestSleep -s 50
891+
892+
# 11. Restore collection
893+
$RestoredCollection = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
894+
895+
Start-TestSleep -s 50
896+
897+
# list containers
898+
$ListContainers = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
899+
Assert-NotNull($ListContainers)
900+
901+
# 12. Restore container again - expect failure (collection already online)
902+
$SecondInAccountContainerRestore = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
903+
Assert-Null $SecondInAccountContainerRestore
904+
905+
# 13. Delete database
906+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
907+
908+
Start-TestSleep -s 100
909+
910+
# list databases
911+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
912+
Assert-Null($ListDatabases)
913+
914+
# 14. Restore non-existent database - expect failure
915+
$InvalidDatabaseName = "InvalidDatabaseName"
916+
$RestoreInvalidDatabase = Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $InvalidDatabaseName
917+
Assert-Null $RestoreInvalidDatabase
918+
919+
920+
# 15. Restore database
921+
Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
922+
923+
Start-TestSleep -s 50
924+
925+
# list databases
926+
$ListDatabases = Get-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName
927+
Assert-NotNull($ListDatabases)
928+
929+
# 16. Restore database again - expect failure (database already exists)
930+
$SecondInAccountDatabaseRestore = Restore-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
931+
Assert-Null $SecondInAccountDatabaseRestore
932+
933+
# 17. Restore collection
934+
$RestoredCollection = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
935+
Start-TestSleep -s 50
936+
Assert-NotNull $RestoredCollection
937+
938+
# list containers
939+
$ListContainers = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
940+
Assert-NotNull $ListContainers
941+
}
942+
Catch {
943+
Write-Output "Error: $_"
944+
throw $_
945+
}
946+
Finally {
947+
Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $ContainerName
948+
Remove-AzCosmosDBGremlinDatabase -AccountName $AccountName -ResourceGroupName $rgName -Name $DatabaseName
785949
}
786950
}
787951

@@ -855,7 +1019,7 @@ function Test-GremlinInAccountRestoreOperationsNoTimestampCmdlets
8551019
$IsGraphRemoved = Remove-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $graphName -PassThru
8561020
Assert-AreEqual $IsGraphRemoved true
8571021

858-
Start-TestSleep -s 50
1022+
Start-TestSleep -s 100
8591023

8601024
$Restoredgraph = Restore-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName -Name $graphName
8611025

@@ -883,12 +1047,11 @@ function Test-GremlinInAccountRestoreOperationsNoTimestampCmdlets
8831047
Catch {
8841048
Assert-AreEqual $_.Exception.Message.Contains("No graph with name") true
8851049
}
886-
8871050
Start-TestSleep -s 50
8881051

8891052
# List graphs
8901053
$Listgraphs = Get-AzCosmosDBGremlinGraph -AccountName $AccountName -ResourceGroupName $rgName -DatabaseName $DatabaseName
891-
Assert-Null($Listgraphs)
1054+
Assert-NotNull($Listgraphs)
8921055

8931056
# List databases
8941057
$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
@@ -66,6 +66,13 @@ public void TestMongoInAccountRestoreOperationsCmdlets()
6666
TestRunner.RunTestScript("Test-MongoInAccountRestoreOperationsCmdlets");
6767
}
6868

69+
[Fact]
70+
[Trait(Category.AcceptanceType, Category.CheckIn)]
71+
public void TestMongoDBInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2()
72+
{
73+
TestRunner.RunTestScript("Test-MongoDBInAccountCoreFunctionalityNoTimestampBasedRestoreCmdletsV2");
74+
}
75+
6976
[Fact]
7077
[Trait(Category.AcceptanceType, Category.CheckIn)]
7178
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)