public void SetUp() { if (!System.IO.File.Exists("fbtest.fdb")) { FbConnection.CreateDatabase(IntegrationTestOptions.Firebird.ConnectionString); } Connection = new FbConnection(IntegrationTestOptions.Firebird.ConnectionString); var options = FirebirdOptions.AutoCommitBehaviour(); Processor = new FirebirdProcessor(Connection, new FirebirdGenerator(options), new TextWriterAnnouncer(System.Console.Out), new ProcessorOptions(), new FirebirdDbFactory(), options); Quoter = new FirebirdQuoter(); Connection.Open(); Processor.BeginTransaction(); }
public void ObsoleteAlterTable_MigrationRequiresAutomaticDelete_AndProcessorHasUndoDisabled_ShouldNotThrow() { using (var tempDb = new TemporaryDatabase(IntegrationTestOptions.Firebird, _firebirdLibraryProber)) { var connectionString = tempDb.ConnectionString; var runnerContext = new RunnerContext(new TextWriterAnnouncer(TestContext.Out)) { Namespace = "FluentMigrator.Tests.Integration.Migrations" }; using (var connection = new FbConnection(connectionString)) { var announcer = new TextWriterAnnouncer(TestContext.Out) { ShowSql = true }; var options = FirebirdOptions.AutoCommitBehaviour(); options.TruncateLongNames = false; var processor = new FirebirdProcessor(connection, new FirebirdGenerator(options), announcer, new ProcessorOptions(), new FirebirdDbFactory(), options); var runner = new MigrationRunner(Assembly.GetExecutingAssembly(), runnerContext, processor); runner.Up(new MigrationWhichCreatesTwoRelatedTables()); processor.CommitTransaction(); FbConnection.ClearPool(connection); } //---------------Assert Precondition---------------- Assert.IsTrue(ForeignKeyExists(connectionString, MigrationWhichCreatesTwoRelatedTables.ForeignKeyName), "Foreign key does not exist after first migration"); using (var connection = new FbConnection(connectionString)) { var announcer = new TextWriterAnnouncer(TestContext.Out) { ShowSql = true }; var options = FirebirdOptions.AutoCommitBehaviour(); var processor = new FirebirdProcessor(connection, new FirebirdGenerator(options), announcer, new ProcessorOptions(), new FirebirdDbFactory(), options); var runner = new MigrationRunner(Assembly.GetExecutingAssembly(), runnerContext, processor); runner.Up(new MigrationWhichAltersTableWithFK()); processor.CommitTransaction(); } Assert.IsTrue(ForeignKeyExists(connectionString, MigrationWhichCreatesTwoRelatedTables.ForeignKeyName), "Foreign key does not exist after second migration"); } }
public void SetUp() { if (!IntegrationTestOptions.Firebird.IsEnabled) { Assert.Ignore(); } _temporaryDatabase = new TemporaryDatabase( IntegrationTestOptions.Firebird, _prober); Connection = new FbConnection(_temporaryDatabase.ConnectionString); var options = FirebirdOptions.AutoCommitBehaviour(); Processor = new FirebirdProcessor(Connection, new FirebirdGenerator(options), new TextWriterAnnouncer(TestContext.Out), new ProcessorOptions(), new FirebirdDbFactory(), options); Connection.Open(); Processor.BeginTransaction(); }
protected static void ExecuteWithFirebird(Action <IMigrationProcessor> test, IntegrationTestOptions.DatabaseServerOptions serverOptions) { if (!serverOptions.IsEnabled) { return; } var announcer = new TextWriterAnnouncer(System.Console.Out); announcer.ShowSql = true; announcer.Heading("Testing Migration against Firebird Server"); if (!System.IO.File.Exists("fbtest.fdb")) { FbConnection.CreateDatabase(serverOptions.ConnectionString); } using (var connection = new FbConnection(serverOptions.ConnectionString)) { var options = FirebirdOptions.AutoCommitBehaviour(); var processor = new FirebirdProcessor(connection, new FirebirdGenerator(options), announcer, new ProcessorOptions(), new PostgresDbFactory(), options); try { test(processor); } catch (Exception e) { if (!processor.WasCommitted) { processor.RollbackTransaction(); } throw e; } if (!processor.WasCommitted) { processor.RollbackTransaction(); } connection.Close(); } }
private FirebirdProcessor MakeProcessor() { var options = FirebirdOptions.AutoCommitBehaviour(); return(new FirebirdProcessor(_connection, new FirebirdGenerator(options), new TextWriterAnnouncer(TestContext.Out), new ProcessorOptions(), new FirebirdDbFactory(), options)); }
public void AlterTable_MigrationRequiresAutomaticDelete_AndProcessorHasUndoDisabled_ShouldNotThrow() { // this test was originally created to investigate an issue with foreign key names but in the process, // I found that FirebirdProcessor.CreateSequenceForIdentity doesn't respect FBOptions.UndoEnabled. Since // Undo isn't implemented for Firebird, a migration runner always has to turn it off, but even with it off, // the migrations below will fail unless CreateSequenceForIdentity is appropriately altered var tempResources = WriteOutFirebirdEmbeddedLibrariesToCurrentWorkingDirectory(); var tempFile = Path.GetTempFileName(); using (var deleter = new AutoDeleter(tempFile)) { File.Delete(tempFile); deleter.Add(tempResources); var connectionString = GetConnectionStringToTempDatabaseAt(tempFile); var runnerContext = new RunnerContext(new TextWriterAnnouncer(System.Console.Out)) { Namespace = "FluentMigrator.Tests.Integration.Migrations" }; try { using (var connection = new FbConnection(connectionString)) { FirebirdProcessor processor; var announcer = new TextWriterAnnouncer(System.Console.Out); announcer.ShowSql = true; var options = FirebirdOptions.AutoCommitBehaviour(); options.TruncateLongNames = false; processor = new FirebirdProcessor(connection, new FirebirdGenerator(options), announcer, new ProcessorOptions(), new FirebirdDbFactory(), options); processor.FBOptions.UndoEnabled = false; var runner = new MigrationRunner(Assembly.GetExecutingAssembly(), runnerContext, processor); runner.Up(new MigrationWhichCreatesTwoRelatedTables()); processor.CommitTransaction(); FbConnection.ClearPool(connection); } //---------------Assert Precondition---------------- Assert.IsTrue(ForeignKeyExists(connectionString, MigrationWhichCreatesTwoRelatedTables.ForeignKeyName), "Foreign key does not exist after first migration"); using (var connection = new FbConnection(connectionString)) { FirebirdProcessor processor; var announcer = new TextWriterAnnouncer(System.Console.Out); announcer.ShowSql = true; var options = FirebirdOptions.AutoCommitBehaviour(); processor = new FirebirdProcessor(connection, new FirebirdGenerator(options), announcer, new ProcessorOptions(), new FirebirdDbFactory(), options); processor.FBOptions.UndoEnabled = false; var runner = new MigrationRunner(Assembly.GetExecutingAssembly(), runnerContext, processor); runner.Up(new MigrationWhichAltersTableWithFK()); processor.CommitTransaction(); } Assert.IsTrue(ForeignKeyExists(connectionString, MigrationWhichCreatesTwoRelatedTables.ForeignKeyName), "Foreign key does not exist after second migration"); } catch (Exception ex) { try { File.Copy(tempFile, "C:\\tmp\\fm_tests.fdb", true); } catch { } throw ex; } } }
/// <summary> /// Adds Firebird support /// </summary> /// <param name="builder">The builder to add the Firebird-specific services to</param> /// <returns>The migration runner builder</returns> public static IMigrationRunnerBuilder AddFirebird(this IMigrationRunnerBuilder builder) { return(builder.AddFirebird(FirebirdOptions.AutoCommitBehaviour())); }