Ejemplo n.º 1
0
        public void GetPoolByName()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    var response = sqlClient.RecommendedElasticPools.Get(resGroupName, server.Name, "ElasticPool1");
                    TestUtilities.ValidateOperationResponse(response, HttpStatusCode.OK);
                    ValidateRecommendedElasticPool(response.RecommendedElasticPool,
                                                   "ElasticPool1",
                                                   "Microsoft.Sql/servers/recommendedElasticPools",
                                                   "Standard",
                                                   1000f,
                                                   100.6f,
                                                   200.5f,
                                                   1000.3f,
                                                   DateTime.Parse("2014-11-01T00:00:00"),
                                                   DateTime.Parse("2014-11-15T00:00:00"),
                                                   900.2f,
                                                   350.0f);
                });
            }
        }
 public void ServerAuditingPolicyLifecycleTest()
 {
     using (UndoContext context = UndoContext.Current)
     {
         context.Start();
         Sql2ScenarioHelper.RunServerTestInEnvironment(new BasicDelegatingHandler(), "2.0", TestServerAuditingAPIs);
     }
 }
Ejemplo n.º 3
0
 public void ServerSecurityAlertPolicyLifecycleTest()
 {
     using (var context = UndoContext.Current)
     {
         context.Start();
         Sql2ScenarioHelper.RunServerTestInEnvironment(new BasicDelegatingHandler(), "12.0", TestServerSecurityAlertApis);
     }
 }
Ejemplo n.º 4
0
 public void PositiveTestEmptyServer()
 {
     using (UndoContext context = UndoContext.Current)
     {
         context.Start();
         Sql2ScenarioHelper.RunServerTestInEnvironment(
             new BasicDelegatingHandler(),
             currentVersion,
             serverLocation,
             UpgradeEmptyServer);
     }
 }
Ejemplo n.º 5
0
        public void GetDatabasesForPool()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    var response = sqlClient.RecommendedElasticPools.ListDatabases(resGroupName, server.Name, "ElasticPool1");
                    TestUtilities.ValidateOperationResponse(response, HttpStatusCode.OK);
                    Assert.Equal(1, response.Databases.Count());
                    Assert.Equal("28acaef5-d228-4660-bb67-546ec8482496", response.Databases[0].Properties.DatabaseId);
                });
            }
        }
Ejemplo n.º 6
0
        public void ListPoolsExpanded()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    var response = sqlClient.RecommendedElasticPools.ListExpanded(resGroupName, server.Name, "databases,metrics");
                    TestUtilities.ValidateOperationResponse(response, HttpStatusCode.OK);
                    Assert.Equal(2, response.RecommendedElasticPools.Count());
                    Assert.Equal(0, response.RecommendedElasticPools[0].Properties.Databases.Count);
                    Assert.Equal(3, response.RecommendedElasticPools[0].Properties.Metrics.Count);
                    Assert.Equal(1, response.RecommendedElasticPools[1].Properties.Databases.Count);
                    Assert.Equal(3, response.RecommendedElasticPools[1].Properties.Metrics.Count);
                });
            }
        }
        public void GetDatabasesExpanded()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    var response = sqlClient.Databases.GetExpanded(resGroupName, server.Name, "AutoScaleSterlingTest4", "upgradeHint,serviceTierAdvisors");
                    TestUtilities.ValidateOperationResponse(response, HttpStatusCode.OK);
                    Assert.Equal("AutoScaleSterlingTest4", response.Database.Name);
                    Assert.Equal("S2", response.Database.Properties.UpgradeHint.TargetServiceLevelObjective);
                    Assert.Equal(1, response.Database.Properties.ServiceTierAdvisors.Count);
                    Assert.Equal("S3", response.Database.Properties.ServiceTierAdvisors[0].Properties.UsageBasedRecommendationServiceLevelObjective);
                    Assert.Equal(4, response.Database.Properties.ServiceTierAdvisors[0].Properties.ServiceLevelObjectiveUsageMetrics.Count);
                });
            }
        }
        public void GetServiceTierAdvisors()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    var response = sqlClient.ServiceTierAdvisors.Get(resGroupName, server.Name, "AdventureWorks2012", "Current");
                    TestUtilities.ValidateOperationResponse(response, HttpStatusCode.OK);
                    Assert.Equal("current", response.ServiceTierAdvisor.Name);
                    Assert.Equal("Web", response.ServiceTierAdvisor.Properties.CurrentServiceLevelObjective);
                    Assert.Equal("Basic", response.ServiceTierAdvisor.Properties.UsageBasedRecommendationServiceLevelObjective);
                    Assert.Equal(4, response.ServiceTierAdvisor.Properties.ServiceLevelObjectiveUsageMetrics.Count);
                    Assert.Equal("Basic", response.ServiceTierAdvisor.Properties.ServiceLevelObjectiveUsageMetrics[0].ServiceLevelObjective);
                });
            }
        }
