[ 
https://issues.apache.org/jira/browse/GEODE-3788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16261052#comment-16261052
 ] 

ASF GitHub Bot commented on GEODE-3788:
---------------------------------------

jinmeiliao closed pull request #1082: GEODE-3788: GfshParserRule enhancement
URL: https://github.com/apache/geode/pull/1082
 
 
   

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-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommandIntegrationTest.java
 
b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommandIntegrationTest.java
index f8cd315f1f..d4dc4e8e57 100644
--- 
a/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommandIntegrationTest.java
+++ 
b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommandIntegrationTest.java
@@ -29,7 +29,6 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
-import org.junit.rules.ExpectedException;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
@@ -45,9 +44,6 @@
   @Rule
   public GfshParserRule commandRule = new GfshParserRule();
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   private StartLocatorCommand spy;
 
   @Before
@@ -58,7 +54,6 @@ public void before() throws Exception {
 
   @Test
   public void startLocatorWorksWithNoOptions() throws Exception {
-    thrown.expect(NullPointerException.class);
     commandRule.executeCommandWithInstance(spy, "start locator");
 
     ArgumentCaptor<Properties> gemfirePropertiesCaptor = 
ArgumentCaptor.forClass(Properties.class);
@@ -75,7 +70,6 @@ public void 
startLocatorRespectsJmxManagerHostnameForClients() throws Exception
     String startLocatorCommand = new CommandStringBuilder("start locator")
         .addOption(JMX_MANAGER_HOSTNAME_FOR_CLIENTS, FAKE_HOSTNAME).toString();
 
-    thrown.expect(NullPointerException.class);
     commandRule.executeCommandWithInstance(spy, startLocatorCommand);
 
     ArgumentCaptor<Properties> gemfirePropertiesCaptor = 
ArgumentCaptor.forClass(Properties.class);
diff --git 
a/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartServerCommandIntegrationTest.java
 
b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartServerCommandIntegrationTest.java
index 92f874993a..1e6b7c2d4d 100644
--- 
a/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartServerCommandIntegrationTest.java
+++ 
b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StartServerCommandIntegrationTest.java
@@ -29,7 +29,6 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
-import org.junit.rules.ExpectedException;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
@@ -45,9 +44,6 @@
   @Rule
   public GfshParserRule commandRule = new GfshParserRule();
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   private StartServerCommand spy;
 
   @Before
@@ -58,7 +54,6 @@ public void before() throws Exception {
 
   @Test
   public void startServerWorksWithNoOptions() throws Exception {
-    thrown.expect(NullPointerException.class);
     commandRule.executeCommandWithInstance(spy, "start server");
 
     ArgumentCaptor<Properties> gemfirePropertiesCaptor = 
ArgumentCaptor.forClass(Properties.class);
@@ -75,7 +70,6 @@ public void startServerRespectsJmxManagerHostnameForClients() 
throws Exception {
     String startServerCommand = new CommandStringBuilder("start server")
         .addOption(JMX_MANAGER_HOSTNAME_FOR_CLIENTS, FAKE_HOSTNAME).toString();
 
-    thrown.expect(NullPointerException.class);
     commandRule.executeCommandWithInstance(spy, startServerCommand);
 
     ArgumentCaptor<Properties> gemfirePropertiesCaptor = 
ArgumentCaptor.forClass(Properties.class);
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
index d4f52187b8..5a165ea05f 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
@@ -34,9 +34,15 @@
 public class CommandExecutor {
   private Logger logger = LogService.getLogger();
 
+  // used by the product
   public Object execute(ParseResult parseResult) {
+    return execute(null, parseResult);
+  }
+
+  // used by the GfshParserRule to pass in a mock command
+  public Object execute(Object command, ParseResult parseResult) {
     try {
-      Object result = invokeCommand(parseResult);
+      Object result = invokeCommand(command, parseResult);
 
       if (result == null) {
         return ResultBuilder.createGemFireErrorResult("Command returned null: 
" + parseResult);
@@ -83,9 +89,12 @@ public Object execute(ParseResult parseResult) {
     }
   }
 
-  protected Object invokeCommand(ParseResult parseResult) {
-    return ReflectionUtils.invokeMethod(parseResult.getMethod(), 
parseResult.getInstance(),
+  protected Object invokeCommand(Object command, ParseResult parseResult) {
+    // if no command instance is passed in, use the one in the parseResult
+    if (command == null) {
+      command = parseResult.getInstance();
+    }
+    return ReflectionUtils.invokeMethod(parseResult.getMethod(), command,
         parseResult.getArguments());
   }
-
 }
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java
index f4352b253f..12f43efee0 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java
@@ -15,7 +15,6 @@
 
 package org.apache.geode.management.internal.cli.commands;
 
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -122,9 +121,9 @@ public void multipleResultReturnedWithOneException() throws 
Exception {
     when(result2.isSuccessful()).thenReturn(false);
     when(result2.getThrowable()).thenReturn(new 
IllegalArgumentException("something happened"));
 
-    assertThatThrownBy(
-        () -> parser.executeCommandWithInstance(command, "destroy region 
--name=test"))
-            .isInstanceOf(IllegalArgumentException.class);
+    parser.executeAndAssertThat(command, "destroy region 
--name=test").statusIsError()
+        .containsOutput("something happened");
+
 
     // verify that xmlEntiry returned by the result1 is not saved to Cluster 
config
     verify(command, never()).persistClusterConfiguration(any(), any());
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/remote/CommandExecutorTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/remote/CommandExecutorTest.java
index 4f51f25008..85001dedb1 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/remote/CommandExecutorTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/remote/CommandExecutorTest.java
@@ -58,14 +58,14 @@ public void executeWhenGivenDummyParseResult() throws 
Exception {
 
   @Test
   public void returnsResultAsExpected() throws Exception {
-    doReturn(result).when(executor).invokeCommand(any());
+    doReturn(result).when(executor).invokeCommand(any(), any());
     Object thisResult = executor.execute(parseResult);
     assertThat(thisResult).isSameAs(result);
   }
 
   @Test
   public void testNullResult() throws Exception {
-    doReturn(null).when(executor).invokeCommand(any());
+    doReturn(null).when(executor).invokeCommand(any(), any());
     Object thisResult = executor.execute(parseResult);
     assertThat(thisResult.toString()).contains("Command returned null");
   }
@@ -73,7 +73,7 @@ public void testNullResult() throws Exception {
   @Test
   public void anyRuntimeExceptionGetsCaught() throws Exception {
     ;
-    doThrow(new RuntimeException("my message 
here")).when(executor).invokeCommand(any());
+    doThrow(new RuntimeException("my message 
here")).when(executor).invokeCommand(any(), any());
     Object thisResult = executor.execute(parseResult);
     assertThat(((CommandResult) 
thisResult).getStatus()).isEqualTo(Result.Status.ERROR);
     assertThat(thisResult.toString()).contains("my message here");
@@ -81,7 +81,8 @@ public void anyRuntimeExceptionGetsCaught() throws Exception {
 
   @Test
   public void notAuthorizedExceptionGetsThrown() throws Exception {
-    doThrow(new NotAuthorizedException("Not 
Authorized")).when(executor).invokeCommand(any());
+    doThrow(new NotAuthorizedException("Not 
Authorized")).when(executor).invokeCommand(any(),
+        any());
     assertThatThrownBy(() -> executor.execute(parseResult))
         .isInstanceOf(NotAuthorizedException.class);
   }
@@ -89,7 +90,8 @@ public void notAuthorizedExceptionGetsThrown() throws 
Exception {
   @Test
   public void anyIllegalArgumentExceptionGetsCaught() throws Exception {
     ;
-    doThrow(new IllegalArgumentException("my message 
here")).when(executor).invokeCommand(any());
+    doThrow(new IllegalArgumentException("my message 
here")).when(executor).invokeCommand(any(),
+        any());
     Object thisResult = executor.execute(parseResult);
     assertThat(((CommandResult) 
thisResult).getStatus()).isEqualTo(Result.Status.ERROR);
     assertThat(thisResult.toString()).contains("my message here");
@@ -98,7 +100,8 @@ public void anyIllegalArgumentExceptionGetsCaught() throws 
Exception {
   @Test
   public void anyIllegalStateExceptionGetsCaught() throws Exception {
     ;
-    doThrow(new IllegalStateException("my message 
here")).when(executor).invokeCommand(any());
+    doThrow(new IllegalStateException("my message 
here")).when(executor).invokeCommand(any(),
+        any());
     Object thisResult = executor.execute(parseResult);
     assertThat(((CommandResult) 
thisResult).getStatus()).isEqualTo(Result.Status.ERROR);
     assertThat(thisResult.toString()).contains("my message here");
@@ -107,7 +110,7 @@ public void anyIllegalStateExceptionGetsCaught() throws 
Exception {
   @Test
   public void anyUserErrorExceptionGetsCaught() throws Exception {
     ;
-    doThrow(new UserErrorException("my message 
here")).when(executor).invokeCommand(any());
+    doThrow(new UserErrorException("my message 
here")).when(executor).invokeCommand(any(), any());
     Object thisResult = executor.execute(parseResult);
     assertThat(((CommandResult) 
thisResult).getStatus()).isEqualTo(Result.Status.ERROR);
     assertThat(thisResult.toString()).contains("my message here");
@@ -117,7 +120,7 @@ public void anyUserErrorExceptionGetsCaught() throws 
Exception {
   public void anyEntityNotFoundException_statusOK() throws Exception {
     ;
     doThrow(new EntityNotFoundException("my message here", 
true)).when(executor)
-        .invokeCommand(any());
+        .invokeCommand(any(), any());
     Object thisResult = executor.execute(parseResult);
     assertThat(((CommandResult) 
thisResult).getStatus()).isEqualTo(Result.Status.OK);
     assertThat(thisResult.toString()).contains("Skipping: my message here");
@@ -126,7 +129,8 @@ public void anyEntityNotFoundException_statusOK() throws 
Exception {
   @Test
   public void anyEntityNotFoundException_statusERROR() throws Exception {
     ;
-    doThrow(new EntityNotFoundException("my message 
here")).when(executor).invokeCommand(any());
+    doThrow(new EntityNotFoundException("my message 
here")).when(executor).invokeCommand(any(),
+        any());
     Object thisResult = executor.execute(parseResult);
     assertThat(((CommandResult) 
thisResult).getStatus()).isEqualTo(Result.Status.ERROR);
     assertThat(thisResult.toString()).contains("my message here");
diff --git 
a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
 
b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
index ff68361aa5..a3c2944898 100644
--- 
a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
+++ 
b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
@@ -16,6 +16,7 @@
 
 package org.apache.geode.test.dunit.rules;
 
+import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static 
org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
 import static org.apache.geode.distributed.ConfigurationProperties.NAME;
 import static org.apache.geode.test.dunit.Host.getHost;
@@ -184,6 +185,12 @@ public MemberVM startServerVM(int index, int locatorPort) 
throws IOException {
     return startServerVM(index, new Properties(), locatorPort);
   }
 
+  public MemberVM startServerVM(int index, String group, int locatorPort) 
throws IOException {
+    Properties properties = new Properties();
+    properties.put(GROUPS, group);
+    return startServerVM(index, properties, locatorPort);
+  }
+
   public MemberVM startServerVM(int index, Properties properties) throws 
IOException {
     return startServerVM(index, properties, -1);
   }
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 9ec2754dc2..4b0a43b4e3 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
@@ -210,7 +210,8 @@ public CommandResultAssert tableHasRowWithValues(String... 
headersThenValues)
   }
 
   public CommandResultAssert tableHasRowCount(String anyColumnHeader, int 
rowSize) {
-    
assertThat(actual.getCommandResult().getColumnValues(anyColumnHeader)).isEqualTo(rowSize);
+    
assertThat(actual.getCommandResult().getColumnValues(anyColumnHeader).size())
+        .isEqualTo(rowSize);
     return this;
   }
 
diff --git 
a/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
 
b/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
index 20592be04b..a6e181d5db 100644
--- 
a/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
+++ 
b/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
@@ -23,7 +23,6 @@
 import org.junit.rules.ExternalResource;
 import org.springframework.shell.core.Completion;
 import org.springframework.shell.core.Converter;
-import org.springframework.util.ReflectionUtils;
 
 import org.apache.geode.internal.ClassPathLoader;
 import org.apache.geode.management.cli.CliMetaData;
@@ -32,6 +31,7 @@
 import org.apache.geode.management.internal.cli.CommandManager;
 import org.apache.geode.management.internal.cli.GfshParseResult;
 import org.apache.geode.management.internal.cli.GfshParser;
+import org.apache.geode.management.internal.cli.remote.CommandExecutor;
 import org.apache.geode.management.internal.cli.result.CommandResult;
 import org.apache.geode.management.internal.cli.result.ResultBuilder;
 import org.apache.geode.test.junit.assertions.CommandResultAssert;
@@ -40,11 +40,13 @@
 
   private GfshParser parser;
   private CommandManager commandManager;
+  private CommandExecutor commandExecutor;
 
   @Override
   public void before() {
     commandManager = new CommandManager();
     parser = new GfshParser(commandManager);
+    commandExecutor = new CommandExecutor();
   }
 
   public GfshParseResult parse(String command) {
@@ -78,12 +80,13 @@ public GfshParseResult parse(String command) {
       }
     }
 
-    return (CommandResult) 
ReflectionUtils.invokeMethod(parseResult.getMethod(), instance,
-        parseResult.getArguments());
+    return (CommandResult) commandExecutor.execute(instance, parseResult);
   }
 
   public <T> CommandResultAssert executeAndAssertThat(T instance, String 
command) {
     CommandResult result = executeCommandWithInstance(instance, command);
+    System.out.println("Command Result:");
+    System.out.println(ResultBuilder.resultAsString(result));
     return new CommandResultAssert(result);
   }
 


 

----------------------------------------------------------------
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]


> alter async event queue attributes
> ----------------------------------
>
>                 Key: GEODE-3788
>                 URL: https://issues.apache.org/jira/browse/GEODE-3788
>             Project: Geode
>          Issue Type: Sub-task
>          Components: gfsh
>            Reporter: Swapnil Bawaskar
>
> We should add a new {{alter async-event-queue}} gfsh command that will allow 
> users to change the following attributes on the AsyncEventQueue:
> - batch size
> - batch time interval
> - maximum queue memory
> Attributes changed with this command should only be reflected in cluster 
> configuration. We will require users to do a rolling re-start of the servers 
> for the new settings to take effect.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to