This is an automated email from the ASF dual-hosted git repository. jjramos 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 b2e3884 GEODE-6519: Fix CreateGatewaySenderCommand Flags (#3298) b2e3884 is described below commit b2e388469085d0e9ada2cc988d41815cfbe8ec56 Author: Juan José Ramos <jujora...@users.noreply.github.com> AuthorDate: Thu Mar 14 09:05:22 2019 +0000 GEODE-6519: Fix CreateGatewaySenderCommand Flags (#3298) - Fixed minor warnings. - Parameter `manual-start` from `create gateway-sender` command is set as `false` by default when specified without a value. - Parameters `parallel`, `disk-synchronous`, `enable-persistence` and `enable-batch-conflation` from `create gateway-sender` command are set as `true` by default when specified without a value. --- .../cli/commands/CreateGatewaySenderCommand.java | 38 ++++-- .../management/internal/cli/i18n/CliStrings.java | 2 + .../commands/CreateGatewaySenderCommandTest.java | 100 ++++++++++++-- ...CreateDestroyGatewaySenderCommandDUnitTest.java | 146 +++++++++++---------- 4 files changed, 197 insertions(+), 89 deletions(-) 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 6f8921a..c09a313 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 @@ -51,25 +51,32 @@ public class CreateGatewaySenderCommand extends SingleGfshCommand { interceptor = "org.apache.geode.management.internal.cli.commands.CreateGatewaySenderCommand$Interceptor") @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER, operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY) - public ResultModel createGatewaySender(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.CREATE_GATEWAYSENDER__GROUP__HELP) String[] onGroups, + public ResultModel createGatewaySender( + + @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, + optionContext = ConverterHint.MEMBERGROUP, + help = CliStrings.CREATE_GATEWAYSENDER__GROUP__HELP) String[] onGroups, @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, optionContext = ConverterHint.MEMBERIDNAME, help = CliStrings.CREATE_GATEWAYSENDER__MEMBER__HELP) String[] onMember, - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ID, mandatory = true, + @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ID, + mandatory = true, help = CliStrings.CREATE_GATEWAYSENDER__ID__HELP) String id, - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID, mandatory = true, + @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID, + mandatory = true, help = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID__HELP) Integer remoteDistributedSystemId, - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__PARALLEL, specifiedDefaultValue = "true", + @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__PARALLEL, + specifiedDefaultValue = "true", unspecifiedDefaultValue = "false", help = CliStrings.CREATE_GATEWAYSENDER__PARALLEL__HELP) boolean parallel, - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART, + // Users must avoid this feature, it might cause data loss and other issues during startup. + @Deprecated @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART, + unspecifiedDefaultValue = "false", help = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART__HELP) Boolean manualStart, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE, @@ -79,6 +86,8 @@ public class CreateGatewaySenderCommand extends SingleGfshCommand { help = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT__HELP) Integer socketReadTimeout, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION, + specifiedDefaultValue = "true", + unspecifiedDefaultValue = "false", help = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION__HELP) Boolean enableBatchConflation, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE, @@ -88,12 +97,16 @@ public class CreateGatewaySenderCommand extends SingleGfshCommand { help = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL__HELP) Integer batchTimeInterval, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE, + specifiedDefaultValue = "true", + unspecifiedDefaultValue = "false", help = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE__HELP) Boolean enablePersistence, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISKSTORENAME, help = CliStrings.CREATE_GATEWAYSENDER__DISKSTORENAME__HELP) String diskStoreName, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS, + specifiedDefaultValue = "true", + unspecifiedDefaultValue = "true", help = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS__HELP) Boolean diskSynchronous, @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY, @@ -205,18 +218,19 @@ public class CreateGatewaySenderCommand extends SingleGfshCommand { } private String int2string(Integer i) { - return Optional.ofNullable(i).map(in -> in.toString()).orElse(null); + return Optional.ofNullable(i).map(String::valueOf).orElse(null); } public static class Interceptor extends AbstractCliAroundInterceptor { @Override public Result preExecution(GfshParseResult parseResult) { - Integer dispatcherThreads = - (Integer) parseResult.getParamValue(CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS); - OrderPolicy orderPolicy = - (OrderPolicy) parseResult.getParamValue(CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY); Boolean parallel = (Boolean) parseResult.getParamValue(CliStrings.CREATE_GATEWAYSENDER__PARALLEL); + OrderPolicy orderPolicy = + (OrderPolicy) parseResult.getParamValue(CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY); + Integer dispatcherThreads = + (Integer) parseResult.getParamValue(CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS); + if (dispatcherThreads != null && dispatcherThreads > 1 && orderPolicy == null) { return ResultBuilder.createUserErrorResult( "Must specify --order-policy when --dispatcher-threads is larger than 1."); 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 c0c5d05..f6b5d1d 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 @@ -2163,7 +2163,9 @@ public class CliStrings { public static final String CREATE_GATEWAYSENDER__PARALLEL = "parallel"; public static final String CREATE_GATEWAYSENDER__PARALLEL__HELP = "Whether this is Parallel GatewaySender."; + @Deprecated public static final String CREATE_GATEWAYSENDER__MANUALSTART = "manual-start"; + @Deprecated public static final String CREATE_GATEWAYSENDER__MANUALSTART__HELP = "Whether manual start is to be enabled or the sender will start automatically after creation.\n" + "Deprecated: Since Geode 1.4. Manual start of senders is deprecated and will be removed in a later release."; 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 f708efe..706215b 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 @@ -21,6 +21,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Collections; @@ -51,20 +52,18 @@ public class CreateGatewaySenderCommandTest { public static GfshParserRule gfsh = new GfshParserRule(); private CreateGatewaySenderCommand command; - private InternalCache cache; private List<CliFunctionResult> functionResults; private CliFunctionResult cliFunctionResult; - ArgumentCaptor<GatewaySenderFunctionArgs> argsArgumentCaptor = + private ArgumentCaptor<GatewaySenderFunctionArgs> argsArgumentCaptor = ArgumentCaptor.forClass(GatewaySenderFunctionArgs.class); @Before public void before() { command = spy(CreateGatewaySenderCommand.class); - cache = mock(InternalCache.class); + InternalCache cache = mock(InternalCache.class); doReturn(cache).when(command).getCache(); functionResults = new ArrayList<>(); - doReturn(functionResults).when(command).executeAndGetFunctionResult(any(), - any(), any(Set.class)); + doReturn(functionResults).when(command).executeAndGetFunctionResult(any(), any(), any()); } @Test @@ -95,7 +94,7 @@ public class CreateGatewaySenderCommandTest { } @Test - public void paralleAndThreadOrderPolicy() { + public void parallelAndThreadOrderPolicy() { gfsh.executeAndAssertThat(command, "create gateway-sender --id=ln --remote-distributed-system-id=1 " + "--parallel --order-policy=THREAD") @@ -135,7 +134,7 @@ public class CreateGatewaySenderCommandTest { + "--gateway-event-filter=test1,test2 --gateway-transport-filter=test1,test2") .statusIsSuccess(); verify(command).executeAndGetFunctionResult(any(), argsArgumentCaptor.capture(), - any(Set.class)); + any()); assertThat(argsArgumentCaptor.getValue().getOrderPolicy()).isEqualTo( GatewaySender.OrderPolicy.THREAD.toString()); assertThat(argsArgumentCaptor.getValue().getRemoteDistributedSystemId()).isEqualTo(1); @@ -170,9 +169,9 @@ public class CreateGatewaySenderCommandTest { // Create a set of mixed version members Set<DistributedMember> members = new HashSet<>(); InternalDistributedMember currentVersionMember = mock(InternalDistributedMember.class); - doReturn(Version.CURRENT).when(currentVersionMember).getVersionObject(); + when(currentVersionMember.getVersionObject()).thenReturn(Version.CURRENT); InternalDistributedMember oldVersionMember = mock(InternalDistributedMember.class); - doReturn(Version.GEODE_1_4_0).when(oldVersionMember).getVersionObject(); + when(oldVersionMember.getVersionObject()).thenReturn(Version.GEODE_1_4_0); members.add(currentVersionMember); members.add(oldVersionMember); doReturn(members).when(command).getMembers(any(), any()); @@ -182,4 +181,87 @@ public class CreateGatewaySenderCommandTest { "create gateway-sender --id=1 --remote-distributed-system-id=1").statusIsError() .containsOutput(CliStrings.CREATE_GATEWAYSENDER__MSG__CAN_NOT_CREATE_DIFFERENT_VERSIONS); } + + @Test + public void testDefaultArguments() { + doReturn(mock(Set.class)).when(command).getMembers(any(), any()); + cliFunctionResult = + new CliFunctionResult("member", CliFunctionResult.StatusState.OK, "cliFunctionResult"); + functionResults.add(cliFunctionResult); + gfsh.executeAndAssertThat(command, + "create gateway-sender --id=testGateway --remote-distributed-system-id=1") + .statusIsSuccess(); + verify(command).executeAndGetFunctionResult(any(), argsArgumentCaptor.capture(), any()); + + assertThat(argsArgumentCaptor.getValue().getId()).isEqualTo("testGateway"); + assertThat(argsArgumentCaptor.getValue().getRemoteDistributedSystemId()).isEqualTo(1); + assertThat(argsArgumentCaptor.getValue().isParallel()).isFalse(); + assertThat(argsArgumentCaptor.getValue().isManualStart()).isFalse(); + assertThat(argsArgumentCaptor.getValue().getSocketBufferSize()).isNull(); + assertThat(argsArgumentCaptor.getValue().getSocketReadTimeout()).isNull(); + assertThat(argsArgumentCaptor.getValue().isBatchConflationEnabled()).isFalse(); + assertThat(argsArgumentCaptor.getValue().getBatchSize()).isNull(); + assertThat(argsArgumentCaptor.getValue().getBatchTimeInterval()).isNull(); + assertThat(argsArgumentCaptor.getValue().getBatchSize()).isNull(); + assertThat(argsArgumentCaptor.getValue().getBatchSize()).isNull(); + assertThat(argsArgumentCaptor.getValue().isPersistenceEnabled()).isFalse(); + assertThat(argsArgumentCaptor.getValue().getDiskStoreName()).isNull(); + assertThat(argsArgumentCaptor.getValue().isDiskSynchronous()).isTrue(); + assertThat(argsArgumentCaptor.getValue().getMaxQueueMemory()).isNull(); + assertThat(argsArgumentCaptor.getValue().getAlertThreshold()).isNull(); + assertThat(argsArgumentCaptor.getValue().getDispatcherThreads()).isNull(); + assertThat(argsArgumentCaptor.getValue().getOrderPolicy()).isNull(); + assertThat(argsArgumentCaptor.getValue().getGatewayEventFilter()).isNotNull().isEmpty(); + assertThat(argsArgumentCaptor.getValue().getGatewayTransportFilter()).isNotNull().isEmpty(); + } + + @Test + public void booleanArgumentsShouldBeSetAsTrueWhenSpecifiedWithoutValue() { + doReturn(mock(Set.class)).when(command).getMembers(any(), any()); + cliFunctionResult = + new CliFunctionResult("member", CliFunctionResult.StatusState.OK, "cliFunctionResult"); + functionResults.add(cliFunctionResult); + gfsh.executeAndAssertThat(command, + "create gateway-sender --member=xyz --id=testGateway --remote-distributed-system-id=1" + + " --parallel" + + " --manual-start" + + " --disk-synchronous" + + " --enable-persistence" + + " --enable-batch-conflation") + .statusIsSuccess(); + verify(command).executeAndGetFunctionResult(any(), argsArgumentCaptor.capture(), any()); + + assertThat(argsArgumentCaptor.getValue().getId()).isEqualTo("testGateway"); + assertThat(argsArgumentCaptor.getValue().getRemoteDistributedSystemId()).isEqualTo(1); + assertThat(argsArgumentCaptor.getValue().isParallel()).isTrue(); + assertThat(argsArgumentCaptor.getValue().isManualStart()).isNull(); + assertThat(argsArgumentCaptor.getValue().isDiskSynchronous()).isTrue(); + assertThat(argsArgumentCaptor.getValue().isPersistenceEnabled()).isTrue(); + assertThat(argsArgumentCaptor.getValue().isBatchConflationEnabled()).isTrue(); + } + + @Test + public void booleanArgumentsShouldUseTheCustomParameterValueWhenSpecified() { + doReturn(mock(Set.class)).when(command).getMembers(any(), any()); + cliFunctionResult = + new CliFunctionResult("member", CliFunctionResult.StatusState.OK, "cliFunctionResult"); + functionResults.add(cliFunctionResult); + gfsh.executeAndAssertThat(command, + "create gateway-sender --member=xyz --id=testGateway --remote-distributed-system-id=1" + + " --parallel=false" + + " --manual-start=false" + + " --disk-synchronous=false" + + " --enable-persistence=false" + + " --enable-batch-conflation=false") + .statusIsSuccess(); + verify(command).executeAndGetFunctionResult(any(), argsArgumentCaptor.capture(), any()); + + assertThat(argsArgumentCaptor.getValue().getId()).isEqualTo("testGateway"); + assertThat(argsArgumentCaptor.getValue().getRemoteDistributedSystemId()).isEqualTo(1); + assertThat(argsArgumentCaptor.getValue().isParallel()).isFalse(); + assertThat(argsArgumentCaptor.getValue().isManualStart()).isFalse(); + assertThat(argsArgumentCaptor.getValue().isDiskSynchronous()).isFalse(); + assertThat(argsArgumentCaptor.getValue().isPersistenceEnabled()).isFalse(); + assertThat(argsArgumentCaptor.getValue().isBatchConflationEnabled()).isFalse(); + } } diff --git a/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java b/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java index f5000d2..988dddf 100644 --- a/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java +++ b/geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/wancommand/CreateDestroyGatewaySenderCommandDUnitTest.java @@ -35,6 +35,7 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import org.apache.geode.cache.wan.GatewaySender; +import org.apache.geode.distributed.internal.InternalLocator; import org.apache.geode.management.internal.cli.i18n.CliStrings; import org.apache.geode.test.dunit.rules.ClusterStartupRule; import org.apache.geode.test.dunit.rules.MemberVM; @@ -42,7 +43,7 @@ import org.apache.geode.test.junit.categories.WanTest; import org.apache.geode.test.junit.rules.GfshCommandRule; import org.apache.geode.test.junit.rules.VMProvider; -@Category({WanTest.class}) +@Category(WanTest.class) @SuppressWarnings("serial") public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable { @@ -66,7 +67,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable private static MemberVM server3; @BeforeClass - public static void beforeClass() throws Exception { + public static void beforeClass() { Properties props = new Properties(); props.setProperty(DISTRIBUTED_SYSTEM_ID, "" + 1); locatorSite1 = clusterStartupRule.startLocatorVM(1, props); @@ -94,34 +95,40 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * GatewaySender with all default attributes */ @Test - public void testCreateDestroyGatewaySenderWithDefault() throws Exception { - gfsh.executeAndAssertThat(CREATE).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); + public void testCreateDestroyGatewaySenderWithDefault() { + gfsh.executeAndAssertThat(CREATE).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderState("ln", true, false), server1, server2, server3); locatorSite1.invoke(() -> { - String xml = ClusterStartupRule.getLocator().getConfigurationPersistenceService() - .getConfiguration("cluster").getCacheXmlContent(); - assertThat(xml).contains("<gateway-sender id=\"ln\" remote-distributed-system-id=\"2\"" - + " parallel=\"false\"/>"); + InternalLocator locator = ClusterStartupRule.getLocator(); + assertThat(locator).isNotNull(); + String xml = locator.getConfigurationPersistenceService().getConfiguration("cluster") + .getCacheXmlContent(); + assertThat(xml).contains( + "<gateway-sender id=\"ln\" remote-distributed-system-id=\"2\" parallel=\"false\" manual-start=\"false\" enable-batch-conflation=\"false\" enable-persistence=\"false\" disk-synchronous=\"true\"/>"); }); // destroy gateway sender and verify AEQs cleaned up - gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); + gfsh.executeAndAssertThat(DESTROY).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2, server3); locatorSite1.invoke(() -> { - String xml = ClusterStartupRule.getLocator().getConfigurationPersistenceService() - .getConfiguration("cluster").getCacheXmlContent(); + InternalLocator locator = ClusterStartupRule.getLocator(); + assertThat(locator).isNotNull(); + String xml = locator.getConfigurationPersistenceService().getConfiguration("cluster") + .getCacheXmlContent(); assertThat(xml).doesNotContain("gateway-sender id=\"ln\""); }); } @@ -130,7 +137,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * GatewaySender with given attribute values + */ @Test - public void testCreateDestroyGatewaySender() throws Exception { + public void testCreateDestroyGatewaySender() { int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000; String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --" @@ -147,10 +154,12 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --" + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --" + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD"; - gfsh.executeAndAssertThat(command).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); + + gfsh.executeAndAssertThat(command).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> { verifySenderState("ln", false, false); @@ -159,10 +168,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable }, server1, server2, server3); // destroy gateway sender and verify AEQs cleaned up - gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); + gfsh.executeAndAssertThat(DESTROY).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2, server3); @@ -172,7 +182,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * GatewaySender with given attribute values and event filters. */ @Test - public void testCreateDestroyGatewaySenderWithGatewayEventFilters() throws Exception { + public void testCreateDestroyGatewaySenderWithGatewayEventFilters() { int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000; String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --" @@ -192,10 +202,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable + CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER + "=org.apache.geode.cache30.MyGatewayEventFilter1,org.apache.geode.cache30.MyGatewayEventFilter2"; - gfsh.executeAndAssertThat(command).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); + gfsh.executeAndAssertThat(command).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); List<String> eventFilters = new ArrayList<>(); eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter1"); @@ -208,10 +219,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable }, server1, server2, server3); // destroy gateway sender and verify AEQs cleaned up - gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); + gfsh.executeAndAssertThat(DESTROY).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2, server3); @@ -221,7 +233,7 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * GatewaySender with given attribute values and transport filters. */ @Test - public void testCreateDestroyGatewaySenderWithGatewayTransportFilters() throws Exception { + public void testCreateDestroyGatewaySenderWithGatewayTransportFilters() { int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000; String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --" @@ -240,10 +252,12 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD" + " --" + CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER + "=org.apache.geode.cache30.MyGatewayTransportFilter1"; - gfsh.executeAndAssertThat(command).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); + + gfsh.executeAndAssertThat(command).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); List<String> transportFilters = new ArrayList<>(); transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1"); @@ -255,10 +269,11 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable }, server1, server2, server3); // destroy gateway sender and verify AEQs cleaned up - gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); + gfsh.executeAndAssertThat(DESTROY).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2, server3); @@ -268,20 +283,17 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * GatewaySender with given attribute values on given member. */ @Test - public void testCreateDestroyGatewaySender_OnMember() throws Exception { + public void testCreateDestroyGatewaySender_OnMember() { gfsh.executeAndAssertThat(CREATE + " --member=" + server1.getName()).statusIsSuccess() - .tableHasColumnWithExactValuesInAnyOrder("Message", - "GatewaySender \"ln\" created on \"" + SERVER_3 + "\""); - - server1.invoke(() -> { - verifySenderState("ln", true, false); - }); + .hasTableSection().hasRowSize(1).hasColumn("Message") + .containsOnly("GatewaySender \"ln\" created on \"" + SERVER_3 + "\""); + server1.invoke(() -> verifySenderState("ln", true, false)); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server2, server3); gfsh.executeAndAssertThat(DESTROY + " --member=" + server1.getName()).statusIsSuccess() - .tableHasColumnWithExactValuesInAnyOrder("Message", - "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\""); + .hasTableSection().hasRowSize(1).hasColumn("Message") + .containsOnly("GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1); } @@ -290,20 +302,17 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * GatewaySender with given attribute values on given group */ @Test - public void testCreateDestroyGatewaySender_Group() throws Exception { + public void testCreateDestroyGatewaySender_Group() { gfsh.executeAndAssertThat(CREATE + " --group=senderGroup1").statusIsSuccess() - .tableHasColumnWithExactValuesInAnyOrder("Message", - "GatewaySender \"ln\" created on \"" + SERVER_3 + "\""); - - server1.invoke(() -> { - verifySenderState("ln", true, false); - }); + .hasTableSection().hasRowSize(1).hasColumn("Message") + .containsOnly("GatewaySender \"ln\" created on \"" + SERVER_3 + "\""); + server1.invoke(() -> verifySenderState("ln", true, false)); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server2, server3); gfsh.executeAndAssertThat(DESTROY + " --group=senderGroup1").statusIsSuccess() - .tableHasColumnWithExactValuesInAnyOrder("Message", - "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\""); + .hasTableSection().hasRowSize(1).hasColumn("Message") + .containsOnly("GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1); } @@ -312,18 +321,19 @@ public class CreateDestroyGatewaySenderCommandDUnitTest implements Serializable * Parallel GatewaySender with given attribute values + */ @Test - public void testCreateDestroyParallelGatewaySender() throws Exception { + public void testCreateDestroyParallelGatewaySender() { gfsh.executeAndAssertThat(CREATE + " --parallel").statusIsSuccess() - .tableHasColumnWithExactValuesInAnyOrder("Message", + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( "GatewaySender \"ln\" created on \"" + SERVER_3 + "\"", "GatewaySender \"ln\" created on \"" + SERVER_4 + "\"", "GatewaySender \"ln\" created on \"" + SERVER_5 + "\""); // destroy gateway sender and verify AEQs cleaned up - gfsh.executeAndAssertThat(DESTROY).statusIsSuccess().tableHasColumnWithExactValuesInAnyOrder( - "Message", "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", - "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); + gfsh.executeAndAssertThat(DESTROY).statusIsSuccess() + .hasTableSection().hasRowSize(3).hasColumn("Message").containsOnly( + "GatewaySender \"ln\" destroyed on \"" + SERVER_3 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_4 + "\"", + "GatewaySender \"ln\" destroyed on \"" + SERVER_5 + "\""); VMProvider.invokeInEveryMember(() -> verifySenderDoesNotExist("ln", false), server1, server2, server3);