This is an automated email from the ASF dual-hosted git repository. sai_boorlagadda 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 3468fb5 GEODE-4962: Fix typo and output format from 'list gateways' gfsh command (#1778) 3468fb5 is described below commit 3468fb5e5041bfd2a9aaa44de14873ba76b508f5 Author: Sai Boorlagadda <sai.boorlaga...@gmail.com> AuthorDate: Thu Apr 12 14:56:47 2018 -0700 GEODE-4962: Fix typo and output format from 'list gateways' gfsh command (#1778) --- .../internal/cli/commands/ListGatewayCommand.java | 7 +- .../management/internal/cli/i18n/CliStrings.java | 2 +- .../cli/commands/ListGatewayCommandTest.java | 106 +++++++++++++++++++++ 3 files changed, 112 insertions(+), 3 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommand.java index 1e5bd23..8346e58 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommand.java @@ -15,6 +15,9 @@ package org.apache.geode.management.internal.cli.commands; +import static java.util.stream.Collectors.joining; + +import java.util.Arrays; import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -112,7 +115,7 @@ public class ListGatewayCommand extends InternalGfshCommand { return result; } - private void accumulateListGatewayResult(CompositeResultData crd, + protected void accumulateListGatewayResult(CompositeResultData crd, Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans, Map<String, GatewayReceiverMXBean> gatewayReceiverBeans) { if (!gatewaySenderBeans.isEmpty()) { @@ -147,7 +150,7 @@ public class ListGatewayCommand extends InternalGfshCommand { gatewayReceiverData.accumulate(CliStrings.RESULT_SENDERS_COUNT, entry.getValue().getClientConnectionCount()); gatewayReceiverData.accumulate(CliStrings.RESULT_SENDER_CONNECTED, - entry.getValue().getConnectedGatewaySenders()); + Arrays.stream(entry.getValue().getConnectedGatewaySenders()).collect(joining(", "))); } } } diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java index 29195f5..0ed0e8e 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java @@ -2892,7 +2892,7 @@ public class CliStrings { public static final String HEADER_GATEWAY_RECEIVER = "GatewayReceiver"; public static final String RESULT_PORT = "Port"; public static final String RESULT_SENDERS_COUNT = "Sender Count"; - public static final String RESULT_SENDER_CONNECTED = "Sender's Connected"; + public static final String RESULT_SENDER_CONNECTED = "Senders Connected"; public static final String SECTION_GATEWAY_SENDER_AVAILABLE = "Available GatewaySender Section"; public static final String SECTION_GATEWAY_SENDER_NOT_AVAILABLE = "Not Available GatewaySender Section"; diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommandTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommandTest.java new file mode 100644 index 0000000..0d6ec8f --- /dev/null +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommandTest.java @@ -0,0 +1,106 @@ +package org.apache.geode.management.internal.cli.commands; +/* + * 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. + */ + +import static java.util.stream.Collectors.toSet; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.powermock.api.mockito.PowerMockito.doReturn; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +import org.json.JSONObject; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import org.apache.geode.distributed.DistributedMember; +import org.apache.geode.management.DistributedSystemMXBean; +import org.apache.geode.management.GatewayReceiverMXBean; +import org.apache.geode.management.internal.SystemManagementService; +import org.apache.geode.management.internal.cli.i18n.CliStrings; +import org.apache.geode.management.internal.cli.result.CompositeResultData; +import org.apache.geode.management.internal.cli.result.ResultBuilder; +import org.apache.geode.test.junit.categories.UnitTest; +import org.apache.geode.test.junit.rules.GfshParserRule; + +@Category(UnitTest.class) +public class ListGatewayCommandTest { + + @ClassRule + public static GfshParserRule gfsh = new GfshParserRule(); + + private ListGatewayCommand command; + private static String COMMAND = "list gateways"; + private DistributedMember member; + private SystemManagementService service; + private DistributedSystemMXBean mxBean; + private GatewayReceiverMXBean receiverMXBean; + private Map<String, GatewayReceiverMXBean> receiverBeans = new HashMap<>();; + + @Before + public void setup() { + command = spy(ListGatewayCommand.class); + member = mock(DistributedMember.class); + service = mock(SystemManagementService.class); + mxBean = mock(DistributedSystemMXBean.class); + + doReturn(Stream.of(member).collect(toSet())).when(command).findMembers(any(), any()); + doReturn(service).when(command).getManagementService(); + + receiverMXBean = mock(GatewayReceiverMXBean.class); + doReturn(5407).when(receiverMXBean).getPort(); + doReturn(7).when(receiverMXBean).getClientConnectionCount(); + receiverBeans.put("10.118.19.46(server-ln-1:31527)<v1>:1026", receiverMXBean); + } + + @Test + public void listGatewaysDisplaysGatewaySendersAndReceivers() { + CompositeResultData crd = ResultBuilder.createCompositeResultData(); + crd.setHeader(CliStrings.HEADER_GATEWAYS); + + doReturn(new String[] {"10.118.19.31(server-ny-2:33256)<v2>:1029", + "10.118.19.31(server-ny-1:33206)<v1>:1028"}).when(receiverMXBean) + .getConnectedGatewaySenders(); + + command.accumulateListGatewayResult(crd, Collections.EMPTY_MAP, receiverBeans); + JSONObject tableContent = (JSONObject) crd.retrieveSectionByIndex(0).getSectionGfJsonObject() + .get("__tables__-GatewayReceiver Table"); + + assertThat(tableContent.get("content").toString()).contains( + "[\"10.118.19.31(server-ny-2:33256)<v2>:1029, 10.118.19.31(server-ny-1:33206)<v1>:1028\"]"); + } + + @Test + public void listGatewaysDisplaysGatewayReceiversWhenEmpty() { + CompositeResultData crd = ResultBuilder.createCompositeResultData(); + crd.setHeader(CliStrings.HEADER_GATEWAYS); + + doReturn(new String[0]).when(receiverMXBean).getConnectedGatewaySenders(); + + command.accumulateListGatewayResult(crd, Collections.EMPTY_MAP, receiverBeans); + JSONObject tableContent = (JSONObject) crd.retrieveSectionByIndex(0).getSectionGfJsonObject() + .get("__tables__-GatewayReceiver Table"); + + assertThat(tableContent.get("content").toString()).contains("[\"\"]"); + } + +} -- To stop receiving notification emails like this one, please contact sai_boorlaga...@apache.org.