Browse Source

DATAJDBC-168 - Polishing.

Simplified initialization of MySql database.
Extracted dependency versions into properties.
Added JavaDoc.
pull/36/head
Jens Schauder 8 years ago
parent
commit
8af7553e1d
  1. 28
      pom.xml
  2. 25
      src/test/java/org/springframework/data/jdbc/testing/MySqlDataSourceConfiguration.java
  3. 14
      src/test/java/org/springframework/data/jdbc/testing/PostgresDataSourceConfiguration.java
  4. 4
      src/test/resources/mysql.cnf
  5. 53
      src/test/resources/mysql_cnf_override/mysql.cnf

28
pom.xml

@ -24,10 +24,16 @@
<springdata.commons>2.1.0.BUILD-SNAPSHOT</springdata.commons> <springdata.commons>2.1.0.BUILD-SNAPSHOT</springdata.commons>
<java-module-name>spring.data.jdbc</java-module-name> <java-module-name>spring.data.jdbc</java-module-name>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<hsqldb1>1.8.0.10</hsqldb1>
<assertj-core.version>3.6.2</assertj-core.version>
<degraph-check.version>0.1.4</degraph-check.version>
<hsqldb.version>2.2.8</hsqldb.version>
<mybatis.version>3.4.4</mybatis.version>
<mybatis-spring.version>1.3.1</mybatis-spring.version>
<mysql.version>1.5.1</mysql.version>
<mysql-connector-java.version>5.1.41</mysql-connector-java.version>
<postgresql.version>42.0.0</postgresql.version>
</properties> </properties>
<profiles> <profiles>
@ -137,63 +143,63 @@
<dependency> <dependency>
<groupId>org.mybatis</groupId> <groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId> <artifactId>mybatis-spring</artifactId>
<version>1.3.1</version> <version>${mybatis-spring.version}</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis</groupId> <groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId> <artifactId>mybatis</artifactId>
<version>3.4.4</version> <version>${mybatis.version}</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hsqldb</groupId> <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId> <artifactId>hsqldb</artifactId>
<version>2.2.8</version> <version>${hsqldb.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.assertj</groupId> <groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId> <artifactId>assertj-core</artifactId>
<version>3.6.2</version> <version>${assertj-core.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version> <version>${mysql-connector-java.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
<version>42.0.0</version> <version>${postgresql.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>de.schauderhaft.degraph</groupId> <groupId>de.schauderhaft.degraph</groupId>
<artifactId>degraph-check</artifactId> <artifactId>degraph-check</artifactId>
<version>0.1.4</version> <version>${degraph-check.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.testcontainers</groupId> <groupId>org.testcontainers</groupId>
<artifactId>mysql</artifactId> <artifactId>mysql</artifactId>
<version>1.5.1</version> <version>${mysql.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.testcontainers</groupId> <groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
<version>1.5.1</version> <version>${mysql.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>

25
src/test/java/org/springframework/data/jdbc/testing/MySqlDataSourceConfiguration.java

@ -31,6 +31,8 @@ import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
/** /**
* {@link DataSource} setup for MySQL. * {@link DataSource} setup for MySQL.
* *
* Starts a docker container with a MySql database and sets up a database name "test" in it.
*
* @author Jens Schauder * @author Jens Schauder
* @author Oliver Gierke * @author Oliver Gierke
* @author Sedat Gokcen * @author Sedat Gokcen
@ -39,10 +41,10 @@ import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
@Profile("mysql") @Profile("mysql")
class MySqlDataSourceConfiguration extends DataSourceConfiguration { class MySqlDataSourceConfiguration extends DataSourceConfiguration {
private static final MySQLContainer MYSQL_CONTAINER = new MySQLContainer(); private static final MySQLContainer MYSQL_CONTAINER = new MySQLContainer().withConfigurationOverride("");
static { static {
MYSQL_CONTAINER.withConfigurationOverride("mysql_cnf_override").withDatabaseName("test").start(); MYSQL_CONTAINER.start();
} }
/* /*
@ -52,7 +54,10 @@ class MySqlDataSourceConfiguration extends DataSourceConfiguration {
@Override @Override
protected DataSource createDataSource() { protected DataSource createDataSource() {
MysqlDataSource dataSource = getCommonDataSource(); MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUrl(MYSQL_CONTAINER.getJdbcUrl());
dataSource.setUser(MYSQL_CONTAINER.getUsername());
dataSource.setPassword(MYSQL_CONTAINER.getPassword());
dataSource.setDatabaseName(MYSQL_CONTAINER.getDatabaseName()); dataSource.setDatabaseName(MYSQL_CONTAINER.getDatabaseName());
return dataSource; return dataSource;
@ -60,18 +65,6 @@ class MySqlDataSourceConfiguration extends DataSourceConfiguration {
@PostConstruct @PostConstruct
public void initDatabase() throws SQLException, ScriptException { public void initDatabase() throws SQLException, ScriptException {
ScriptUtils.executeSqlScript(createDataSource().getConnection(), null, "DROP DATABASE test;CREATE DATABASE test;");
MysqlDataSource dataSource = getCommonDataSource();
ScriptUtils.executeSqlScript(dataSource.getConnection(), null, "DROP DATABASE test;CREATE DATABASE test;");
}
private MysqlDataSource getCommonDataSource() {
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUrl(MYSQL_CONTAINER.getJdbcUrl());
dataSource.setUser(MYSQL_CONTAINER.getUsername());
dataSource.setPassword(MYSQL_CONTAINER.getPassword());
return dataSource;
} }
} }

14
src/test/java/org/springframework/data/jdbc/testing/PostgresDataSourceConfiguration.java

@ -24,7 +24,9 @@ import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.containers.PostgreSQLContainer;
/** /**
* {@link DataSource} setup for PostgreSQL * {@link DataSource} setup for PostgreSQL.
*
* Starts a docker container with a Postgres database.
* *
* @author Jens Schauder * @author Jens Schauder
* @author Oliver Gierke * @author Oliver Gierke
@ -47,12 +49,12 @@ public class PostgresDataSourceConfiguration extends DataSourceConfiguration {
@Override @Override
protected DataSource createDataSource() { protected DataSource createDataSource() {
PGSimpleDataSource ds = new PGSimpleDataSource(); PGSimpleDataSource dataSource = new PGSimpleDataSource();
ds.setUrl(POSTGRESQL_CONTAINER.getJdbcUrl()); dataSource.setUrl(POSTGRESQL_CONTAINER.getJdbcUrl());
ds.setUser(POSTGRESQL_CONTAINER.getUsername()); dataSource.setUser(POSTGRESQL_CONTAINER.getUsername());
ds.setPassword(POSTGRESQL_CONTAINER.getPassword()); dataSource.setPassword(POSTGRESQL_CONTAINER.getPassword());
return ds; return dataSource;
} }
/* /*

4
src/test/resources/mysql.cnf

@ -0,0 +1,4 @@
[mysqld]
# the only change we make, other params with the comments all together are the default ones.
lower_case_table_names = 1

53
src/test/resources/mysql_cnf_override/mysql.cnf

@ -1,53 +0,0 @@
[mysqld]
# the only change we make, other params with the comments all together are the default ones.
lower_case_table_names = 1
user = mysql
datadir = /var/lib/mysql
port = 3306
#socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
skip-host-cache
skip-name-resolve
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
#server-id = 1
# Uncomment the following if you want to log updates
#log-bin=mysql-bin
# binary logging format - mixed recommended
#binlog_format=mixed
# Causes updates to non-transactional engines using statement format to be
# written directly to binary log. Before using this option make sure that
# there are no dependencies between transactional and non-transactional
# tables such as in the statement INSERT INTO t_myisam SELECT * FROM
# t_innodb; otherwise, slaves may diverge from the master.
#binlog_direct_non_transactional_updates=TRUE
# Uncomment the following if you are using InnoDB tables
innodb_data_file_path = ibdata1:10M:autoextend
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
Loading…
Cancel
Save