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/01/16 20:32:44 UTC
[geode] branch develop updated: GEODE-6187: Added sorting and hid
empty attributes for DescribeMappingCommand (#3079)
This is an automated email from the ASF dual-hosted git repository.
dschneider pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new f383899 GEODE-6187: Added sorting and hid empty attributes for DescribeMappingCommand (#3079)
f383899 is described below
commit f38389928e575cf2d18825c93ac4f69b7edae3c9
Author: BenjaminPerryRoss <39...@users.noreply.github.com>
AuthorDate: Wed Jan 16 12:32:32 2019 -0800
GEODE-6187: Added sorting and hid empty attributes for DescribeMappingCommand (#3079)
Co-authored-by: Ben Ross <br...@pivotal.io>
Co-authored-by: Rob Day-Reynolds <rd...@pivotal.io>
---
.../jdbc/internal/cli/DescribeMappingCommand.java | 2 +-
.../jdbc/internal/cli/DescribeMappingFunction.java | 17 +++++++++++------
.../util/internal/DescribeMappingResult.java | 4 ++--
.../internal/cli/DescribeMappingFunctionTest.java | 14 +++++++++-----
.../util/DescribeMappingCommandTest.java | 8 +++++---
.../util/internal/DescribeMappingResultTest.java | 2 +-
.../test/junit/assertions/CommandResultAssert.java | 22 +++++++++++++++++++++-
7 files changed, 50 insertions(+), 19 deletions(-)
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 80edb95..2d6d803 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
@@ -44,7 +44,7 @@ public class DescribeMappingCommand extends GfshCommand {
private static final String DESCRIBE_MAPPING__REGION_NAME__HELP =
"Region name of the JDBC mapping to be described.";
- private static final String RESULT_SECTION_NAME = "MappingDescription";
+ public static final String RESULT_SECTION_NAME = "MappingDescription";
@CliCommand(value = DESCRIBE_MAPPING, help = DESCRIBE_MAPPING__HELP)
@CliMetaData(relatedTopic = CliStrings.DEFAULT_TOPIC_GEODE)
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
index e94d6a9..2cd9f9e 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
@@ -23,7 +23,7 @@ import static org.apache.geode.connectors.util.internal.MappingConstants.SCHEMA_
import static org.apache.geode.connectors.util.internal.MappingConstants.SYNCHRONOUS_NAME;
import static org.apache.geode.connectors.util.internal.MappingConstants.TABLE_NAME;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.geode.cache.execute.FunctionContext;
@@ -49,14 +49,12 @@ public class DescribeMappingFunction extends CliFunction<String> {
return null;
}
- Map<String, String> attributes = new HashMap<>();
+ Map<String, String> attributes = new LinkedHashMap<>();
attributes.put(REGION_NAME, mapping.getRegionName());
- attributes.put(DATA_SOURCE_NAME, mapping.getDataSourceName());
attributes.put(TABLE_NAME, mapping.getTableName());
- attributes.put(PDX_NAME, mapping.getPdxName());
+ attributes.put(DATA_SOURCE_NAME, mapping.getDataSourceName());
attributes.put(ID_NAME, mapping.getIds());
- attributes.put(SCHEMA_NAME, mapping.getSchema());
- attributes.put(CATALOG_NAME, mapping.getCatalog());
+ attributes.put(PDX_NAME, mapping.getPdxName());
try {
attributes.put(SYNCHRONOUS_NAME,
@@ -66,6 +64,13 @@ public class DescribeMappingFunction extends CliFunction<String> {
attributes.put(SYNCHRONOUS_NAME, "Not found.");
}
+ if (mapping.getCatalog() != null) {
+ attributes.put(CATALOG_NAME, mapping.getCatalog());
+ }
+ if (mapping.getSchema() != null) {
+ attributes.put(SCHEMA_NAME, mapping.getSchema());
+ }
+
return new DescribeMappingResult(attributes);
}
}
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 83afca0..ca3e704 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
@@ -17,7 +17,7 @@ package org.apache.geode.connectors.util.internal;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.geode.DataSerializable;
@@ -27,7 +27,7 @@ public class DescribeMappingResult implements DataSerializable {
private final Map<String, String> attributeMap;
public DescribeMappingResult() {
- this.attributeMap = new HashMap<>();
+ this.attributeMap = new LinkedHashMap<>();
}
public DescribeMappingResult(Map<String, String> attributeMap) {
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunctionTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunctionTest.java
index 2e19080..2e29dd1 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunctionTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunctionTest.java
@@ -31,7 +31,8 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.Serializable;
-import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.lang3.SerializationUtils;
@@ -118,20 +119,23 @@ public class DescribeMappingFunctionTest {
function.execute(context);
- Map<String, String> expectedAttributes = new HashMap<>();
+ Map<String, String> expectedAttributes = new LinkedHashMap<>();
expectedAttributes.put(REGION_NAME, TEST_REGION);
- expectedAttributes.put(PDX_NAME, TEST_PDX);
expectedAttributes.put(TABLE_NAME, TEST_TABLE);
expectedAttributes.put(DATA_SOURCE_NAME, TEST_DATASOURCE);
- expectedAttributes.put(SYNCHRONOUS_NAME, TEST_SYNCHRONOUS);
expectedAttributes.put(ID_NAME, TEST_ID);
- expectedAttributes.put(SCHEMA_NAME, TEST_SCHEMA);
+ expectedAttributes.put(PDX_NAME, TEST_PDX);
+ expectedAttributes.put(SYNCHRONOUS_NAME, TEST_SYNCHRONOUS);
expectedAttributes.put(CATALOG_NAME, TEST_CATALOG);
+ expectedAttributes.put(SCHEMA_NAME, TEST_SCHEMA);
ArgumentCaptor<CliFunctionResult> argument = ArgumentCaptor.forClass(CliFunctionResult.class);
verify(resultSender, times(1)).lastResult(argument.capture());
DescribeMappingResult result = (DescribeMappingResult) argument.getValue().getResultObject();
assertThat(result.getAttributeMap()).isEqualTo(expectedAttributes);
+
+ assertThat(new ArrayList<String>(result.getAttributeMap().keySet()))
+ .isEqualTo(new ArrayList<String>(expectedAttributes.keySet()));
}
@Test
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 0bbbf05..2ad9006 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
@@ -32,7 +32,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.Collections;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
@@ -78,15 +78,15 @@ public class DescribeMappingCommandTest {
public void whenMemberExists() {
doReturn(Collections.singleton(mock(DistributedMember.class))).when(command).findMembers(null,
null);
- Map<String, String> attributes = new HashMap<>();
+ Map<String, String> attributes = new LinkedHashMap<>();
attributes.put(REGION_NAME, "region");
attributes.put(PDX_NAME, "class1");
attributes.put(TABLE_NAME, "table1");
attributes.put(DATA_SOURCE_NAME, "name1");
attributes.put(SYNCHRONOUS_NAME, "true");
attributes.put(ID_NAME, "myId");
- attributes.put(SCHEMA_NAME, "mySchema");
attributes.put(CATALOG_NAME, "myCatalog");
+ attributes.put(SCHEMA_NAME, "mySchema");
DescribeMappingResult mappingResult = new DescribeMappingResult(attributes);
@@ -99,6 +99,8 @@ public class DescribeMappingCommandTest {
gfsh.executeAndAssertThat(command, COMMAND).statusIsSuccess()
+ .containsOrderedOutput(DescribeMappingCommand.RESULT_SECTION_NAME, REGION_NAME, PDX_NAME,
+ TABLE_NAME, DATA_SOURCE_NAME, SYNCHRONOUS_NAME, ID_NAME, CATALOG_NAME, SCHEMA_NAME)
.containsOutput(REGION_NAME, "region")
.containsOutput(DATA_SOURCE_NAME, "name1").containsOutput(TABLE_NAME, "table1")
.containsOutput(PDX_NAME, "class1").containsOutput(ID_NAME, "myId")
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/util/internal/DescribeMappingResultTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/util/internal/DescribeMappingResultTest.java
index 06e2638..c2e75d8 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/util/internal/DescribeMappingResultTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/util/internal/DescribeMappingResultTest.java
@@ -36,8 +36,8 @@ public class DescribeMappingResultTest {
public void testSeriazilabeToAndFromByteArray() throws IOException {
Map<String, String> attributesMap = new HashMap<>();
attributesMap.put(REGION_NAME, "myRegion");
- attributesMap.put(PDX_NAME, "myPdx");
attributesMap.put(TABLE_NAME, "myTable");
+ attributesMap.put(PDX_NAME, "myPdx");
attributesMap.put(DATA_SOURCE_NAME, "myDatasource");
attributesMap.put(SYNCHRONOUS_NAME, "false");
attributesMap.put(ID_NAME, "myId");
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 d1c71d0..2a0afd0 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
@@ -19,12 +19,14 @@ import static org.assertj.core.api.Assertions.fail;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.assertj.core.api.AbstractAssert;
import org.assertj.core.api.Assertions;
+import org.junit.Assert;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.result.CommandResult;
@@ -34,7 +36,6 @@ import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.result.model.TabularResultModel;
-
public class CommandResultAssert
extends AbstractAssert<CommandResultAssert, CommandResultExecution> {
@@ -88,6 +89,25 @@ public class CommandResultAssert
return this;
}
+ public CommandResultAssert containsOrderedOutput(String dataSectionName,
+ String... expectedOutputs) {
+ LinkedHashMap<String, String> outputMap =
+ ((LinkedHashMap) actual.getCommandResult().getMapFromSection(dataSectionName));
+ String outputString = outputMap.toString();
+ int outputIndex = 0;
+
+ for (int i = 0; i < expectedOutputs.length; i++) {
+ outputIndex = outputString.indexOf(expectedOutputs[i]);
+ if (outputIndex == -1) {
+ Assert.fail("Expected output " + expectedOutputs[i]
+ + " was not found, or isn't in the specified order.");
+ }
+ outputString = outputString.substring(outputIndex);
+ }
+
+ return this;
+ }
+
/**
* Verifies the gfsh output does not contain the given output
*/