Ejemplo n.º 9
0
        public void GetMetricsForPool()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    var response = sqlClient.RecommendedElasticPools.ListMetrics(resGroupName, server.Name, "ElasticPool1");
                    TestUtilities.ValidateOperationResponse(response, HttpStatusCode.OK);
                    Assert.Equal(3, response.RecommendedElasticPoolsMetrics.Count());
                    ValidateRecommendedElasticPoolMetric(
                        response.RecommendedElasticPoolsMetrics[0],
                        DateTime.Parse("4/1/2015 12:00:00 AM"),
                        100.5f,
                        15.4f);
                });
            }
        }
        public void FailoverGroupCrud()
        {
            var handler = new BasicDelegatingHandler();

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

                string failoverGroupName  = TestUtilities.GenerateName("csm-sql-fgcrud1");
                string failoverGroup2Name = TestUtilities.GenerateName("csm-sql-fgcrud2");
                string serverName         = TestUtilities.GenerateName("csm-sql-fgcrud-server");
                string partnerServerName  = TestUtilities.GenerateName("csm-sql-fgcrud-server");

                // Create the resource group.

                //resClient.ResourceGroups.CreateOrUpdate(resGroupName, new ResourceGroup()

                //{
                //    Location = serverLocation,
                //});

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    "North Europe",
                    (sqlClient, resGroupName, server) =>
                {
                    // Variables for partner server create

                    string serverLocation = "North Europe";
                    string adminLogin     = "******";
                    string adminPass      = "******";
                    string version        = "12.0";

                    // Create partner server for test.
                    var createServerResponse = sqlClient.Servers.CreateOrUpdate(resGroupName, partnerServerName, new ServerCreateOrUpdateParameters()
                    {
                        Location   = serverLocation,
                        Properties = new ServerCreateOrUpdateProperties()
                        {
                            AdministratorLogin         = adminLogin,
                            AdministratorLoginPassword = adminPass,
                            Version = version,
                        }
                    });


                    // Create Failover Group Test with all values specified (Default values)
                    ReadOnlyEndpoint readOnlyEndpoint   = new ReadOnlyEndpoint();
                    readOnlyEndpoint.FailoverPolicy     = "Disabled";
                    ReadWriteEndpoint readWriteEndpoint = new ReadWriteEndpoint();
                    readWriteEndpoint.FailoverPolicy    = "Automatic";
                    readWriteEndpoint.FailoverWithDataLossGracePeriodMinutes = 5;

                    FailoverGroupPartnerServer partnerServer = new FailoverGroupPartnerServer();
                    partnerServer.ReplicationRole            = "Secondary";
                    partnerServer.Id       = createServerResponse.Server.Id;
                    partnerServer.Location = "North Europe";

                    List <FailoverGroupPartnerServer> partnerServers = new List <FailoverGroupPartnerServer>();
                    partnerServers.Add(partnerServer);

                    var failoverGroup1Properties = new FailoverGroupCreateOrUpdateProperties()
                    {
                        ReadOnlyEndpoint  = readOnlyEndpoint,
                        ReadWriteEndpoint = readWriteEndpoint,
                        PartnerServers    = partnerServers,
                    };

                    var failoverGroup1 = sqlClient.FailoverGroups.CreateOrUpdate(resGroupName, server.Name, failoverGroupName, new FailoverGroupCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = failoverGroup1Properties
                    });

                    TestUtilities.ValidateOperationResponse(failoverGroup1, HttpStatusCode.Created);

                    var failoverGroup2 = sqlClient.FailoverGroups.CreateOrUpdate(resGroupName, server.Name, failoverGroup2Name, new FailoverGroupCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = failoverGroup1Properties
                    });

                    TestUtilities.ValidateOperationResponse(failoverGroup2, HttpStatusCode.Created);
                    ValidateFailoverGroup(
                        failoverGroup2.FailoverGroup,
                        failoverGroup2Name,
                        readOnlyEndpoint.FailoverPolicy,
                        readWriteEndpoint.FailoverPolicy,
                        readWriteEndpoint.FailoverWithDataLossGracePeriodMinutes,
                        partnerServer.ReplicationRole,
                        partnerServer.Id);

                    //////////////////////////////////////////////////////////////////////
                    // Update Failover Group Test
                    failoverGroup1Properties.ReadOnlyEndpoint.FailoverPolicy  = "Enabled";
                    failoverGroup1Properties.ReadWriteEndpoint.FailoverPolicy = "Manual";
                    failoverGroup1Properties.ReadWriteEndpoint.FailoverWithDataLossGracePeriodMinutes = null;

                    var failoverGroup3 = sqlClient.FailoverGroups.CreateOrUpdate(resGroupName, server.Name, failoverGroupName, new FailoverGroupCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = failoverGroup1Properties
                    });


                    TestUtilities.ValidateOperationResponse(failoverGroup3, HttpStatusCode.Created);
                    ValidateFailoverGroup(
                        failoverGroup3.FailoverGroup,
                        failoverGroupName,
                        failoverGroup1Properties.ReadOnlyEndpoint.FailoverPolicy,
                        failoverGroup1Properties.ReadWriteEndpoint.FailoverPolicy,
                        failoverGroup1Properties.ReadWriteEndpoint.FailoverWithDataLossGracePeriodMinutes,
                        failoverGroup1Properties.PartnerServers.First().ReplicationRole,
                        failoverGroup1Properties.PartnerServers.First().Id);

                    //////////////////////////////////////////////////////////////////////
                    // Get Failover group.
                    var failoverGroup4 = sqlClient.FailoverGroups.Get(resGroupName, server.Name, failoverGroupName);


                    TestUtilities.ValidateOperationResponse(failoverGroup4, HttpStatusCode.Created);
                    ValidateFailoverGroup(
                        failoverGroup3.FailoverGroup,
                        failoverGroupName,
                        failoverGroup1Properties.ReadOnlyEndpoint.FailoverPolicy,
                        failoverGroup1Properties.ReadWriteEndpoint.FailoverPolicy,
                        failoverGroup1Properties.ReadWriteEndpoint.FailoverWithDataLossGracePeriodMinutes,
                        failoverGroup1Properties.PartnerServers.First().ReplicationRole,
                        failoverGroup1Properties.PartnerServers.First().Id);

                    //////////////////////////////////////////////////////////////////////
                    // Get Failover Groups Test.
                    var failoverGroups = sqlClient.FailoverGroups.List(resGroupName, server.Name);

                    TestUtilities.ValidateOperationResponse(failoverGroups, HttpStatusCode.OK);
                    Assert.Equal(2, failoverGroups.FailoverGroups.Count);

                    //////////////////////////////////////////////////////////////////////
                    // Delete Failover Group Test.
                    //var resp = sqlClient.FailoverGroups.Delete(resGroupName, server.Name, failoverGroupName);
                    //TestUtilities.ValidateOperationResponse(resp, HttpStatusCode.OK);

                    //var resp2 = sqlClient.FailoverGroups.Delete(resGroupName, server.Name, failoverGroup2Name);
                    //TestUtilities.ValidateOperationResponse(resp2, HttpStatusCode.OK);
                });
            }
        }
        public void FailoverGroupDatabaseOperations()
        {
            var handler = new BasicDelegatingHandler();

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

                string failoverGroupName = TestUtilities.GenerateName("csm-sql-fgdb");
                string serverName        = TestUtilities.GenerateName("csm-sql-fgdb-server");
                var    databaseName      = TestUtilities.GenerateName("csm-sql-fgdb-db");
                var    database2Name     = TestUtilities.GenerateName("csm-sql-fgdb-db");

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    "North Europe",
                    (sqlClient, resGroupName, server) =>
                {
                    // Variables for partner server create
                    string serverLocation = "North Europe";
                    string adminLogin     = "******";
                    string adminPass      = "******";
                    string version        = "12.0";

                    //////////////////////////////////////////////////////////////////////
                    // Create server for test.
                    var createServerResponse = sqlClient.Servers.CreateOrUpdate(resGroupName, serverName, new ServerCreateOrUpdateParameters()
                    {
                        Location   = serverLocation,
                        Properties = new ServerCreateOrUpdateProperties()
                        {
                            AdministratorLogin         = adminLogin,
                            AdministratorLoginPassword = adminPass,
                            Version = version,
                        }
                    });

                    //////////////////////////////////////////////////////////////////////
                    // Create Failover Group with all values specified (Default values)

                    ReadOnlyEndpoint readOnlyEndpoint   = new ReadOnlyEndpoint();
                    readOnlyEndpoint.FailoverPolicy     = "Disabled";
                    ReadWriteEndpoint readWriteEndpoint = new ReadWriteEndpoint();
                    readWriteEndpoint.FailoverPolicy    = "Automatic";
                    readWriteEndpoint.FailoverWithDataLossGracePeriodMinutes = 5;

                    FailoverGroupPartnerServer partnerServer = new FailoverGroupPartnerServer();
                    partnerServer.ReplicationRole            = "Secondary";
                    partnerServer.Id       = createServerResponse.Server.Id;
                    partnerServer.Location = "North Europe";

                    List <FailoverGroupPartnerServer> partnerServers = new List <FailoverGroupPartnerServer>();
                    partnerServers.Add(partnerServer);


                    var failoverGroup1Properties = new FailoverGroupCreateOrUpdateProperties()
                    {
                        ReadOnlyEndpoint  = readOnlyEndpoint,
                        ReadWriteEndpoint = readWriteEndpoint,
                        PartnerServers    = partnerServers,
                    };

                    var failoverGroup1 = sqlClient.FailoverGroups.CreateOrUpdate(resGroupName, server.Name, failoverGroupName, new FailoverGroupCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = failoverGroup1Properties
                    });
                    TestUtilities.ValidateOperationResponse(failoverGroup1, HttpStatusCode.Created);

                    ////////////////////////////////////////////////////////////////////
                    // Create database
                    var db1 = sqlClient.Databases.CreateOrUpdate(resGroupName, server.Name, databaseName, new DatabaseCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new DatabaseCreateOrUpdateProperties()
                        {
                            Edition = "Premium"
                        }
                    });

                    TestUtilities.ValidateOperationResponse(db1, HttpStatusCode.Created);

                    var db2 = sqlClient.Databases.CreateOrUpdate(resGroupName, server.Name, database2Name, new DatabaseCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new DatabaseCreateOrUpdateProperties()
                        {
                            Edition = "Basic"
                        }
                    });

                    TestUtilities.ValidateOperationResponse(db2, HttpStatusCode.Created);

                    //Add database ids into a list
                    List <string> dbs = new List <string>();
                    dbs.Add(db1.Database.Id);
                    dbs.Add(db2.Database.Id);

                    //////////////////////////////////////////////////////////////////////
                    // Move database into failover group

                    var moveResult = sqlClient.FailoverGroups.PatchUpdate(resGroupName, server.Name, failoverGroupName, new FailoverGroupPatchUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new FailoverGroupPatchUpdateProperties
                        {
                            Databases = dbs,
                        }
                    });

                    TestUtilities.ValidateOperationResponse(moveResult, HttpStatusCode.OK);
                    Assert.True(VerifyDbsEqual(moveResult.FailoverGroup.Properties.Databases, dbs));

                    //////////////////////////////////////////////////////////////////////
                    // Delete databases from failover group

                    dbs.RemoveAt(1);
                    var removeResult = sqlClient.FailoverGroups.PatchUpdate(resGroupName, server.Name, failoverGroupName, new FailoverGroupPatchUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new FailoverGroupPatchUpdateProperties
                        {
                            Databases = dbs,
                        }
                    });

                    TestUtilities.ValidateOperationResponse(moveResult, HttpStatusCode.OK);
                    Assert.True(VerifyDbsEqual(removeResult.FailoverGroup.Properties.Databases, dbs));

                    //////////////////////////////////////////////////////////////////////
                    // Failover Test.
                    //var failoverResult = sqlClient.FailoverGroups.Failover(resGroupName, server.Name, failoverGroupName);
                    //TestUtilities.ValidateOperationResponse(failoverResult, HttpStatusCode.OK);

                    //var failoverWithDatalossResult = sqlClient.FailoverGroups.ForceFailoverAllowDataLoss(resGroupName, server.Name, failoverGroupName);
                    //TestUtilities.ValidateOperationResponse(failoverWithDatalossResult, HttpStatusCode.OK);
                });
            }
        }
        public void ElasticPoolCrud()
        {
            var handler = new BasicDelegatingHandler();

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

                string resPoolName  = TestUtilities.GenerateName("csm-sql-respoolcrud");
                string resPool2Name = TestUtilities.GenerateName("csm-sql-respoolcrud");

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    //////////////////////////////////////////////////////////////////////
                    // Create Elastic Pool Test with all values specified (Default values)
                    var pool1Properties = new ElasticPoolCreateOrUpdateProperties()
                    {
                        Edition        = "Standard",
                        Dtu            = 200,
                        DatabaseDtuMax = 100,
                        DatabaseDtuMin = 10,
                        StorageMB      = 204800
                    };

                    var pool1 = sqlClient.ElasticPools.CreateOrUpdate(resGroupName, server.Name, resPoolName, new ElasticPoolCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = pool1Properties
                    });

                    TestUtilities.ValidateOperationResponse(pool1, HttpStatusCode.Created);
                    ValidateElasticPool(
                        pool1.ElasticPool,
                        resPoolName,
                        pool1Properties.Edition,
                        pool1Properties.DatabaseDtuMax,
                        pool1Properties.DatabaseDtuMin,
                        pool1Properties.Dtu,
                        pool1Properties.StorageMB);

                    var pool2Properties = new ElasticPoolCreateOrUpdateProperties()
                    {
                        Edition = "Standard",
                    };

                    var pool2 = sqlClient.ElasticPools.CreateOrUpdate(resGroupName, server.Name, resPool2Name, new ElasticPoolCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = pool2Properties
                    });

                    TestUtilities.ValidateOperationResponse(pool2, HttpStatusCode.Created);
                    ValidateElasticPool(
                        pool2.ElasticPool,
                        resPool2Name,
                        pool1Properties.Edition,
                        100,
                        0,
                        200,
                        204800);

                    //////////////////////////////////////////////////////////////////////
                    // Update Elastic Pool Test
                    pool1Properties.Dtu            = 200;
                    pool1Properties.DatabaseDtuMax = 50;
                    pool1Properties.DatabaseDtuMin = 0;

                    var pool3 = sqlClient.ElasticPools.CreateOrUpdate(resGroupName, server.Name, resPoolName, new ElasticPoolCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = pool1Properties
                    });

                    TestUtilities.ValidateOperationResponse(pool3, HttpStatusCode.OK);
                    ValidateElasticPool(
                        pool3.ElasticPool,
                        resPoolName,
                        pool1Properties.Edition,
                        pool1Properties.DatabaseDtuMax,
                        pool1Properties.DatabaseDtuMin,
                        pool1Properties.Dtu,
                        pool1Properties.StorageMB);

                    //////////////////////////////////////////////////////////////////////
                    // Get Elastic Pool Test.
                    var pool4 = sqlClient.ElasticPools.Get(resGroupName, server.Name, resPoolName);

                    TestUtilities.ValidateOperationResponse(pool4, HttpStatusCode.OK);
                    ValidateElasticPool(
                        pool4.ElasticPool,
                        resPoolName,
                        pool3.ElasticPool.Properties.Edition,
                        pool3.ElasticPool.Properties.DatabaseDtuMax,
                        pool3.ElasticPool.Properties.DatabaseDtuMin,
                        pool3.ElasticPool.Properties.Dtu,
                        pool3.ElasticPool.Properties.StorageMB);

                    //////////////////////////////////////////////////////////////////////
                    // Get Elastic Pool Test.
                    var pools = sqlClient.ElasticPools.List(resGroupName, server.Name);

                    TestUtilities.ValidateOperationResponse(pools, HttpStatusCode.OK);
                    Assert.Equal(2, pools.ElasticPools.Count);

                    //////////////////////////////////////////////////////////////////////
                    // Get Elastic Pool Activity Test.
                    var activity = sqlClient.ElasticPools.ListActivity(resGroupName, server.Name, resPoolName);
                    TestUtilities.ValidateOperationResponse(activity, HttpStatusCode.OK);
                    Assert.True(activity.ElasticPoolActivities.Count > 0);

                    //////////////////////////////////////////////////////////////////////
                    // Delete Elastic Pool Test.
                    var resp = sqlClient.ElasticPools.Delete(resGroupName, server.Name, pool1.ElasticPool.Name);
                    TestUtilities.ValidateOperationResponse(resp, HttpStatusCode.OK);

                    resp = sqlClient.ElasticPools.Delete(resGroupName, server.Name, pool2.ElasticPool.Name);
                    TestUtilities.ValidateOperationResponse(resp, HttpStatusCode.OK);
                });
            }
        }
        public void ElasticPoolDatabaseOperations()
        {
            var handler = new BasicDelegatingHandler();

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

                string resPoolName = TestUtilities.GenerateName("csm-sql-respoolcrud");

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    (sqlClient, resGroupName, server) =>
                {
                    //////////////////////////////////////////////////////////////////////
                    // Create Elastic Pool Test with all values specified (Default values)
                    var pool1Properties = new ElasticPoolCreateOrUpdateProperties()
                    {
                        Edition        = "Standard",
                        Dtu            = 200,
                        DatabaseDtuMax = 100,
                        DatabaseDtuMin = 10,
                        StorageMB      = 204800
                    };

                    var pool1 = sqlClient.ElasticPools.CreateOrUpdate(resGroupName, server.Name, resPoolName, new ElasticPoolCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = pool1Properties
                    });

                    TestUtilities.ValidateOperationResponse(pool1, HttpStatusCode.Created);

                    ////////////////////////////////////////////////////////////////////
                    // Create database in Elastic Pool
                    var databaseName = TestUtilities.GenerateName("csm-sql-respoolcrud");
                    var db1          = sqlClient.Databases.CreateOrUpdate(resGroupName, server.Name, databaseName, new DatabaseCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new DatabaseCreateOrUpdateProperties()
                        {
                            ElasticPoolName = pool1.ElasticPool.Name,
                        }
                    });

                    TestUtilities.ValidateOperationResponse(db1, HttpStatusCode.Created);

                    //////////////////////////////////////////////////////////////////////
                    // Move database into Elastic Pool
                    var database2Name = TestUtilities.GenerateName("csm-sql-respoolcrud");
                    var db2           = sqlClient.Databases.CreateOrUpdate(resGroupName, server.Name, database2Name, new DatabaseCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new DatabaseCreateOrUpdateProperties()
                        {
                            Edition = "Basic"
                        }
                    });
                    TestUtilities.ValidateOperationResponse(db2, HttpStatusCode.Created);

                    var moveResult = sqlClient.Databases.CreateOrUpdate(resGroupName, server.Name, database2Name, new DatabaseCreateOrUpdateParameters()
                    {
                        Location   = server.Location,
                        Properties = new DatabaseCreateOrUpdateProperties()
                        {
                            ElasticPoolName = pool1.ElasticPool.Name,
                        }
                    });
                    TestUtilities.ValidateOperationResponse(moveResult, HttpStatusCode.OK);

                    //////////////////////////////////////////////////////////////////////
                    // Get database acitivity
                    var activity = sqlClient.ElasticPools.ListDatabaseActivity(resGroupName, server.Name, resPoolName);
                    TestUtilities.ValidateOperationResponse(moveResult, HttpStatusCode.OK);
                    Assert.True(activity.ElasticPoolDatabaseActivities.Count > 0);
                });
            }
        }
