This is an automated email from the ASF dual-hosted git repository. agingade pushed a commit to branch feature/GEODE-4947 in repository https://gitbox.apache.org/repos/asf/geode.git
commit 1f234ca6a1c3eba0d5b65632631d50e1c10e0204 Author: Nick Reich <nre...@pivotal.io> AuthorDate: Wed Mar 28 10:16:46 2018 -0700 GEODE-4947: Update integration tests to use mysql and postgres --- .../jdbc/internal/SqlStatementFactory.java | 14 ++++++------ .../jdbc/JdbcAsyncWriterIntegrationTest.java | 14 +++++++----- .../connectors/jdbc/JdbcLoaderIntegrationTest.java | 15 ++++++++----- .../connectors/jdbc/JdbcWriterIntegrationTest.java | 13 ++++++----- ...va => MySqlJdbcAsyncWriterIntegrationTest.java} | 22 +++++++++--------- ...st.java => MySqlJdbcLoaderIntegrationTest.java} | 21 ++++++++--------- ...st.java => MySqlJdbcWriterIntegrationTest.java} | 21 ++++++++--------- ...=> PostgresJdbcAsyncWriterIntegrationTest.java} | 21 ++++++++--------- ...java => PostgresJdbcLoaderIntegrationTest.java} | 21 ++++++++--------- ...java => PostgresJdbcWriterIntegrationTest.java} | 21 ++++++++--------- .../jdbc/internal/TestConfigService.java | 16 ++++++------- .../test/junit/rules/DatabaseConnectionRule.java | 2 ++ .../junit/rules/InMemoryDerbyConnectionRule.java | 8 +++++-- .../test/junit/rules/MySqlConnectionRule.java | 26 +++++++++++++++++----- .../test/junit/rules/PostgresConnectionRule.java | 2 +- .../junit/rules/SqlDatabaseConnectionRule.java | 4 ++-- 16 files changed, 140 insertions(+), 101 deletions(-) diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java index ac787b8..d5367ef 100644 --- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java +++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/SqlStatementFactory.java @@ -22,18 +22,18 @@ class SqlStatementFactory { assert columnList.size() == 1; ColumnValue keyCV = columnList.get(0); assert keyCV.isKey(); - return "SELECT * FROM \"" + tableName + "\" WHERE \"" + keyCV.getColumnName() + "\" = ?"; + return "SELECT * FROM " + tableName + " WHERE " + keyCV.getColumnName() + " = ?"; } String createDestroySqlString(String tableName, List<ColumnValue> columnList) { assert columnList.size() == 1; ColumnValue keyCV = columnList.get(0); assert keyCV.isKey(); - return "DELETE FROM \"" + tableName + "\" WHERE \"" + keyCV.getColumnName() + "\" = ?"; + return "DELETE FROM " + tableName + " WHERE " + keyCV.getColumnName() + " = ?"; } String createUpdateSqlString(String tableName, List<ColumnValue> columnList) { - StringBuilder query = new StringBuilder("UPDATE \"" + tableName + "\" SET "); + StringBuilder query = new StringBuilder("UPDATE " + tableName + " SET "); int idx = 0; for (ColumnValue column : columnList) { if (!column.isKey()) { @@ -41,14 +41,14 @@ class SqlStatementFactory { if (idx > 1) { query.append(", "); } - query.append('"').append(column.getColumnName()).append('"'); + query.append(column.getColumnName()); query.append(" = ?"); } } for (ColumnValue column : columnList) { if (column.isKey()) { query.append(" WHERE "); - query.append('"').append(column.getColumnName()).append('"'); + query.append(column.getColumnName()); query.append(" = ?"); // currently only support simple primary key with one column break; @@ -58,13 +58,13 @@ class SqlStatementFactory { } String createInsertSqlString(String tableName, List<ColumnValue> columnList) { - StringBuilder columnNames = new StringBuilder("INSERT INTO \"" + tableName + "\" ("); + StringBuilder columnNames = new StringBuilder("INSERT INTO " + tableName + " ("); StringBuilder columnValues = new StringBuilder(" VALUES ("); int columnCount = columnList.size(); int idx = 0; for (ColumnValue column : columnList) { idx++; - columnNames.append('"').append(column.getColumnName()).append('"'); + columnNames.append(column.getColumnName()); columnValues.append('?'); if (idx != columnCount) { columnNames.append(", "); diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java index c1adcb9..11767eb 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcAsyncWriterIntegrationTest.java @@ -44,11 +44,10 @@ import org.apache.geode.pdx.PdxInstance; import org.apache.geode.test.junit.categories.IntegrationTest; @Category(IntegrationTest.class) -public class JdbcAsyncWriterIntegrationTest { +public abstract class JdbcAsyncWriterIntegrationTest { - private static final String DB_NAME = "DerbyDB"; + static final String DB_NAME = "test"; private static final String REGION_TABLE_NAME = "employees"; - private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true"; private InternalCache cache; private Region<String, PdxInstance> employees; @@ -65,7 +64,8 @@ public class JdbcAsyncWriterIntegrationTest { cache = (InternalCache) new CacheFactory().set("locators", "").set("mcast-port", "0") .setPdxReadSerialized(false).create(); employees = createRegionWithJDBCAsyncWriter(REGION_TABLE_NAME); - connection = DriverManager.getConnection(CONNECTION_URL); + // connection = DriverManager.getConnection(CONNECTION_URL); + connection = getConnection(); statement = connection.createStatement(); statement.execute("Create Table " + REGION_TABLE_NAME + " (id varchar(10) primary key not null, name varchar(10), age int)"); @@ -95,6 +95,10 @@ public class JdbcAsyncWriterIntegrationTest { } } + public abstract Connection getConnection() throws SQLException; + + public abstract String getConnectionUrl(); + @Test public void validateJDBCAsyncWriterTotalEvents() { employees.put("1", pdxEmployee1); @@ -241,7 +245,7 @@ public class JdbcAsyncWriterIntegrationTest { private SqlHandler createSqlHandler() throws ConnectionConfigExistsException, RegionMappingExistsException { return new SqlHandler(new TestableConnectionManager(), new TableMetaDataManager(), - TestConfigService.getTestConfigService()); + TestConfigService.getTestConfigService(getConnectionUrl())); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java index a4ec5ab..6a9dfbd 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcLoaderIntegrationTest.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; +import java.sql.SQLException; import java.sql.Statement; import java.util.Date; @@ -48,11 +49,11 @@ import org.apache.geode.pdx.internal.AutoSerializableManager; import org.apache.geode.test.junit.categories.IntegrationTest; @Category(IntegrationTest.class) -public class JdbcLoaderIntegrationTest { +public abstract class JdbcLoaderIntegrationTest { + + static final String DB_NAME = "test"; - private static final String DB_NAME = "DerbyDB"; private static final String REGION_TABLE_NAME = "employees"; - private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true"; private InternalCache cache; private Connection connection; @@ -69,7 +70,7 @@ public class JdbcLoaderIntegrationTest { .setPdxSerializer( new ReflectionBasedAutoSerializer(ClassWithSupportedPdxFields.class.getName())) .create(); - connection = DriverManager.getConnection(CONNECTION_URL); + connection = getConnection(); statement = connection.createStatement(); } @@ -79,6 +80,10 @@ public class JdbcLoaderIntegrationTest { closeDB(); } + public abstract Connection getConnection() throws SQLException; + + public abstract String getConnectionUrl(); + private void createEmployeeTable() throws Exception { statement.execute("Create Table " + REGION_TABLE_NAME + " (id varchar(10) primary key not null, name varchar(10), age int)"); @@ -182,7 +187,7 @@ public class JdbcLoaderIntegrationTest { throws ConnectionConfigExistsException, RegionMappingExistsException { return new SqlHandler(new TestableConnectionManager(), new TableMetaDataManager(), TestConfigService.getTestConfigService((InternalCache) cache, pdxClassName, - primaryKeyInValue)); + primaryKeyInValue, getConnectionUrl())); } private <K, V> Region<K, V> createRegionWithJDBCLoader(String regionName, String pdxClassName, diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java index 5e42631..5a489a7 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JdbcWriterIntegrationTest.java @@ -46,11 +46,10 @@ import org.apache.geode.pdx.PdxInstance; import org.apache.geode.test.junit.categories.IntegrationTest; @Category(IntegrationTest.class) -public class JdbcWriterIntegrationTest { +public abstract class JdbcWriterIntegrationTest { - private static final String DB_NAME = "DerbyDB"; + static final String DB_NAME = "test"; private static final String REGION_TABLE_NAME = "employees"; - private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true"; private InternalCache cache; private Region<String, PdxInstance> employees; @@ -68,7 +67,7 @@ public class JdbcWriterIntegrationTest { .setPdxReadSerialized(false).create(); employees = createRegionWithJDBCSynchronousWriter(REGION_TABLE_NAME); - connection = DriverManager.getConnection(CONNECTION_URL); + connection = getConnection(); statement = connection.createStatement(); statement.execute("Create Table " + REGION_TABLE_NAME + " (id varchar(10) primary key not null, name varchar(10), age int)"); @@ -86,6 +85,10 @@ public class JdbcWriterIntegrationTest { closeDB(); } + public abstract Connection getConnection() throws SQLException; + + public abstract String getConnectionUrl(); + private void closeDB() throws Exception { if (statement == null) { statement = connection.createStatement(); @@ -227,7 +230,7 @@ public class JdbcWriterIntegrationTest { private SqlHandler createSqlHandler() throws ConnectionConfigExistsException, RegionMappingExistsException { return new SqlHandler(new TestableConnectionManager(), new TableMetaDataManager(), - TestConfigService.getTestConfigService()); + TestConfigService.getTestConfigService(getConnectionUrl())); } private void assertRecordMatchesEmployee(ResultSet resultSet, String key, Employee employee) diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcAsyncWriterIntegrationTest.java similarity index 64% copy from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java copy to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcAsyncWriterIntegrationTest.java index 8f0ed43..2ca6ff4 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcAsyncWriterIntegrationTest.java @@ -12,32 +12,34 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.connectors.jdbc.internal; +package org.apache.geode.connectors.jdbc; import java.sql.Connection; import java.sql.SQLException; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.IntegrationTest; import org.apache.geode.test.junit.rules.DatabaseConnectionRule; -import org.apache.geode.test.junit.rules.InMemoryDerbyConnectionRule; +import org.apache.geode.test.junit.rules.MySqlConnectionRule; +import org.apache.geode.test.junit.rules.PostgresConnectionRule; @Category(IntegrationTest.class) -public class DerbyTableMetaDataManagerIntegrationTest extends TableMetaDataManagerIntegrationTest { +public class MySqlJdbcAsyncWriterIntegrationTest extends JdbcAsyncWriterIntegrationTest { - @Rule - public DatabaseConnectionRule dbRule = new InMemoryDerbyConnectionRule(DB_NAME); + @ClassRule + public static DatabaseConnectionRule dbRule = + new MySqlConnectionRule.Builder().file("src/test/resources/docker/mysql.yml") + .serviceName("db").port(3306).database(DB_NAME).build(); @Override - protected Connection getConnection() throws SQLException { + public Connection getConnection() throws SQLException { return dbRule.getConnection(); } @Override - protected void createTable() throws SQLException { - statement.execute("Create Table " + REGION_TABLE_NAME - + " (\"id\" varchar(10) primary key not null, \"name\" varchar(10), \"age\" int)"); + public String getConnectionUrl() { + return dbRule.getConnectionUrl(); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcLoaderIntegrationTest.java similarity index 65% copy from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java copy to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcLoaderIntegrationTest.java index 8f0ed43..9555769 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcLoaderIntegrationTest.java @@ -12,32 +12,33 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.connectors.jdbc.internal; +package org.apache.geode.connectors.jdbc; import java.sql.Connection; import java.sql.SQLException; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.IntegrationTest; import org.apache.geode.test.junit.rules.DatabaseConnectionRule; -import org.apache.geode.test.junit.rules.InMemoryDerbyConnectionRule; +import org.apache.geode.test.junit.rules.MySqlConnectionRule; @Category(IntegrationTest.class) -public class DerbyTableMetaDataManagerIntegrationTest extends TableMetaDataManagerIntegrationTest { +public class MySqlJdbcLoaderIntegrationTest extends JdbcLoaderIntegrationTest { - @Rule - public DatabaseConnectionRule dbRule = new InMemoryDerbyConnectionRule(DB_NAME); + @ClassRule + public static DatabaseConnectionRule dbRule = + new MySqlConnectionRule.Builder().file("src/test/resources/docker/mysql.yml") + .serviceName("db").port(3306).database(DB_NAME).build(); @Override - protected Connection getConnection() throws SQLException { + public Connection getConnection() throws SQLException { return dbRule.getConnection(); } @Override - protected void createTable() throws SQLException { - statement.execute("Create Table " + REGION_TABLE_NAME - + " (\"id\" varchar(10) primary key not null, \"name\" varchar(10), \"age\" int)"); + public String getConnectionUrl() { + return dbRule.getConnectionUrl(); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcWriterIntegrationTest.java similarity index 65% copy from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java copy to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcWriterIntegrationTest.java index 8f0ed43..8ca1ca3 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/MySqlJdbcWriterIntegrationTest.java @@ -12,32 +12,33 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.connectors.jdbc.internal; +package org.apache.geode.connectors.jdbc; import java.sql.Connection; import java.sql.SQLException; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.IntegrationTest; import org.apache.geode.test.junit.rules.DatabaseConnectionRule; -import org.apache.geode.test.junit.rules.InMemoryDerbyConnectionRule; +import org.apache.geode.test.junit.rules.MySqlConnectionRule; @Category(IntegrationTest.class) -public class DerbyTableMetaDataManagerIntegrationTest extends TableMetaDataManagerIntegrationTest { +public class MySqlJdbcWriterIntegrationTest extends JdbcWriterIntegrationTest { - @Rule - public DatabaseConnectionRule dbRule = new InMemoryDerbyConnectionRule(DB_NAME); + @ClassRule + public static DatabaseConnectionRule dbRule = + new MySqlConnectionRule.Builder().file("src/test/resources/docker/mysql.yml") + .serviceName("db").port(3306).database(DB_NAME).build(); @Override - protected Connection getConnection() throws SQLException { + public Connection getConnection() throws SQLException { return dbRule.getConnection(); } @Override - protected void createTable() throws SQLException { - statement.execute("Create Table " + REGION_TABLE_NAME - + " (\"id\" varchar(10) primary key not null, \"name\" varchar(10), \"age\" int)"); + public String getConnectionUrl() { + return dbRule.getConnectionUrl(); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcAsyncWriterIntegrationTest.java similarity index 65% copy from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java copy to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcAsyncWriterIntegrationTest.java index 8f0ed43..31baf95 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcAsyncWriterIntegrationTest.java @@ -12,32 +12,33 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.connectors.jdbc.internal; +package org.apache.geode.connectors.jdbc; import java.sql.Connection; import java.sql.SQLException; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.IntegrationTest; import org.apache.geode.test.junit.rules.DatabaseConnectionRule; -import org.apache.geode.test.junit.rules.InMemoryDerbyConnectionRule; +import org.apache.geode.test.junit.rules.PostgresConnectionRule; @Category(IntegrationTest.class) -public class DerbyTableMetaDataManagerIntegrationTest extends TableMetaDataManagerIntegrationTest { +public class PostgresJdbcAsyncWriterIntegrationTest extends JdbcAsyncWriterIntegrationTest { - @Rule - public DatabaseConnectionRule dbRule = new InMemoryDerbyConnectionRule(DB_NAME); + @ClassRule + public static DatabaseConnectionRule dbRule = + new PostgresConnectionRule.Builder().file("src/test/resources/docker/postgres.yml") + .serviceName("db").port(5432).database(DB_NAME).build(); @Override - protected Connection getConnection() throws SQLException { + public Connection getConnection() throws SQLException { return dbRule.getConnection(); } @Override - protected void createTable() throws SQLException { - statement.execute("Create Table " + REGION_TABLE_NAME - + " (\"id\" varchar(10) primary key not null, \"name\" varchar(10), \"age\" int)"); + public String getConnectionUrl() { + return dbRule.getConnectionUrl(); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcLoaderIntegrationTest.java similarity index 65% copy from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java copy to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcLoaderIntegrationTest.java index 8f0ed43..0a96d5f 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcLoaderIntegrationTest.java @@ -12,32 +12,33 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.connectors.jdbc.internal; +package org.apache.geode.connectors.jdbc; import java.sql.Connection; import java.sql.SQLException; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.IntegrationTest; import org.apache.geode.test.junit.rules.DatabaseConnectionRule; -import org.apache.geode.test.junit.rules.InMemoryDerbyConnectionRule; +import org.apache.geode.test.junit.rules.PostgresConnectionRule; @Category(IntegrationTest.class) -public class DerbyTableMetaDataManagerIntegrationTest extends TableMetaDataManagerIntegrationTest { +public class PostgresJdbcLoaderIntegrationTest extends JdbcLoaderIntegrationTest { - @Rule - public DatabaseConnectionRule dbRule = new InMemoryDerbyConnectionRule(DB_NAME); + @ClassRule + public static DatabaseConnectionRule dbRule = + new PostgresConnectionRule.Builder().file("src/test/resources/docker/postgres.yml") + .serviceName("db").port(5432).database(DB_NAME).build(); @Override - protected Connection getConnection() throws SQLException { + public Connection getConnection() throws SQLException { return dbRule.getConnection(); } @Override - protected void createTable() throws SQLException { - statement.execute("Create Table " + REGION_TABLE_NAME - + " (\"id\" varchar(10) primary key not null, \"name\" varchar(10), \"age\" int)"); + public String getConnectionUrl() { + return dbRule.getConnectionUrl(); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcWriterIntegrationTest.java similarity index 65% rename from geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java rename to geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcWriterIntegrationTest.java index 8f0ed43..ab2fe8d 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/DerbyTableMetaDataManagerIntegrationTest.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/PostgresJdbcWriterIntegrationTest.java @@ -12,32 +12,33 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.connectors.jdbc.internal; +package org.apache.geode.connectors.jdbc; import java.sql.Connection; import java.sql.SQLException; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.IntegrationTest; import org.apache.geode.test.junit.rules.DatabaseConnectionRule; -import org.apache.geode.test.junit.rules.InMemoryDerbyConnectionRule; +import org.apache.geode.test.junit.rules.PostgresConnectionRule; @Category(IntegrationTest.class) -public class DerbyTableMetaDataManagerIntegrationTest extends TableMetaDataManagerIntegrationTest { +public class PostgresJdbcWriterIntegrationTest extends JdbcWriterIntegrationTest { - @Rule - public DatabaseConnectionRule dbRule = new InMemoryDerbyConnectionRule(DB_NAME); + @ClassRule + public static DatabaseConnectionRule dbRule = + new PostgresConnectionRule.Builder().file("src/test/resources/docker/postgres.yml") + .serviceName("db").port(5432).database(DB_NAME).build(); @Override - protected Connection getConnection() throws SQLException { + public Connection getConnection() throws SQLException { return dbRule.getConnection(); } @Override - protected void createTable() throws SQLException { - statement.execute("Create Table " + REGION_TABLE_NAME - + " (\"id\" varchar(10) primary key not null, \"name\" varchar(10), \"age\" int)"); + public String getConnectionUrl() { + return dbRule.getConnectionUrl(); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java index 93c3f27..cd19d33 100644 --- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java +++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/TestConfigService.java @@ -26,24 +26,24 @@ import org.apache.geode.internal.cache.extension.ExtensionPoint; * Generates fake JdbcConnectorService with Connections and RegionMappings for tests. */ public class TestConfigService { - private static final String DB_NAME = "DerbyDB"; + // private static final String DB_NAME = "DerbyDB"; private static final String REGION_TABLE_NAME = "employees"; private static final String REGION_NAME = "employees"; - private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true"; + // private static final String CONNECTION_URL = "jdbc:derby:memory:" + DB_NAME + ";create=true"; private static final String CONNECTION_CONFIG_NAME = "testConnectionConfig"; - public static JdbcConnectorServiceImpl getTestConfigService() + public static JdbcConnectorServiceImpl getTestConfigService(String connectionUrl) throws ConnectionConfigExistsException, RegionMappingExistsException { - return getTestConfigService(createMockCache(), null, false); + return getTestConfigService(createMockCache(), null, false, connectionUrl); } public static JdbcConnectorServiceImpl getTestConfigService(InternalCache cache, - String pdxClassName, boolean primaryKeyInValue) + String pdxClassName, boolean primaryKeyInValue, String connectionUrl) throws ConnectionConfigExistsException, RegionMappingExistsException { JdbcConnectorServiceImpl service = new JdbcConnectorServiceImpl(); service.init(cache); - service.createConnectionConfig(createConnectionConfig()); + service.createConnectionConfig(createConnectionConfig(connectionUrl)); service.createRegionMapping(createRegionMapping(pdxClassName, primaryKeyInValue)); return service; } @@ -59,7 +59,7 @@ public class TestConfigService { primaryKeyInValue, Collections.emptyMap()); } - private static ConnectionConfiguration createConnectionConfig() { - return new ConnectionConfiguration(CONNECTION_CONFIG_NAME, CONNECTION_URL, null, null, null); + private static ConnectionConfiguration createConnectionConfig(String connectionUrl) { + return new ConnectionConfiguration(CONNECTION_CONFIG_NAME, connectionUrl, null, null, null); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/DatabaseConnectionRule.java b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/DatabaseConnectionRule.java index bd1c9cf..a2d7d56 100644 --- a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/DatabaseConnectionRule.java +++ b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/DatabaseConnectionRule.java @@ -21,4 +21,6 @@ import org.junit.rules.TestRule; public interface DatabaseConnectionRule extends TestRule { Connection getConnection() throws SQLException; + + String getConnectionUrl(); } diff --git a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/InMemoryDerbyConnectionRule.java b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/InMemoryDerbyConnectionRule.java index 299a858..86b55e0 100644 --- a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/InMemoryDerbyConnectionRule.java +++ b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/InMemoryDerbyConnectionRule.java @@ -32,7 +32,11 @@ public class InMemoryDerbyConnectionRule extends ExternalResource @Override public Connection getConnection() throws SQLException { - String url = String.format(CONNECTION_URL, dbName); - return DriverManager.getConnection(url); + return DriverManager.getConnection(getConnectionUrl()); + } + + @Override + public String getConnectionUrl() { + return String.format(CONNECTION_URL, dbName); } } diff --git a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/MySqlConnectionRule.java b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/MySqlConnectionRule.java index 8a3d34f..ca10229 100644 --- a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/MySqlConnectionRule.java +++ b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/MySqlConnectionRule.java @@ -14,15 +14,23 @@ */ package org.apache.geode.test.junit.rules; +import static org.awaitility.Awaitility.matches; + import java.sql.Connection; +import java.sql.DriverManager; import java.sql.SQLException; +import java.util.concurrent.TimeUnit; import com.palantir.docker.compose.DockerComposeRule; +import org.awaitility.Awaitility; public class MySqlConnectionRule extends SqlDatabaseConnectionRule { - private static final String CONNECTION_STRING = + private static final String CREATE_DB_CONNECTION_STRING = "jdbc:mysql://$HOST:$EXTERNAL_PORT?user=root&useSSL=false"; + private static final String CONNECTION_STRING = + "jdbc:mysql://$HOST:$EXTERNAL_PORT/%s?user=root&useSSL=false"; + protected MySqlConnectionRule(DockerComposeRule dockerRule, String serviceName, int port, String dbName) { super(dockerRule, serviceName, port, dbName); @@ -30,18 +38,24 @@ public class MySqlConnectionRule extends SqlDatabaseConnectionRule { @Override public Connection getConnection() throws SQLException { - Connection connection = super.getConnection(); + Awaitility.await().ignoreExceptions().atMost(10, TimeUnit.SECONDS) + .until(matches(() -> DriverManager.getConnection(getCreateDbConnectionUrl()))); String dbName = getDbName(); if (dbName != null) { + Connection connection = DriverManager.getConnection(getCreateDbConnectionUrl()); connection.createStatement().execute("CREATE DATABASE IF NOT EXISTS " + dbName); - connection.setCatalog(dbName); } - return connection; + return DriverManager.getConnection(getConnectionUrl()); } @Override - protected String getConnectionString() { - return getDockerPort().inFormat(CONNECTION_STRING); + public String getConnectionUrl() { + return getDockerPort().inFormat(String.format(CONNECTION_STRING, getDbName())); + } + + + public String getCreateDbConnectionUrl() { + return getDockerPort().inFormat(CREATE_DB_CONNECTION_STRING); } public static class Builder extends SqlDatabaseConnectionRule.Builder { diff --git a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/PostgresConnectionRule.java b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/PostgresConnectionRule.java index a3d064c..2f11c4b 100644 --- a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/PostgresConnectionRule.java +++ b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/PostgresConnectionRule.java @@ -26,7 +26,7 @@ public class PostgresConnectionRule extends SqlDatabaseConnectionRule { } @Override - protected String getConnectionString() { + public String getConnectionUrl() { return getDockerPort().inFormat(String.format(CONNECTION_STRING, getDbName())); } diff --git a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/SqlDatabaseConnectionRule.java b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/SqlDatabaseConnectionRule.java index 2897873..96fae8a 100644 --- a/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/SqlDatabaseConnectionRule.java +++ b/geode-connectors/src/test/java/org/apache/geode/test/junit/rules/SqlDatabaseConnectionRule.java @@ -64,14 +64,14 @@ public abstract class SqlDatabaseConnectionRule extends ExternalResource @Override public Connection getConnection() throws SQLException { - String connectionUrl = getConnectionString(); + String connectionUrl = getConnectionUrl(); Awaitility.await().ignoreExceptions().atMost(10, TimeUnit.SECONDS) .until(matches(() -> DriverManager.getConnection(connectionUrl))); Connection connection = DriverManager.getConnection(connectionUrl); return connection; } - protected abstract String getConnectionString(); + public abstract String getConnectionUrl(); public abstract static class Builder { private String filePath; -- To stop receiving notification emails like this one, please contact aging...@apache.org.