You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jc...@apache.org on 2019/01/29 22:42:01 UTC
[geode] branch feature/GEODE-6273 updated: Added tests to
DescribeMappingDUnitTest for multi group
This is an automated email from the ASF dual-hosted git repository.
jchen21 pushed a commit to branch feature/GEODE-6273
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-6273 by this push:
new 71430a1 Added tests to DescribeMappingDUnitTest for multi group
71430a1 is described below
commit 71430a117480176757d168e8e6f8c0d08e186083
Author: Ben Ross <br...@pivotal.io>
AuthorDate: Tue Jan 29 14:40:55 2019 -0800
Added tests to DescribeMappingDUnitTest for multi group
- Modified DescribeMappingCommand to allow output of multiple mappings
Co-authored-by: Jianxia Chen <jc...@pivotal.io>
Co-authored-by: Ben Ross <br...@pivotal.io>
---
.../cli/DescribeMappingCommandDUnitTest.java | 55 ++++++++++++++++++++++
.../jdbc/internal/cli/DescribeMappingCommand.java | 24 ++++++----
.../util/internal/DescribeMappingResult.java | 12 +++++
.../util/DescribeMappingCommandTest.java | 13 +++--
.../test/junit/assertions/CommandResultAssert.java | 11 ++++-
5 files changed, 97 insertions(+), 18 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 92dece5..9263ebe 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
@@ -93,6 +93,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
CommandResultAssert commandResultAssert = gfsh.executeAndAssertThat(csb.toString());
commandResultAssert.statusIsSuccess();
+ commandResultAssert.doesNotContainOutput("Mapping for group");
commandResultAssert.containsKeyValuePair(REGION_NAME,
convertRegionPathToName(regionName));
commandResultAssert.containsKeyValuePair(DATA_SOURCE_NAME, "connection");
@@ -131,6 +132,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
CommandResultAssert commandResultAssert = gfsh.executeAndAssertThat(csb.toString());
commandResultAssert.statusIsSuccess();
+ commandResultAssert.containsKeyValuePair("Mapping for group", "group1");
commandResultAssert.containsKeyValuePair(REGION_NAME,
convertRegionPathToName(regionName));
commandResultAssert.containsKeyValuePair(DATA_SOURCE_NAME, "connection");
@@ -216,6 +218,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(REGION_NAME,
convertRegionPathToName(regionName));
+ commandResultAssert.containsKeyValuePair("Mapping for group", "group1");
commandResultAssert.containsKeyValuePair(DATA_SOURCE_NAME, "connection");
commandResultAssert.containsKeyValuePair(TABLE_NAME, "testTable");
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass");
@@ -243,6 +246,56 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
csb.addOption(REGION_NAME, regionName);
+ csb.addOption(GROUP_NAME, groupName1 + "," + groupName2);
+ csb.addOption(DATA_SOURCE_NAME, "connection");
+ csb.addOption(TABLE_NAME, "testTable");
+ 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(DESCRIBE_MAPPING).addOption(REGION_NAME,
+ regionName).addOption(GROUP_NAME, groupName1 + "," + groupName2);
+
+ CommandResultAssert commandResultAssert = gfsh.executeAndAssertThat(csb.toString());
+
+ commandResultAssert.statusIsSuccess();
+ commandResultAssert.containsKeyValuePair(REGION_NAME,
+ convertRegionPathToName(regionName));
+
+ commandResultAssert.containsKeyValuePair("Mapping for group", "group1");
+ commandResultAssert.containsKeyValuePair("Mapping for group", "group2");
+ commandResultAssert.containsKeyValuePair(DATA_SOURCE_NAME, "connection");
+ commandResultAssert.containsKeyValuePair(TABLE_NAME, "testTable");
+ 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");
+ }
+
+ @Test
+ @Parameters({TEST_REGION, "/" + TEST_REGION})
+ public void describesExistingAsyncMappingsWithSameRegionOnDifferentGroupsWithDifferentMappings(
+ String regionName)
+ throws Exception {
+ String groupName1 = "group1";
+ String groupName2 = "group2";
+ locator = startupRule.startLocatorVM(0);
+ startupRule.startServerVM(1, groupName1, locator.getPort());
+ startupRule.startServerVM(2, groupName2, locator.getPort());
+
+ gfsh.connectAndVerify(locator);
+ gfsh.executeAndAssertThat("create region --name=" + regionName + " --type=REPLICATE --group="
+ + groupName1 + "," + groupName2)
+ .statusIsSuccess();
+
+ CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
+
+ csb.addOption(REGION_NAME, regionName);
csb.addOption(GROUP_NAME, groupName1);
csb.addOption(DATA_SOURCE_NAME, "connection");
csb.addOption(TABLE_NAME, "testTable");
@@ -277,6 +330,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(REGION_NAME,
convertRegionPathToName(regionName));
+ commandResultAssert.containsKeyValuePair("Mapping for group", "group1");
commandResultAssert.containsKeyValuePair(DATA_SOURCE_NAME, "connection");
commandResultAssert.containsKeyValuePair(TABLE_NAME, "testTable");
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass");
@@ -294,6 +348,7 @@ public class DescribeMappingCommandDUnitTest implements Serializable {
commandResultAssert.containsKeyValuePair(REGION_NAME,
convertRegionPathToName(regionName));
+ commandResultAssert.containsKeyValuePair("Mapping for group", "group2");
commandResultAssert.containsKeyValuePair(DATA_SOURCE_NAME, "connection2");
commandResultAssert.containsKeyValuePair(TABLE_NAME, "testTable2");
commandResultAssert.containsKeyValuePair(PDX_NAME, "myPdxClass2");
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommand.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommand.java
index c718103..8144778 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommand.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingCommand.java
@@ -81,12 +81,13 @@ public class DescribeMappingCommand extends GfshCommand {
for (String group : groups) {
CacheConfig cacheConfig = getCacheConfig(configService, group);
RegionConfig regionConfig = checkForRegion(regionName, cacheConfig, group);
- describeMappingResults.addAll(getMappingsFromRegionConfig(cacheConfig, regionConfig));
+ describeMappingResults
+ .addAll(getMappingsFromRegionConfig(cacheConfig, regionConfig, group));
}
} else {
CacheConfig cacheConfig = getCacheConfig(configService, null);
RegionConfig regionConfig = checkForRegion(regionName, cacheConfig, null);
- describeMappingResults.addAll(getMappingsFromRegionConfig(cacheConfig, regionConfig));
+ describeMappingResults.addAll(getMappingsFromRegionConfig(cacheConfig, regionConfig, null));
}
} catch (PreconditionException ex) {
return ResultModel.createError(ex.getMessage());
@@ -113,13 +114,13 @@ public class DescribeMappingCommand extends GfshCommand {
}
private ArrayList<DescribeMappingResult> getMappingsFromRegionConfig(CacheConfig cacheConfig,
- RegionConfig regionConfig) {
+ RegionConfig regionConfig, String group) {
CacheConfig.AsyncEventQueue asyncEventQueue = findAsyncEventQueue(cacheConfig, regionConfig);
ArrayList<DescribeMappingResult> results = new ArrayList<>();
for (CacheElement element : regionConfig.getCustomRegionElements()) {
if (element instanceof RegionMapping) {
results.add(buildDescribeMappingResult((RegionMapping) element, regionConfig.getName(),
- asyncEventQueue == null));
+ asyncEventQueue == null, group));
}
}
return results;
@@ -137,7 +138,7 @@ public class DescribeMappingCommand extends GfshCommand {
}
private DescribeMappingResult buildDescribeMappingResult(RegionMapping regionMapping,
- String regionName, boolean synchronous) {
+ String regionName, boolean synchronous, String group) {
LinkedHashMap<String, String> attributes = new LinkedHashMap<>();
attributes.put(REGION_NAME, regionName);
attributes.put(PDX_NAME, regionMapping.getPdxName());
@@ -151,15 +152,20 @@ public class DescribeMappingCommand extends GfshCommand {
if (regionMapping.getSchema() != null) {
attributes.put(SCHEMA_NAME, regionMapping.getSchema());
}
-
- return new DescribeMappingResult(attributes);
+ DescribeMappingResult result = new DescribeMappingResult(attributes);
+ result.setGroupName(group);
+ return result;
}
private ResultModel buildResultModel(ArrayList<DescribeMappingResult> describeMappingResult) {
ResultModel resultModel = new ResultModel();
- DataResultModel sectionModel = resultModel.addData(RESULT_SECTION_NAME);
for (int i = 0; i < describeMappingResult.size(); i++) {
- describeMappingResult.get(i).getAttributeMap().forEach(sectionModel::addData);
+ DataResultModel sectionModel = resultModel.addData(RESULT_SECTION_NAME + String.valueOf(i));
+ DescribeMappingResult result = describeMappingResult.get(i);
+ if (result.getGroupName() != null) {
+ sectionModel.addData("Mapping for group", result.getGroupName());
+ }
+ result.getAttributeMap().forEach(sectionModel::addData);
}
return resultModel;
}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/util/internal/DescribeMappingResult.java b/geode-connectors/src/main/java/org/apache/geode/connectors/util/internal/DescribeMappingResult.java
index ca3e704..df1552a 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/util/internal/DescribeMappingResult.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/util/internal/DescribeMappingResult.java
@@ -38,8 +38,19 @@ public class DescribeMappingResult implements DataSerializable {
return this.attributeMap;
}
+ private String groupName;
+
+ public String getGroupName() {
+ return groupName;
+ }
+
+ public void setGroupName(String group) {
+ groupName = group;
+ }
+
@Override
public void toData(DataOutput out) throws IOException {
+ DataSerializer.writeString(groupName, out);
DataSerializer.writeInteger(attributeMap.size(), out);
for (Map.Entry<String, String> entry : attributeMap.entrySet()) {
DataSerializer.writeString(entry.getKey(), out);
@@ -49,6 +60,7 @@ public class DescribeMappingResult implements DataSerializable {
@Override
public void fromData(DataInput in) throws IOException {
+ groupName = DataSerializer.readString(in);
int dataSize = DataSerializer.readInteger(in);
for (int i = 0; i < dataSize; i++) {
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/org/apache/geode/connectors/util/DescribeMappingCommandTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/org/apache/geode/connectors/util/DescribeMappingCommandTest.java
index ce6462b..798c226 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/org/apache/geode/connectors/util/DescribeMappingCommandTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/org/apache/geode/connectors/util/DescribeMappingCommandTest.java
@@ -143,8 +143,6 @@ public class DescribeMappingCommandTest {
regionMapping.setIds("myId");
regionMapping.setCatalog("myCatalog");
regionMapping.setSchema("mySchema");
- ArrayList<CacheElement> elements = new ArrayList<>();
- elements.add(regionMapping);
when(clusterConfig.getRegions()).thenReturn(new ArrayList<>());
gfsh.executeAndAssertThat(command, COMMAND).statusIsError()
@@ -161,8 +159,6 @@ public class DescribeMappingCommandTest {
regionMapping.setIds("myId");
regionMapping.setCatalog("myCatalog");
regionMapping.setSchema("mySchema");
- ArrayList<CacheElement> elements = new ArrayList<>();
- elements.add(regionMapping);
when(clusterConfig.getRegions()).thenReturn(new ArrayList<>());
when(configurationPersistenceService.getCacheConfig("group1")).thenReturn(clusterConfig);
@@ -185,7 +181,8 @@ public class DescribeMappingCommandTest {
when(regionConfig.getCustomRegionElements()).thenReturn(elements);
gfsh.executeAndAssertThat(command, COMMAND).statusIsSuccess()
- .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME, REGION_NAME, PDX_NAME,
+ .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME + "0", REGION_NAME,
+ PDX_NAME,
TABLE_NAME, DATA_SOURCE_NAME, SYNCHRONOUS_NAME, ID_NAME, CATALOG_NAME, SCHEMA_NAME)
.containsOutput(REGION_NAME, "region1")
.containsOutput(DATA_SOURCE_NAME, "name1").containsOutput(TABLE_NAME, "table1")
@@ -223,7 +220,8 @@ public class DescribeMappingCommandTest {
.thenReturn(CreateMappingCommand.createAsyncEventQueueName("region3"));
gfsh.executeAndAssertThat(command, COMMAND).statusIsSuccess()
- .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME, REGION_NAME, PDX_NAME,
+ .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME + "0", REGION_NAME,
+ PDX_NAME,
TABLE_NAME, DATA_SOURCE_NAME, SYNCHRONOUS_NAME, ID_NAME, CATALOG_NAME, SCHEMA_NAME)
.containsOutput(REGION_NAME, "region1")
.containsOutput(DATA_SOURCE_NAME, "name1").containsOutput(TABLE_NAME, "table1")
@@ -250,7 +248,8 @@ public class DescribeMappingCommandTest {
gfsh.executeAndAssertThat(command, COMMAND + " --groups=group1").statusIsSuccess()
- .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME, REGION_NAME, PDX_NAME,
+ .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME + "0", REGION_NAME,
+ PDX_NAME,
TABLE_NAME, DATA_SOURCE_NAME, SYNCHRONOUS_NAME, ID_NAME, CATALOG_NAME, SCHEMA_NAME)
.containsOutput(REGION_NAME, "region1")
.containsOutput(DATA_SOURCE_NAME, "name1").containsOutput(TABLE_NAME, "table1")
diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java b/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
index 2a0afd0..e674e58 100644
--- a/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
@@ -91,8 +91,15 @@ public class CommandResultAssert
public CommandResultAssert containsOrderedOutput(String dataSectionName,
String... expectedOutputs) {
- LinkedHashMap<String, String> outputMap =
- ((LinkedHashMap) actual.getCommandResult().getMapFromSection(dataSectionName));
+
+ LinkedHashMap<String, String> outputMap;
+ try {
+ outputMap =
+ ((LinkedHashMap) actual.getCommandResult().getMapFromSection(dataSectionName));
+ } catch (NullPointerException ex) {
+ Assert.fail("No section found for \"" + dataSectionName + "\"");
+ return this;
+ }
String outputString = outputMap.toString();
int outputIndex = 0;