This is an automated email from the ASF dual-hosted git repository. zhouxj pushed a commit to branch feature/GEODE-6481 in repository https://gitbox.apache.org/repos/asf/geode.git
commit eb8836c8d58aa3001056f4d49ad914f182b071b6 Author: zhouxh <[email protected]> AuthorDate: Mon Mar 4 11:31:27 2019 -0800 GEODE-6481: add tests to verify create jdbc mapping should get correct field type --- .../cli/CreateMappingCommandDUnitTest.java | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java index 1e3e782..b3e514c 100644 --- a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java +++ b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java @@ -28,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.File; import java.io.IOException; +import java.io.Serializable; import java.net.URISyntaxException; import java.sql.Connection; import java.sql.JDBCType; @@ -50,6 +51,7 @@ import org.apache.geode.cache.configuration.CacheConfig; import org.apache.geode.cache.configuration.RegionAttributesType; import org.apache.geode.cache.configuration.RegionConfig; import org.apache.geode.connectors.jdbc.JdbcAsyncWriter; +import org.apache.geode.connectors.jdbc.JdbcConnectorException; import org.apache.geode.connectors.jdbc.JdbcLoader; import org.apache.geode.connectors.jdbc.JdbcWriter; import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService; @@ -69,6 +71,7 @@ import org.apache.geode.test.compiler.JarBuilder; import org.apache.geode.test.dunit.IgnoredException; import org.apache.geode.test.dunit.rules.ClusterStartupRule; import org.apache.geode.test.dunit.rules.MemberVM; +import org.apache.geode.test.junit.assertions.CommandResultAssert; import org.apache.geode.test.junit.categories.JDBCConnectorTest; import org.apache.geode.test.junit.rules.GfshCommandRule; import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder; @@ -82,6 +85,7 @@ public class CreateMappingCommandDUnitTest { private static final String EMPLOYEE_REGION = "employeeRegion"; private static final String EMPLOYEE_LOWER = "employee"; private static final String EMPLOYEE_UPPER = "EMPLOYEE"; + private static final String EMPLOYEE_NUMERIC = "employeeNumeric"; private static final String GROUP1_REGION = "group1Region"; private static final String GROUP2_REGION = "group2Region"; private static final String GROUP1_GROUP2_REGION = "group1Group2Region"; @@ -137,12 +141,16 @@ public class CreateMappingCommandDUnitTest { executeSql( "create table mySchema." + EMPLOYEE_UPPER + "(ID varchar(10) primary key, name varchar(10), AGE int)"); + executeSql( + "create table mySchema." + EMPLOYEE_NUMERIC + + "(ID varchar(10) primary key, name varchar(10), AGE int, income real, refid bigint)"); } private void teardownDatabase() { executeSql("drop table mySchema.myTable"); executeSql("drop table mySchema." + EMPLOYEE_REGION); executeSql("drop table mySchema." + EMPLOYEE_UPPER); + executeSql("drop table mySchema." + EMPLOYEE_NUMERIC); } private void executeSql(String sql) { @@ -775,6 +783,54 @@ public class CreateMappingCommandDUnitTest { } } + public static class EmployeeNumeric implements Serializable { + private String id; + private String name; + private int age; + private float income; + private long refid; + + public EmployeeNumeric() { + // nothing + } + + EmployeeNumeric(String id, String name, int age, float income, long refid) { + this.id = id; + this.name = name; + this.age = age; + this.income = income; + this.refid = refid; + } + + String getId() { + return id; + } + + String getName() { + return name; + } + + int getAge() { + return age; + } + + float getIncome() { + return income; + } + + void setIncome(float income) { + this.income = income; + } + + long getRefid() { + return refid; + } + + void setRefid(long refid) { + this.refid = refid; + } + } + public static class IdAndName implements PdxSerializable { private String id; private String name; @@ -834,6 +890,30 @@ public class CreateMappingCommandDUnitTest { assertValidEmployeeMappingOnLocator(regionMapping, region1Name, null, false, false, "employeeRegion"); }); + + csb = new CommandStringBuilder(DESCRIBE_MAPPING).addOption(REGION_NAME, + region1Name); + CommandResultAssert commandResultAssert = gfsh.executeAndAssertThat(csb.toString()); + commandResultAssert.containsOutput("age | INT | AGE | INTEGER | true"); + } + + @Test + public void createMappingsWithoutPdxSerializableShouldFail() { + String region1Name = "region1"; + setupReplicate(region1Name); + + CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING); + csb.addOption(REGION_NAME, region1Name); + csb.addOption(DATA_SOURCE_NAME, "connection"); + csb.addOption(TABLE_NAME, "employeeNumeric"); + csb.addOption(PDX_NAME, EmployeeNumeric.class.getName()); + csb.addOption(ID_NAME, "id"); + csb.addOption(SCHEMA_NAME, "mySchema"); + IgnoredException.addIgnoredException(JdbcConnectorException.class); + + gfsh.executeAndAssertThat(csb.toString()).statusIsError() + .containsOutput( + "failing to register pdx metadata due to The instance is not PDX serializable"); } @Test
