[
https://issues.apache.org/jira/browse/GEODE-4081?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16288456#comment-16288456
]
ASF GitHub Bot commented on GEODE-4081:
---------------------------------------
jinmeiliao closed pull request #1140: GEODE-4081: update cluster config after
destroy gateway sender
URL: https://github.com/apache/geode/pull/1140
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommand.java
index f314b33b4d..360858fe18 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommand.java
@@ -89,12 +89,20 @@ public Result createGatewayReceiver(@CliOption(key =
{CliStrings.GROUP, CliStrin
gatewayReceiverFunctionArgs, membersToCreateGatewayReceiverOn);
CommandResult result =
ResultBuilder.buildResult(gatewayReceiverCreateResults);
-
XmlEntity xmlEntity = findXmlEntity(gatewayReceiverCreateResults);
- if (xmlEntity != null) {
- persistClusterConfiguration(result,
- () -> getSharedConfiguration().addXmlEntity(xmlEntity, onGroups));
+ // no xml needs to be updated, simply return
+ if (xmlEntity == null) {
+ return result;
+ }
+
+ // has xml but unable to persist to cluster config, need to print warning
message and return
+ if (onMember != null || getSharedConfiguration() == null) {
+ result.setCommandPersisted(false);
+ return result;
}
+
+ // update cluster config
+ getSharedConfiguration().addXmlEntity(xmlEntity, onGroups);
return result;
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommand.java
index 3be626db67..7ccc070a9b 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommand.java
@@ -114,11 +114,7 @@ public Result createGatewaySender(@CliOption(key =
{CliStrings.GROUP, CliStrings
alertThreshold, dispatcherThreads, orderPolicy == null ? null :
orderPolicy.name(),
gatewayEventFilters, gatewayTransportFilter);
- Set<DistributedMember> membersToCreateGatewaySenderOn =
findMembers(onGroups, onMember);
-
- if (membersToCreateGatewaySenderOn.isEmpty()) {
- return
ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
+ Set<DistributedMember> membersToCreateGatewaySenderOn =
getMembers(onGroups, onMember);
List<CliFunctionResult> gatewaySenderCreateResults =
executeAndGetFunctionResult(GatewaySenderCreateFunction.INSTANCE,
gatewaySenderFunctionArgs,
@@ -126,10 +122,20 @@ public Result createGatewaySender(@CliOption(key =
{CliStrings.GROUP, CliStrings
CommandResult result =
ResultBuilder.buildResult(gatewaySenderCreateResults);
XmlEntity xmlEntity = findXmlEntity(gatewaySenderCreateResults);
- if (xmlEntity != null) {
- persistClusterConfiguration(result,
- () -> getSharedConfiguration().addXmlEntity(xmlEntity, onGroups));
+
+ // no xml needs to be updated, simply return
+ if (xmlEntity == null) {
+ return result;
}
+
+ // has xml but unable to persist to cluster config, need to print warning
message and return
+ if (onMember != null || getSharedConfiguration() == null) {
+ result.setCommandPersisted(false);
+ return result;
+ }
+
+ // update cluster config
+ getSharedConfiguration().addXmlEntity(xmlEntity, onGroups);
return result;
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommand.java
index 33680e6f2b..ad1fd3d8ee 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommand.java
@@ -33,6 +33,7 @@
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.CommandResult;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
@@ -66,7 +67,21 @@ public Result destroyGatewaySender(
GatewaySenderDestroyFunction.INSTANCE,
gatewaySenderDestroyFunctionArgs, members);
CommandResult result = ResultBuilder.buildResult(functionResults);
+ XmlEntity xmlEntity = findXmlEntity(functionResults);
+ // no xml needs to be updated, simply return
+ if (xmlEntity == null) {
+ return result;
+ }
+
+ // has xml but unable to persist to cluster config, need to print warning
message and return
+ if (onMember != null || getSharedConfiguration() == null) {
+ result.setCommandPersisted(false);
+ return result;
+ }
+
+ // update cluster config
+ getSharedConfiguration().deleteXmlEntity(xmlEntity, onGroups);
return result;
}
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction.java
index f99592eaf4..edba9726db 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction.java
@@ -20,7 +20,9 @@
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.cache.wan.GatewaySender;
import org.apache.geode.internal.InternalEntity;
+import org.apache.geode.internal.cache.xmlcache.CacheXml;
import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
public class GatewaySenderDestroyFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@@ -55,7 +57,8 @@ public void execute(FunctionContext context) {
try {
gatewaySender.stop();
gatewaySender.destroy();
- resultSender.lastResult(new CliFunctionResult(memberNameOrId, true,
+ XmlEntity xmlEntity = new XmlEntity(CacheXml.GATEWAY_SENDER, "id",
senderId);
+ resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity,
String.format("GatewaySender \"%s\" destroyed on \"%s\"", senderId,
memberNameOrId)));
} catch (Exception e) {
resultSender.lastResult(new CliFunctionResult(memberNameOrId, e, ""));
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 cf99d0f202..bbc823ceb6 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
@@ -213,7 +213,7 @@
public static final String
SHARED_CONFIGURATION_NO_LOCATORS_WITH_SHARED_CONFIGURATION =
"No locators with cluster configuration enabled.";
public static final String
SHARED_CONFIGURATION_FAILED_TO_PERSIST_COMMAND_CHANGES =
- "Failed to persist the configuration changes due to this command, Revert
the command to maintain consistency.\nPlease use \"status
cluster-config-service\" to determine whether Cluster configuration service is
RUNNING.";
+ "This change is not persisted in the cluster configuration, either
because the cluster configuration service is not running or the command is
operating on targeted members.";
/* Other Constants */
public static final String GFSH__MSG__NO_LONGER_CONNECTED_TO_0 = "No longer
connected to {0}.";
public static final String GFSHPARSER__MSG__REQUIRED_ARGUMENT_0 = "Required
Argument: \"{0}\"";
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandDUnitTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandDUnitTest.java
index 652ce0b11a..6b9c34fc45 100644
---
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandDUnitTest.java
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandDUnitTest.java
@@ -62,7 +62,7 @@ public void createQueueWithoutCC() throws Exception {
server = lsRule.startServerAsJmxManager(0);
gfsh.connectAndVerify(server.getJmxPort(),
GfshCommandRule.PortType.jmxManager);
gfsh.executeAndAssertThat(VALID_COMMAND + " --id=queue").statusIsSuccess()
- .containsOutput("Failed to persist the configuration")
+ .containsOutput("This change is not persisted in the cluster
configuration")
.tableHasColumnWithExactValuesInAnyOrder("Status",
"Success").tableHasRowCount("Member", 1);
}
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandTest.java
index c001f16d3a..2b585d4be2 100644
---
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandTest.java
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateAsyncEventQueueCommandTest.java
@@ -131,7 +131,7 @@ public void buildResult_all_success() throws Exception {
doReturn(functionResults).when(command).executeAndGetFunctionResult(isA(Function.class),
isA(Object.class), isA(Set.class));
- gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsSuccess().persisted()
+ gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsSuccess().hasNoFailToPersistError()
.tableHasRowCount("Member", 2)
.tableHasRowWithValues("Member", "Status", "member1", "SUCCESS")
.tableHasRowWithValues("Member", "Status", "member2", "SUCCESS");
@@ -154,8 +154,7 @@ public void buildResult_all_failure() throws Exception {
doReturn(functionResults).when(command).executeAndGetFunctionResult(isA(Function.class),
isA(Object.class), isA(Set.class));
- // need to make sure failToPersist flag is not set so that we won't print
out the warning
- gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsError().persisted()
+ gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsError().hasNoFailToPersistError()
.tableHasRowCount("Member", 2)
.tableHasRowWithValues("Member", "Status", "member1", "ERROR: failed")
.tableHasRowWithValues("Member", "Status", "member2",
@@ -178,7 +177,7 @@ public void buildResult_one_failure_one_success() throws
Exception {
doReturn(functionResults).when(command).executeAndGetFunctionResult(isA(Function.class),
isA(Object.class), isA(Set.class));
- gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsSuccess().persisted()
+ gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsSuccess().hasNoFailToPersistError()
.tableHasRowCount("Member", 2)
.tableHasRowWithValues("Member", "Status", "member1",
"SUCCESS").tableHasRowWithValues(
"Member", "Status", "member2", "ERROR: java.lang.RuntimeException:
exception happened");
@@ -198,7 +197,7 @@ public void
command_succeeded_but_no_cluster_config_service() throws Exception {
doReturn(functionResults).when(command).executeAndGetFunctionResult(isA(Function.class),
isA(Object.class), isA(Set.class));
- gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsSuccess().failToPersist();
+ gfsh.executeAndAssertThat(command,
MINIUM_COMMAND).statusIsSuccess().hasFailToPersistError();
// addXmlEntity should not be called
verify(service, times(0)).addXmlEntity(xmlEntity, null);
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommandTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommandTest.java
index 6bc5c2019c..161c6effa9 100644
---
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommandTest.java
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommandTest.java
@@ -16,14 +16,27 @@
package org.apache.geode.management.internal.cli.commands;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.apache.geode.distributed.internal.ClusterConfigurationService;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.internal.cli.GfshParseResult;
+import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
import org.apache.geode.test.junit.categories.UnitTest;
import org.apache.geode.test.junit.rules.GfshParserRule;
@@ -35,10 +48,23 @@
public static GfshParserRule gfsh = new GfshParserRule();
private CreateGatewayReceiverCommand command;
+ private InternalCache cache;
+ private List<CliFunctionResult> functionResults;
+ private ClusterConfigurationService ccService;
+ private CliFunctionResult result1;
+ private XmlEntity xmlEntity;
@Before
public void before() {
command = spy(CreateGatewayReceiverCommand.class);
+ ccService = mock(ClusterConfigurationService.class);
+ xmlEntity = mock(XmlEntity.class);
+ cache = mock(InternalCache.class);
+ doReturn(cache).when(command).getCache();
+ doReturn(ccService).when(command).getSharedConfiguration();
+ functionResults = new ArrayList<>();
+ doReturn(functionResults).when(command).executeAndGetFunctionResult(any(),
any(),
+ any(Set.class));
}
@Test
@@ -62,4 +88,40 @@ public void endMustBeLargerThanStart() {
gfsh.executeAndAssertThat(command, "create gateway-receiver --end-port=1
--start-port=2")
.statusIsError().containsOutput("start-port must be smaller than
end-port");
}
+
+ @Test
+ public void whenNoCCService() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(null).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ functionResults.add(result1);
+ gfsh.executeAndAssertThat(command, "create
gateway-receiver").statusIsSuccess()
+ .hasFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
+ @Test
+ public void whenCommandOnMember() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(ccService).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ functionResults.add(result1);
+ gfsh.executeAndAssertThat(command, "create gateway-receiver
--member=xyz").statusIsSuccess()
+ .hasFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
+ @Test
+ public void whenNoXml() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(ccService).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", false, "result1");
+ functionResults.add(result1);
+
+ // does not delete because command failed, so hasNoFailToPersistError
should still be true
+ gfsh.executeAndAssertThat(command, "create
gateway-receiver").statusIsError()
+ .hasNoFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
}
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommandTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommandTest.java
index 48ef8b2a7b..f8a0ae3365 100644
---
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommandTest.java
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommandTest.java
@@ -18,15 +18,25 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
+import java.util.Set;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.apache.geode.distributed.internal.ClusterConfigurationService;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
import org.apache.geode.test.junit.categories.UnitTest;
import org.apache.geode.test.junit.rules.GfshParserRule;
@@ -37,10 +47,23 @@
public static GfshParserRule gfsh = new GfshParserRule();
private CreateGatewaySenderCommand command;
+ private InternalCache cache;
+ private List<CliFunctionResult> functionResults;
+ private ClusterConfigurationService ccService;
+ private CliFunctionResult result1, result2;
+ private XmlEntity xmlEntity;
@Before
public void before() {
command = spy(CreateGatewaySenderCommand.class);
+ ccService = mock(ClusterConfigurationService.class);
+ xmlEntity = mock(XmlEntity.class);
+ cache = mock(InternalCache.class);
+ doReturn(cache).when(command).getCache();
+ doReturn(ccService).when(command).getSharedConfiguration();
+ functionResults = new ArrayList<>();
+ doReturn(functionResults).when(command).executeAndGetFunctionResult(any(),
any(),
+ any(Set.class));
}
@Test
@@ -87,4 +110,42 @@ public void orderPolicyAutoComplete() {
assertThat(candidate.getCandidates()).hasSize(3);
assertThat(candidate.getFirstCandidate()).isEqualTo(command + "=KEY");
}
+
+ @Test
+ public void whenNoCCService() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(null).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ functionResults.add(result1);
+ gfsh.executeAndAssertThat(command,
+ "create gateway-sender --id=1
--remote-distributed-system-id=1").statusIsSuccess()
+ .hasFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
+ @Test
+ public void whenCommandOnMember() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(ccService).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ functionResults.add(result1);
+ gfsh.executeAndAssertThat(command,
+ "create gateway-sender --member=xyz --id=1
--remote-distributed-system-id=1")
+ .statusIsSuccess().hasFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
+ @Test
+ public void whenNoXml() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(ccService).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", false, "result1");
+ functionResults.add(result1);
+
+ // does not delete because command failed, so hasNoFailToPersistError
should still be true
+ gfsh.executeAndAssertThat(command,
+ "create gateway-sender --id=1
--remote-distributed-system-id=1").statusIsError()
+ .hasNoFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
}
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommandTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommandTest.java
index 207c853ecb..8aa971e037 100644
---
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommandTest.java
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommandTest.java
@@ -19,7 +19,9 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
import java.util.ArrayList;
import java.util.List;
@@ -30,10 +32,10 @@
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.internal.ClusterConfigurationService;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
-import org.apache.geode.management.internal.cli.result.CommandResult;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
import org.apache.geode.test.junit.categories.UnitTest;
import org.apache.geode.test.junit.rules.GfshParserRule;
@@ -45,21 +47,23 @@
public static GfshParserRule parser = new GfshParserRule();
private DestroyGatewaySenderCommand command;
- private ResultCollector collector;
private InternalCache cache;
private List<CliFunctionResult> functionResults;
+ private ClusterConfigurationService ccService;
private CliFunctionResult result1, result2;
- private CommandResult result;
+ private XmlEntity xmlEntity;
@Before
public void before() throws Exception {
command = spy(DestroyGatewaySenderCommand.class);
+ ccService = mock(ClusterConfigurationService.class);
+ xmlEntity = mock(XmlEntity.class);
cache = mock(InternalCache.class);
doReturn(cache).when(command).getCache();
- collector = mock(ResultCollector.class);
- doReturn(collector).when(command).executeFunction(any(), any(),
any(Set.class));
+ doReturn(ccService).when(command).getSharedConfiguration();
functionResults = new ArrayList<>();
- doReturn(functionResults).when(collector).getResult();
+ doReturn(functionResults).when(command).executeAndGetFunctionResult(any(),
any(),
+ any(Set.class));
}
@Test
@@ -69,8 +73,8 @@ public void mandatoryOptions() throws Exception {
@Test
public void allFunctionReturnsOK() throws Exception {
- result1 = new CliFunctionResult("member", true, "result1");
- result2 = new CliFunctionResult("member", true, "result2");
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ result2 = new CliFunctionResult("member", xmlEntity, "result2");
functionResults.add(result1);
functionResults.add(result2);
@@ -78,6 +82,7 @@ public void allFunctionReturnsOK() throws Exception {
parser.executeAndAssertThat(command, "destroy gateway-sender
--id=1").statusIsSuccess()
.tableHasColumnWithValuesContaining("Status", "result1", "result2");
+ verify(ccService).deleteXmlEntity(any(), any());
}
@Test
@@ -106,4 +111,39 @@ public void oneFunctionThrowsGeneralException() throws
Exception {
"ERROR: java.lang.Exception: something happened");
}
+
+ @Test
+ public void whenNoCCService() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(null).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ functionResults.add(result1);
+ parser.executeAndAssertThat(command, "destroy gateway-sender
--id=1").statusIsSuccess()
+ .hasFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
+ @Test
+ public void whenCommandOnMember() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(ccService).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", xmlEntity, "result1");
+ functionResults.add(result1);
+ parser.executeAndAssertThat(command, "destroy gateway-sender --member=xyz
--id=1")
+ .statusIsSuccess().hasFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
+
+ @Test
+ public void whenNoXml() {
+ doReturn(mock(Set.class)).when(command).getMembers(any(), any());
+ doReturn(ccService).when(command).getSharedConfiguration();
+ result1 = new CliFunctionResult("member", false, "result1");
+ functionResults.add(result1);
+
+ // does not delete because command failed, so hasNoFailToPersistError
should still be true
+ parser.executeAndAssertThat(command, "destroy gateway-sender
--id=1").statusIsError()
+ .hasNoFailToPersistError();
+ verify(ccService, never()).deleteXmlEntity(any(), any());
+ }
}
diff --git
a/geode-core/src/test/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
b/geode-core/src/test/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
index 40d1469c00..fc10639f1f 100644
---
a/geode-core/src/test/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
+++
b/geode-core/src/test/java/org/apache/geode/test/junit/assertions/CommandResultAssert.java
@@ -105,12 +105,12 @@ public CommandResultAssert statusIsSuccess() {
return this;
}
- public CommandResultAssert failToPersist() {
+ public CommandResultAssert hasFailToPersistError() {
Assertions.assertThat(actual.getCommandResult().failedToPersist()).isTrue();
return this;
}
- public CommandResultAssert persisted() {
+ public CommandResultAssert hasNoFailToPersistError() {
Assertions.assertThat(actual.getCommandResult().failedToPersist()).isFalse();
return this;
}
diff --git
a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
index fd810bbb2b..5fa4e23d3c 100644
---
a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
+++
b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java
@@ -110,6 +110,13 @@ public void testCreateDestroyGatewaySenderWithDefault()
throws Exception {
MemberVM.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false),
server1, server2,
server3);
+
+ locatorSite1.invoke(() -> {
+ String xml =
LocatorServerStartupRule.getLocator().getSharedConfiguration()
+ .getConfiguration("cluster").getCacheXmlContent();
+ assertThat(xml).doesNotContain("gateway-sender id=\"ln\"");
+ });
+
}
/**
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Destroy gateway-sender should update the cluster config
> -------------------------------------------------------
>
> Key: GEODE-4081
> URL: https://issues.apache.org/jira/browse/GEODE-4081
> Project: Geode
> Issue Type: Sub-task
> Components: docs, gfsh
> Reporter: Jinmei Liao
> Assignee: Jinmei Liao
>
> If a gateway sender is destroyed via gfsh, it did not update the cluster
> config
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)