예제 #1
0
        public void TryCreatingCache(string resourceGroupName, string cacheName, string location)
        {
            var redisEnterpriseClient = RedisEnterpriseCacheManagementTestUtilities.GetRedisEnterpriseManagementClient(_testBase, _context);
            var createResponse        = redisEnterpriseClient.RedisEnterprise.Create(resourceGroupName: resourceGroupName, clusterName: cacheName,
                                                                                     parameters: new Cluster
            {
                Location = location,
                Sku      = new Microsoft.Azure.Management.RedisEnterprise.Models.Sku()
                {
                    Name     = SkuName.EnterpriseE20,
                    Capacity = 2
                }
            });

            Cluster response = redisEnterpriseClient.RedisEnterprise.GetMethod(resourceGroupName: resourceGroupName, clusterName: cacheName);

            ThrowIfTrue(!response.Id.Contains(cacheName), "Cache name not found inside Id.");
            ThrowIfTrue(!response.Name.Equals(cacheName), string.Format("Cache name is not equal to {0}", cacheName));
            ThrowIfTrue(!response.HostName.Contains(cacheName), "Cache name not found inside host name.");

            // wait for maximum 30 minutes for cache to create
            for (int i = 0; i < 60; i++)
            {
                TestUtilities.Wait(new TimeSpan(0, 0, 30));
                Cluster responseGet = redisEnterpriseClient.RedisEnterprise.GetMethod(resourceGroupName: resourceGroupName, clusterName: cacheName);
                if ("succeeded".Equals(responseGet.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }
                ThrowIfTrue(i == 60, "Cache is not in succeeded state even after 30 min.");
            }
        }
예제 #2
0
        public void CreateUpdateDeleteTest()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                var _client = RedisEnterpriseCacheManagementTestUtilities.GetRedisEnterpriseManagementClient(this, context);

                var responseCreate = _client.RedisEnterprise.Create(resourceGroupName: fixture.ResourceGroupName, clusterName: fixture.RedisEnterpriseCacheName,
                                                                    parameters: new Cluster
                {
                    Location = RedisEnterpriseCacheManagementHelper.Location,
                    Sku      = new Sku()
                    {
                        Name     = SkuName.EnterpriseFlashF300,
                        Capacity = 3
                    },
                    Zones = new List <string> {
                        "1", "2", "3"
                    },
                });

                Assert.Contains(fixture.RedisEnterpriseCacheName, responseCreate.Id);
                Assert.Equal(RedisEnterpriseCacheManagementHelper.Location, responseCreate.Location);
                Assert.Equal(fixture.RedisEnterpriseCacheName, responseCreate.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise", responseCreate.Type);
                Assert.Equal(ProvisioningState.Succeeded, responseCreate.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Running, responseCreate.ResourceState, ignoreCase: true);
                Assert.Equal(SkuName.EnterpriseFlashF300, responseCreate.Sku.Name);
                Assert.Equal(3, responseCreate.Sku.Capacity);
                Assert.Equal(3, responseCreate.Zones.Count);
                Assert.Equal(0, responseCreate.PrivateEndpointConnections.Count);
                Assert.Equal(0, responseCreate.Tags.Count);

                var responseCreateDatabase = _client.Databases.Create(resourceGroupName: fixture.ResourceGroupName, clusterName: fixture.RedisEnterpriseCacheName, databaseName: fixture.DatabaseName,
                                                                      parameters: new Database
                {
                    ClientProtocol   = Protocol.Plaintext,
                    ClusteringPolicy = ClusteringPolicy.EnterpriseCluster,
                    EvictionPolicy   = EvictionPolicy.VolatileLRU,
                });

                Assert.Contains(fixture.DatabaseName, responseCreateDatabase.Id);
                Assert.Equal(fixture.DatabaseName, responseCreateDatabase.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise/databases", responseCreateDatabase.Type);
                Assert.Equal(ProvisioningState.Succeeded, responseCreateDatabase.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Running, responseCreateDatabase.ResourceState, ignoreCase: true);
                Assert.Equal(Protocol.Plaintext, responseCreateDatabase.ClientProtocol);
                Assert.Equal(ClusteringPolicy.EnterpriseCluster, responseCreateDatabase.ClusteringPolicy);
                Assert.Equal(EvictionPolicy.VolatileLRU, responseCreateDatabase.EvictionPolicy);

                // Database update operations are not currently supported

                /*
                 * var responseUpdateDatabase = _client.Databases.Update(resourceGroupName: fixture.ResourceGroupName, clusterName: fixture.RedisEnterpriseCacheName, databaseName: fixture.DatabaseName,
                 *                              parameters: new DatabaseUpdate
                 *                              {
                 *                                  ClientProtocol = Protocol.Encrypted,
                 *                              });
                 *
                 * Assert.Contains(fixture.DatabaseName, responseUpdateDatabase.Id);
                 * Assert.Equal(fixture.DatabaseName, responseUpdateDatabase.Name);
                 * Assert.Equal("Microsoft.Cache/redisEnterprise/databases", responseUpdateDatabase.Type);
                 * Assert.Equal(ProvisioningState.Succeeded, responseUpdateDatabase.ProvisioningState, ignoreCase: true);
                 * Assert.Equal(ResourceState.Running, responseUpdateDatabase.ResourceState, ignoreCase: true);
                 * Assert.Equal(Protocol.Encrypted, responseUpdateDatabase.ClientProtocol);
                 * Assert.Equal(ClusteringPolicy.EnterpriseCluster, responseUpdateDatabase.ClusteringPolicy);
                 * Assert.Equal(EvictionPolicy.VolatileLRU, responseUpdateDatabase.EvictionPolicy);
                 */

                _client.RedisEnterprise.Delete(resourceGroupName: fixture.ResourceGroupName, clusterName: fixture.RedisEnterpriseCacheName);
            }
        }
        public void BeginCreateFunctionalTest()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                RedisEnterpriseCacheManagementHelper _redisEnterpriseCacheManagementHelper = new RedisEnterpriseCacheManagementHelper(this, context);
                _redisEnterpriseCacheManagementHelper.TryRegisterSubscriptionForResource();

                string resourceGroupName        = TestUtilities.GenerateName("RedisEnterpriseBegin");
                string redisEnterpriseCacheName = TestUtilities.GenerateName("RedisEnterpriseBegin");
                string databaseName             = "default";

                RedisEnterpriseManagementClient _client = RedisEnterpriseCacheManagementTestUtilities.GetRedisEnterpriseManagementClient(this, context);
                _redisEnterpriseCacheManagementHelper.TryCreateResourceGroup(resourceGroupName, RedisEnterpriseCacheManagementHelper.Location);
                Cluster clusterResponse = _client.RedisEnterprise.BeginCreate(resourceGroupName, redisEnterpriseCacheName,
                                                                              parameters: new Cluster
                {
                    Location = RedisEnterpriseCacheManagementHelper.Location,
                    Sku      = new Sku()
                    {
                        Name     = SkuName.EnterpriseE10,
                        Capacity = 2
                    },
                    MinimumTlsVersion = TlsVersion.OneFullStopTwo,
                    Zones             = new List <string> {
                        "1", "2", "3"
                    },
                });

                Assert.Contains(redisEnterpriseCacheName, clusterResponse.Id);
                Assert.Equal(RedisEnterpriseCacheManagementHelper.Location, clusterResponse.Location);
                Assert.Equal(redisEnterpriseCacheName, clusterResponse.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise", clusterResponse.Type);
                Assert.Equal(ProvisioningState.Creating, clusterResponse.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Creating, clusterResponse.ResourceState, ignoreCase: true);
                Assert.Equal(SkuName.EnterpriseE10, clusterResponse.Sku.Name);
                Assert.Equal(2, clusterResponse.Sku.Capacity);

                // Wait up to 30 minutes for cluster creation to succeed
                for (int i = 0; i < 60; i++)
                {
                    clusterResponse = _client.RedisEnterprise.Get(resourceGroupName, redisEnterpriseCacheName);
                    if (ProvisioningState.Succeeded.Equals(clusterResponse.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    TestUtilities.Wait(TimeSpan.FromSeconds(30));
                }
                Assert.Equal(ResourceState.Running, clusterResponse.ResourceState, ignoreCase: true);
                Assert.Equal(3, clusterResponse.Zones.Count);

                Database databaseResponse = _client.Databases.BeginCreate(resourceGroupName, redisEnterpriseCacheName, databaseName,
                                                                          parameters: new Database
                {
                    ClientProtocol   = Protocol.Encrypted,
                    ClusteringPolicy = ClusteringPolicy.OSSCluster,
                    EvictionPolicy   = EvictionPolicy.NoEviction,
                    Persistence      = new Persistence()
                    {
                        AofEnabled   = true,
                        AofFrequency = AofFrequency.OneSecond
                    },
                    Modules = new List <Module>()
                    {
                        new Module(name: "RedisBloom", args: "ERROR_RATE 0.01 INITIAL_SIZE 400"),
                        new Module(name: "RedisTimeSeries", args: "RETENTION_POLICY 20"),
                        new Module(name: "RediSearch")
                    },
                });

                // Wait up to 30 minutes for database creation to succeed
                for (int i = 0; i < 60; i++)
                {
                    databaseResponse = _client.Databases.Get(resourceGroupName, redisEnterpriseCacheName, databaseName);
                    if (ProvisioningState.Succeeded.Equals(databaseResponse.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    TestUtilities.Wait(TimeSpan.FromSeconds(30));
                }

                Assert.Contains(databaseName, databaseResponse.Id);
                Assert.Equal(databaseName, databaseResponse.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise/databases", databaseResponse.Type);
                Assert.Equal(ResourceState.Running, databaseResponse.ResourceState, ignoreCase: true);
                Assert.Equal(Protocol.Encrypted, databaseResponse.ClientProtocol);
                Assert.Equal(ClusteringPolicy.OSSCluster, databaseResponse.ClusteringPolicy);
                Assert.Equal(EvictionPolicy.NoEviction, databaseResponse.EvictionPolicy);
                Assert.Equal(3, databaseResponse.Modules.Count);

                _client.RedisEnterprise.Delete(resourceGroupName: resourceGroupName, clusterName: redisEnterpriseCacheName);
            }
        }
예제 #4
0
 public RedisEnterpriseCacheManagementHelper(TestBase testBase, MockContext context)
 {
     _client   = RedisEnterpriseCacheManagementTestUtilities.GetResourceManagementClient(testBase, context);
     _testBase = testBase;
     _context  = context;
 }
        public void BeginCreateFunctionalTest()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                var _redisEnterpriseCacheManagementHelper = new RedisEnterpriseCacheManagementHelper(this, context);
                _redisEnterpriseCacheManagementHelper.TryRegisterSubscriptionForResource();

                var resourceGroupName        = TestUtilities.GenerateName("RedisEnterpriseBegin");
                var redisEnterpriseCacheName = TestUtilities.GenerateName("RedisEnterpriseBegin");
                var databaseName             = "default";

                var _client = RedisEnterpriseCacheManagementTestUtilities.GetRedisEnterpriseManagementClient(this, context);
                _redisEnterpriseCacheManagementHelper.TryCreateResourceGroup(resourceGroupName, RedisEnterpriseCacheManagementHelper.Location);
                var response = _client.RedisEnterprise.BeginCreate(resourceGroupName, redisEnterpriseCacheName,
                                                                   parameters: new Cluster
                {
                    Location = RedisEnterpriseCacheManagementHelper.Location,
                    Sku      = new Sku()
                    {
                        Name     = SkuName.EnterpriseE10,
                        Capacity = 2
                    },
                    MinimumTlsVersion = "1.2",
                    Zones             = new List <string> {
                        "1", "2", "3"
                    },
                });

                Assert.Contains(redisEnterpriseCacheName, response.Id);
                Assert.Equal(RedisEnterpriseCacheManagementHelper.Location, response.Location);
                Assert.Equal(redisEnterpriseCacheName, response.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise", response.Type);
                Assert.Equal(ProvisioningState.Creating, response.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Creating, response.ResourceState, ignoreCase: true);
                Assert.Equal(SkuName.EnterpriseE10, response.Sku.Name);
                Assert.Equal(2, response.Sku.Capacity);

                for (int i = 0; i < 60; i++)
                {
                    response = _client.RedisEnterprise.GetMethod(resourceGroupName, redisEnterpriseCacheName);
                    if (ProvisioningState.Succeeded.Equals(response.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    TestUtilities.Wait(new TimeSpan(0, 0, 30));
                }
                Assert.Equal(ResourceState.Running, response.ResourceState, ignoreCase: true);
                Assert.Equal(3, response.Zones.Count);

                var responseDatabase = _client.Databases.BeginCreate(resourceGroupName, redisEnterpriseCacheName, databaseName,
                                                                     parameters: new Database
                {
                    ClientProtocol   = Protocol.Encrypted,
                    ClusteringPolicy = ClusteringPolicy.OSSCluster,
                    EvictionPolicy   = EvictionPolicy.NoEviction,
                    Modules          = new List <Module>()
                    {
                        new Module(name: "RedisBloom", args: "ERROR_RATE 0.00 INITIAL_SIZE 400"),
                        new Module(name: "RedisTimeSeries", args: "RETENTION_POLICY 20"),
                        new Module(name: "RediSearch")
                    },
                });

                Assert.Contains(databaseName, responseDatabase.Id);
                Assert.Equal(databaseName, responseDatabase.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise/databases", responseDatabase.Type);
                Assert.Equal(ProvisioningState.Succeeded, responseDatabase.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Running, responseDatabase.ResourceState, ignoreCase: true);
                Assert.Equal(Protocol.Encrypted, responseDatabase.ClientProtocol);
                Assert.Equal(ClusteringPolicy.OSSCluster, responseDatabase.ClusteringPolicy);
                Assert.Equal(EvictionPolicy.NoEviction, responseDatabase.EvictionPolicy);
                Assert.Equal(3, responseDatabase.Modules.Count);

                _client.RedisEnterprise.Delete(resourceGroupName: resourceGroupName, clusterName: redisEnterpriseCacheName);
            }
        }
예제 #6
0
        public void ActiveGeoReplicationFunctionalTest()
        {
            using (var context = MockContext.Start(this.GetType()))
            {
                var    resourceGroupName         = TestUtilities.GenerateName("RedisActiveGeo");
                var    redisEnterpriseCacheName1 = TestUtilities.GenerateName("RedisActiveGeo1");
                var    redisEnterpriseCacheName2 = TestUtilities.GenerateName("RedisActiveGeo2");
                string databaseName  = "default";
                string groupNickname = TestUtilities.GenerateName("activeGeoTesting");

                var _redisEnterpriseCacheManagementHelper = new RedisEnterpriseCacheManagementHelper(this, context);
                _redisEnterpriseCacheManagementHelper.TryRegisterSubscriptionForResource();
                _redisEnterpriseCacheManagementHelper.TryCreateResourceGroup(resourceGroupName, RedisEnterpriseCacheManagementHelper.Location);
                RedisEnterpriseManagementClient _client = RedisEnterpriseCacheManagementTestUtilities.GetRedisEnterpriseManagementClient(this, context);

                // Create cache in east us
                Cluster clusterResponse1 = _client.RedisEnterprise.BeginCreate(resourceGroupName, redisEnterpriseCacheName1,
                                                                               parameters: new Cluster
                {
                    Location = RedisEnterpriseCacheManagementHelper.Location,
                    Sku      = new Sku()
                    {
                        Name     = SkuName.EnterpriseE10,
                        Capacity = 2
                    }
                });
                Assert.Contains(redisEnterpriseCacheName1, clusterResponse1.Id);
                Assert.Equal(RedisEnterpriseCacheManagementHelper.Location, clusterResponse1.Location);
                Assert.Equal(redisEnterpriseCacheName1, clusterResponse1.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise", clusterResponse1.Type);
                Assert.Equal(ProvisioningState.Creating, clusterResponse1.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Creating, clusterResponse1.ResourceState, ignoreCase: true);
                Assert.Equal(SkuName.EnterpriseE10, clusterResponse1.Sku.Name);
                Assert.Equal(2, clusterResponse1.Sku.Capacity);

                // Create cache in west us
                Cluster clusterResponse2 = _client.RedisEnterprise.BeginCreate(resourceGroupName, redisEnterpriseCacheName2,
                                                                               parameters: new Cluster
                {
                    Location = RedisEnterpriseCacheManagementHelper.SecondaryLocation,
                    Sku      = new Sku()
                    {
                        Name     = SkuName.EnterpriseE10,
                        Capacity = 2
                    }
                });
                Assert.Contains(redisEnterpriseCacheName2, clusterResponse2.Id);
                Assert.Equal(RedisEnterpriseCacheManagementHelper.SecondaryLocation, clusterResponse2.Location);
                Assert.Equal(redisEnterpriseCacheName2, clusterResponse2.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise", clusterResponse2.Type);
                Assert.Equal(ProvisioningState.Creating, clusterResponse2.ProvisioningState, ignoreCase: true);
                Assert.Equal(ResourceState.Creating, clusterResponse2.ResourceState, ignoreCase: true);
                Assert.Equal(SkuName.EnterpriseE10, clusterResponse2.Sku.Name);
                Assert.Equal(2, clusterResponse2.Sku.Capacity);

                // Wait for both cache creation to complete
                for (int i = 0; i < 120; i++)
                {
                    clusterResponse1 = _client.RedisEnterprise.Get(resourceGroupName, redisEnterpriseCacheName1);
                    clusterResponse2 = _client.RedisEnterprise.Get(resourceGroupName, redisEnterpriseCacheName2);
                    if (ProvisioningState.Succeeded.Equals(clusterResponse1.ProvisioningState, StringComparison.OrdinalIgnoreCase) &&
                        ProvisioningState.Succeeded.Equals(clusterResponse2.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    TestUtilities.Wait(TimeSpan.FromSeconds(30));
                }
                Assert.Equal(ResourceState.Running, clusterResponse1.ResourceState, ignoreCase: true);
                Assert.Equal(ResourceState.Running, clusterResponse2.ResourceState, ignoreCase: true);

                // Fail if a cache is not created successfully
                Assert.Equal(ProvisioningState.Succeeded, clusterResponse1.ProvisioningState, ignoreCase: true);
                Assert.Equal(ProvisioningState.Succeeded, clusterResponse2.ProvisioningState, ignoreCase: true);

                // create db for cluster 1
                string   linkedDatabaseId1 = clusterResponse1.Id + "/databases/" + databaseName;
                Database databaseResponse1 = _client.Databases.BeginCreate(resourceGroupName, redisEnterpriseCacheName1, databaseName,
                                                                           parameters: new Database
                {
                    ClientProtocol   = Protocol.Encrypted,
                    ClusteringPolicy = ClusteringPolicy.EnterpriseCluster,
                    EvictionPolicy   = EvictionPolicy.NoEviction,
                    GeoReplication   = new DatabasePropertiesGeoReplication()
                    {
                        GroupNickname   = groupNickname,
                        LinkedDatabases = new List <LinkedDatabase>()
                        {
                            new LinkedDatabase(id: linkedDatabaseId1)
                        }
                    }
                });
                Assert.Equal(LinkState.Linking, databaseResponse1.GeoReplication.LinkedDatabases[0].State);

                // Wait up to 30 minutes for database creation to succeed
                for (int i = 0; i < 60; i++)
                {
                    databaseResponse1 = _client.Databases.Get(resourceGroupName, redisEnterpriseCacheName1, databaseName);
                    if (ProvisioningState.Succeeded.Equals(databaseResponse1.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    TestUtilities.Wait(TimeSpan.FromSeconds(30));
                }
                Assert.Contains(databaseName, databaseResponse1.Id);
                Assert.Equal(databaseName, databaseResponse1.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise/databases", databaseResponse1.Type);
                Assert.Equal(ResourceState.Running, databaseResponse1.ResourceState, ignoreCase: true);
                Assert.Equal(Protocol.Encrypted, databaseResponse1.ClientProtocol);
                Assert.Equal(ClusteringPolicy.EnterpriseCluster, databaseResponse1.ClusteringPolicy);
                Assert.Equal(EvictionPolicy.NoEviction, databaseResponse1.EvictionPolicy);
                Assert.Equal(groupNickname, databaseResponse1.GeoReplication.GroupNickname);
                Assert.Equal(linkedDatabaseId1, databaseResponse1.GeoReplication.LinkedDatabases[0].Id);
                Assert.Equal(LinkState.Linked, databaseResponse1.GeoReplication.LinkedDatabases[0].State);


                // create db for cluster 2
                string   linkedDatabaseId2 = clusterResponse2.Id + "/databases/" + databaseName;
                Database databaseResponse2 = _client.Databases.BeginCreate(resourceGroupName, redisEnterpriseCacheName2, databaseName,
                                                                           parameters: new Database
                {
                    ClientProtocol   = Protocol.Encrypted,
                    ClusteringPolicy = ClusteringPolicy.EnterpriseCluster,
                    EvictionPolicy   = EvictionPolicy.NoEviction,
                    GeoReplication   = new DatabasePropertiesGeoReplication()
                    {
                        GroupNickname   = groupNickname,
                        LinkedDatabases = new List <LinkedDatabase>()
                        {
                            new LinkedDatabase(id: linkedDatabaseId1),
                            new LinkedDatabase(id: linkedDatabaseId2)
                        }
                    }
                });
                Assert.Equal(LinkState.Linking, databaseResponse2.GeoReplication.LinkedDatabases[1].State);

                // Wait up to 30 minutes for database creation to succeed
                for (int i = 0; i < 60; i++)
                {
                    databaseResponse2 = _client.Databases.Get(resourceGroupName, redisEnterpriseCacheName2, databaseName);
                    if (ProvisioningState.Succeeded.Equals(databaseResponse2.ProvisioningState, StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                    TestUtilities.Wait(TimeSpan.FromSeconds(30));
                }
                Assert.Contains(databaseName, databaseResponse2.Id);
                Assert.Equal(databaseName, databaseResponse2.Name);
                Assert.Equal("Microsoft.Cache/redisEnterprise/databases", databaseResponse2.Type);
                Assert.Equal(ResourceState.Running, databaseResponse2.ResourceState, ignoreCase: true);
                Assert.Equal(Protocol.Encrypted, databaseResponse2.ClientProtocol);
                Assert.Equal(ClusteringPolicy.EnterpriseCluster, databaseResponse2.ClusteringPolicy);
                Assert.Equal(EvictionPolicy.NoEviction, databaseResponse2.EvictionPolicy);
                Assert.Equal(groupNickname, databaseResponse2.GeoReplication.GroupNickname);
                Assert.Equal(2, databaseResponse2.GeoReplication.LinkedDatabases.Count);
                Assert.Equal(linkedDatabaseId1, databaseResponse2.GeoReplication.LinkedDatabases[0].Id);
                Assert.Equal(LinkState.Linked, databaseResponse2.GeoReplication.LinkedDatabases[0].State);
                Assert.Equal(linkedDatabaseId2, databaseResponse2.GeoReplication.LinkedDatabases[1].Id);
                Assert.Equal(LinkState.Linked, databaseResponse2.GeoReplication.LinkedDatabases[1].State);

                // Check if all linked ids can be seen on database 1 as well
                databaseResponse1 = _client.Databases.Get(resourceGroupName, redisEnterpriseCacheName1, databaseName);
                Assert.Equal(2, databaseResponse1.GeoReplication.LinkedDatabases.Count);

                // Force unlink database 1 from active geo-replication group
                _client.Databases.ForceUnlink(resourceGroupName, redisEnterpriseCacheName2, databaseName, new List <string>()
                {
                    linkedDatabaseId1
                });

                // Wait for 5 min
                for (int i = 0; i < 10; i++)
                {
                    databaseResponse2 = _client.Databases.Get(resourceGroupName, redisEnterpriseCacheName2, databaseName);
                    if (databaseResponse2.GeoReplication.LinkedDatabases.Count.Equals(1))
                    {
                        break;
                    }
                    TestUtilities.Wait(TimeSpan.FromSeconds(30));
                }
                Assert.Equal(1, databaseResponse2.GeoReplication.LinkedDatabases.Count);
                Assert.Equal(linkedDatabaseId2, databaseResponse2.GeoReplication.LinkedDatabases[0].Id);
                Assert.Equal(LinkState.Linked, databaseResponse2.GeoReplication.LinkedDatabases[0].State);

                // Clean up resources
                _client.RedisEnterprise.Delete(resourceGroupName: resourceGroupName, clusterName: redisEnterpriseCacheName1);
                _client.RedisEnterprise.Delete(resourceGroupName: resourceGroupName, clusterName: redisEnterpriseCacheName2);
            }
        }