This is an automated email from the ASF dual-hosted git repository.
prhomberg 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 a1b9725 GEODE-3539: Add missing test coverage for 'describe
connection' command.
a1b9725 is described below
commit a1b9725a7cb351299a5239a79f96daed9d88865b
Author: Patrick Rhomberg <[email protected]>
AuthorDate: Mon Nov 6 10:40:46 2017 -0800
GEODE-3539: Add missing test coverage for 'describe connection' command.
---
.../DescribeConnectionCommandJUnitTest.java | 90 ++++++++++++++++++++++
.../assertions/GfshShellConnectionRuleAssert.java | 25 ++++++
2 files changed, 115 insertions(+)
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommandJUnitTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommandJUnitTest.java
new file mode 100644
index 0000000..ca93a02
--- /dev/null
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommandJUnitTest.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license
+ * agreements. See the NOTICE file distributed with this work for additional
information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache
License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express
+ * or implied. See the License for the specific language governing permissions
and limitations under
+ * the License.
+ */
+package org.apache.geode.management.internal.cli.commands;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.StreamSupport;
+
+import com.google.common.collect.Iterators;
+import org.apache.logging.log4j.Logger;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.apache.geode.test.junit.rules.GfshShellConnectionRule;
+import org.apache.geode.test.junit.rules.LocatorStarterRule;
+
+/**
+ * The GfshCommandJUnitTest class is a test suite of test cases testing the
contract and
+ * functionality of the GfshCommand class for implementing GemFire shell
(Gfsh) commands.
+ *
+ * @see org.apache.geode.management.internal.cli.commands.GfshCommand
+ * @see org.jmock.Expectations
+ * @see org.jmock.Mockery
+ * @see org.jmock.lib.legacy.ClassImposteriser
+ * @see org.junit.Assert
+ * @see org.junit.Test
+ * @since GemFire 7.0
+ */
+
+@Category(IntegrationTest.class)
+public class DescribeConnectionCommandJUnitTest {
+ public static Logger logger = LogService.getLogger();
+
+ @ClassRule
+ public static LocatorStarterRule locator = new
LocatorStarterRule().withAutoStart();
+
+ @Rule
+ public GfshShellConnectionRule gfsh = new GfshShellConnectionRule();
+
+ @Test
+ public void executeWhileConnected() throws Exception {
+ gfsh.connectAndVerify(locator);
+ // We must be sure to catch either IPv4 or IPv6 descriptions.
+ String[] acceptableAddresses = getNetworkAddressArray();
+ logger.info(
+ "Expecting one of the following addresses: " + String.join(", ",
acceptableAddresses));
+ gfsh.executeAndAssertThat("describe connection")
+ .tableHasColumnWithValueMatchingOneOf("Connection Endpoints",
acceptableAddresses);
+ }
+
+ private String[] getNetworkAddressArray() throws SocketException {
+ Enumeration<NetworkInterface> networkInterfaces =
NetworkInterface.getNetworkInterfaces();
+ NetworkInterface myInterface = networkInterfaces.nextElement();
+ Enumeration<InetAddress> myAddresses = myInterface.getInetAddresses();
+ return
Collections.list(myAddresses).stream().map(InetAddress::getHostAddress)
+ .map(address -> formatAddressAndPort(address,
locator.getJmxPort())).toArray(String[]::new);
+ }
+
+ @Test
+ public void executeWhileNotConnected() throws Exception {
+ gfsh.executeAndAssertThat("describe connection")
+ .tableHasColumnWithValuesContaining("Connection Endpoints", "Not
connected");
+ }
+
+ private String formatAddressAndPort(String address, int port) {
+ address = address.startsWith("/") ? address.substring(1) : address;
+ return address + "[" + port + "]";
+ }
+}
diff --git
a/geode-core/src/test/java/org/apache/geode/test/junit/assertions/GfshShellConnectionRuleAssert.java
b/geode-core/src/test/java/org/apache/geode/test/junit/assertions/GfshShellConnectionRuleAssert.java
index 79d54d9..84e979e 100644
---
a/geode-core/src/test/java/org/apache/geode/test/junit/assertions/GfshShellConnectionRuleAssert.java
+++
b/geode-core/src/test/java/org/apache/geode/test/junit/assertions/GfshShellConnectionRuleAssert.java
@@ -208,6 +208,31 @@ public class GfshShellConnectionRuleAssert
return this;
}
+ public GfshShellConnectionRuleAssert
tableHasColumnWithValueMatchingOneOf(String header,
+ String... acceptedValues) {
+ GfJsonObject resultContentJSON = actual.getCommandResult().getContent();
+ Object content = resultContentJSON.get(header);
+
+ if (content == null) {
+ failWithMessage("Command result did not contain a table with column
header <" + header + ">: "
+ + resultContentJSON.toString());
+ }
+
+ Object[] actualValues = toArray((JSONArray) content);
+
+ for (Object actualValue : actualValues) {
+ String actualValueString = (String) actualValue;
+ boolean actualValueContainsAnAcceptedValue =
+ Arrays.stream(acceptedValues).anyMatch(actualValueString::contains);
+
+ if (actualValueContainsAnAcceptedValue) {
+ return this;
+ }
+ }
+ failWithMessage("No accepted value found.");
+ return this;
+ }
+
public GfshShellConnectionRuleAssert hasResult() {
containsKeyValuePair("Result", "true");
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].