public DeleteServiceTestsFixture() { _sqlDataStoreTestsFixture = new SqlDataStoreTestsFixture(); _blobStorageTestsFixture = new DataStoreTestsFixture(); RecyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); }
public async Task GivenTwoSchemaInitializationMethods_WhenCreatingTwoDatabases_BothSchemasShouldBeEquivalent() { // Create two databases, one where we apply the the maximum supported version's snapshot SQL schema file SqlDataStoreTestsFixture snapshotFixture = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName("SNAPSHOT")); // And one where we apply .diff.sql files to upgrade the schema version to the maximum supported version. SqlDataStoreTestsFixture diffFixture = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName("DIFF")); await snapshotFixture.InitializeAsync(forceIncrementalSchemaUpgrade : false); await diffFixture.InitializeAsync(forceIncrementalSchemaUpgrade : true); SchemaCompareDatabaseEndpoint snapshotEndpoint = new SchemaCompareDatabaseEndpoint(snapshotFixture.TestConnectionString); SchemaCompareDatabaseEndpoint diffEndpoint = new SchemaCompareDatabaseEndpoint(diffFixture.TestConnectionString); var comparison = new SchemaComparison(snapshotEndpoint, diffEndpoint); SchemaComparisonResult result = comparison.Compare(); Assert.True(result.IsEqual); // cleanup if succeeds await snapshotFixture.DisposeAsync(); await diffFixture.DisposeAsync(); }
public async Task GivenASchemaVersion_WhenApplyingSnapshotTwice_ShouldSucceed(int schemaVersion) { SqlDataStoreTestsFixture snapshotFixture = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName("SNAPSHOT")); snapshotFixture.SchemaInformation = new SchemaInformation(SchemaVersionConstants.Min, schemaVersion); await snapshotFixture.InitializeAsync(forceIncrementalSchemaUpgrade : false); await snapshotFixture.SchemaUpgradeRunner.ApplySchemaAsync(schemaVersion, applyFullSchemaSnapshot : true, CancellationToken.None); // cleanup if succeeds await snapshotFixture.DisposeAsync(); }
public async Task GivenTwoSchemaInitializationMethods_WhenCreatingTwoDatabases_BothSchemasShouldBeEquivalent() { // Create two databases, one where we apply the the maximum supported version's snapshot SQL schema file SqlDataStoreTestsFixture snapshotFixture = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName("SNAPSHOT")); // And one where we apply .diff.sql files to upgrade the schema version to the maximum supported version. SqlDataStoreTestsFixture diffFixture = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName("DIFF")); await snapshotFixture.InitializeAsync(forceIncrementalSchemaUpgrade : false); await diffFixture.InitializeAsync(forceIncrementalSchemaUpgrade : true); SchemaCompareDatabaseEndpoint snapshotEndpoint = new SchemaCompareDatabaseEndpoint(snapshotFixture.TestConnectionString); SchemaCompareDatabaseEndpoint diffEndpoint = new SchemaCompareDatabaseEndpoint(diffFixture.TestConnectionString); var comparison = new SchemaComparison(snapshotEndpoint, diffEndpoint); SchemaComparisonResult result = comparison.Compare(); // filter our sproc bodyscript differences because of auto-generation var actualDiffs = new List <SchemaDifference>(); if (!result.IsEqual) { foreach (var diff in result.Differences) { if (diff.Name == "SqlProcedure") { foreach (var childDiff in diff.Children) { if (childDiff.Name != "BodyScript") { actualDiffs.Add(diff); break; } } } else { actualDiffs.Add(diff); } } } Assert.Empty(actualDiffs); // cleanup if succeeds await snapshotFixture.DisposeAsync(); await diffFixture.DisposeAsync(); }
public async Task GivenANewSchemaVersion_WhenApplying_ShouldBackCompatible(int schemaVersion) { int oldSchemaVersion = schemaVersion - 1; // Create Sql store at old schema version SqlDataStoreTestsFixture oldSqlStore = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName($"COMPATIBLE_{oldSchemaVersion}_"), new SchemaInformation(oldSchemaVersion, oldSchemaVersion)); await oldSqlStore.InitializeAsync(forceIncrementalSchemaUpgrade : false); var oldProcedures = SqlTestUtils.GetStoredProcedures(oldSqlStore); // Create Sql store at new schema version SqlDataStoreTestsFixture newSqlStore = new SqlDataStoreTestsFixture(SqlDataStoreTestsFixture.GenerateDatabaseName($"COMPATIBLE_{schemaVersion}_"), new SchemaInformation(schemaVersion, schemaVersion)); await newSqlStore.InitializeAsync(forceIncrementalSchemaUpgrade : false); var newProcedures = SqlTestUtils.GetStoredProcedures(newSqlStore); // Validate if stored procedures are compatible StoredProcedureCompatibleValidator.Validate(schemaVersion, newProcedures, oldProcedures); // Dispose if pass await oldSqlStore.DisposeAsync(); await newSqlStore.DisposeAsync(); }
/// <summary> /// Get StoredProcedures in SqlDataStore /// </summary> /// <param name="sqlDataStore">The Sql data store</param> /// <returns>The stored procedures.</returns> public static System.Collections.Generic.IReadOnlyList <StoredProcedure> GetStoredProcedures(SqlDataStoreTestsFixture sqlDataStore) { EnsureArg.IsNotNull(sqlDataStore, nameof(sqlDataStore)); using var sqlConnection = new SqlConnection(sqlDataStore.TestConnectionString); ServerConnection connection = new ServerConnection(sqlConnection); Server server = new Server(connection); Database db = server.Databases[sqlDataStore.DatabaseName]; DataTable storedProcedureTable = db.EnumObjects(DatabaseObjectTypes.StoredProcedure); List <StoredProcedure> result = new List <StoredProcedure>(); foreach (DataRow row in storedProcedureTable.Rows) { string schema = (string)row["Schema"]; if (schema == "sys") { continue; } StoredProcedure sp = (StoredProcedure)server.GetSmoObject(new Urn((string)row["Urn"])); result.Add(sp); } return(result); }
public ChangeFeedTestsFixture() { _sqlDataStoreTestsFixture = new SqlDataStoreTestsFixture(); }