/** * Execute this {@code ResourceDatabasePopulator} against the given * {@link DataSource}. * <p>Delegates to {@link DatabasePopulatorUtils#execute}. * @param dataSource the {@code DataSource} to execute against (never {@code null}) * @throws ScriptException if an error occurs * @since 4.1 * @see #populate(Connection) */ public void execute(DataSource dataSource) throws ScriptException { DatabasePopulatorUtils.execute(this, dataSource); }
private void execute(@Nullable DatabasePopulator populator) { Assert.state(this.dataSource != null, "DataSource must be set"); if (this.enabled && populator != null) { DatabasePopulatorUtils.execute(populator, this.dataSource); } }
@Override public void destroy() { if (this.databaseCleaner != null && getDataSource() != null) { DatabasePopulatorUtils.execute(this.databaseCleaner, getDataSource()); } shutdownDatabase(); }
@Bean @Autowired public DataSource dataSource(DatabasePopulator populator) { final DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); dataSource.setUrl(env.getProperty("jdbc.url")); dataSource.setUsername(env.getProperty("jdbc.username")); dataSource.setPassword(env.getProperty("jdbc.password")); DatabasePopulatorUtils.execute(populator, dataSource); return dataSource; }
/** * See SPR-9457 */ @Test public void usesBoundConnectionIfAvailable() throws SQLException { TransactionSynchronizationManager.initSynchronization(); Connection connection = DataSourceUtils.getConnection(db); DatabasePopulator populator = mock(DatabasePopulator.class); DatabasePopulatorUtils.execute(populator, db); verify(populator).populate(connection); }
@Test public void scriptWithMultipleStatements() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-multiple.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithSelectStatements() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-select.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndNewlineSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-newline.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndLongSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-endings.sql")); databasePopulator.setSeparator("@@"); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndWhitespaceSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-whitespace.sql")); databasePopulator.setSeparator("/\n"); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
@Test public void scriptWithMultipleStatementsAndMultipleNewlineSeparator() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-multi-newline.sql")); databasePopulator.setSeparator("\n\n"); DatabasePopulatorUtils.execute(databasePopulator, db); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Keith'", Integer.class), equalTo(1)); assertThat(jdbcTemplate.queryForObject("select COUNT(NAME) from T_TEST where NAME='Dave'", Integer.class), equalTo(1)); }
/** * https://jira.spring.io/browse/SPR-15896 * * @since 5.0 */ @Test public void scriptWithH2Alias() throws Exception { databasePopulator.addScript(usersSchema()); databasePopulator.addScript(resource("db-test-data-h2-alias.sql")); // Set statement separator to double newline so that ";" is not // considered a statement separator within the source code of the // aliased function 'REVERSE'. databasePopulator.setSeparator("\n\n"); DatabasePopulatorUtils.execute(databasePopulator, db); String sql = "select REVERSE(first_name) from users where last_name='Brannen'"; assertThat(jdbcTemplate.queryForObject(sql, String.class), equalTo("maS")); }
@Test public void constructorWithMultipleScriptResources() throws Exception { final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(usersSchema(), resource("users-data-with-comments.sql")); DatabasePopulatorUtils.execute(populator, db); assertUsersDatabaseCreated("Brannen", "Hoeller"); }
/** * See SPR-9781 */ @Test(timeout = 1000) public void executesHugeScriptInReasonableTime() throws SQLException { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-huge.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); }
@Test public void scriptWithStandardEscapedLiteral() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-escaped-literal.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertTestDatabaseCreated("'Keith'"); }
@Test public void scriptWithMySqlEscapedLiteral() throws Exception { databasePopulator.addScript(defaultSchema()); databasePopulator.addScript(resource("db-test-data-mysql-escaped-literal.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertTestDatabaseCreated("\\$Keith\\$"); }
@Test public void scriptWithEolBetweenTokens() throws Exception { databasePopulator.addScript(usersSchema()); databasePopulator.addScript(resource("users-data.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertUsersDatabaseCreated("Brannen"); }
@Test public void scriptWithCommentsWithinStatements() throws Exception { databasePopulator.addScript(usersSchema()); databasePopulator.addScript(resource("users-data-with-comments.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertUsersDatabaseCreated("Brannen", "Hoeller"); }
@Test public void scriptWithSingleLineCommentsAndFailedDrop() throws Exception { databasePopulator.addScript(resource("db-schema-failed-drop-comments.sql")); databasePopulator.addScript(resource("db-test-data.sql")); databasePopulator.setIgnoreFailedDrops(true); DatabasePopulatorUtils.execute(databasePopulator, db); assertTestDatabaseCreated(); }
@Test public void scriptWithoutStatementSeparator() throws Exception { databasePopulator.setSeparator(ScriptUtils.EOF_STATEMENT_SEPARATOR); databasePopulator.addScript(resource("drop-users-schema.sql")); databasePopulator.addScript(resource("users-schema-without-separator.sql")); databasePopulator.addScript(resource("users-data-without-separator.sql")); DatabasePopulatorUtils.execute(databasePopulator, db); assertUsersDatabaseCreated("Brannen"); }