From 104c91c519175f7ceb340e91922f168f32f64f3c Mon Sep 17 00:00:00 2001 From: Liren Tu Date: Fri, 4 Nov 2022 13:28:54 -0700 Subject: [PATCH] Fix migration dev center schema dump by run db-specific initialization script (#18984) * Run db-specific initialization script * Refactor code * Use constants * Add unit test for dev center --- .../io/airbyte/bootloader/BootloaderApp.java | 4 +-- .../db/instance/DatabaseConstants.java | 8 +++-- .../ConfigsDatabaseMigrationDevCenter.java | 10 ++---- .../configs/ConfigsDatabaseTestProvider.java | 2 +- .../ConfigsFlywayMigrationDatabase.java | 2 +- .../development/MigrationDevCenter.java | 34 ++++++++++--------- .../jobs/JobsDatabaseMigrationDevCenter.java | 10 ++---- .../jobs/JobsDatabaseTestProvider.java | 2 +- .../jobs/JobsFlywayMigrationDatabase.java | 2 +- .../impl/ConfigsDatabaseInitializerTest.java | 6 ++-- .../impl/JobsDatabaseInitializerTest.java | 10 +++--- ...ConfigsDatabaseMigrationDevCenterTest.java | 29 ++++++++++++++++ .../configs/ConfigsDatabaseMigratorTest.java | 5 ++- .../JobsDatabaseMigrationDevCenterTest.java | 28 +++++++++++++++ .../jobs/JobsDatabaseMigratorTest.java | 5 ++- 15 files changed, 103 insertions(+), 54 deletions(-) create mode 100644 airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenterTest.java create mode 100644 airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenterTest.java diff --git a/airbyte-bootloader/src/main/java/io/airbyte/bootloader/BootloaderApp.java b/airbyte-bootloader/src/main/java/io/airbyte/bootloader/BootloaderApp.java index 9d3d8cfac7b27..1132b5a46ef2b 100644 --- a/airbyte-bootloader/src/main/java/io/airbyte/bootloader/BootloaderApp.java +++ b/airbyte-bootloader/src/main/java/io/airbyte/bootloader/BootloaderApp.java @@ -148,10 +148,10 @@ public BootloaderApp(final Configs configs, public void load() throws Exception { LOGGER.info("Initializing databases..."); DatabaseCheckFactory.createConfigsDatabaseInitializer(configsDslContext, - configs.getConfigsDatabaseInitializationTimeoutMs(), MoreResources.readResource(DatabaseConstants.CONFIGS_SCHEMA_PATH)).initialize(); + configs.getConfigsDatabaseInitializationTimeoutMs(), MoreResources.readResource(DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH)).initialize(); DatabaseCheckFactory.createJobsDatabaseInitializer(jobsDslContext, - configs.getJobsDatabaseInitializationTimeoutMs(), MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH)).initialize(); + configs.getJobsDatabaseInitializationTimeoutMs(), MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH)).initialize(); LOGGER.info("Databases initialized."); LOGGER.info("Setting up config database and default workspace..."); diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/DatabaseConstants.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/DatabaseConstants.java index 52d9315058704..468a66dafe437 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/DatabaseConstants.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/DatabaseConstants.java @@ -26,7 +26,9 @@ public final class DatabaseConstants { /** * Path to the script that contains the initial schema definition for the Configurations database. */ - public static final String CONFIGS_SCHEMA_PATH = "configs_database/schema.sql"; + public static final String CONFIGS_INITIAL_SCHEMA_PATH = "configs_database/schema.sql"; + + public static final String CONFIGS_SCHEMA_DUMP_PATH = "src/main/resources/configs_database/schema_dump.txt"; /** * Logical name of the Jobs database. @@ -41,7 +43,9 @@ public final class DatabaseConstants { /** * Path to the script that contains the initial schema definition for the Jobs database. */ - public static final String JOBS_SCHEMA_PATH = "jobs_database/schema.sql"; + public static final String JOBS_INITIAL_SCHEMA_PATH = "jobs_database/schema.sql"; + + public static final String JOBS_SCHEMA_DUMP_PATH = "src/main/resources/jobs_database/schema_dump.txt"; /** * Default database connection timeout in milliseconds. diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenter.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenter.java index f4a3a84673637..1a77592b25bae 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenter.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenter.java @@ -6,12 +6,11 @@ import io.airbyte.db.Database; import io.airbyte.db.factory.FlywayFactory; +import io.airbyte.db.instance.DatabaseConstants; import io.airbyte.db.instance.FlywayDatabaseMigrator; import io.airbyte.db.instance.development.MigrationDevCenter; -import java.io.IOException; import javax.sql.DataSource; import org.flywaydb.core.Flyway; -import org.jooq.DSLContext; /** * Helper class for migration development. See README for details. @@ -19,7 +18,7 @@ public class ConfigsDatabaseMigrationDevCenter extends MigrationDevCenter { public ConfigsDatabaseMigrationDevCenter() { - super("configs", "src/main/resources/configs_database/schema_dump.txt"); + super("configs", DatabaseConstants.CONFIGS_SCHEMA_DUMP_PATH, DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH); } @Override @@ -27,11 +26,6 @@ protected FlywayDatabaseMigrator getMigrator(final Database database, final Flyw return new ConfigsDatabaseMigrator(database, flyway); } - @Override - protected Database getDatabase(final DSLContext dslContext) throws IOException { - return new Database(dslContext); - } - @Override protected Flyway getFlyway(final DataSource dataSource) { return FlywayFactory.create(dataSource, getClass().getSimpleName(), ConfigsDatabaseMigrator.DB_IDENTIFIER, diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseTestProvider.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseTestProvider.java index d4c18fd5a7c56..98f09191e776a 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseTestProvider.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsDatabaseTestProvider.java @@ -35,7 +35,7 @@ public ConfigsDatabaseTestProvider(final DSLContext dslContext, final Flyway fly @Override public Database create(final boolean runMigration) throws IOException, DatabaseInitializationException { - final String initalSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_SCHEMA_PATH); + final String initalSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH); DatabaseCheckFactory.createConfigsDatabaseInitializer(dslContext, DatabaseConstants.DEFAULT_CONNECTION_TIMEOUT_MS, initalSchema).initialize(); final Database database = new Database(dslContext); diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsFlywayMigrationDatabase.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsFlywayMigrationDatabase.java index d75bfceb11678..05bb8f7b92249 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsFlywayMigrationDatabase.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/configs/ConfigsFlywayMigrationDatabase.java @@ -47,7 +47,7 @@ protected String[] getMigrationFileLocations() { @Override protected void initializeDatabase(final DSLContext dslContext) throws DatabaseInitializationException, IOException { - final String initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_SCHEMA_PATH); + final String initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH); DatabaseCheckFactory.createConfigsDatabaseInitializer(dslContext, DatabaseConstants.DEFAULT_CONNECTION_TIMEOUT_MS, initialSchema).initialize(); } diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/development/MigrationDevCenter.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/development/MigrationDevCenter.java index b95580c9f98b8..100f2a68e64eb 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/development/MigrationDevCenter.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/development/MigrationDevCenter.java @@ -4,6 +4,7 @@ package io.airbyte.db.instance.development; +import com.google.common.annotations.VisibleForTesting; import io.airbyte.db.Database; import io.airbyte.db.factory.DSLContextFactory; import io.airbyte.db.factory.DataSourceFactory; @@ -37,30 +38,33 @@ private enum Command { private final String dbIdentifier; private final String schemaDumpFile; + private final String initialScript; - protected MigrationDevCenter(final String dbIdentifier, final String schemaDumpFile) { + protected MigrationDevCenter(final String dbIdentifier, final String schemaDumpFile, final String initialScript) { this.dbIdentifier = dbIdentifier; this.schemaDumpFile = schemaDumpFile; + this.initialScript = initialScript; } - private static PostgreSQLContainer createContainer() { + private PostgreSQLContainer createContainer() { final PostgreSQLContainer container = new PostgreSQLContainer<>("postgres:13-alpine") .withDatabaseName("airbyte") .withUsername("docker") .withPassword("docker"); container.start(); - - initializeDatabase(container); - + final var containerDelegate = new JdbcDatabaseDelegate(container, ""); + ScriptUtils.runInitScript(containerDelegate, initialScript); return container; } protected abstract FlywayDatabaseMigrator getMigrator(Database database, Flyway flyway); - protected abstract Database getDatabase(DSLContext dslContext) throws IOException; - protected abstract Flyway getFlyway(DataSource dataSource); + private Database getDatabase(final DSLContext dslContext) throws IOException { + return new Database(dslContext); + } + private void createMigration() { try (final PostgreSQLContainer container = createContainer()) { final DataSource dataSource = @@ -94,7 +98,8 @@ private void runLastMigration() { } } - private void dumpSchema() { + @VisibleForTesting + public String dumpSchema(final boolean persistToFile) { try (final PostgreSQLContainer container = createContainer()) { final DataSource dataSource = DataSourceFactory.create(container.getUsername(), container.getPassword(), container.getDriverClassName(), container.getJdbcUrl()); @@ -104,19 +109,16 @@ private void dumpSchema() { final FlywayDatabaseMigrator migrator = getMigrator(database, flyway); migrator.migrate(); final String schema = migrator.dumpSchema(); - MigrationDevHelper.dumpSchema(schema, schemaDumpFile, true); + if (persistToFile) { + MigrationDevHelper.dumpSchema(schema, schemaDumpFile, true); + } + return schema; } } catch (final Exception e) { throw new RuntimeException(e); } } - private static void initializeDatabase(final PostgreSQLContainer container) { - final var containerDelegate = new JdbcDatabaseDelegate(container, ""); - ScriptUtils.runInitScript(containerDelegate, "configs_database/schema.sql"); - ScriptUtils.runInitScript(containerDelegate, "jobs_database/schema.sql"); - } - public static void main(final String[] args) { final MigrationDevCenter devCenter; @@ -131,7 +133,7 @@ public static void main(final String[] args) { switch (command) { case CREATE -> devCenter.createMigration(); case MIGRATE -> devCenter.runLastMigration(); - case DUMP_SCHEMA -> devCenter.dumpSchema(); + case DUMP_SCHEMA -> devCenter.dumpSchema(true); default -> throw new IllegalArgumentException("Unexpected command: " + args[1]); } } diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenter.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenter.java index 6f8302a54551b..336a245d76552 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenter.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenter.java @@ -6,12 +6,11 @@ import io.airbyte.db.Database; import io.airbyte.db.factory.FlywayFactory; +import io.airbyte.db.instance.DatabaseConstants; import io.airbyte.db.instance.FlywayDatabaseMigrator; import io.airbyte.db.instance.development.MigrationDevCenter; -import java.io.IOException; import javax.sql.DataSource; import org.flywaydb.core.Flyway; -import org.jooq.DSLContext; /** * Helper class for migration development. See README for details. @@ -19,7 +18,7 @@ public class JobsDatabaseMigrationDevCenter extends MigrationDevCenter { public JobsDatabaseMigrationDevCenter() { - super("jobs", "src/main/resources/jobs_database/schema_dump.txt"); + super("jobs", DatabaseConstants.JOBS_SCHEMA_DUMP_PATH, DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); } @Override @@ -27,11 +26,6 @@ protected FlywayDatabaseMigrator getMigrator(final Database database, final Flyw return new JobsDatabaseMigrator(database, flyway); } - @Override - protected Database getDatabase(final DSLContext dslContext) throws IOException { - return new Database(dslContext); - } - @Override protected Flyway getFlyway(final DataSource dataSource) { return FlywayFactory.create(dataSource, getClass().getSimpleName(), JobsDatabaseMigrator.DB_IDENTIFIER, diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseTestProvider.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseTestProvider.java index ff43fa0b1a1ed..e7059d48acaad 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseTestProvider.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsDatabaseTestProvider.java @@ -27,7 +27,7 @@ public JobsDatabaseTestProvider(final DSLContext dslContext, final Flyway flyway @Override public Database create(final boolean runMigration) throws IOException, DatabaseInitializationException { - final String initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final String initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); DatabaseCheckFactory.createJobsDatabaseInitializer(dslContext, DatabaseConstants.DEFAULT_CONNECTION_TIMEOUT_MS, initialSchema).initialize(); final Database jobsDatabase = new Database(dslContext); diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsFlywayMigrationDatabase.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsFlywayMigrationDatabase.java index b9e21c339bb36..40326e869e0eb 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsFlywayMigrationDatabase.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/instance/jobs/JobsFlywayMigrationDatabase.java @@ -47,7 +47,7 @@ protected String[] getMigrationFileLocations() { @Override protected void initializeDatabase(final DSLContext dslContext) throws DatabaseInitializationException, IOException { - final String initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final String initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); DatabaseCheckFactory.createJobsDatabaseInitializer(dslContext, DatabaseConstants.DEFAULT_CONNECTION_TIMEOUT_MS, initialSchema).initialize(); } diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/ConfigsDatabaseInitializerTest.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/ConfigsDatabaseInitializerTest.java index 76f2fe44647b1..e331e14f5ffd5 100644 --- a/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/ConfigsDatabaseInitializerTest.java +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/ConfigsDatabaseInitializerTest.java @@ -25,7 +25,7 @@ class ConfigsDatabaseInitializerTest extends CommonDatabaseInitializerTest { @Test void testInitializingSchema() throws IOException { final var databaseAvailabilityCheck = mock(ConfigsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH); final var initializer = new ConfigsDatabaseInitializer(databaseAvailabilityCheck, dslContext, initialSchema); Assertions.assertDoesNotThrow(() -> initializer.initialize()); @@ -35,7 +35,7 @@ void testInitializingSchema() throws IOException { @Test void testInitializingSchemaAlreadyExists() throws IOException { final var databaseAvailabilityCheck = mock(ConfigsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH); dslContext.execute(initialSchema); final var initializer = new ConfigsDatabaseInitializer(databaseAvailabilityCheck, dslContext, initialSchema); @@ -46,7 +46,7 @@ void testInitializingSchemaAlreadyExists() throws IOException { @Test void testInitializationException() throws IOException, DatabaseCheckException { final var databaseAvailabilityCheck = mock(ConfigsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.CONFIGS_INITIAL_SCHEMA_PATH); doThrow(new DatabaseCheckException("test")).when(databaseAvailabilityCheck).check(); diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/JobsDatabaseInitializerTest.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/JobsDatabaseInitializerTest.java index 22ce7eb496f1e..6343ea99410a6 100644 --- a/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/JobsDatabaseInitializerTest.java +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/init/impl/JobsDatabaseInitializerTest.java @@ -25,7 +25,7 @@ class JobsDatabaseInitializerTest extends CommonDatabaseInitializerTest { @Test void testInitializingSchema() throws IOException { final var databaseAvailabilityCheck = mock(JobsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); final var initializer = new JobsDatabaseInitializer(databaseAvailabilityCheck, dslContext, initialSchema); Assertions.assertDoesNotThrow(() -> initializer.initialize()); @@ -35,7 +35,7 @@ void testInitializingSchema() throws IOException { @Test void testInitializingSchemaAlreadyExists() throws IOException { final var databaseAvailabilityCheck = mock(JobsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); dslContext.execute(initialSchema); final var initializer = new JobsDatabaseInitializer(databaseAvailabilityCheck, dslContext, initialSchema); @@ -46,7 +46,7 @@ void testInitializingSchemaAlreadyExists() throws IOException { @Test void testInitializationException() throws IOException, DatabaseCheckException { final var databaseAvailabilityCheck = mock(JobsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); doThrow(new DatabaseCheckException("test")).when(databaseAvailabilityCheck).check(); @@ -56,7 +56,7 @@ void testInitializationException() throws IOException, DatabaseCheckException { @Test void testInitializationNullAvailabilityCheck() throws IOException { - final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); final var initializer = new JobsDatabaseInitializer(null, dslContext, initialSchema); Assertions.assertThrows(DatabaseInitializationException.class, () -> initializer.initialize()); } @@ -64,7 +64,7 @@ void testInitializationNullAvailabilityCheck() throws IOException { @Test void testInitializationNullDslContext() throws IOException { final var databaseAvailabilityCheck = mock(JobsDatabaseAvailabilityCheck.class); - final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_SCHEMA_PATH); + final var initialSchema = MoreResources.readResource(DatabaseConstants.JOBS_INITIAL_SCHEMA_PATH); final var initializer = new JobsDatabaseInitializer(databaseAvailabilityCheck, null, initialSchema); Assertions.assertThrows(DatabaseInitializationException.class, () -> initializer.initialize()); } diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenterTest.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenterTest.java new file mode 100644 index 0000000000000..841422994ad6f --- /dev/null +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigrationDevCenterTest.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.db.instance.configs; + +import static org.junit.jupiter.api.Assertions.*; + +import io.airbyte.commons.io.IOs; +import io.airbyte.db.instance.DatabaseConstants; +import io.airbyte.db.instance.development.MigrationDevCenter; +import java.nio.file.Path; +import org.junit.jupiter.api.Test; + +class ConfigsDatabaseMigrationDevCenterTest { + + /** + * This test ensures that the dev center is working correctly end-to-end. If it fails, it means + * either the migration is not run properly, or the database initialization is incorrect in the dev + * center implementation. + */ + @Test + void testSchemaDump() { + final MigrationDevCenter devCenter = new ConfigsDatabaseMigrationDevCenter(); + final String schemaDump = IOs.readFile(Path.of(DatabaseConstants.CONFIGS_SCHEMA_DUMP_PATH)); + assertEquals(schemaDump.trim(), devCenter.dumpSchema(false)); + } + +} diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigratorTest.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigratorTest.java index 5d82e2d15f593..80c55c021dd9d 100644 --- a/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigratorTest.java +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/configs/ConfigsDatabaseMigratorTest.java @@ -5,6 +5,7 @@ package io.airbyte.db.instance.configs; import io.airbyte.db.factory.FlywayFactory; +import io.airbyte.db.instance.DatabaseConstants; import io.airbyte.db.instance.DatabaseMigrator; import io.airbyte.db.instance.development.MigrationDevHelper; import java.io.IOException; @@ -14,8 +15,6 @@ @SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert") class ConfigsDatabaseMigratorTest extends AbstractConfigsDatabaseTest { - private static final String SCHEMA_DUMP_FILE = "src/main/resources/configs_database/schema_dump.txt"; - @Test void dumpSchema() throws IOException { final Flyway flyway = FlywayFactory.create(getDataSource(), getClass().getSimpleName(), ConfigsDatabaseMigrator.DB_IDENTIFIER, @@ -23,7 +22,7 @@ void dumpSchema() throws IOException { final DatabaseMigrator migrator = new ConfigsDatabaseMigrator(database, flyway); migrator.migrate(); final String schema = migrator.dumpSchema(); - MigrationDevHelper.dumpSchema(schema, SCHEMA_DUMP_FILE, false); + MigrationDevHelper.dumpSchema(schema, DatabaseConstants.CONFIGS_SCHEMA_DUMP_PATH, false); } } diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenterTest.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenterTest.java new file mode 100644 index 0000000000000..a72403fd8a187 --- /dev/null +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigrationDevCenterTest.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.db.instance.jobs; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.airbyte.commons.io.IOs; +import io.airbyte.db.instance.DatabaseConstants; +import io.airbyte.db.instance.development.MigrationDevCenter; +import java.nio.file.Path; +import org.junit.jupiter.api.Test; + +class JobsDatabaseMigrationDevCenterTest { + + /** + * This test ensures that the dev center is working correctly end-to-end. If it fails, it means + * either the migration is not run properly, or the database initialization is incorrect. + */ + @Test + void testSchemaDump() { + final MigrationDevCenter devCenter = new JobsDatabaseMigrationDevCenter(); + final String schemaDump = IOs.readFile(Path.of(DatabaseConstants.JOBS_SCHEMA_DUMP_PATH)); + assertEquals(schemaDump.trim(), devCenter.dumpSchema(false)); + } + +} diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigratorTest.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigratorTest.java index 668b734479d14..688c1ac0111b1 100644 --- a/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigratorTest.java +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/instance/jobs/JobsDatabaseMigratorTest.java @@ -5,6 +5,7 @@ package io.airbyte.db.instance.jobs; import io.airbyte.db.factory.FlywayFactory; +import io.airbyte.db.instance.DatabaseConstants; import io.airbyte.db.instance.DatabaseMigrator; import io.airbyte.db.instance.development.MigrationDevHelper; import java.io.IOException; @@ -14,8 +15,6 @@ @SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert") class JobsDatabaseMigratorTest extends AbstractJobsDatabaseTest { - private static final String SCHEMA_DUMP_FILE = "src/main/resources/jobs_database/schema_dump.txt"; - @Test void dumpSchema() throws IOException { final Flyway flyway = FlywayFactory.create(getDataSource(), getClass().getSimpleName(), JobsDatabaseMigrator.DB_IDENTIFIER, @@ -23,7 +22,7 @@ void dumpSchema() throws IOException { final DatabaseMigrator migrator = new JobsDatabaseMigrator(database, flyway); migrator.migrate(); final String schema = migrator.dumpSchema(); - MigrationDevHelper.dumpSchema(schema, SCHEMA_DUMP_FILE, false); + MigrationDevHelper.dumpSchema(schema, DatabaseConstants.JOBS_SCHEMA_DUMP_PATH, false); } }