You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2019/02/06 22:57:27 UTC
[geode] branch feature/GEODE-6291 updated: more derby test fixes
This is an automated email from the ASF dual-hosted git repository.
dschneider pushed a commit to branch feature/GEODE-6291
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-6291 by this push:
new 98d18e9 more derby test fixes
98d18e9 is described below
commit 98d18e945e93c867d8d07f17dfb13aba90ae7f1d
Author: Darrel Schneider <ds...@pivotal.io>
AuthorDate: Wed Feb 6 14:57:00 2019 -0800
more derby test fixes
---
.../cli/DescribeMappingCommandDUnitTest.java | 121 +++++++++++++++------
.../cli/JdbcClusterConfigDistributedTest.java | 72 +++++++++---
2 files changed, 145 insertions(+), 48 deletions(-)
diff --git a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommandDUnitTest.java b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommandDUnitTest.java
index 9263ebe..e18dae5 100644
--- a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommandDUnitTest.java
+++ b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommandDUnitTest.java
@@ -16,7 +16,6 @@ package org.apache.geode.connectors.jdbc.internal.cli;
import static org.apache.geode.connectors.jdbc.internal.cli.CreateMappingCommand.CREATE_MAPPING;
import static org.apache.geode.connectors.jdbc.internal.cli.DescribeMappingCommand.DESCRIBE_MAPPING;
-import static org.apache.geode.connectors.util.internal.MappingConstants.CATALOG_NAME;
import static org.apache.geode.connectors.util.internal.MappingConstants.DATA_SOURCE_NAME;
import static org.apache.geode.connectors.util.internal.MappingConstants.GROUP_NAME;
import static org.apache.geode.connectors.util.internal.MappingConstants.ID_NAME;
@@ -27,14 +26,21 @@ import static org.apache.geode.connectors.util.internal.MappingConstants.SYNCHRO
import static org.apache.geode.connectors.util.internal.MappingConstants.TABLE_NAME;
import java.io.Serializable;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
+import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
+import org.apache.geode.internal.jndi.JNDIInvoker;
import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -59,6 +65,8 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
public SerializableTestName testName = new SerializableTestName();
private MemberVM locator;
+ private MemberVM server;
+ private MemberVM server2;
private static String convertRegionPathToName(String regionPath) {
if (regionPath.startsWith("/")) {
@@ -67,19 +75,61 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
return regionPath;
}
+ private boolean setupDatabase;
+
+ private void setupDatabase() {
+ setupDatabase = true;
+ gfsh.executeAndAssertThat(
+ "create data-source --name=connection"
+ + " --pooled=false"
+ + " --url=\"jdbc:derby:memory:newDB;create=true\"")
+ .statusIsSuccess();
+ executeSql(server, "connection",
+ "create table mySchema.testTable (myId varchar(10) primary key, name varchar(10))");
+ }
+
+ @After
+ public void after() {
+ teardownDatabase();
+ }
+
+ private void teardownDatabase() {
+ if (setupDatabase) {
+ setupDatabase = false;
+ executeSql(server, "connection", "drop table mySchema.testTable");
+ }
+ }
+
+ private void executeSql(MemberVM targetMember, String dataSource, String sql) {
+ targetMember.invoke(() -> {
+ try {
+ DataSource ds = JNDIInvoker.getDataSource("connection");
+ Connection conn = ds.getConnection();
+ Statement sm = conn.createStatement();
+ sm.execute(sql);
+ sm.close();
+ conn.close();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ });
+ }
+
@Test
@Parameters({TEST_REGION, "/" + TEST_REGION})
public void describesExistingSynchronousMapping(String regionName) throws Exception {
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, locator.getPort());
+ server = startupRule.startServerVM(1, locator.getPort());
gfsh.connectAndVerify(locator);
+ setupDatabase();
gfsh.executeAndAssertThat("create region --name=" + regionName + " --type=REPLICATE")
.statusIsSuccess();
CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
csb.addOption(REGION_NAME, regionName);
csb.addOption(DATA_SOURCE_NAME, "connection");
+ csb.addOption(SCHEMA_NAME, "mySchema");
csb.addOption(TABLE_NAME, "testTable");
csb.addOption(PDX_NAME, "myPdxClass");
csb.addOption(SYNCHRONOUS_NAME, "true");
@@ -108,9 +158,10 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
public void describesExistingSynchronousMappingWithGroups(String regionName) throws Exception {
String groupName = "group1";
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, groupName, locator.getPort());
+ server = startupRule.startServerVM(1, groupName, locator.getPort());
gfsh.connectAndVerify(locator);
+ setupDatabase();
gfsh.executeAndAssertThat(
"create region --name=" + regionName + " --type=REPLICATE --group=" + groupName)
.statusIsSuccess();
@@ -119,6 +170,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
csb.addOption(REGION_NAME, regionName);
csb.addOption(GROUP_NAME, groupName);
csb.addOption(DATA_SOURCE_NAME, "connection");
+ csb.addOption(SCHEMA_NAME, "mySchema");
csb.addOption(TABLE_NAME, "testTable");
csb.addOption(PDX_NAME, "myPdxClass");
csb.addOption(SYNCHRONOUS_NAME, "true");
@@ -146,9 +198,10 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
@Parameters({TEST_REGION, "/" + TEST_REGION})
public void describesExistingAsyncMapping(String regionName) throws Exception {
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, locator.getPort());
+ server = startupRule.startServerVM(1, locator.getPort());
gfsh.connectAndVerify(locator);
+ setupDatabase();
gfsh.executeAndAssertThat("create region --name=" + regionName + " --type=REPLICATE")
.statusIsSuccess();
@@ -160,7 +213,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
csb.addOption(PDX_NAME, "myPdxClass");
csb.addOption(SYNCHRONOUS_NAME, "false");
csb.addOption(ID_NAME, "myId");
- csb.addOption(CATALOG_NAME, "myCatalog");
csb.addOption(SCHEMA_NAME, "mySchema");
gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
@@ -179,7 +231,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass");
commandResultAssert.containsKeyValuePair(SYNCHRONOUS_NAME, "false");
commandResultAssert.containsKeyValuePair(ID_NAME, "myId");
- commandResultAssert.containsKeyValuePair(CATALOG_NAME, "myCatalog");
commandResultAssert.containsKeyValuePair(SCHEMA_NAME, "mySchema");
}
@@ -188,9 +239,10 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
public void describesExistingAsyncMappingWithGroup(String regionName) throws Exception {
String groupName = "group1";
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, groupName, locator.getPort());
+ server = startupRule.startServerVM(1, groupName, locator.getPort());
gfsh.connectAndVerify(locator);
+ setupDatabase();
gfsh.executeAndAssertThat(
"create region --name=" + regionName + " --type=REPLICATE --group=" + groupName)
.statusIsSuccess();
@@ -204,7 +256,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
csb.addOption(PDX_NAME, "myPdxClass");
csb.addOption(SYNCHRONOUS_NAME, "false");
csb.addOption(ID_NAME, "myId");
- csb.addOption(CATALOG_NAME, "myCatalog");
csb.addOption(SCHEMA_NAME, "mySchema");
gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
@@ -224,7 +275,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass");
commandResultAssert.containsKeyValuePair(SYNCHRONOUS_NAME, "false");
commandResultAssert.containsKeyValuePair(ID_NAME, "myId");
- commandResultAssert.containsKeyValuePair(CATALOG_NAME, "myCatalog");
commandResultAssert.containsKeyValuePair(SCHEMA_NAME, "mySchema");
}
@@ -235,10 +285,11 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
String groupName1 = "group1";
String groupName2 = "group2";
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, groupName1, locator.getPort());
+ server = startupRule.startServerVM(1, groupName1, locator.getPort());
startupRule.startServerVM(2, groupName2, locator.getPort());
gfsh.connectAndVerify(locator);
+ setupDatabase();
gfsh.executeAndAssertThat("create region --name=" + regionName + " --type=REPLICATE --group="
+ groupName1 + "," + groupName2)
.statusIsSuccess();
@@ -252,7 +303,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
csb.addOption(PDX_NAME, "myPdxClass");
csb.addOption(SYNCHRONOUS_NAME, "false");
csb.addOption(ID_NAME, "myId");
- csb.addOption(CATALOG_NAME, "myCatalog");
csb.addOption(SCHEMA_NAME, "mySchema");
gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
@@ -273,7 +323,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass");
commandResultAssert.containsKeyValuePair(SYNCHRONOUS_NAME, "false");
commandResultAssert.containsKeyValuePair(ID_NAME, "myId");
- commandResultAssert.containsKeyValuePair(CATALOG_NAME, "myCatalog");
commandResultAssert.containsKeyValuePair(SCHEMA_NAME, "mySchema");
}
@@ -285,10 +334,11 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
String groupName1 = "group1";
String groupName2 = "group2";
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, groupName1, locator.getPort());
- startupRule.startServerVM(2, groupName2, locator.getPort());
+ server = startupRule.startServerVM(1, groupName1, locator.getPort());
+ server2 = startupRule.startServerVM(2, groupName2, locator.getPort());
gfsh.connectAndVerify(locator);
+ setupDatabase();
gfsh.executeAndAssertThat("create region --name=" + regionName + " --type=REPLICATE --group="
+ groupName1 + "," + groupName2)
.statusIsSuccess();
@@ -302,24 +352,33 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
csb.addOption(PDX_NAME, "myPdxClass");
csb.addOption(SYNCHRONOUS_NAME, "false");
csb.addOption(ID_NAME, "myId");
- csb.addOption(CATALOG_NAME, "myCatalog");
csb.addOption(SCHEMA_NAME, "mySchema");
gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
- csb = new CommandStringBuilder(CREATE_MAPPING);
-
- csb.addOption(REGION_NAME, regionName);
- csb.addOption(GROUP_NAME, groupName2);
- csb.addOption(DATA_SOURCE_NAME, "connection2");
- csb.addOption(TABLE_NAME, "testTable2");
- csb.addOption(PDX_NAME, "myPdxClass2");
- csb.addOption(SYNCHRONOUS_NAME, "false");
- csb.addOption(ID_NAME, "myId2");
- csb.addOption(CATALOG_NAME, "myCatalog2");
- csb.addOption(SCHEMA_NAME, "mySchema2");
-
- gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
+ gfsh.executeAndAssertThat(
+ "create data-source --name=connection2"
+ + " --pooled=false"
+ + " --url=\"jdbc:derby:memory:newDB;create=true\"")
+ .statusIsSuccess();
+ executeSql(server2, "connection2",
+ "create table mySchema2.testTable2 (myId2 varchar(10) primary key, name varchar(10))");
+ try {
+ csb = new CommandStringBuilder(CREATE_MAPPING);
+
+ csb.addOption(REGION_NAME, regionName);
+ csb.addOption(GROUP_NAME, groupName2);
+ csb.addOption(DATA_SOURCE_NAME, "connection2");
+ csb.addOption(TABLE_NAME, "testTable2");
+ csb.addOption(PDX_NAME, "myPdxClass2");
+ csb.addOption(SYNCHRONOUS_NAME, "false");
+ csb.addOption(ID_NAME, "myId2");
+ csb.addOption(SCHEMA_NAME, "mySchema2");
+
+ gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
+ } finally {
+ executeSql(server2, "connection2", "drop table mySchema2.testTable2");
+ }
csb = new CommandStringBuilder(DESCRIBE_MAPPING).addOption(REGION_NAME,
regionName).addOption(GROUP_NAME, groupName1);
@@ -336,7 +395,6 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass");
commandResultAssert.containsKeyValuePair(SYNCHRONOUS_NAME, "false");
commandResultAssert.containsKeyValuePair(ID_NAME, "myId");
- commandResultAssert.containsKeyValuePair(CATALOG_NAME, "myCatalog");
commandResultAssert.containsKeyValuePair(SCHEMA_NAME, "mySchema");
csb = new CommandStringBuilder(DESCRIBE_MAPPING).addOption(REGION_NAME,
@@ -354,14 +412,13 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass2");
commandResultAssert.containsKeyValuePair(SYNCHRONOUS_NAME, "false");
commandResultAssert.containsKeyValuePair(ID_NAME, "myId2");
- commandResultAssert.containsKeyValuePair(CATALOG_NAME, "myCatalog2");
commandResultAssert.containsKeyValuePair(SCHEMA_NAME, "mySchema2");
}
@Test
public void reportsNoRegionFound() throws Exception {
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, locator.getPort());
+ server = startupRule.startServerVM(1, locator.getPort());
gfsh.connectAndVerify(locator);
gfsh.executeAndAssertThat("create region --name=" + TEST_REGION + " --type=REPLICATE")
.statusIsSuccess();
@@ -379,7 +436,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
@Test
public void reportsRegionButNoMappingFound() throws Exception {
locator = startupRule.startLocatorVM(0);
- startupRule.startServerVM(1, locator.getPort());
+ server = startupRule.startServerVM(1, locator.getPort());
gfsh.connectAndVerify(locator);
gfsh.executeAndAssertThat("create region --name=" + TEST_REGION + " --type=REPLICATE")
.statusIsSuccess();
diff --git a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcClusterConfigDistributedTest.java b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcClusterConfigDistributedTest.java
index bfd4e54..f299298 100644
--- a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcClusterConfigDistributedTest.java
+++ b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcClusterConfigDistributedTest.java
@@ -16,6 +16,12 @@ package org.apache.geode.connectors.jdbc.internal.cli;
import static org.assertj.core.api.Assertions.assertThat;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
+
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Rule;
@@ -24,6 +30,7 @@ import org.junit.experimental.categories.Category;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
+import org.apache.geode.internal.jndi.JNDIInvoker;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
import org.apache.geode.test.junit.categories.JDBCConnectorTest;
@@ -46,30 +53,63 @@ public class JdbcClusterConfigDistributedTest {
server = cluster.startServerVM(1, locator.getPort());
}
+ private void setupDatabase() {
+ gfsh.executeAndAssertThat(
+ "create data-source --name=myDataSource"
+ + " --pooled=false"
+ + " --url=\"jdbc:derby:memory:newDB;create=true\"")
+ .statusIsSuccess();
+ executeSql(
+ "create table mySchema.testTable (myId varchar(10) primary key, name varchar(10))");
+ }
+
+ private void teardownDatabase() {
+ executeSql("drop table mySchema.testTable");
+ }
+
+ private void executeSql(String sql) {
+ server.invoke(() -> {
+ try {
+ DataSource ds = JNDIInvoker.getDataSource("myDataSource");
+ Connection conn = ds.getConnection();
+ Statement sm = conn.createStatement();
+ sm.execute(sql);
+ sm.close();
+ conn.close();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ });
+ }
+
@Test
public void recreateCacheFromClusterConfig() throws Exception {
gfsh.connectAndVerify(locator);
gfsh.executeAndAssertThat("create region --name=regionName --type=PARTITION").statusIsSuccess();
+ setupDatabase();
+ try {
+ gfsh.executeAndAssertThat(
+ "create jdbc-mapping --region=regionName --data-source=myDataSource --table=testTable --pdx-name=myPdxClass --schema=mySchema")
+ .statusIsSuccess();
- gfsh.executeAndAssertThat(
- "create jdbc-mapping --region=regionName --data-source=myDataSource --table=testTable --pdx-name=myPdxClass")
- .statusIsSuccess();
-
- server.invoke(() -> {
- JdbcConnectorService service =
- ClusterStartupRule.getCache().getService(JdbcConnectorService.class);
- validateRegionMapping(service.getMappingForRegion("regionName"));
- });
+ server.invoke(() -> {
+ JdbcConnectorService service =
+ ClusterStartupRule.getCache().getService(JdbcConnectorService.class);
+ validateRegionMapping(service.getMappingForRegion("regionName"));
+ });
- server.stop(false);
+ server.stop(false);
- server = cluster.startServerVM(1, locator.getPort());
- server.invoke(() -> {
- JdbcConnectorService service =
- ClusterStartupRule.getCache().getService(JdbcConnectorService.class);
- validateRegionMapping(service.getMappingForRegion("regionName"));
- });
+ server = cluster.startServerVM(1, locator.getPort());
+ server.invoke(() -> {
+ JdbcConnectorService service =
+ ClusterStartupRule.getCache().getService(JdbcConnectorService.class);
+ validateRegionMapping(service.getMappingForRegion("regionName"));
+ });
+ } finally {
+ teardownDatabase();
+ }
}
private static void validateRegionMapping(RegionMapping regionMapping) {