This is an automated email from the ASF dual-hosted git repository.

dschneider pushed a commit to branch feature/GEODE-5935
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 900eef59b7bbac4f404b4e2141d8c7d88cb1a547
Author: Darrel Schneider <[email protected]>
AuthorDate: Fri Oct 26 11:44:16 2018 -0700

    The create jdbc-mapping now checks if the region exists.
    The tests for create jdbc-mapping now pass.
---
 .../internal/cli/CreateMappingCommandDUnitTest.java    | 18 ++++++++++--------
 .../cli/CreateMappingCommandIntegrationTest.java       | 10 +++++++---
 .../jdbc/internal/cli/CreateMappingFunction.java       | 13 +++++++++++++
 .../jdbc/internal/cli/CreateMappingFunctionTest.java   | 17 ++++++++++++++++-
 4 files changed, 46 insertions(+), 12 deletions(-)

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 22e8808..4f23017 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
@@ -44,6 +44,7 @@ import 
org.apache.geode.test.junit.rules.serializable.SerializableTestName;
 @Category({JDBCConnectorTest.class})
 public class CreateMappingCommandDUnitTest {
 
+  private static final String REGION_NAME = "testRegion";
   @Rule
   public transient GfshCommandRule gfsh = new GfshCommandRule();
 
@@ -62,12 +63,15 @@ public class CreateMappingCommandDUnitTest {
     server = startupRule.startServerVM(1, locator.getPort());
 
     gfsh.connectAndVerify(locator);
+
+    gfsh.executeAndAssertThat("create region --name=" + REGION_NAME + " 
--type=REPLICATE")
+        .statusIsSuccess();
   }
 
   @Test
   public void createsMappingWithAllOptions() {
     CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
-    csb.addOption(CREATE_MAPPING__REGION_NAME, "testRegion");
+    csb.addOption(CREATE_MAPPING__REGION_NAME, REGION_NAME);
     csb.addOption(CREATE_MAPPING__CONNECTION_NAME, "connection");
     csb.addOption(CREATE_MAPPING__TABLE_NAME, "myTable");
     csb.addOption(CREATE_MAPPING__PDX_CLASS_NAME, "myPdxClass");
@@ -79,15 +83,13 @@ public class CreateMappingCommandDUnitTest {
     locator.invoke(() -> {
       String xml = 
InternalLocator.getLocator().getConfigurationPersistenceService()
           .getConfiguration("cluster").getCacheXmlContent();
-      assertThat(xml).isNotNull().contains("jdbc:connector-service")
-          .doesNotContain("jdbc:connection").contains("jdbc:region-mapping")
-          .contains("jdbc:field-mapping");
+      
assertThat(xml).isNotNull().contains("jdbc:region-mapping").contains("jdbc:field-mapping");
     });
 
     server.invoke(() -> {
       InternalCache cache = ClusterStartupRule.getCache();
       RegionMapping mapping =
-          
cache.getService(JdbcConnectorService.class).getMappingForRegion("testRegion");
+          
cache.getService(JdbcConnectorService.class).getMappingForRegion(REGION_NAME);
       assertThat(mapping.getConnectionConfigName()).isEqualTo("connection");
       assertThat(mapping.getTableName()).isEqualTo("myTable");
       assertThat(mapping.getPdxClassName()).isEqualTo("myPdxClass");
@@ -104,7 +106,7 @@ public class CreateMappingCommandDUnitTest {
   @Test
   public void validateThatPrimaryKeyInValueDefaultsToFalse() {
     CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
-    csb.addOption(CREATE_MAPPING__REGION_NAME, "testRegion");
+    csb.addOption(CREATE_MAPPING__REGION_NAME, REGION_NAME);
     csb.addOption(CREATE_MAPPING__CONNECTION_NAME, "connection");
     csb.addOption(CREATE_MAPPING__TABLE_NAME, "myTable");
     csb.addOption(CREATE_MAPPING__PDX_CLASS_NAME, "myPdxClass");
@@ -121,7 +123,7 @@ public class CreateMappingCommandDUnitTest {
     server.invoke(() -> {
       InternalCache cache = ClusterStartupRule.getCache();
       RegionMapping mapping =
-          
cache.getService(JdbcConnectorService.class).getMappingForRegion("testRegion");
+          
cache.getService(JdbcConnectorService.class).getMappingForRegion(REGION_NAME);
       assertThat(mapping.getConnectionConfigName()).isEqualTo("connection");
       assertThat(mapping.getTableName()).isEqualTo("myTable");
       assertThat(mapping.getPdxClassName()).isEqualTo("myPdxClass");
@@ -138,7 +140,7 @@ public class CreateMappingCommandDUnitTest {
   @Test
   public void createsRegionMappingWithoutFieldMap() {
     CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
-    csb.addOption(CREATE_MAPPING__REGION_NAME, "testRegion");
+    csb.addOption(CREATE_MAPPING__REGION_NAME, REGION_NAME);
     csb.addOption(CREATE_MAPPING__CONNECTION_NAME, "connection");
     csb.addOption(CREATE_MAPPING__TABLE_NAME, "myTable");
     csb.addOption(CREATE_MAPPING__PDX_CLASS_NAME, "myPdxClass");
diff --git 
a/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandIntegrationTest.java
 
b/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandIntegrationTest.java
index e9549d2..d47b6f4 100644
--- 
a/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandIntegrationTest.java
+++ 
b/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandIntegrationTest.java
@@ -24,6 +24,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.RegionShortcut;
 import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
 import org.apache.geode.connectors.jdbc.internal.RegionMappingExistsException;
 import org.apache.geode.connectors.jdbc.internal.TableMetaDataView;
@@ -58,6 +59,7 @@ public class CreateMappingCommandIntegrationTest {
 
     cache = (InternalCache) new CacheFactory().set("locators", 
"").set("mcast-port", "0")
         .set(ENABLE_CLUSTER_CONFIGURATION, "true").create();
+    cache.createRegionFactory(RegionShortcut.LOCAL).create(regionName);
 
     createRegionMappingCommand = new CreateMappingCommand();
     createRegionMappingCommand.setCache(cache);
@@ -92,14 +94,16 @@ public class CreateMappingCommandIntegrationTest {
 
   @Test
   public void createsRegionMappingOnceOnly() {
-    createRegionMappingCommand.createMapping(regionName, connectionName, 
tableName, pdxClass,
-        keyInValue, fieldMappings);
     JdbcConnectorService service = 
cache.getService(JdbcConnectorService.class);
+    ResultModel result;
+    result =
+        createRegionMappingCommand.createMapping(regionName, connectionName, 
tableName, pdxClass,
+            keyInValue, fieldMappings);
+    assertThat(result.getStatus()).isSameAs(Result.Status.OK);
 
     IgnoredException ignoredException =
         
IgnoredException.addIgnoredException(RegionMappingExistsException.class.getName());
 
-    ResultModel result;
     try {
       result = createRegionMappingCommand.createMapping(regionName, 
connectionName, tableName,
           pdxClass, keyInValue, fieldMappings);
diff --git 
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
 
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
index 52f1782..ba71dfb 100644
--- 
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
+++ 
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
@@ -15,6 +15,7 @@
 package org.apache.geode.connectors.jdbc.internal.cli;
 
 import org.apache.geode.annotations.Experimental;
+import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
 import org.apache.geode.connectors.jdbc.internal.RegionMappingExistsException;
@@ -36,6 +37,8 @@ public class CreateMappingFunction extends 
CliFunction<RegionMapping> {
     // input
     RegionMapping regionMapping = context.getArguments();
 
+    verifyRegionExists(context, regionMapping);
+
     // action
     createRegionMapping(service, regionMapping);
 
@@ -46,6 +49,16 @@ public class CreateMappingFunction extends 
CliFunction<RegionMapping> {
     return new CliFunctionResult(member, true, message);
   }
 
+  private void verifyRegionExists(FunctionContext<RegionMapping> context,
+      RegionMapping regionMapping) {
+    Cache cache = context.getCache();
+    String regionName = regionMapping.getRegionName();
+    if (cache.getRegion(regionName) == null) {
+      throw new IllegalStateException(
+          "create jdbc-mapping requires that the region \"" + regionName + "\" 
exists.");
+    }
+  }
+
   /**
    * Creates the named connection configuration
    */
diff --git 
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunctionTest.java
 
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunctionTest.java
index faf53f8..5250419 100644
--- 
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunctionTest.java
+++ 
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunctionTest.java
@@ -16,6 +16,7 @@ package org.apache.geode.connectors.jdbc.internal.cli;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.catchThrowable;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doThrow;
@@ -31,6 +32,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 
+import org.apache.geode.cache.Region;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.ResultSender;
 import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
@@ -50,6 +52,7 @@ public class CreateMappingFunctionTest {
   private DistributedMember distributedMember;
   private ResultSender<Object> resultSender;
   private JdbcConnectorService service;
+  private InternalCache cache;
 
   private CreateMappingFunction function;
 
@@ -57,7 +60,8 @@ public class CreateMappingFunctionTest {
   public void setUp() {
     context = mock(FunctionContext.class);
     resultSender = mock(ResultSender.class);
-    InternalCache cache = mock(InternalCache.class);
+    cache = mock(InternalCache.class);
+    Region region = mock(Region.class);
     DistributedSystem system = mock(DistributedSystem.class);
     distributedMember = mock(DistributedMember.class);
     service = mock(JdbcConnectorService.class);
@@ -67,6 +71,7 @@ public class CreateMappingFunctionTest {
     when(context.getResultSender()).thenReturn(resultSender);
     when(context.getCache()).thenReturn(cache);
     when(cache.getDistributedSystem()).thenReturn(system);
+    when(cache.getRegion(REGION_NAME)).thenReturn(region);
     when(system.getDistributedMember()).thenReturn(distributedMember);
     when(context.getArguments()).thenReturn(regionMapping);
     when(cache.getService(eq(JdbcConnectorService.class))).thenReturn(service);
@@ -114,6 +119,16 @@ public class CreateMappingFunctionTest {
   }
 
   @Test
+  public void createRegionMappingThrowsIfRegionDoesNotExist() throws Exception 
{
+    when(cache.getRegion(REGION_NAME)).thenReturn(null);
+
+    Throwable throwable = catchThrowable(() -> 
function.executeFunction(context));
+
+    assertThat(throwable).isInstanceOf(IllegalStateException.class)
+        .hasMessage("create jdbc-mapping requires that the region \"" + 
REGION_NAME + "\" exists.");
+  }
+
+  @Test
   public void executeCreatesMapping() throws Exception {
     function.execute(context);
 

Reply via email to