Ejemplo n.º 14
0
        public void ServerAdministratorCRUDTest()
        {
            var handler = new BasicDelegatingHandler();

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

                Sql2ScenarioHelper.RunServerTestInEnvironment(
                    handler,
                    "12.0",
                    "North Europe",
                    (sqlClient, resGroupName, server) =>
                {
                    string AdministratorDefaultType        = "activeDirectory";
                    string ActiveDirectoryDefaultName      = "activeDirectory";
                    string activeDirectoryServerAdminLogin = "******";
                    Guid activeDirectoryServerAdminSid     = new Guid("4dc34af5-6a71-4838-a983-14cdf8852ff9");
                    Guid activeDirectoryTenantId           = new Guid("A0C03064-E4CB-4AB8-AF32-12203273FF1D");

                    ///////////////////////////////////////////////////////////////////////
                    // Update Azure SQL Server Active Directory Administrator
                    var createResponse = sqlClient.ServerAdministrators.CreateOrUpdate(resGroupName, server.Name, ActiveDirectoryDefaultName, new ServerAdministratorCreateOrUpdateParameters()
                    {
                        Properties = new ServerAdministratorCreateOrUpdateProperties()
                        {
                            Login             = activeDirectoryServerAdminLogin,
                            Sid               = activeDirectoryServerAdminSid,
                            AdministratorType = AdministratorDefaultType,
                            TenantId          = activeDirectoryTenantId,
                        },
                    });

                    TestUtilities.ValidateOperationResponse(createResponse, HttpStatusCode.OK);
                    VerifyServerAdministratorInformation(activeDirectoryServerAdminLogin, activeDirectoryServerAdminSid, activeDirectoryTenantId, createResponse.ServerAdministrator);

                    // Get single server active directory administrator
                    var getAdminResponse = sqlClient.ServerAdministrators.Get(resGroupName, server.Name, ActiveDirectoryDefaultName);

                    // Verify that the Get request contains the right information.
                    TestUtilities.ValidateOperationResponse(getAdminResponse, HttpStatusCode.OK);
                    VerifyServerAdministratorInformation(activeDirectoryServerAdminLogin, activeDirectoryServerAdminSid, activeDirectoryTenantId, getAdminResponse.Administrator);

                    // Get list Azure SQL Server Active Directory Administrator
                    var getAdminResponseList = sqlClient.ServerAdministrators.List(resGroupName, server.Name);

                    //There should only be one Azure SQL Server Active Directory Administrator
                    Assert.Equal(getAdminResponseList.Administrators.Count, 1);

                    // Verify that the Get request contains the right information.
                    TestUtilities.ValidateOperationResponse(getAdminResponseList, HttpStatusCode.OK);
                    VerifyServerAdministratorInformation(activeDirectoryServerAdminLogin, activeDirectoryServerAdminSid, activeDirectoryTenantId, getAdminResponseList.Administrators[0]);
                    ///////////////////////////////////////////////////////////////////////

                    ///////////////////////////////////////////////////////////////////////
                    // Delete Azure SQL Server Active Directory Administrator Test
                    var deleteResponse = sqlClient.ServerAdministrators.Delete(resGroupName, server.Name, ActiveDirectoryDefaultName);

                    // Verify that the delete operation works.
                    TestUtilities.ValidateOperationResponse(deleteResponse, HttpStatusCode.NoContent);
                    /////////////////////////////////////////////////////////////////////

                    // Verify that the Azure SQL Active Directory administrator is deleted.
                    var getNoAdminResponse = sqlClient.ServerAdministrators.List(resGroupName, server.Name);
                    TestUtilities.ValidateOperationResponse(getNoAdminResponse, HttpStatusCode.OK);

                    // There should be no Azure SQL Server Active Directory Administrator after delete
                    Assert.Empty(getNoAdminResponse.Administrators);
                });
            }
        }