private static void ensureDatabaseExists(Config dbConfig) throws Exception { if (testMetastoreDatabaseServer == null) { try (Mutex ignored = new Mutex()) { if (testMetastoreDatabaseServer == null) { testMetastoreDatabaseServer = new TestMetastoreDatabaseServer(dbConfig); } } } }
private void executeStatements(Connection connection, String... statements) throws SQLException { for (String statement : statements) { executeStatement(connection, statement); } }
@BeforeClass public void startUp() throws Exception { testMetastoreDatabase = TestMetastoreDatabaseFactory.get(); this.launcherProps = new Properties(); this.launcherProps.load(new FileReader("gobblin-test/resource/gobblin.test.properties")); this.launcherProps.setProperty(ConfigurationKeys.JOB_HISTORY_STORE_ENABLED_KEY, "true"); this.launcherProps.setProperty(ConfigurationKeys.METRICS_ENABLED_KEY, "true"); this.launcherProps.setProperty(ConfigurationKeys.METRICS_REPORTING_FILE_ENABLED_KEY, "false"); this.launcherProps.setProperty(ConfigurationKeys.JOB_HISTORY_STORE_URL_KEY, testMetastoreDatabase.getJdbcUrl()); StateStore<JobState.DatasetState> datasetStateStore = new FsStateStore<>(this.launcherProps.getProperty(ConfigurationKeys.STATE_STORE_FS_URI_KEY), this.launcherProps.getProperty(ConfigurationKeys.STATE_STORE_ROOT_DIR_KEY), JobState.DatasetState.class); this.jobLauncherTestHelper = new JobLauncherTestHelper(this.launcherProps, datasetStateStore); }
public static ITestMetastoreDatabase get(String version) throws Exception { return get(version, getDefaultConfig()); }
public static ITestMetastoreDatabase get() throws Exception { return TestMetastoreDatabaseFactory.get("latest"); }
@AfterClass(alwaysRun = true) public void tearDown() throws IOException { if (testMetastoreDatabase != null) { testMetastoreDatabase.close(); } }
public void drop(String database) throws SQLException, URISyntaxException { Optional<Connection> connectionOptional = Optional.absent(); try { connectionOptional = getConnector(getInformationSchemaJdbcUrl()); Connection connection = connectionOptional.get(); executeStatement(connection, String.format(DROP_DATABASE_TEMPLATE, database)); } finally { if (connectionOptional.isPresent()) { connectionOptional.get().close(); } } }
public static ITestMetastoreDatabase get(String version, Config dbConfig) throws Exception { try { synchronized (syncObject) { ensureDatabaseExists(dbConfig); TestMetadataDatabase instance = new TestMetadataDatabase(testMetastoreDatabaseServer, version); instances.add(instance); return instance; } } catch (Exception e) { throw new RuntimeException("Failed to create TestMetastoreDatabase with version " + version + " and config " + dbConfig.root().render(ConfigRenderOptions.defaults().setFormatted(true).setJson(true)) + " cause: " + e, e); } }
private MySqlJdbcUrl getInformationSchemaJdbcUrl() throws URISyntaxException { return getBaseJdbcUrl() .setPath(INFORMATION_SCHEMA) .setUser(ROOT_USER); }
@Override public void resetDatabase(String version) throws Exception { this.testMetastoreDatabaseServer.prepareDatabase(database, version); }
@Override public void close() { release(); }
public Mutex() throws IOException { take(); }
static void release(ITestMetastoreDatabase instance) throws IOException { synchronized (syncObject) { if (instances.remove(instance) && instances.size() == 0) { testMetastoreDatabaseServer.close(); testMetastoreDatabaseServer = null; } } }
TestMetadataDatabase(TestMetastoreDatabaseServer testMetastoreDatabaseServer, String version) throws Exception { this.testMetastoreDatabaseServer = testMetastoreDatabaseServer; this.database = String.format("gobblin_%s", UUID.randomUUID().toString().replace("-", StringUtils.EMPTY)); this.resetDatabase(version); }
@Override public String getJdbcUrl() throws URISyntaxException { return this.testMetastoreDatabaseServer.getJdbcUrl(this.database).toString(); }
@BeforeClass public void setUp() throws Exception { ConfigFactory.invalidateCaches(); testMetastoreDatabase = TestMetastoreDatabaseFactory.get(getVersion()); Properties properties = new Properties(); properties.setProperty(ConfigurationKeys.JOB_HISTORY_STORE_URL_KEY, testMetastoreDatabase.getJdbcUrl()); Injector injector = Guice.createInjector(new MetaStoreModule(properties)); this.jobHistoryStore = injector.getInstance(JobHistoryStore.class); }
@AfterClass(alwaysRun = true) public void tearDown() throws IOException { if (testMetastoreDatabase != null) { testMetastoreDatabase.close(); } }
MySqlJdbcUrl getJdbcUrl(String database) throws URISyntaxException { return getBaseJdbcUrl() .setPath(database) .setUser(this.dbUserName) .setPassword(this.dbUserPassword) .setParameter("useLegacyDatetimeCode", "false") .setParameter("rewriteBatchedStatements", "true"); }
@AfterClass(alwaysRun = true) public void tearDown() throws Exception { if (this.jobHistoryStore != null) { this.jobHistoryStore.close(); } if (this.testMetastoreDatabase != null) { this.testMetastoreDatabase.close(); } }