public void TestDatabasePointInTimeRestore() { // Warning: This test takes around 20 minutes to run in record mode. using (SqlManagementTestContext context = new SqlManagementTestContext(this)) { ResourceGroup resourceGroup = context.CreateResourceGroup(); Server server = context.CreateServer(resourceGroup); SqlManagementClient sqlClient = context.GetClient <SqlManagementClient>(); Database db1 = CreateDatabaseAndWaitUntilBackupCreated( sqlClient, resourceGroup, server, dbName: SqlManagementTestUtilities.GenerateName()); // Create a new database that is the first database restored to an earlier point in time string db2Name = SqlManagementTestUtilities.GenerateName(); Database db2Input = new Database { Location = server.Location, CreateMode = CreateMode.PointInTimeRestore, RestorePointInTime = db1.EarliestRestoreDate.Value, SourceDatabaseId = db1.Id }; Database db2 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, db2Name, db2Input); Assert.NotNull(db2); SqlManagementTestUtilities.ValidateDatabase(db2Input, db2, db2Name); } }
public void TestCreateDropDatabase() { using (SqlManagementTestContext context = new SqlManagementTestContext(this)) { ResourceGroup resourceGroup = context.CreateResourceGroup(); Server server = context.CreateServer(resourceGroup); SqlManagementClient sqlClient = context.GetClient <SqlManagementClient>(); Dictionary <string, string> tags = new Dictionary <string, string>() { { "tagKey1", "TagValue1" } }; // Create database only required parameters // string dbName = SqlManagementTestUtilities.GenerateName(); var db1 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, new Database() { Location = server.Location, }); Assert.NotNull(db1); // Create a database with all parameters specified // dbName = SqlManagementTestUtilities.GenerateName(); var db2Input = new Database() { Location = server.Location, Collation = SqlTestConstants.DefaultCollation, Sku = SqlTestConstants.DefaultDatabaseSku(), MaxSizeBytes = 2 * 1024L * 1024L * 1024L, Tags = tags, CreateMode = "Default", SampleName = SampleName.AdventureWorksLT }; var db2 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db2Input); Assert.NotNull(db2); SqlManagementTestUtilities.ValidateDatabase(db2Input, db2, dbName); // Service Objective Name // dbName = SqlManagementTestUtilities.GenerateName(); var db4Input = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.S0), Tags = tags, }; var db4 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db4Input); Assert.NotNull(db4); SqlManagementTestUtilities.ValidateDatabase(db4Input, db4, dbName); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db1.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db2.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db4.Name); } }
public void TestCopyDatabase() { using (SqlManagementTestContext context = new SqlManagementTestContext(this)) { ResourceGroup resourceGroup = context.CreateResourceGroup(); SqlManagementClient sqlClient = context.GetClient <SqlManagementClient>(); //Create two servers var server = context.CreateServer(resourceGroup); var server2 = context.CreateServer(resourceGroup); // Create a database with all parameters specified // string dbName = SqlManagementTestUtilities.GenerateName(); var dbInput = new Database() { Location = server.Location, Collation = SqlTestConstants.DefaultCollation, Sku = SqlTestConstants.DefaultDatabaseSku(), // Make max size bytes less than default, to ensure that copy follows this parameter MaxSizeBytes = 500 * 1024L * 1024L, CreateMode = "Default" }; var db = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, dbInput); Assert.NotNull(db); // Create a database as copy of the first database // dbName = SqlManagementTestUtilities.GenerateName(); var dbInputCopy = new Database() { Location = server2.Location, CreateMode = CreateMode.Copy, SourceDatabaseId = db.Id }; var dbCopy = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server2.Name, dbName, dbInputCopy); SqlManagementTestUtilities.ValidateDatabase(db, dbCopy, dbCopy.Name); } }
public void TestGetAndListDatabase() { string testPrefix = "sqlcrudtest-"; using (SqlManagementTestContext context = new SqlManagementTestContext(this)) { ResourceGroup resourceGroup = context.CreateResourceGroup(); Server server = context.CreateServer(resourceGroup); SqlManagementClient sqlClient = context.GetClient <SqlManagementClient>(); // Create some small databases to run the get/List tests on. Database[] databases = SqlManagementTestUtilities.CreateDatabasesAsync( sqlClient, resourceGroup.Name, server, testPrefix, 4).Result; // Organize into a dictionary for better lookup later IDictionary <string, Database> inputs = databases.ToDictionary( keySelector: d => d.Name, elementSelector: d => d); // Get each database and compare to the results of create database // foreach (var db in inputs) { var response = sqlClient.Databases.Get(resourceGroup.Name, server.Name, db.Key); SqlManagementTestUtilities.ValidateDatabaseEx(db.Value, response); } // List all databases // IEnumerable <Database> listResponse = sqlClient.Databases.ListByServer(resourceGroup.Name, server.Name); // Remove master database from the list listResponse = listResponse.Where(db => db.Name != "master"); Assert.Equal(inputs.Count(), listResponse.Count()); foreach (var db in listResponse) { SqlManagementTestUtilities.ValidateDatabase(inputs[db.Name], db, db.Name); } } }
public void TestCreateDropDatabase() { using (SqlManagementTestContext context = new SqlManagementTestContext(this)) { ResourceGroup resourceGroup = context.CreateResourceGroup(); Server server = context.CreateServer(resourceGroup); SqlManagementClient sqlClient = context.GetClient <SqlManagementClient>(); Dictionary <string, string> tags = new Dictionary <string, string>() { { "tagKey1", "TagValue1" } }; // Create database only required parameters // string dbName = SqlManagementTestUtilities.GenerateName(); var db1 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, new Database() { Location = server.Location, }); Assert.NotNull(db1); // Create a database with all parameters specified // dbName = SqlManagementTestUtilities.GenerateName(); var db2Input = new Database() { Location = server.Location, Collation = SqlTestConstants.DefaultCollation, Sku = SqlTestConstants.DefaultDatabaseSku(), MaxSizeBytes = 2 * 1024L * 1024L * 1024L, Tags = tags, CreateMode = "Default", SampleName = SampleName.AdventureWorksLT, RequestedBackupStorageRedundancy = "Geo", }; var db2 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db2Input); Assert.NotNull(db2); SqlManagementTestUtilities.ValidateDatabase(db2Input, db2, dbName); // Service Objective Name // dbName = SqlManagementTestUtilities.GenerateName(); var db4Input = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.S0), Tags = tags, }; var db4 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db4Input); Assert.NotNull(db4); SqlManagementTestUtilities.ValidateDatabase(db4Input, db4, dbName); // Create database with Serverless specific parameters // dbName = SqlManagementTestUtilities.GenerateName(); var db5Input = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku("GP_S_Gen5_2"), Tags = tags, AutoPauseDelay = 360, MinCapacity = 0.5, }; var db5 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db5Input); Assert.NotNull(db5); SqlManagementTestUtilities.ValidateDatabase(db5Input, db5, dbName); // ReadScale properties // dbName = SqlManagementTestUtilities.GenerateName(); var db6Input = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.P1), ReadScale = "Enabled", }; var db6 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db6Input); Assert.NotNull(db6); SqlManagementTestUtilities.ValidateDatabase(db6Input, db6, dbName); dbName = SqlManagementTestUtilities.GenerateName(); var db7Input = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku("HS_Gen5_4", "Hyperscale"), HighAvailabilityReplicaCount = 4, }; var db7 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db7Input); Assert.NotNull(db7); SqlManagementTestUtilities.ValidateDatabase(db7Input, db7, dbName); dbName = SqlManagementTestUtilities.GenerateName(); var db8Input = new Database() { Location = server.Location, RequestedBackupStorageRedundancy = "Geo", }; var db8 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db8Input); Assert.NotNull(db8); SqlManagementTestUtilities.ValidateDatabase(db8Input, db8, dbName); dbName = SqlManagementTestUtilities.GenerateName(); var db9Input = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.P1), MaintenanceConfigurationId = SqlManagementTestUtilities.GetTestMaintenanceConfigurationId(sqlClient.SubscriptionId), }; var db9 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, db9Input); Assert.NotNull(db9); SqlManagementTestUtilities.ValidateDatabase(db9Input, db9, dbName); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db1.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db2.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db4.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db5.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db6.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db7.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db8.Name); sqlClient.Databases.Delete(resourceGroup.Name, server.Name, db9.Name); } }
private void TestUpdateDatabase <TUpdateModel>( SqlManagementClient sqlClient, ResourceGroup resourceGroup, Server server, Func <TUpdateModel> createModelFunc, Func <string, string, string, TUpdateModel, Database> updateFunc) { Dictionary <string, string> tags = new Dictionary <string, string>() { { "tagKey1", "TagValue1" } }; string dbName = SqlManagementTestUtilities.GenerateName("sqlcrudtest-"); // Create initial database // var dbInput = new Database() { Location = server.Location, Collation = SqlTestConstants.DefaultCollation, MaxSizeBytes = 2 * 1024L * 1024L * 1024L, Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.S0), ZoneRedundant = false, Tags = tags, }; var db1 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, dbInput); Assert.NotNull(db1); SqlManagementTestUtilities.ValidateDatabase(dbInput, db1, dbName); // Update Zone Redundancy // var dbInput2 = new Database() { Location = server.Location, Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.P1), ZoneRedundant = true, }; var db8 = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, dbName, dbInput2); Assert.NotNull(db8); SqlManagementTestUtilities.ValidateDatabase(dbInput2, db8, dbName); // Upgrade Edition + SLO Name // dynamic updateEditionAndSloInput = createModelFunc(); updateEditionAndSloInput.Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.S0, "Standard"); updateEditionAndSloInput.ZoneRedundant = false; var db2 = updateFunc(resourceGroup.Name, server.Name, dbName, updateEditionAndSloInput); SqlManagementTestUtilities.ValidateDatabase(updateEditionAndSloInput, db2, dbName); // Sometimes we get CloudException "Operation on server '{0}' and database '{1}' is in progress." // Mitigate by adding brief sleep while recording if (HttpMockServer.Mode == HttpRecorderMode.Record) { Thread.Sleep(TimeSpan.FromSeconds(10)); } // Update max size // dynamic updateMaxSize = createModelFunc(); updateMaxSize.MaxSizeBytes = 250 * 1024L * 1024L * 1024L; var db6 = updateFunc(resourceGroup.Name, server.Name, dbName, updateMaxSize); SqlManagementTestUtilities.ValidateDatabase(updateMaxSize, db6, dbName); // Update tags // dynamic updateTags = createModelFunc(); updateTags.Tags = new Dictionary <string, string> { { "asdf", "zxcv" } }; var db7 = updateFunc(resourceGroup.Name, server.Name, dbName, updateTags); SqlManagementTestUtilities.ValidateDatabase(updateTags, db7, dbName); // Update maintenance // dynamic updateMaintnenace = createModelFunc(); updateMaintnenace.Sku = new Microsoft.Azure.Management.Sql.Models.Sku(ServiceObjectiveName.S2, "Standard"); updateMaintnenace.MaintenanceConfigurationId = SqlManagementTestUtilities.GetTestMaintenanceConfigurationId(sqlClient.SubscriptionId); var db9 = updateFunc(resourceGroup.Name, server.Name, dbName, updateMaintnenace); SqlManagementTestUtilities.ValidateDatabase(updateMaintnenace, db9, dbName); }