示例#1
0
        public void SyncMemberCRUDTest()
        {
            var handler = new BasicDelegatingHandler();

            using (UndoContext context = UndoContext.Current)
            {
                context.Start();

                // Management Clients
                var sqlClient = Sql2ScenarioHelper.GetSqlClient(handler);
                var resClient = Sql2ScenarioHelper.GetResourceClient(handler);

                // Variables for resource group create
                string resGroupName          = TestUtilities.GenerateName("csm-rg-smcrud");
                string resourceGroupLocation = "West US";

                // Variables for server create
                string serverName     = TestUtilities.GenerateName("csm-sql-smcrud-server");
                string serverLocation = "West US 2";

                // Variables for database create
                string databaseName            = TestUtilities.GenerateName("csm-sql-smcrud-db");
                string syncDatabaseName        = TestUtilities.GenerateName("csm-sql-smcrud-syncdb");
                string memberDatabaseName      = TestUtilities.GenerateName("csm-sql-smcrud-memberdb");
                string memberFullDNSServerName = serverName + ".sqltest-eg1.mscds.com";

                // Variables for sync group create
                string syncGroupName = TestUtilities.GenerateName("csm-sql-smcrud-syncgroup");
                string adminLogin    = "******";
                string adminPass     = "******";
                int    interval      = 300;
                ConflictResolutionPolicyType conflictResolutionPolicy = ConflictResolutionPolicyType.Memberwin;
                string subscriptionId = sqlClient.Credentials.SubscriptionId;
                string syncDatabaseId = string.Format("/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Sql/servers/{2}/databases/{3}",
                                                      subscriptionId, resGroupName, serverName, syncDatabaseName);

                // Variables for sync member creation
                string                      syncMemberName1            = TestUtilities.GenerateName("csm-sql-smcrud-sm");
                SyncDirectionEnum           syncDirection              = SyncDirectionEnum.Bidirectional;
                DatabaseTypeEnum            databaseType               = DatabaseTypeEnum.AzureSqlDatabase;
                SyncMemberGeneralParameters syncMemberGeneralParameter = new SyncMemberGeneralParameters()
                {
                    SyncGroupName  = syncGroupName,
                    SyncMemberName = syncMemberName1
                };

                // Create the resource group.
                resClient.ResourceGroups.CreateOrUpdate(resGroupName, new ResourceGroup()
                {
                    Location = resourceGroupLocation,
                });

                try
                {
                    //////////////////////////////////////////////////////////////////////
                    // Create server for test
                    var createServerResponse = CreateServerForTest(resGroupName, serverName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createServerResponse, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create database for test
                    var createDbResponse = CreateDatabaseForTest(resGroupName, serverName, databaseName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createDbResponse, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create sync database for test
                    var createDbResponse2 = CreateDatabaseForTest(resGroupName, serverName, syncDatabaseName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createDbResponse2, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create member database for test
                    var createMemberDbResponse = CreateDatabaseForTest(resGroupName, serverName, memberDatabaseName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createMemberDbResponse, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create sync group for test
                    var createSyncGroupResponse = sqlClient.DataSync.CreateOrUpdateSyncGroup(resGroupName, serverName, databaseName, new SyncGroupCreateOrUpdateParameters()
                    {
                        SyncGroupName = syncGroupName,
                        Properties    = new SyncGroupCreateOrUpdateProperties()
                        {
                            Interval = interval,
                            ConflictResolutionPolicy = conflictResolutionPolicy,
                            SyncDatabaseId           = syncDatabaseId,
                        },
                    });

                    //////////////////////////////////////////////////////////////////////
                    // Create sync member for test
                    var createSyncMemberResponse = sqlClient.DataSync.CreateOrUpdateSyncMember(resGroupName, serverName, databaseName, new SyncMemberCreateOrUpdateParameters()
                    {
                        SyncGroupName  = syncGroupName,
                        SyncMemberName = syncMemberName1,
                        Properties     = new SyncMemberCreateOrUpdateProperties()
                        {
                            SyncDirection = syncDirection,
                            DatabaseType  = databaseType,
                            DatabaseName  = memberDatabaseName,
                            ServerName    = memberFullDNSServerName,
                            UserName      = adminLogin,
                            Password      = adminPass,
                        },
                    });

                    // Verify the the response from the service contains the right information
                    TestUtilities.ValidateOperationResponse(createSyncMemberResponse, HttpStatusCode.Created);
                    VerifySyncMemberInformation(createSyncMemberResponse.SyncMember, syncDirection, databaseType, memberFullDNSServerName, memberDatabaseName);

                    //////////////////////////////////////////////////////////////////////
                    // Get the sync member
                    var getSyncMember1 = sqlClient.DataSync.GetSyncMember(resGroupName, serverName, databaseName, syncMemberGeneralParameter);
                    TestUtilities.ValidateOperationResponse(getSyncMember1);
                    VerifySyncMemberInformation(getSyncMember1.SyncMember, syncDirection, databaseType, memberFullDNSServerName, memberDatabaseName);

                    //////////////////////////////////////////////////////////////////////
                    // List all sync members
                    var listSyncMember = sqlClient.DataSync.ListSyncMember(resGroupName, serverName, databaseName, syncGroupName);
                    TestUtilities.ValidateOperationResponse(listSyncMember);
                    Assert.Equal(1, listSyncMember.SyncMembers.Count);
                    VerifySyncMemberInformation(listSyncMember.SyncMembers[0], syncDirection, databaseType, memberFullDNSServerName, memberDatabaseName);

                    //////////////////////////////////////////////////////////////////////
                    // Update sync member test
                    var updateSyncMember1 = sqlClient.DataSync.UpdateSyncMember(resGroupName, serverName, databaseName, new SyncMemberCreateOrUpdateParameters()
                    {
                        SyncGroupName  = syncGroupName,
                        SyncMemberName = syncMemberName1,
                        Properties     = new SyncMemberCreateOrUpdateProperties()
                        {
                            DatabaseType = DatabaseTypeEnum.AzureSqlDatabase,
                            UserName     = adminLogin,
                            Password     = adminPass
                        },
                    });

                    // Verify the the response from the service contains the right information
                    TestUtilities.ValidateOperationResponse(updateSyncMember1);

                    var refreshSchemaResponse = sqlClient.DataSync.InvokeSyncMemberSchemaRefresh(resGroupName, serverName, databaseName, syncMemberGeneralParameter);
                    TestUtilities.ValidateOperationResponse(refreshSchemaResponse);

                    //////////////////////////////////////////////////////////////////////
                    // Get full schema of member database of sync member
                    var getSyncMemberSchema1 = sqlClient.DataSync.GetSyncMemberSchema(resGroupName, serverName, databaseName, syncMemberGeneralParameter);
                    TestUtilities.ValidateOperationResponse(getSyncMemberSchema1);

                    //////////////////////////////////////////////////////////////////////
                    // Delete sync member test.
                    var deleteSyncMember1 = sqlClient.DataSync.DeleteSyncMember(resGroupName, serverName, databaseName, syncMemberGeneralParameter);
                    TestUtilities.ValidateOperationResponse(deleteSyncMember1);

                    //////////////////////////////////////////////////////////////////////
                    // Delete sync group.
                    var deleteSyncGroup1 = sqlClient.DataSync.DeleteSyncGroup(resGroupName, serverName, databaseName, syncGroupName);

                    sqlClient.Servers.Delete(resGroupName, serverName);
                }
                finally
                {
                    // Clean up the resource group.
                    resClient.ResourceGroups.Delete(resGroupName);
                }
            }
        }
示例#2
0
        public void SyncGroupCRUDTest()
        {
            var handler = new BasicDelegatingHandler();

            using (UndoContext context = UndoContext.Current)
            {
                context.Start();

                // Management Clients
                var sqlClient = Sql2ScenarioHelper.GetSqlClient(handler);
                var resClient = Sql2ScenarioHelper.GetResourceClient(handler);

                // Variables for resource group create
                string resGroupName          = TestUtilities.GenerateName("csm-rg-sgcrud");
                string resourceGroupLocation = "West US";

                // Variables for server create
                string serverName     = TestUtilities.GenerateName("csm-sql-sgcrud-server");
                string serverLocation = "West US 2";

                // Variables for database create
                string databaseName     = TestUtilities.GenerateName("csm-sql-sgcrud-db");
                string syncDatabaseName = TestUtilities.GenerateName("csm-sql-sgcrud-syncdb");

                // Variables for sync group 1 create
                string syncGroupName  = TestUtilities.GenerateName("csm-sql-sgcrud-syncgroup");
                string adminLogin     = "******";
                string adminPass      = "******";
                int    interval1      = 300;
                int    interval2      = 200;
                string subscriptionId = sqlClient.Credentials.SubscriptionId;
                string syncDatabaseId = string.Format("/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Sql/servers/{2}/databases/{3}",
                                                      subscriptionId, resGroupName, serverName, syncDatabaseName);
                ConflictResolutionPolicyType conflictResolutionPolicy1 = ConflictResolutionPolicyType.HubWin;

                // Create the resource group.
                resClient.ResourceGroups.CreateOrUpdate(resGroupName, new ResourceGroup()
                {
                    Location = resourceGroupLocation,
                });

                try
                {
                    //////////////////////////////////////////////////////////////////////
                    // Create server for test
                    var createServerResponse = CreateServerForTest(resGroupName, serverName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createServerResponse, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create database for test
                    var createDbResponse = CreateDatabaseForTest(resGroupName, serverName, databaseName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createDbResponse, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create sync database for test
                    var createDbResponse2 = CreateDatabaseForTest(resGroupName, serverName, syncDatabaseName, serverLocation);
                    TestUtilities.ValidateOperationResponse(createDbResponse2, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Create sync group 1 for test
                    var createSyncGroupResponse1 = sqlClient.DataSync.CreateOrUpdateSyncGroup(resGroupName, serverName, databaseName, new SyncGroupCreateOrUpdateParameters()
                    {
                        SyncGroupName = syncGroupName,
                        Properties    = new SyncGroupCreateOrUpdateProperties()
                        {
                            Interval = interval1,
                            ConflictResolutionPolicy = conflictResolutionPolicy1,
                            SyncDatabaseId           = syncDatabaseId,
                            HubDatabaseUserName      = adminLogin,
                            HubDatabasePassword      = adminPass
                        },
                    });

                    // Verify the the response from the service contains the right information
                    TestUtilities.ValidateOperationResponse(createSyncGroupResponse1, HttpStatusCode.Created);
                    VerifySyncGroupInformation(createSyncGroupResponse1.SyncGroup, interval1, syncDatabaseId, adminLogin, conflictResolutionPolicy1);

                    //////////////////////////////////////////////////////////////////////
                    // Get the sync group
                    var getSyncGroup1 = sqlClient.DataSync.GetSyncGroup(resGroupName, serverName, databaseName, syncGroupName);
                    TestUtilities.ValidateOperationResponse(getSyncGroup1);
                    VerifySyncGroupInformation(getSyncGroup1.SyncGroup, interval1, syncDatabaseId, adminLogin, conflictResolutionPolicy1);

                    //////////////////////////////////////////////////////////////////////
                    // Get all sync groups
                    var listSyncGroup1 = sqlClient.DataSync.ListSyncGroup(resGroupName, serverName, databaseName);
                    TestUtilities.ValidateOperationResponse(listSyncGroup1);
                    Assert.Equal(1, listSyncGroup1.SyncGroups.Count);
                    VerifySyncGroupInformation(listSyncGroup1.SyncGroups[0], interval1, syncDatabaseId, adminLogin, conflictResolutionPolicy1);

                    //////////////////////////////////////////////////////////////////////
                    // Update description and schema of sync group 2 test
                    var updateSyncGroup1 = sqlClient.DataSync.UpdateSyncGroup(resGroupName, serverName, databaseName, new SyncGroupCreateOrUpdateParameters()
                    {
                        SyncGroupName = syncGroupName,
                        Properties    = new SyncGroupCreateOrUpdateProperties()
                        {
                            Interval = interval2
                        },
                    });

                    // Verify the the response from the service contains the right information
                    TestUtilities.ValidateOperationResponse(updateSyncGroup1);

                    // Get the sync group after updating
                    var getSyncGroup2 = sqlClient.DataSync.GetSyncGroup(resGroupName, serverName, databaseName, syncGroupName);
                    TestUtilities.ValidateOperationResponse(getSyncGroup2);
                    VerifySyncGroupInformation(getSyncGroup2.SyncGroup, interval2, syncDatabaseId, adminLogin, conflictResolutionPolicy1);

                    var refreshSchemaResponse = sqlClient.DataSync.InvokeSyncHubSchemaRefresh(resGroupName, serverName, databaseName, syncGroupName);
                    TestUtilities.ValidateOperationResponse(refreshSchemaResponse);

                    //////////////////////////////////////////////////////////////////////
                    // Get full schema of member database of a hub database
                    var getSyncMemberSchema1 = sqlClient.DataSync.GetSyncHubSchema(resGroupName, serverName, databaseName, syncGroupName);
                    TestUtilities.ValidateOperationResponse(getSyncMemberSchema1);

                    //////////////////////////////////////////////////////////////////////
                    // Get log of sync group
                    var getSyncGroupLog = sqlClient.DataSync.ListSyncGroupLog(resGroupName, serverName, databaseName, new SyncGroupLogGetParameters
                    {
                        SyncGroupName = syncGroupName,
                        StartTime     = "9/16/2016 11:31:12",
                        EndTime       = "9/16/2016 12:31:00",
                        Type          = LogType.All.ToString()
                    });
                    TestUtilities.ValidateOperationResponse(getSyncGroupLog);
                    VerifySyncGroupLogInformation(getSyncGroupLog);

                    //////////////////////////////////////////////////////////////////////
                    // Delete sync group test.
                    var deleteSyncGroup1 = sqlClient.DataSync.DeleteSyncGroup(resGroupName, serverName, databaseName, syncGroupName);
                    TestUtilities.ValidateOperationResponse(deleteSyncGroup1);

                    sqlClient.Servers.Delete(resGroupName, serverName);
                }
                finally
                {
                    // Clean up the resource group.
                    resClient.ResourceGroups.Delete(resGroupName);
                }
            }
        }