You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2017/08/01 21:02:55 UTC
[01/50] [abbrv] geode git commit: GEODE-3097: GFSH works over HTTP
with SSL [Forced Update!]
Repository: geode
Updated Branches:
refs/heads/feature/GEODE-3299 b49367e70 -> 75b06ac09 (forced update)
GEODE-3097: GFSH works over HTTP with SSL
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/6267efea
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/6267efea
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/6267efea
Branch: refs/heads/feature/GEODE-3299
Commit: 6267efea719a62a51ce7d6c8fd3b43c5e10841f9
Parents: fcce2b0
Author: Jared Stewart <js...@pivotal.io>
Authored: Tue Jun 20 10:32:46 2017 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Tue Jul 25 11:39:34 2017 -0700
----------------------------------------------------------------------
.../internal/cli/commands/ShellCommands.java | 40 ++++---
.../ConnectToLocatorSSLDUnitTest.java | 115 ++++++------------
.../ConnectToLocatorWithLegacySSLDUnitTest.java | 118 +++++++++++++++++++
.../dunit/rules/GfshShellConnectionRule.java | 4 +-
.../ConnectToLocatorSSLOverHttpTest.java | 43 +++++++
5 files changed, 221 insertions(+), 99 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/6267efea/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
index 2da95a7..d5e1b27 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
@@ -19,6 +19,14 @@ import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_C
import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_PROTOCOLS;
import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_CIPHERS;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_PASSWORD;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_PROTOCOLS;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE_PASSWORD;
+import static org.apache.geode.management.internal.cli.shell.Gfsh.SSL_ENABLED_CIPHERS;
+import static org.apache.geode.management.internal.cli.shell.Gfsh.SSL_ENABLED_PROTOCOLS;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -538,14 +546,14 @@ public class ShellCommands implements GfshCommand {
}
private void configureHttpsURLConnection(Map<String, String> sslConfigProps) throws Exception {
- String keystoreToUse = sslConfigProps.get(Gfsh.SSL_KEYSTORE);
- String keystorePasswordToUse = sslConfigProps.get(Gfsh.SSL_KEYSTORE_PASSWORD);
- String truststoreToUse = sslConfigProps.get(Gfsh.SSL_TRUSTSTORE);
- String truststorePasswordToUse = sslConfigProps.get(Gfsh.SSL_TRUSTSTORE_PASSWORD);
+ String keystoreToUse = sslConfigProps.get(SSL_KEYSTORE);
+ String keystorePasswordToUse = sslConfigProps.get(SSL_KEYSTORE_PASSWORD);
+ String truststoreToUse = sslConfigProps.get(SSL_TRUSTSTORE);
+ String truststorePasswordToUse = sslConfigProps.get(SSL_TRUSTSTORE_PASSWORD);
// Ciphers are not passed to HttpsURLConnection. Could not find a clean way
// to pass this attribute to socket layer (see #51645)
- String sslCiphersToUse = sslConfigProps.get(CLUSTER_SSL_CIPHERS);
- String sslProtocolsToUse = sslConfigProps.get(CLUSTER_SSL_PROTOCOLS);
+ String sslCiphersToUse = sslConfigProps.get(SSL_CIPHERS);
+ String sslProtocolsToUse = sslConfigProps.get(SSL_PROTOCOLS);
// Commenting the code to set cipher suites in GFSH rest connect (see #51645)
/*
@@ -665,17 +673,17 @@ public class ShellCommands implements GfshCommand {
if (keystoreToUse != null && keystoreToUse.length() > 0) {
if (keystorePasswordToUse == null || keystorePasswordToUse.length() == 0) {
// Check whether specified in gfsecurity props earlier
- keystorePasswordToUse = sslConfigProps.get(Gfsh.SSL_KEYSTORE_PASSWORD);
+ keystorePasswordToUse = sslConfigProps.get(SSL_KEYSTORE_PASSWORD);
if (keystorePasswordToUse == null || keystorePasswordToUse.length() == 0) {
// not even in properties file, prompt user for it
keystorePasswordToUse =
gfshInstance.readPassword(CliStrings.CONNECT__KEY_STORE_PASSWORD + ": ");
- sslConfigProps.put(Gfsh.SSL_KEYSTORE_PASSWORD, keystorePasswordToUse);
+ sslConfigProps.put(SSL_KEYSTORE_PASSWORD, keystorePasswordToUse);
}
} else {// For cases where password is already part of command option
- sslConfigProps.put(Gfsh.SSL_KEYSTORE_PASSWORD, keystorePasswordToUse);
+ sslConfigProps.put(SSL_KEYSTORE_PASSWORD, keystorePasswordToUse);
}
- sslConfigProps.put(Gfsh.SSL_KEYSTORE, keystoreToUse);
+ sslConfigProps.put(SSL_KEYSTORE, keystoreToUse);
}
if (numTimesPrompted > 0) {
@@ -684,17 +692,17 @@ public class ShellCommands implements GfshCommand {
if (truststoreToUse != null && truststoreToUse.length() > 0) {
if (truststorePasswordToUse == null || truststorePasswordToUse.length() == 0) {
// Check whether specified in gfsecurity props earlier?
- truststorePasswordToUse = sslConfigProps.get(Gfsh.SSL_TRUSTSTORE_PASSWORD);
+ truststorePasswordToUse = sslConfigProps.get(SSL_TRUSTSTORE_PASSWORD);
if (truststorePasswordToUse == null || truststorePasswordToUse.length() == 0) {
// not even in properties file, prompt user for it
truststorePasswordToUse =
gfshInstance.readPassword(CliStrings.CONNECT__TRUST_STORE_PASSWORD + ": ");
- sslConfigProps.put(Gfsh.SSL_TRUSTSTORE_PASSWORD, truststorePasswordToUse);
+ sslConfigProps.put(SSL_TRUSTSTORE_PASSWORD, truststorePasswordToUse);
}
} else {// For cases where password is already part of command option
- sslConfigProps.put(Gfsh.SSL_TRUSTSTORE_PASSWORD, truststorePasswordToUse);
+ sslConfigProps.put(SSL_TRUSTSTORE_PASSWORD, truststorePasswordToUse);
}
- sslConfigProps.put(Gfsh.SSL_TRUSTSTORE, truststoreToUse);
+ sslConfigProps.put(SSL_TRUSTSTORE, truststoreToUse);
}
if (numTimesPrompted > 0) {
@@ -702,7 +710,7 @@ public class ShellCommands implements GfshCommand {
}
if (sslCiphersToUse != null && sslCiphersToUse.length() > 0) {
// sslConfigProps.put(DistributionConfig.CLUSTER_SSL_CIPHERS_NAME, sslCiphersToUse);
- sslConfigProps.put(Gfsh.SSL_ENABLED_CIPHERS, sslCiphersToUse);
+ sslConfigProps.put(SSL_ENABLED_CIPHERS, sslCiphersToUse);
}
if (numTimesPrompted > 0) {
@@ -710,7 +718,7 @@ public class ShellCommands implements GfshCommand {
}
if (sslProtocolsToUse != null && sslProtocolsToUse.length() > 0) {
// sslConfigProps.put(DistributionConfig.CLUSTER_SSL_PROTOCOLS_NAME, sslProtocolsToUse);
- sslConfigProps.put(Gfsh.SSL_ENABLED_PROTOCOLS, sslProtocolsToUse);
+ sslConfigProps.put(SSL_ENABLED_PROTOCOLS, sslProtocolsToUse);
}
// SSL is required to be used but no SSL config found
http://git-wip-us.apache.org/repos/asf/geode/blob/6267efea/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorSSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorSSLDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorSSLDUnitTest.java
index 844e032..866f4ef 100644
--- a/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorSSLDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorSSLDUnitTest.java
@@ -14,18 +14,6 @@
*/
package org.apache.geode.management;
-import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_ENABLED;
-import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_KEYSTORE;
-import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_KEYSTORE_PASSWORD;
-import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_KEYSTORE_TYPE;
-import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_TRUSTSTORE;
-import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_TRUSTSTORE_PASSWORD;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_ENABLED;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_KEYSTORE;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_KEYSTORE_PASSWORD;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_KEYSTORE_TYPE;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_TRUSTSTORE;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD;
import static org.apache.geode.distributed.ConfigurationProperties.SSL_CIPHERS;
import static org.apache.geode.distributed.ConfigurationProperties.SSL_ENABLED_COMPONENTS;
import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE;
@@ -33,9 +21,20 @@ import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_
import static org.apache.geode.distributed.ConfigurationProperties.SSL_PROTOCOLS;
import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE;
import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE_PASSWORD;
-import static org.apache.geode.internal.Assert.assertTrue;
import static org.apache.geode.util.test.TestUtil.getResourcePath;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TemporaryFolder;
+
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.security.SecurableCommunicationChannels;
import org.apache.geode.test.dunit.Host;
@@ -45,18 +44,6 @@ import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TemporaryFolder;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.util.Properties;
@Category(DistributedTest.class)
public class ConnectToLocatorSSLDUnitTest {
@@ -66,88 +53,52 @@ public class ConnectToLocatorSSLDUnitTest {
@Rule
public RuleChain ruleChain =
- RuleChain.outerRule(cleanupDUnitVMsRule).around(folder).around(lsRule);
+ RuleChain.outerRule(folder).around(cleanupDUnitVMsRule).around(lsRule);
private File jks = null;
- private File securityPropsFile = null;
+ protected File securityPropsFile = null;
private Properties securityProps;
+ protected MemberVM locator;
@Before
public void before() throws Exception {
- this.jks = new File(getResourcePath(getClass(), "/ssl/trusted.keystore"));
+ jks = new File(getResourcePath(getClass(), "/ssl/trusted.keystore"));
securityPropsFile = folder.newFile("security.properties");
securityProps = new Properties();
}
- @After
- public void after() throws Exception {
- securityPropsFile.delete();
- }
-
- private void setUpLocatorAndConnect(Properties securityProps) throws Exception {
- MemberVM locator = lsRule.startLocatorVM(0, securityProps);
-
- // saving the securityProps to a file
- OutputStream out = new FileOutputStream(securityPropsFile);
- securityProps.store(out, null);
-
-
- /*
- * When using SSL, the GfshShellConnectionRule seems to leave behind state in the JVM that
- * causes test flakinesss. (Each test method will pass if run in isolation, but when all run
- * together, the second and third tests will fail.) To avoid this issue, we connect to our
- * locator from a remote VM which is cleaned up by the CleanupDUnitVMsRule in between tests.
- */
-
+ protected void connect() throws Exception {
final int locatorPort = locator.getPort();
final String securityPropsFilePath = securityPropsFile.getCanonicalPath();
+
+ // when gfsh uses SSL, it leaves SSL state behind to contaminate other tests. So we pushed
+ // gfsh into a VM and uses a CleanupDUnitVM rule to clean it up after each test.
Host.getHost(0).getVM(1).invoke(() -> {
GfshShellConnectionRule gfshConnector = new GfshShellConnectionRule();
- try {
- gfshConnector.connectAndVerify(locatorPort, GfshShellConnectionRule.PortType.locator,
- CliStrings.CONNECT__SECURITY_PROPERTIES, securityPropsFilePath);
- } finally {
- gfshConnector.close();
- }
+ gfshConnector.connectAndVerify(locatorPort, GfshShellConnectionRule.PortType.locator,
+ CliStrings.CONNECT__SECURITY_PROPERTIES, securityPropsFilePath);
+ gfshConnector.executeAndVerifyCommand("list members");
+ gfshConnector.close();
});
+
}
@Test
- public void testConnectToLocatorWithSSLJMX() throws Exception {
- securityProps.setProperty(SSL_ENABLED_COMPONENTS, SecurableCommunicationChannels.JMX);
+ public void testConnectToLocator_withSSL() throws Exception {
+ securityProps.setProperty(SSL_ENABLED_COMPONENTS, SecurableCommunicationChannels.ALL);
securityProps.setProperty(SSL_KEYSTORE, jks.getCanonicalPath());
securityProps.setProperty(SSL_KEYSTORE_PASSWORD, "password");
- // securityProps.setProperty(SSL_KEYSTORE_TYPE, "JKS");
securityProps.setProperty(SSL_TRUSTSTORE, jks.getCanonicalPath());
securityProps.setProperty(SSL_TRUSTSTORE_PASSWORD, "password");
securityProps.setProperty(SSL_PROTOCOLS, "TLSv1.2");
securityProps.setProperty(SSL_CIPHERS, "any");
- setUpLocatorAndConnect(securityProps);
- }
-
- @Test
- public void testConnectToLocatorWithLegacyClusterSSL() throws Exception {
- securityProps.setProperty(CLUSTER_SSL_ENABLED, "true");
- securityProps.setProperty(CLUSTER_SSL_KEYSTORE, jks.getCanonicalPath());
- securityProps.setProperty(CLUSTER_SSL_KEYSTORE_PASSWORD, "password");
- securityProps.setProperty(CLUSTER_SSL_KEYSTORE_TYPE, "JKS");
- securityProps.setProperty(CLUSTER_SSL_TRUSTSTORE, jks.getCanonicalPath());
- securityProps.setProperty(CLUSTER_SSL_TRUSTSTORE_PASSWORD, "password");
-
- setUpLocatorAndConnect(securityProps);
- }
-
- @Test
- public void testConnectToLocatorWithLegacyJMXSSL() throws Exception {
- securityProps.setProperty(JMX_MANAGER_SSL_ENABLED, "true");
- securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE, jks.getCanonicalPath());
- securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE_PASSWORD, "password");
- securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE_TYPE, "JKS");
- securityProps.setProperty(JMX_MANAGER_SSL_TRUSTSTORE, jks.getCanonicalPath());
- securityProps.setProperty(JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD, "password");
+ // start up the locator
+ locator = lsRule.startLocatorVM(0, securityProps);
+ // saving the securityProps to a file
+ OutputStream out = new FileOutputStream(securityPropsFile);
+ securityProps.store(out, null);
- setUpLocatorAndConnect(securityProps);
+ connect();
}
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/6267efea/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorWithLegacySSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorWithLegacySSLDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorWithLegacySSLDUnitTest.java
new file mode 100644
index 0000000..d7db489
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/ConnectToLocatorWithLegacySSLDUnitTest.java
@@ -0,0 +1,118 @@
+/*
+ * 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;
+
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_ENABLED;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_KEYSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_KEYSTORE_PASSWORD;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_KEYSTORE_TYPE;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_TRUSTSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.CLUSTER_SSL_TRUSTSTORE_PASSWORD;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_ENABLED;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_KEYSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_KEYSTORE_PASSWORD;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_KEYSTORE_TYPE;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_TRUSTSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD;
+import static org.apache.geode.util.test.TestUtil.getResourcePath;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TemporaryFolder;
+
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.rules.CleanupDUnitVMsRule;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
+import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
+import org.apache.geode.test.dunit.rules.MemberVM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
+
+@Category(DistributedTest.class)
+public class ConnectToLocatorWithLegacySSLDUnitTest {
+ private TemporaryFolder folder = new SerializableTemporaryFolder();
+ private LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
+ private CleanupDUnitVMsRule cleanupDUnitVMsRule = new CleanupDUnitVMsRule();
+
+ @Rule
+ public RuleChain ruleChain =
+ RuleChain.outerRule(folder).around(cleanupDUnitVMsRule).around(lsRule);
+
+ private File jks = null;
+ protected File securityPropsFile = null;
+ private Properties securityProps;
+ protected MemberVM locator;
+
+ @Before
+ public void before() throws Exception {
+ jks = new File(getResourcePath(getClass(), "/ssl/trusted.keystore"));
+ securityPropsFile = folder.newFile("security.properties");
+ securityProps = new Properties();
+ }
+
+ protected void startUpLocatorAndConnect(Properties properties) throws Exception {
+ locator = lsRule.startLocatorVM(0, securityProps);
+ // saving the securityProps to a file
+ OutputStream out = new FileOutputStream(securityPropsFile);
+ securityProps.store(out, null);
+
+ final int locatorPort = locator.getPort();
+ final String securityPropsFilePath = securityPropsFile.getCanonicalPath();
+
+ // when gfsh uses SSL, it leaves SSL state behind to contaminate other tests. So we pushed
+ // gfsh into a VM and uses a CleanupDUnitVM rule to clean it up after each test.
+ Host.getHost(0).getVM(1).invoke(() -> {
+ GfshShellConnectionRule gfshConnector = new GfshShellConnectionRule();
+ gfshConnector.connectAndVerify(locatorPort, GfshShellConnectionRule.PortType.locator,
+ CliStrings.CONNECT__SECURITY_PROPERTIES, securityPropsFilePath);
+ gfshConnector.executeAndVerifyCommand("list members");
+ gfshConnector.close();
+ });
+ }
+
+ @Test
+ public void testConnectToLocator_withLegacyClusterSSL() throws Exception {
+ securityProps.setProperty(CLUSTER_SSL_ENABLED, "true");
+ securityProps.setProperty(CLUSTER_SSL_KEYSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(CLUSTER_SSL_KEYSTORE_PASSWORD, "password");
+ securityProps.setProperty(CLUSTER_SSL_KEYSTORE_TYPE, "JKS");
+ securityProps.setProperty(CLUSTER_SSL_TRUSTSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(CLUSTER_SSL_TRUSTSTORE_PASSWORD, "password");
+
+ startUpLocatorAndConnect(securityProps);
+ }
+
+ @Test
+ public void testConnectToLocator_withLegacyJMXManagerSSL() throws Exception {
+ securityProps.setProperty(JMX_MANAGER_SSL_ENABLED, "true");
+ securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE_PASSWORD, "password");
+ securityProps.setProperty(JMX_MANAGER_SSL_KEYSTORE_TYPE, "JKS");
+ securityProps.setProperty(JMX_MANAGER_SSL_TRUSTSTORE, jks.getCanonicalPath());
+ securityProps.setProperty(JMX_MANAGER_SSL_TRUSTSTORE_PASSWORD, "password");
+
+ startUpLocatorAndConnect(securityProps);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/6267efea/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
index df371d2..e7f17ef 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
@@ -225,7 +225,9 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
public CommandResult executeAndVerifyCommand(String command) throws Exception {
CommandResult result = executeCommand(command);
- assertThat(result.getStatus()).isEqualTo(Result.Status.OK);
+ assertThat(result.getStatus())
+ .describedAs("Failure in command: " + command + "\n Result " + result)
+ .isEqualTo(Result.Status.OK);
return result;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/6267efea/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectToLocatorSSLOverHttpTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectToLocatorSSLOverHttpTest.java b/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectToLocatorSSLOverHttpTest.java
new file mode 100644
index 0000000..e5b8d25
--- /dev/null
+++ b/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ConnectToLocatorSSLOverHttpTest.java
@@ -0,0 +1,43 @@
+/*
+ * 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 javax.net.ssl.HttpsURLConnection;
+
+import org.apache.geode.management.ConnectToLocatorSSLDUnitTest;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
+
+public class ConnectToLocatorSSLOverHttpTest extends ConnectToLocatorSSLDUnitTest {
+
+ protected void connect() throws Exception {
+ final int httpPort = locator.getHttpPort();
+ final String securityPropsFilePath = securityPropsFile.getCanonicalPath();
+ Host.getHost(0).getVM(1).invoke(() -> {
+ // Our SSL certificate used for tests does not match the hostname "localhost"
+ HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
+
+ GfshShellConnectionRule gfshConnector = new GfshShellConnectionRule();
+ gfshConnector.connectAndVerify(httpPort, GfshShellConnectionRule.PortType.http,
+ CliStrings.CONNECT__SECURITY_PROPERTIES, securityPropsFilePath,
+ CliStrings.CONNECT__USE_SSL, "true");
+ gfshConnector.executeAndVerifyCommand("list members");
+ gfshConnector.close();
+ });
+ }
+}
+
[27/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
GEODE-3271: Separating WanCommands into multiple command classes
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/e1befef4
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/e1befef4
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/e1befef4
Branch: refs/heads/feature/GEODE-3299
Commit: e1befef474c81391ff73319de9c675ec238f8b93
Parents: 06b44db
Author: YehEmily <em...@gmail.com>
Authored: Wed Jul 19 13:16:03 2017 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Wed Jul 26 15:39:46 2017 -0700
----------------------------------------------------------------------
.../commands/CreateGatewayReceiverCommand.java | 125 ++
.../commands/CreateGatewaySenderCommand.java | 159 +++
.../commands/DestroyGatewaySenderCommand.java | 90 ++
.../cli/commands/GatewayCommandsUtils.java | 46 +
.../cli/commands/ListGatewayCommand.java | 165 +++
.../LoadBalanceGatewaySenderCommand.java | 104 ++
.../cli/commands/PauseGatewaySenderCommand.java | 119 ++
.../commands/ResumeGatewaySenderCommand.java | 119 ++
.../commands/StartGatewayReceiverCommand.java | 115 ++
.../cli/commands/StartGatewaySenderCommand.java | 167 +++
.../commands/StatusGatewayReceiverCommand.java | 112 ++
.../commands/StatusGatewaySenderCommand.java | 131 ++
.../commands/StopGatewayReceiverCommand.java | 114 ++
.../cli/commands/StopGatewaySenderCommand.java | 113 ++
.../internal/cli/commands/WanCommands.java | 1137 ------------------
.../web/controllers/WanCommandsController.java | 24 +-
...ndDestroyGatewaySenderCommandsDUnitTest.java | 532 ++++++++
.../CreateGatewayReceiverCommandDUnitTest.java | 506 ++++++++
.../CreateGatewaySenderCommandDUnitTest.java | 148 +++
.../DestroyGatewaySenderCommandDUnitTest.java | 75 ++
.../PauseGatewaySenderCommandDUnitTest.java | 233 ++++
.../ResumeGatewaySenderCommandDUnitTest.java | 263 ++++
.../StartGatewayReceiverCommandDUnitTest.java | 224 ++++
.../StartGatewaySenderCommandDUnitTest.java | 275 +++++
.../StatusGatewayReceiverCommandDUnitTest.java | 206 ++++
.../StatusGatewaySenderCommandDUnitTest.java | 251 ++++
.../StopGatewayReceiverCommandDUnitTest.java | 221 ++++
.../StopGatewaySenderCommandDUnitTest.java | 236 ++++
.../wan/wancommand/WANCommandTestBase.java | 55 +-
...mandCreateDestroyGatewaySenderDUnitTest.java | 794 ------------
...anCommandCreateGatewayReceiverDUnitTest.java | 584 ---------
...WanCommandGatewayReceiverStartDUnitTest.java | 266 ----
.../WanCommandGatewayReceiverStopDUnitTest.java | 266 ----
.../WanCommandGatewaySenderStartDUnitTest.java | 327 -----
.../WanCommandGatewaySenderStopDUnitTest.java | 287 -----
.../WanCommandPauseResumeDUnitTest.java | 553 ---------
.../wancommand/WanCommandStatusDUnitTest.java | 535 --------
37 files changed, 4904 insertions(+), 4773 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommand.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..a07aee1
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewayReceiverCommand.java
@@ -0,0 +1,125 @@
+/*
+ * 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.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
+import org.apache.geode.management.internal.cli.functions.GatewayReceiverCreateFunction;
+import org.apache.geode.management.internal.cli.functions.GatewayReceiverFunctionArgs;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class CreateGatewayReceiverCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.CREATE_GATEWAYRECEIVER,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result createGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__GROUP__HELP) String[] onGroups,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART__HELP) Boolean manualStart,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT__HELP) Integer startPort,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT__HELP) Integer endPort,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS__HELP) String bindAddress,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS__HELP) Integer maximumTimeBetweenPings,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER,
+ help = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilters) {
+
+ Result result;
+
+ AtomicReference<XmlEntity> xmlEntity = new AtomicReference<>();
+ try {
+ GatewayReceiverFunctionArgs gatewayReceiverFunctionArgs =
+ new GatewayReceiverFunctionArgs(manualStart, startPort, endPort, bindAddress,
+ socketBufferSize, maximumTimeBetweenPings, gatewayTransportFilters);
+
+ Set<DistributedMember> membersToCreateGatewayReceiverOn =
+ CliUtil.findMembers(onGroups, onMember);
+
+ if (membersToCreateGatewayReceiverOn.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ ResultCollector<?, ?> resultCollector =
+ CliUtil.executeFunction(GatewayReceiverCreateFunction.INSTANCE,
+ gatewayReceiverFunctionArgs, membersToCreateGatewayReceiverOn);
+ @SuppressWarnings("unchecked")
+ List<CliFunctionResult> gatewayReceiverCreateResults =
+ (List<CliFunctionResult>) resultCollector.getResult();
+
+ TabularResultData tabularResultData = ResultBuilder.createTabularResultData();
+ final String errorPrefix = "ERROR: ";
+
+ for (CliFunctionResult gatewayReceiverCreateResult : gatewayReceiverCreateResults) {
+ boolean success = gatewayReceiverCreateResult.isSuccessful();
+ tabularResultData.accumulate("Member", gatewayReceiverCreateResult.getMemberIdOrName());
+ tabularResultData.accumulate("Status",
+ (success ? "" : errorPrefix) + gatewayReceiverCreateResult.getMessage());
+
+ if (success && xmlEntity.get() == null) {
+ xmlEntity.set(gatewayReceiverCreateResult.getXmlEntity());
+ }
+ }
+ result = ResultBuilder.buildResult(tabularResultData);
+ } catch (IllegalArgumentException e) {
+ LogWrapper.getInstance().info(e.getMessage());
+ result = ResultBuilder.createUserErrorResult(e.getMessage());
+ }
+
+ if (xmlEntity.get() != null) {
+ persistClusterConfiguration(result,
+ () -> getSharedConfiguration().addXmlEntity(xmlEntity.get(), onGroups));
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommand.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..5b4073d
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateGatewaySenderCommand.java
@@ -0,0 +1,159 @@
+/*
+ * 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.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
+import org.apache.geode.management.internal.cli.functions.GatewaySenderCreateFunction;
+import org.apache.geode.management.internal.cli.functions.GatewaySenderFunctionArgs;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class CreateGatewaySenderCommand implements GfshCommand {
+ public CreateGatewaySenderCommand() {}
+
+ @CliCommand(value = CliStrings.CREATE_GATEWAYSENDER, help = CliStrings.CREATE_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result 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,
+ help = CliStrings.CREATE_GATEWAYSENDER__ID__HELP) String id,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID, mandatory = true,
+ help = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID__HELP) Integer remoteDistributedSystemId,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__PARALLEL,
+ help = CliStrings.CREATE_GATEWAYSENDER__PARALLEL__HELP) Boolean parallel,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART,
+ help = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART__HELP) Boolean manualStart,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE,
+ help = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT,
+ help = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT__HELP) Integer socketReadTimeout,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION,
+ help = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION__HELP) Boolean enableBatchConflation,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE,
+ help = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE__HELP) Integer batchSize,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL,
+ help = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL__HELP) Integer batchTimeInterval,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE,
+ 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,
+ help = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS__HELP) Boolean diskSynchronous,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY,
+ help = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY__HELP) Integer maxQueueMemory,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD,
+ help = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD__HELP) Integer alertThreshold,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS,
+ help = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS__HELP) Integer dispatcherThreads,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY,
+ help = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY__HELP) String orderPolicy,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER,
+ help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER__HELP) String[] gatewayEventFilters,
+
+ @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER,
+ help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilter) {
+
+ Result result;
+
+ AtomicReference<XmlEntity> xmlEntity = new AtomicReference<XmlEntity>();
+ try {
+ GatewaySenderFunctionArgs gatewaySenderFunctionArgs = new GatewaySenderFunctionArgs(id,
+ remoteDistributedSystemId, parallel, manualStart, socketBufferSize, socketReadTimeout,
+ enableBatchConflation, batchSize, batchTimeInterval, enablePersistence, diskStoreName,
+ diskSynchronous, maxQueueMemory, alertThreshold, dispatcherThreads, orderPolicy,
+ gatewayEventFilters, gatewayTransportFilter);
+
+ Set<DistributedMember> membersToCreateGatewaySenderOn =
+ CliUtil.findMembers(onGroups, onMember);
+
+ if (membersToCreateGatewaySenderOn.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ ResultCollector<?, ?> resultCollector =
+ CliUtil.executeFunction(GatewaySenderCreateFunction.INSTANCE, gatewaySenderFunctionArgs,
+ membersToCreateGatewaySenderOn);
+ @SuppressWarnings("unchecked")
+ List<CliFunctionResult> gatewaySenderCreateResults =
+ (List<CliFunctionResult>) resultCollector.getResult();
+
+ TabularResultData tabularResultData = ResultBuilder.createTabularResultData();
+ final String errorPrefix = "ERROR: ";
+ for (CliFunctionResult gatewaySenderCreateResult : gatewaySenderCreateResults) {
+ boolean success = gatewaySenderCreateResult.isSuccessful();
+ tabularResultData.accumulate("Member", gatewaySenderCreateResult.getMemberIdOrName());
+ tabularResultData.accumulate("Status",
+ (success ? "" : errorPrefix) + gatewaySenderCreateResult.getMessage());
+
+ if (success && xmlEntity.get() == null) {
+ xmlEntity.set(gatewaySenderCreateResult.getXmlEntity());
+ }
+ }
+ result = ResultBuilder.buildResult(tabularResultData);
+ } catch (IllegalArgumentException e) {
+ LogWrapper.getInstance().info(e.getMessage());
+ result = ResultBuilder.createUserErrorResult(e.getMessage());
+ }
+
+ if (xmlEntity.get() != null) {
+ persistClusterConfiguration(result,
+ () -> getSharedConfiguration().addXmlEntity(xmlEntity.get(), onGroups));
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommand.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..97b4a95
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyGatewaySenderCommand.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.util.List;
+import java.util.Set;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
+import org.apache.geode.management.internal.cli.functions.GatewaySenderDestroyFunction;
+import org.apache.geode.management.internal.cli.functions.GatewaySenderDestroyFunctionArgs;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class DestroyGatewaySenderCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.DESTROY_GATEWAYSENDER,
+ help = CliStrings.DESTROY_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result destroyGatewaySender(
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.DESTROY_GATEWAYSENDER__GROUP__HELP) String[] onGroups,
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.DESTROY_GATEWAYSENDER__MEMBER__HELP) String[] onMember,
+ @CliOption(key = CliStrings.DESTROY_GATEWAYSENDER__ID, mandatory = true,
+ optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.DESTROY_GATEWAYSENDER__ID__HELP) String id) {
+ Result result;
+ try {
+ GatewaySenderDestroyFunctionArgs gatewaySenderDestroyFunctionArgs =
+ new GatewaySenderDestroyFunctionArgs(id);
+
+ Set<DistributedMember> membersToDestroyGatewaySenderOn =
+ CliUtil.findMembers(onGroups, onMember);
+
+ if (membersToDestroyGatewaySenderOn.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ ResultCollector<?, ?> resultCollector =
+ CliUtil.executeFunction(GatewaySenderDestroyFunction.INSTANCE,
+ gatewaySenderDestroyFunctionArgs, membersToDestroyGatewaySenderOn);
+ @SuppressWarnings("unchecked")
+ List<CliFunctionResult> gatewaySenderDestroyResults =
+ (List<CliFunctionResult>) resultCollector.getResult();
+
+ TabularResultData tabularResultData = ResultBuilder.createTabularResultData();
+ final String errorPrefix = "ERROR: ";
+ for (CliFunctionResult gatewaySenderDestroyResult : gatewaySenderDestroyResults) {
+ boolean success = gatewaySenderDestroyResult.isSuccessful();
+ tabularResultData.accumulate("Member", gatewaySenderDestroyResult.getMemberIdOrName());
+ tabularResultData.accumulate("Status",
+ (success ? "" : errorPrefix) + gatewaySenderDestroyResult.getMessage());
+ }
+ result = ResultBuilder.buildResult(tabularResultData);
+ } catch (IllegalArgumentException e) {
+ LogWrapper.getInstance().info(e.getMessage());
+ result = ResultBuilder.createUserErrorResult(e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GatewayCommandsUtils.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GatewayCommandsUtils.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GatewayCommandsUtils.java
new file mode 100644
index 0000000..d6e03c1
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GatewayCommandsUtils.java
@@ -0,0 +1,46 @@
+/*
+ * 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 org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.CommandResultException;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+
+public class GatewayCommandsUtils {
+ public static void accumulateStartResult(TabularResultData resultData, String member,
+ String Status, String message) {
+ if (member != null) {
+ resultData.accumulate("Member", member);
+ }
+ resultData.accumulate("Result", Status);
+ resultData.accumulate("Message", message);
+ }
+
+ static Result handleCommandResultException(CommandResultException crex) {
+ Result result;
+ if (crex.getResult() != null) {
+ result = crex.getResult();
+ } else {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(crex));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + crex.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommand.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..81fa027
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListGatewayCommand.java
@@ -0,0 +1,165 @@
+/*
+ * 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.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.DistributedSystemMXBean;
+import org.apache.geode.management.GatewayReceiverMXBean;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.MBeanJMXAdapter;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+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.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class ListGatewayCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.LIST_GATEWAY, help = CliStrings.LIST_GATEWAY__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.READ)
+ public Result listGateway(
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.LIST_GATEWAY__MEMBER__HELP) String[] onMember,
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.LIST_GATEWAY__GROUP__HELP) String[] onGroup) {
+
+ Result result;
+ InternalCache cache = getCache();
+ try {
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans = new TreeMap<>();
+ Map<String, GatewayReceiverMXBean> gatewayReceiverBeans = new TreeMap<>();
+
+ DistributedSystemMXBean dsMXBean = service.getDistributedSystemMXBean();
+ for (DistributedMember member : dsMembers) {
+ String memberName = member.getName();
+ String memberNameOrId =
+ (memberName != null && !memberName.isEmpty()) ? memberName : member.getId();
+ ObjectName gatewaySenderObjectNames[] =
+ dsMXBean.listGatewaySenderObjectNames(memberNameOrId);
+ // gateway senders : a member can have multiple gateway senders defined
+ // on it
+ if (gatewaySenderObjectNames != null) {
+ for (ObjectName name : gatewaySenderObjectNames) {
+ GatewaySenderMXBean senderBean = service.getMBeanProxy(name, GatewaySenderMXBean.class);
+ if (senderBean != null) {
+ if (gatewaySenderBeans.containsKey(senderBean.getSenderId())) {
+ Map<String, GatewaySenderMXBean> memberToBeanMap =
+ gatewaySenderBeans.get(senderBean.getSenderId());
+ memberToBeanMap.put(member.getId(), senderBean);
+ } else {
+ Map<String, GatewaySenderMXBean> memberToBeanMap = new TreeMap<>();
+ memberToBeanMap.put(member.getId(), senderBean);
+ gatewaySenderBeans.put(senderBean.getSenderId(), memberToBeanMap);
+ }
+ }
+ }
+ }
+ // gateway receivers : a member can have only one gateway receiver
+ ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
+ if (gatewayReceiverObjectName != null) {
+ GatewayReceiverMXBean receiverBean;
+ receiverBean =
+ service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
+ if (receiverBean != null) {
+ gatewayReceiverBeans.put(member.getId(), receiverBean);
+ }
+ }
+ }
+ if (gatewaySenderBeans.isEmpty() && gatewayReceiverBeans.isEmpty()) {
+ return ResultBuilder
+ .createUserErrorResult(CliStrings.GATEWAYS_ARE_NOT_AVAILABLE_IN_CLUSTER);
+ }
+ CompositeResultData crd = ResultBuilder.createCompositeResultData();
+ crd.setHeader(CliStrings.HEADER_GATEWAYS);
+ accumulateListGatewayResult(crd, gatewaySenderBeans, gatewayReceiverBeans);
+ result = ResultBuilder.buildResult(crd);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+
+ private void accumulateListGatewayResult(CompositeResultData crd,
+ Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans,
+ Map<String, GatewayReceiverMXBean> gatewayReceiverBeans) {
+ if (!gatewaySenderBeans.isEmpty()) {
+ TabularResultData gatewaySenderData = crd.addSection(CliStrings.SECTION_GATEWAY_SENDER)
+ .addTable(CliStrings.TABLE_GATEWAY_SENDER).setHeader(CliStrings.HEADER_GATEWAY_SENDER);
+ for (Map.Entry<String, Map<String, GatewaySenderMXBean>> entry : gatewaySenderBeans
+ .entrySet()) {
+ for (Map.Entry<String, GatewaySenderMXBean> memberToBean : entry.getValue().entrySet()) {
+ gatewaySenderData.accumulate(CliStrings.RESULT_GATEWAY_SENDER_ID, entry.getKey());
+ gatewaySenderData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberToBean.getKey());
+ gatewaySenderData.accumulate(CliStrings.RESULT_REMOTE_CLUSTER,
+ memberToBean.getValue().getRemoteDSId());
+ gatewaySenderData.accumulate(CliStrings.RESULT_TYPE, memberToBean.getValue().isParallel()
+ ? CliStrings.SENDER_PARALLEL : CliStrings.SENDER_SERIAL);
+ gatewaySenderData.accumulate(CliStrings.RESULT_STATUS, memberToBean.getValue().isRunning()
+ ? CliStrings.GATEWAY_RUNNING : CliStrings.GATEWAY_NOT_RUNNING);
+ gatewaySenderData.accumulate(CliStrings.RESULT_QUEUED_EVENTS,
+ memberToBean.getValue().getEventQueueSize());
+ gatewaySenderData.accumulate(CliStrings.RESULT_RECEIVER,
+ memberToBean.getValue().getGatewayReceiver());
+ }
+ }
+ }
+
+ if (!gatewayReceiverBeans.isEmpty()) {
+ TabularResultData gatewayReceiverData = crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER)
+ .addTable(CliStrings.TABLE_GATEWAY_RECEIVER)
+ .setHeader(CliStrings.HEADER_GATEWAY_RECEIVER);
+ for (Map.Entry<String, GatewayReceiverMXBean> entry : gatewayReceiverBeans.entrySet()) {
+ gatewayReceiverData.accumulate(CliStrings.RESULT_HOST_MEMBER, entry.getKey());
+ gatewayReceiverData.accumulate(CliStrings.RESULT_PORT, entry.getValue().getPort());
+ gatewayReceiverData.accumulate(CliStrings.RESULT_SENDERS_COUNT,
+ entry.getValue().getClientConnectionCount());
+ gatewayReceiverData.accumulate(CliStrings.RESULT_SENDER_CONNECTED,
+ entry.getValue().getConnectedGatewaySenders());
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LoadBalanceGatewaySenderCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LoadBalanceGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LoadBalanceGatewaySenderCommand.java
new file mode 100644
index 0000000..c076ba2
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LoadBalanceGatewaySenderCommand.java
@@ -0,0 +1,104 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class LoadBalanceGatewaySenderCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.LOAD_BALANCE_GATEWAYSENDER,
+ help = CliStrings.LOAD_BALANCE_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result loadBalanceGatewaySender(@CliOption(key = CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID,
+ mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID__HELP) String senderId) {
+
+ Result result;
+ if (senderId != null) {
+ senderId = senderId.trim();
+ }
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+ Set<DistributedMember> dsMembers = CliUtil.getAllNormalMembers(cache);
+
+ if (dsMembers.isEmpty()) {
+ result = ResultBuilder.createInfoResult(CliStrings.GATEWAY_MSG_MEMBERS_NOT_FOUND);
+ } else {
+ boolean gatewaySenderExists = false;
+ for (DistributedMember member : dsMembers) {
+ GatewaySenderMXBean bean;
+ if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
+ bean = service.getLocalGatewaySenderMXBean(senderId);
+ } else {
+ ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
+ bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+ }
+ if (bean != null) {
+ gatewaySenderExists = true;
+ bean.rebalance();
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_OK,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_REBALANCED_ON_MEMBER_1, senderId,
+ member.getId()));
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1,
+ senderId, member.getId()));
+ }
+ }
+ if (gatewaySenderExists) {
+ result = ResultBuilder.buildResult(resultData);
+ } else {
+ result = ResultBuilder.createInfoResult(CliStrings.format(
+ CliStrings.GATEWAY_SENDER_0_IS_NOT_FOUND_ON_ANY_MEMBER, new Object[] {senderId}));
+ }
+ }
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PauseGatewaySenderCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PauseGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PauseGatewaySenderCommand.java
new file mode 100644
index 0000000..60124eb
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PauseGatewaySenderCommand.java
@@ -0,0 +1,119 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class PauseGatewaySenderCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.PAUSE_GATEWAYSENDER, help = CliStrings.PAUSE_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result pauseGatewaySender(@CliOption(key = CliStrings.PAUSE_GATEWAYSENDER__ID,
+ mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.PAUSE_GATEWAYSENDER__ID__HELP) String senderId,
+
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.PAUSE_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.PAUSE_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+ if (senderId != null) {
+ senderId = senderId.trim();
+ }
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ GatewaySenderMXBean bean;
+
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
+ bean = service.getLocalGatewaySenderMXBean(senderId);
+ } else {
+ ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
+ bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+ }
+ if (bean != null) {
+ if (bean.isRunning()) {
+ if (bean.isPaused()) {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_ALREADY_PAUSED_ON_MEMBER_1,
+ senderId, member.getId()));
+ } else {
+ bean.pause();
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_OK, CliStrings.format(
+ CliStrings.GATEWAY_SENDER_0_IS_PAUSED_ON_MEMBER_1, senderId, member.getId()));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ }
+ result = ResultBuilder.buildResult(resultData);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ResumeGatewaySenderCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ResumeGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ResumeGatewaySenderCommand.java
new file mode 100644
index 0000000..b6a49c9
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ResumeGatewaySenderCommand.java
@@ -0,0 +1,119 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class ResumeGatewaySenderCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.RESUME_GATEWAYSENDER, help = CliStrings.RESUME_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result resumeGatewaySender(@CliOption(key = CliStrings.RESUME_GATEWAYSENDER__ID,
+ mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.RESUME_GATEWAYSENDER__ID__HELP) String senderId,
+
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.RESUME_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.RESUME_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+ if (senderId != null) {
+ senderId = senderId.trim();
+ }
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ GatewaySenderMXBean bean;
+
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
+ bean = service.getLocalGatewaySenderMXBean(senderId);
+ } else {
+ ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
+ bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+ }
+ if (bean != null) {
+ if (bean.isRunning()) {
+ if (bean.isPaused()) {
+ bean.resume();
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_OK,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_RESUMED_ON_MEMBER_1, senderId,
+ member.getId()));
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_PAUSED_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ }
+ result = ResultBuilder.buildResult(resultData);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewayReceiverCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewayReceiverCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewayReceiverCommand.java
new file mode 100644
index 0000000..b3402f5
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewayReceiverCommand.java
@@ -0,0 +1,115 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewayReceiverMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.MBeanJMXAdapter;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.CommandResultException;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class StartGatewayReceiverCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.START_GATEWAYRECEIVER,
+ help = CliStrings.START_GATEWAYRECEIVER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result startGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.START_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.START_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) {
+ Result result;
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ GatewayReceiverMXBean receiverBean;
+
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
+
+ if (gatewayReceiverObjectName != null) {
+ receiverBean =
+ service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
+ if (receiverBean != null) {
+ if (receiverBean.isRunning()) {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_ALREADY_STARTED_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ } else {
+ receiverBean.start();
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_OK,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_STARTED_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ }
+ }
+ result = ResultBuilder.buildResult(resultData);
+ } catch (CommandResultException crex) {
+ result = GatewayCommandsUtils.handleCommandResultException(crex);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewaySenderCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewaySenderCommand.java
new file mode 100644
index 0000000..986260a
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartGatewaySenderCommand.java
@@ -0,0 +1,167 @@
+/*
+ * 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.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class StartGatewaySenderCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.START_GATEWAYSENDER, help = CliStrings.START_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result startGatewaySender(@CliOption(key = CliStrings.START_GATEWAYSENDER__ID,
+ mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.START_GATEWAYSENDER__ID__HELP) String senderId,
+
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.START_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.START_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+ final String id = senderId.trim();
+
+ try {
+ final InternalCache cache = getCache();
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ ExecutorService execService = Executors.newCachedThreadPool(new ThreadFactory() {
+ AtomicInteger threadNum = new AtomicInteger();
+
+ public Thread newThread(final Runnable r) {
+ Thread result =
+ new Thread(r, "Start Sender Command Thread " + threadNum.incrementAndGet());
+ result.setDaemon(true);
+ return result;
+ }
+ });
+
+ List<Callable<List>> callables = new ArrayList<>();
+
+ for (final DistributedMember member : dsMembers) {
+
+ callables.add(() -> {
+
+ GatewaySenderMXBean bean;
+ ArrayList<String> statusList = new ArrayList<>();
+ if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
+ bean = service.getLocalGatewaySenderMXBean(id);
+ } else {
+ ObjectName objectName = service.getGatewaySenderMBeanName(member, id);
+ bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+ }
+ if (bean != null) {
+ if (bean.isRunning()) {
+ statusList.add(member.getId());
+ statusList.add(CliStrings.GATEWAY_ERROR);
+ statusList.add(CliStrings.format(
+ CliStrings.GATEWAY_SENDER_0_IS_ALREADY_STARTED_ON_MEMBER_1, id, member.getId()));
+ } else {
+ bean.start();
+ statusList.add(member.getId());
+ statusList.add(CliStrings.GATEWAY_OK);
+ statusList.add(CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_STARTED_ON_MEMBER_1,
+ id, member.getId()));
+ }
+ } else {
+ statusList.add(member.getId());
+ statusList.add(CliStrings.GATEWAY_ERROR);
+ statusList.add(CliStrings.format(
+ CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, id, member.getId()));
+ }
+ return statusList;
+
+ });
+ }
+
+ Iterator<DistributedMember> memberIterator = dsMembers.iterator();
+ List<Future<List>> futures = null;
+
+ try {
+ futures = execService.invokeAll(callables);
+ } catch (InterruptedException ite) {
+ GatewayCommandsUtils.accumulateStartResult(resultData, null, CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_COULD_NOT_BE_INVOKED_DUE_TO_1, id,
+ ite.getMessage()));
+ }
+
+ for (Future<List> future : futures) {
+ DistributedMember member = memberIterator.next();
+ List<String> memberStatus;
+ try {
+ memberStatus = future.get();
+ GatewayCommandsUtils.accumulateStartResult(resultData, memberStatus.get(0),
+ memberStatus.get(1), memberStatus.get(2));
+ } catch (InterruptedException | ExecutionException ite) {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_COULD_NOT_BE_STARTED_ON_MEMBER_DUE_TO_1,
+ id, ite.getMessage()));
+ }
+ }
+ execService.shutdown();
+ result = ResultBuilder.buildResult(resultData);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewayReceiverCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewayReceiverCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewayReceiverCommand.java
new file mode 100644
index 0000000..c1fdaaf
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewayReceiverCommand.java
@@ -0,0 +1,112 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewayReceiverMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.MBeanJMXAdapter;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+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.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class StatusGatewayReceiverCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.STATUS_GATEWAYRECEIVER,
+ help = CliStrings.STATUS_GATEWAYRECEIVER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.READ)
+ public Result statusGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.STATUS_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ CompositeResultData crd = ResultBuilder.createCompositeResultData();
+ TabularResultData availableReceiverData =
+ crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .addTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+
+ TabularResultData notAvailableReceiverData =
+ crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE)
+ .addTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
+ if (gatewayReceiverObjectName != null) {
+ GatewayReceiverMXBean receiverBean =
+ service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
+ if (receiverBean != null) {
+ buildReceiverStatus(member.getId(), receiverBean, availableReceiverData);
+ continue;
+ }
+ }
+ buildReceiverStatus(member.getId(), null, notAvailableReceiverData);
+ }
+ result = ResultBuilder.buildResult(crd);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+
+ private TabularResultData buildReceiverStatus(String memberId, GatewayReceiverMXBean bean,
+ TabularResultData resultData) {
+ resultData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberId);
+ if (bean != null) {
+ resultData.accumulate(CliStrings.RESULT_PORT, bean.getPort());
+ resultData.accumulate(CliStrings.RESULT_STATUS,
+ bean.isRunning() ? CliStrings.GATEWAY_RUNNING : CliStrings.GATEWAY_NOT_RUNNING);
+ } else {
+ resultData.accumulate(CliStrings.GATEWAY_ERROR,
+ CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_OR_STOPPED);
+ }
+ return resultData;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewaySenderCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewaySenderCommand.java
new file mode 100644
index 0000000..f694705
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StatusGatewaySenderCommand.java
@@ -0,0 +1,131 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+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.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class StatusGatewaySenderCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.STATUS_GATEWAYSENDER, help = CliStrings.STATUS_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.READ)
+ public Result statusGatewaySender(@CliOption(key = CliStrings.STATUS_GATEWAYSENDER__ID,
+ mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.STATUS_GATEWAYSENDER__ID__HELP) String senderId,
+
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.STATUS_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.STATUS_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+ if (senderId != null) {
+ senderId = senderId.trim();
+ }
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ GatewaySenderMXBean bean;
+
+ CompositeResultData crd = ResultBuilder.createCompositeResultData();
+ TabularResultData availableSenderData =
+ crd.addSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .addTable(CliStrings.TABLE_GATEWAY_SENDER);
+
+ TabularResultData notAvailableSenderData =
+ crd.addSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+ .addTable(CliStrings.TABLE_GATEWAY_SENDER);
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
+ bean = service.getLocalGatewaySenderMXBean(senderId);
+ } else {
+ ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
+ bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+ }
+ if (bean != null) {
+ buildSenderStatus(member.getId(), bean, availableSenderData);
+ } else {
+ buildSenderStatus(member.getId(), bean, notAvailableSenderData);
+ }
+ }
+ result = ResultBuilder.buildResult(crd);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+
+ private TabularResultData buildSenderStatus(String memberId, GatewaySenderMXBean bean,
+ TabularResultData resultData) {
+ resultData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberId);
+ if (bean != null) {
+ resultData.accumulate(CliStrings.RESULT_TYPE,
+ bean.isParallel() ? CliStrings.SENDER_PARALLEL : CliStrings.SENDER_SERIAL);
+ if (!bean.isParallel()) {
+ resultData.accumulate(CliStrings.RESULT_POLICY,
+ bean.isPrimary() ? CliStrings.SENDER_PRIMARY : CliStrings.SENDER_SECONADRY);
+ }
+ if (bean.isRunning()) {
+ if (bean.isPaused()) {
+ resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.SENDER_PAUSED);
+ } else {
+ resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.GATEWAY_RUNNING);
+ }
+ } else {
+ resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.GATEWAY_NOT_RUNNING);
+ }
+ } else {
+ resultData.accumulate(CliStrings.GATEWAY_ERROR, CliStrings.GATEWAY_SENDER_IS_NOT_AVAILABLE);
+ }
+
+ return resultData;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewayReceiverCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewayReceiverCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewayReceiverCommand.java
new file mode 100644
index 0000000..49b2454
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewayReceiverCommand.java
@@ -0,0 +1,114 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewayReceiverMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.MBeanJMXAdapter;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.CommandResultException;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class StopGatewayReceiverCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.STOP_GATEWAYRECEIVER, help = CliStrings.STOP_GATEWAYRECEIVER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result stopGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.STOP_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.STOP_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ GatewayReceiverMXBean receiverBean;
+
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
+
+ if (gatewayReceiverObjectName != null) {
+ receiverBean =
+ service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
+ if (receiverBean != null) {
+ if (receiverBean.isRunning()) {
+ receiverBean.stop();
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_OK,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_STOPPED_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_RUNNING_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
+ new Object[] {member.getId()}));
+ }
+ }
+ result = ResultBuilder.buildResult(resultData);
+ } catch (CommandResultException crex) {
+ result = GatewayCommandsUtils.handleCommandResultException(crex);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+}
[08/50] [abbrv] geode git commit: GEODE-3296: Speed up Acceptance
Tests
Posted by kl...@apache.org.
GEODE-3296: Speed up Acceptance Tests
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/b8891128
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/b8891128
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/b8891128
Branch: refs/heads/feature/GEODE-3299
Commit: b8891128959df5e5a5621f4567a9d4f43b9b1647
Parents: 289a085
Author: Jared Stewart <js...@pivotal.io>
Authored: Tue Jul 25 09:53:28 2017 -0700
Committer: Jared Stewart <js...@pivotal.io>
Committed: Wed Jul 26 09:04:06 2017 -0700
----------------------------------------------------------------------
geode-assembly/build.gradle | 8 ++++++++
gradle/test.gradle | 13 +++----------
2 files changed, 11 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/b8891128/geode-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 69f1f19..a76afdc 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -104,6 +104,14 @@ sourceSets {
//test.runtimeClasspath -= configurations.provided
}
+task acceptanceTest(type:Test) {
+ useJUnit {
+ includeCategories 'org.apache.geode.test.junit.categories.AcceptanceTest'
+ }
+ forkEvery 1
+}
+
+
test {
// test from the actual classpath not the gradle classpath
dependsOn installDist
http://git-wip-us.apache.org/repos/asf/geode/blob/b8891128/gradle/test.gradle
----------------------------------------------------------------------
diff --git a/gradle/test.gradle b/gradle/test.gradle
index 741c64e..1b92a52 100644
--- a/gradle/test.gradle
+++ b/gradle/test.gradle
@@ -124,13 +124,6 @@ subprojects {
reports.junitXml.destination = file "$buildDir/test-reports-flaky"
}
- task acceptanceTest(type:Test) {
- useJUnit {
- includeCategories 'org.apache.geode.test.junit.categories.AcceptanceTest'
- }
- forkEvery 1
- }
-
task securityTest(type:Test) {
useJUnit {
includeCategories 'org.apache.geode.test.junit.categories.SecurityTest'
@@ -272,7 +265,7 @@ subprojects {
def now = new Date().format('yyyy-MM-dd HH:mm:ss.SSS Z')
progress << "$now Completed test $desc.className $desc.name with result: ${result.resultType}$eol"
}
-
+
doFirst {
resultsDir.deleteDir()
resultsDir.mkdirs()
@@ -282,12 +275,12 @@ subprojects {
})
// Make precheckin task run all validation tests for checking in code.
- task precheckin (dependsOn: [ build, acceptanceTest, integrationTest, distributedTest, flakyTest ]) {
+ task precheckin (dependsOn: [ build, ":geode-assembly:acceptanceTest", integrationTest, distributedTest, flakyTest ]) {
description 'Run this task before checking in code to validate changes. This task combines the following tasks: build, integrationTest, distributedTest, and flakyTest'
}
check.dependsOn checkMissedTests
- combineReports.mustRunAfter check, test, acceptanceTest, integrationTest, distributedTest, flakyTest, checkMissedTests
+ combineReports.mustRunAfter check, test, ":geode-assembly:acceptanceTest", integrationTest, distributedTest, flakyTest, checkMissedTests
[build, check, test, integrationTest, distributedTest, flakyTest, checkMissedTests].each {it.finalizedBy combineReports}
}
[12/50] [abbrv] geode git commit: GEODE-2654: Backups can capture
different members from different points in time Online backup now takes a
backup from a single point in time. This is done by making all write
operations get a backup lock which causes the
Posted by kl...@apache.org.
GEODE-2654: Backups can capture different members from different points in time
Online backup now takes a backup from a single point in time.
This is done by making all write operations get a backup lock which causes them to
wait until the oplogs are rolled by backup.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/f1326be5
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/f1326be5
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/f1326be5
Branch: refs/heads/feature/GEODE-3299
Commit: f1326be55c54e96d75fe8ec6391aa4581f312f86
Parents: bf8971c
Author: Lynn Gallinat <lg...@pivotal.io>
Authored: Thu Jun 22 11:34:37 2017 -0700
Committer: Lynn Gallinat <lg...@pivotal.io>
Committed: Wed Jul 26 12:02:09 2017 -0700
----------------------------------------------------------------------
.../apache/geode/internal/cache/BackupLock.java | 66 +-
.../geode/internal/cache/DiskInitFile.java | 287 +++----
.../geode/internal/cache/DiskStoreImpl.java | 16 +-
.../org/apache/geode/internal/cache/Oplog.java | 764 ++++++++++---------
.../BackupPrepareAndFinishMsgDUnitTest.java | 571 ++++++++++++++
.../geode/codeAnalysis/excludedClasses.txt | 1 +
.../codeAnalysis/sanctionedSerializables.txt | 1 -
7 files changed, 1187 insertions(+), 519 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/main/java/org/apache/geode/internal/cache/BackupLock.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/BackupLock.java b/geode-core/src/main/java/org/apache/geode/internal/cache/BackupLock.java
index 4b4fb10..f531860 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/BackupLock.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/BackupLock.java
@@ -28,54 +28,72 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class BackupLock extends ReentrantLock {
- private Thread backupThread;
+ private final ThreadLocal<Boolean> isBackupThread = new ThreadLocal<Boolean>();
boolean isBackingUp;
Condition backupDone = super.newCondition();
+ // test hook
+ private BackupLockTestHook hook = null;
+
+ public interface BackupLockTestHook {
+ /**
+ * Test hook called before the wait for backup to complete
+ */
+ public void beforeWaitForBackupCompletion();
+ }
+
+ public void setBackupLockTestHook(BackupLockTestHook testHook) {
+ hook = testHook;
+ }
+
public void lockForBackup() {
super.lock();
isBackingUp = true;
super.unlock();
}
- public void setBackupThread(Thread thread) {
- super.lock();
- backupThread = thread;
- super.unlock();
+ public void setBackupThread() {
+ isBackupThread.set(true);
}
public void unlockForBackup() {
super.lock();
isBackingUp = false;
- backupThread = null;
+ isBackupThread.set(false);
backupDone.signalAll();
super.unlock();
}
- /**
- * Acquire this lock, waiting for an in progress backup if one is in progress.
- */
+ public boolean isCurrentThreadDoingBackup() {
+ Boolean result = isBackupThread.get();
+ return (result != null) && result;
+ }
+
@Override
- public void lock() {
- lock(true);
+ public void unlock() {
+ // The backup thread does not need to unlock this lock since it never gets the lock. It is the
+ // only thread that has permission to modify disk files during backup.
+ if (!isCurrentThreadDoingBackup()) {
+ super.unlock();
+ }
}
/**
- * Acquire this lock, Optionally waiting for a backup to finish the first phase. Any operations
- * that update metadata related to the distributed system state should pass true for this flag,
- * because we need to make sure we get a point in time snapshot of the init files across members
- * to for metadata consistentency.
+ * Acquire this lock, waiting for a backup to finish the first phase.
*
- * Updates which update only record changes to the local state on this member(eg, switching
- * oplogs), do not need to wait for the backup.
- *
- * @param waitForBackup if true, we will wait for an in progress backup before acquiring this
- * lock.
*/
- public void lock(boolean waitForBackup) {
- super.lock();
- while (isBackingUp && waitForBackup && !(Thread.currentThread() == backupThread)) {
- backupDone.awaitUninterruptibly();
+ @Override
+ public void lock() {
+ // The backup thread is a noop; it does not need to get the lock since it is the only thread
+ // with permission to modify disk files during backup
+ if (!isCurrentThreadDoingBackup()) {
+ super.lock();
+ while (isBackingUp) {
+ if (hook != null) {
+ hook.beforeWaitForBackupCompletion();
+ }
+ backupDone.awaitUninterruptibly();
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/main/java/org/apache/geode/internal/cache/DiskInitFile.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DiskInitFile.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DiskInitFile.java
index 0925d28..33aa0b5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DiskInitFile.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DiskInitFile.java
@@ -14,6 +14,34 @@
*/
package org.apache.geode.internal.cache;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.DataOutput;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.RandomAccessFile;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantLock;
+
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
@@ -21,10 +49,13 @@ import it.unimi.dsi.fastutil.longs.LongIterator;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.objects.ObjectIterator;
import org.apache.commons.io.FileUtils;
+import org.apache.logging.log4j.Logger;
+
import org.apache.geode.CancelCriterion;
import org.apache.geode.CancelException;
import org.apache.geode.DataSerializer;
import org.apache.geode.Instantiator;
+import org.apache.geode.InternalGemFireException;
import org.apache.geode.cache.DiskAccessException;
import org.apache.geode.cache.EvictionAction;
import org.apache.geode.cache.EvictionAlgorithm;
@@ -52,34 +83,6 @@ import org.apache.geode.internal.concurrent.ConcurrentHashSet;
import org.apache.geode.internal.i18n.LocalizedStrings;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.logging.log4j.LogMarker;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.RandomAccessFile;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
/**
* Does all the IF file work for a DiskStoreImpl.
@@ -96,6 +99,8 @@ public class DiskInitFile implements DiskInitFileInterpreter {
public static final byte END_OF_RECORD_ID = 21;
static final int OPLOG_FILE_ID_REC_SIZE = 1 + 8 + 1;
+ private final ReentrantLock lock = new ReentrantLock();
+
/**
* Written to IF Byte Format: 8: leastSigBits of UUID 8: mostSigBits of UUID 1: EndOfRecordMarker
*/
@@ -381,11 +386,19 @@ public class DiskInitFile implements DiskInitFileInterpreter {
transient private boolean gotEOF;
- /**
- * Lock used to synchronize access to the init file. This is a lock rather than a synchronized
- * block because the backup tool needs to acquire this lock.
- */
- private final BackupLock lock = new BackupLock();
+ private void lock(boolean useBackupLock) {
+ if (useBackupLock) {
+ getDiskStore().getBackupLock().lock();
+ }
+ this.lock.lock();
+ }
+
+ private void unlock(boolean useBackupLock) {
+ if (useBackupLock) {
+ getDiskStore().getBackupLock().unlock();
+ }
+ this.lock.unlock();
+ }
private void recoverFromFailedCompaction() {
File tmpFile = getTempFile();
@@ -530,11 +543,11 @@ public class DiskInitFile implements DiskInitFileInterpreter {
private int liveRegions = 0; // added for bug 41618
public boolean hasLiveRegions() {
- lock.lock(false);
+ lock(false);
try {
return this.liveRegions > 0;
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -817,7 +830,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
DiskRegionView takeDiskRegionByName(String name) {
- lock.lock(false);
+ lock(false);
try {
DiskRegionView result = this.drMapByName.remove(name);
if (result != null) {
@@ -825,16 +838,16 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
return result;
} finally {
- lock.unlock();
+ unlock(false);
}
}
Map<Long, PlaceHolderDiskRegion> getDRMap() {
- lock.lock(false);
+ lock(false);
try {
return new HashMap<Long, PlaceHolderDiskRegion>(drMap);
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -843,7 +856,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
DiskRegionStats stats, CancelCriterion cancel, DiskExceptionHandler exceptionHandler,
RegionAttributes ra, EnumSet<DiskRegionFlag> flags, String partitionName,
int startingBucketId, Compressor compressor, boolean offHeap) {
- lock.lock(false);
+ lock(true);
try {
// need to call the constructor and addDiskRegion while synced
DiskRegion result = new DiskRegion(dsi, name, isBucket, isPersistBackup, overflowEnabled,
@@ -852,21 +865,21 @@ public class DiskInitFile implements DiskInitFileInterpreter {
dsi.addDiskRegion(result);
return result;
} finally {
- lock.unlock();
+ unlock(true);
}
}
DiskRegionView getDiskRegionByName(String name) {
- lock.lock(false);
+ lock(false);
try {
return this.drMapByName.get(name);
} finally {
- lock.unlock();
+ unlock(false);
}
}
DiskRegionView getDiskRegionByPrName(String name) {
- lock.lock(false);
+ lock(false);
try {
for (PlaceHolderDiskRegion dr : this.drMapByName.values()) {
if (dr.isBucket()) {
@@ -877,7 +890,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
return null;
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -1249,7 +1262,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
private void saveInstantiator(int id, String instantiatorClassName,
String instantiatedClassName) {
- lock.lock();
+ lock(true);
try {
if (!this.compactInProgress && this.instIds.contains(id)) {
// instantiator already written to disk so just return
@@ -1273,7 +1286,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
.toLocalizedString(ex),
this.parent);
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -1308,7 +1321,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
* Write the specified DataSerializer to the file.
*/
private void saveDataSerializer(DataSerializer ds) {
- lock.lock();
+ lock(true);
try {
if (!this.compactInProgress && this.dsIds.contains(ds.getId())) {
// dataSerializer already written to disk so just return
@@ -1327,7 +1340,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
.toLocalizedString(ex),
this.parent);
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -1412,7 +1425,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
private static final double COMPACT_RATIO = 0.5;
private void compactIfNeeded() {
- lock.lock(false);
+ lock(true);
try {
if (this.compactInProgress)
return;
@@ -1428,7 +1441,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
} catch (IOException ignore) {
return;
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -1441,7 +1454,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
private void compact() {
- lock.lock(false);
+ lock(true);
this.compactInProgress = true;
try {
try {
@@ -1501,16 +1514,16 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
} finally {
this.compactInProgress = false;
- lock.unlock();
+ unlock(true);
}
}
public void copyTo(File targetDir) throws IOException {
- lock.lock(false);
+ lock(false);
try {
FileUtils.copyFileToDirectory(this.ifFile, targetDir);
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -1569,7 +1582,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
* Write all live data to the init file
*/
private void writeLiveData() {
- lock.lock(false);
+ lock(true);
try {
this.ifLiveRecordCount = 0;
this.ifTotalRecordCount = 0;
@@ -1594,7 +1607,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
this.ifTotalRecordCount);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -1646,7 +1659,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
private void writeDiskStoreId() {
- lock.lock();
+ lock(true);
try {
ByteBuffer bb = getIFWriteBuffer(1 + 6 + 1);
bb.put(OPLOG_MAGIC_SEQ_ID);
@@ -1669,7 +1682,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
throw dae;
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -1916,7 +1929,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
void closeRegion(DiskRegionView dr) {
- lock.lock();
+ lock(true);
try {
this.parent.rmById(dr.getId()); // fix for bug 41334
PlaceHolderDiskRegion phdr = new PlaceHolderDiskRegion(dr);
@@ -1924,12 +1937,12 @@ public class DiskInitFile implements DiskInitFileInterpreter {
this.drMapByName.put(dr.getName(), phdr);
// @todo make sure we only have one instance of the region for this name
} finally {
- lock.unlock();
+ unlock(true);
}
}
void clearRegion(DiskRegionView dr, long clearOplogEntryId) {
- lock.lock();
+ lock(true);
try {
if (clearOplogEntryId != DiskStoreImpl.INVALID_ID) {
this.ifTotalRecordCount++;
@@ -1945,7 +1958,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
writeIFRecord(IFREC_CLEAR_REGION_ID, dr, clearOplogEntryId);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -1953,7 +1966,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
* Clear the region using an RVV.
*/
void clearRegion(DiskRegion dr, RegionVersionVector rvv) {
- lock.lock();
+ lock(true);
try {
this.ifTotalRecordCount++;
if (dr.getClearRVV() == null) {
@@ -1964,7 +1977,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
dr.setClearRVV(rvv);
writeClearRecord(dr, rvv);
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -2001,7 +2014,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
void createRegion(DiskRegionView drv) {
- lock.lock();
+ lock(true);
try {
if (!drv.isRecreated()) {
writeIFRecord(IFREC_CREATE_REGION_ID, drv, drv.getName());
@@ -2015,24 +2028,24 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void beginDestroyRegion(DiskRegionView dr) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
cmnBeginDestroyRegion(dr);
writeIFRecord(IFREC_BEGIN_DESTROY_REGION_ID, dr);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void endDestroyRegion(DiskRegionView dr) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
cmnEndDestroyRegion(dr);
@@ -2043,127 +2056,127 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void beginDestroyDataStorage(DiskRegionView dr) {
- lock.lock();
+ lock(true);
try {
assert regionStillCreated(dr);
cmnBeginPartialDestroyRegion(dr);
writeIFRecord(IFREC_BEGIN_PARTIAL_DESTROY_REGION_ID, dr);
} finally {
- lock.unlock();
+ unlock(true);
}
}
void endDestroyDataStorage(DiskRegionView dr) {
- lock.lock();
+ lock(true);
try {
assert regionStillCreated(dr);
cmnEndPartialDestroyRegion(dr);
writeIFRecord(IFREC_END_PARTIAL_DESTROY_REGION_ID, dr);
} finally {
- lock.unlock();
+ unlock(true);
}
}
public void createPersistentPR(String name, PRPersistentConfig config) {
- lock.lock();
+ lock(true);
try {
if (cmnPRCreate(name, config)) {
writePRCreate(name, config);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
public void destroyPersistentPR(String name) {
- lock.lock();
+ lock(true);
try {
if (cmnPRDestroy(name)) {
writePRDestroy(name);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
public PRPersistentConfig getPersistentPR(String name) {
- lock.lock(false);
+ lock(false);
try {
return prMap.get(name);
} finally {
- lock.unlock();
+ unlock(false);
}
}
public Map<String, PRPersistentConfig> getAllPRs() {
- lock.lock(false);
+ lock(false);
try {
return new HashMap<String, PRPersistentConfig>(prMap);
} finally {
- lock.unlock();
+ unlock(false);
}
}
void crfCreate(long oplogId) {
- lock.lock(false);
+ lock(true);
try {
cmnCrfCreate(oplogId);
writeIFRecord(IFREC_CRF_CREATE, oplogId);
} finally {
- lock.unlock();
+ unlock(true);
}
}
void drfCreate(long oplogId) {
- lock.lock(false);
+ lock(true);
try {
cmnDrfCreate(oplogId);
writeIFRecord(IFREC_DRF_CREATE, oplogId);
} finally {
- lock.unlock();
+ unlock(true);
}
}
void krfCreate(long oplogId) {
- lock.lock(false);
+ lock(true);
try {
cmnKrfCreate(oplogId);
writeIFRecord(IFREC_KRF_CREATE, oplogId);
} finally {
- lock.unlock();
+ unlock(true);
}
}
void crfDelete(long oplogId) {
- lock.lock(false);
+ lock(true);
try {
if (cmnCrfDelete(oplogId)) {
// call writeIFRecord AFTER cmnCrfDelete to fix bug 41505
writeIFRecord(IFREC_CRF_DELETE, oplogId);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void drfDelete(long oplogId) {
- lock.lock(false);
+ lock(true);
try {
if (cmnDrfDelete(oplogId)) {
writeIFRecord(IFREC_DRF_DELETE, oplogId);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
int getOrCreateCanonicalId(Object object) {
- lock.lock(false);
+ lock(true);
try {
int id = canonicalIdHolder.getId(object);
if (id <= 0) {
@@ -2172,21 +2185,21 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
return id;
} finally {
- lock.unlock();
+ unlock(true);
}
}
Object getCanonicalObject(int id) {
- lock.lock(false);
+ lock(false);
try {
return canonicalIdHolder.getObject(id);
} finally {
- lock.unlock();
+ unlock(false);
}
}
void close() {
- lock.lock();
+ lock(true);
try {
if (this.closed)
return;
@@ -2203,17 +2216,17 @@ public class DiskInitFile implements DiskInitFileInterpreter {
basicDestroy();
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void destroy() {
- lock.lock();
+ lock(true);
try {
close();
basicDestroy();
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -2229,31 +2242,31 @@ public class DiskInitFile implements DiskInitFileInterpreter {
void addMyInitializingPMID(DiskRegionView dr, PersistentMemberID pmid) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
cmnAddMyInitializingPMID(dr, pmid);
writePMIDRecord(IFREC_MY_MEMBER_INITIALIZING_ID, dr, pmid, false);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void markInitialized(DiskRegionView dr) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
writeIFRecord(IFREC_MY_MEMBER_INITIALIZED_ID, dr);
cmnMarkInitialized(dr);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void addOnlinePMID(DiskRegionView dr, PersistentMemberID pmid) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
if (dr.addOnlineMember(pmid)) {
@@ -2264,12 +2277,12 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void addOfflinePMID(DiskRegionView dr, PersistentMemberID pmid) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
if (dr.addOfflineMember(pmid)) {
@@ -2280,12 +2293,12 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void addOfflineAndEqualPMID(DiskRegionView dr, PersistentMemberID pmid) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
if (dr.addOfflineAndEqualMember(pmid)) {
@@ -2296,12 +2309,12 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
void rmPMID(DiskRegionView dr, PersistentMemberID pmid) {
- lock.lock();
+ lock(true);
try {
if (regionStillCreated(dr)) {
if (dr.rmOnlineMember(pmid) || dr.rmOfflineMember(pmid) || dr.rmEqualMember(pmid)) {
@@ -2312,7 +2325,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -2323,7 +2336,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
return;
}
- lock.lock();
+ lock(true);
try {
if (cmnRevokeDiskStoreId(revokedPattern)) {
// we now have two records to gc (this one and the live one we removed).
@@ -2332,7 +2345,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
writeRevokedMember(revokedPattern);
}
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -2340,12 +2353,12 @@ public class DiskInitFile implements DiskInitFileInterpreter {
* Get the set of members known to be revoked
*/
public Set<PersistentMemberPattern> getRevokedIDs() {
- lock.lock(false);
+ lock(false);
try {
// Return a copy of the set, because we modify it in place.
return new HashSet<PersistentMemberPattern>(this.revokedMembers);
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -2354,21 +2367,21 @@ public class DiskInitFile implements DiskInitFileInterpreter {
* Return true if the given dr is still created in this IF.
*/
boolean regionStillCreated(DiskRegionView dr) {
- lock.lock(false);
+ lock(false);
try {
return getDiskRegionById(dr.getId()) != null;
} finally {
- lock.unlock();
+ unlock(false);
}
}
boolean regionExists(long drId) {
- lock.lock(false);
+ lock(false);
try {
// @todo make drMap concurrent so this call can be fast
return this.drMap.containsKey(drId);
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -2386,11 +2399,11 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
Collection<DiskRegionView> getKnown() {
- lock.lock(false);
+ lock(false);
try {
return new ArrayList<DiskRegionView>(this.drMap.values());
} finally {
- lock.unlock();
+ unlock(false);
}
}
@@ -2585,7 +2598,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
public void destroyPRRegion(String prName) {
ArrayList<PlaceHolderDiskRegion> buckets = new ArrayList<PlaceHolderDiskRegion>();
- lock.lock();
+ lock(true);
try {
for (PlaceHolderDiskRegion dr : this.drMapByName.values()) {
if (dr.isBucket()) {
@@ -2595,7 +2608,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
}
} finally {
- lock.unlock();
+ unlock(true);
}
for (PlaceHolderDiskRegion dr : buckets) {
endDestroyRegion(dr);
@@ -2612,7 +2625,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
String offHeapOption, boolean printToConsole) {
StringBuffer sb = new StringBuffer();
ArrayList<PlaceHolderDiskRegion> buckets = new ArrayList<PlaceHolderDiskRegion>();
- lock.lock();
+ lock(true);
try {
for (PlaceHolderDiskRegion dr : this.drMapByName.values()) {
if (dr.isBucket()) {
@@ -2633,7 +2646,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
printInfo = false;
}
} finally {
- lock.unlock();
+ unlock(true);
}
return sb.toString();
}
@@ -2642,13 +2655,13 @@ public class DiskInitFile implements DiskInitFileInterpreter {
String lruLimitOption, String concurrencyLevelOption, String initialCapacityOption,
String loadFactorOption, String compressorClassNameOption, String statisticsEnabledOption,
String offHeapOption, boolean printToConsole) {
- lock.lock();
+ lock(true);
try {
return basicModifyRegion(false, drv, lruOption, lruActionOption, lruLimitOption,
concurrencyLevelOption, initialCapacityOption, loadFactorOption,
compressorClassNameOption, statisticsEnabledOption, offHeapOption, printToConsole);
} finally {
- lock.unlock();
+ unlock(true);
}
}
@@ -2770,20 +2783,8 @@ public class DiskInitFile implements DiskInitFileInterpreter {
return message;
}
- public void lockForBackup() {
- lock.lockForBackup();
- }
-
- public void unlockForBackup() {
- lock.unlockForBackup();
- }
-
- public void setBackupThread(Thread thread) {
- lock.setBackupThread(thread);
- }
-
private void writeGemfireVersion(Version version) {
- lock.lock();
+ lock(true);
try {
ByteBuffer bb = getIFWriteBuffer(1 + 3 + 1);
bb.put(IFREC_GEMFIRE_VERSION);
@@ -2799,7 +2800,7 @@ public class DiskInitFile implements DiskInitFileInterpreter {
}
throw dae;
} finally {
- lock.unlock();
+ unlock(true);
}
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
index 3e97d0e..94d1253 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java
@@ -4002,6 +4002,16 @@ public class DiskStoreImpl implements DiskStore {
private final HashMap<String, LRUStatistics> prlruStatMap = new HashMap<String, LRUStatistics>();
+ /**
+ * Lock used to synchronize access to the init file. This is a lock rather than a synchronized
+ * block because the backup tool needs to acquire this lock.
+ */
+ private final BackupLock backupLock = new BackupLock();
+
+ public BackupLock getBackupLock() {
+ return backupLock;
+ }
+
LRUStatistics getOrCreatePRLRUStats(PlaceHolderDiskRegion dr) {
String prName = dr.getPrName();
LRUStatistics result = null;
@@ -4046,14 +4056,14 @@ public class DiskStoreImpl implements DiskStore {
// level operations, we will need to be careful
// to block them *before* they are put in the async
// queue
- getDiskInitFile().lockForBackup();
+ getBackupLock().lockForBackup();
}
/**
* Release the lock that is preventing operations on this disk store during the backup process.
*/
public void releaseBackupLock() {
- getDiskInitFile().unlockForBackup();
+ getBackupLock().unlockForBackup();
}
/**
@@ -4063,7 +4073,7 @@ public class DiskStoreImpl implements DiskStore {
*/
public void startBackup(File targetDir, BackupInspector baselineInspector,
RestoreScript restoreScript) throws IOException {
- getDiskInitFile().setBackupThread(Thread.currentThread());
+ getBackupLock().setBackupThread();
boolean done = false;
try {
for (;;) {
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/main/java/org/apache/geode/internal/cache/Oplog.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/Oplog.java b/geode-core/src/main/java/org/apache/geode/internal/cache/Oplog.java
index 5399d5a..80f19b5 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/Oplog.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/Oplog.java
@@ -688,6 +688,8 @@ public class Oplog implements CompactableOplog, Flushable {
public void replaceIncompatibleEntry(DiskRegionView dr, DiskEntry old, DiskEntry repl) {
boolean useNextOplog = false;
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock) {
if (getOplogSet().getChild() != this) {
// make sure to only call replaceIncompatibleEntry for child, because
@@ -1159,6 +1161,8 @@ public class Oplog implements CompactableOplog, Flushable {
*/
File getOplogFile() throws SyncFailedException, IOException {
// @todo check callers for drf
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
if (!this.crf.RAFClosed) {
this.crf.raf.getFD().sync();
@@ -3296,6 +3300,8 @@ public class Oplog implements CompactableOplog, Flushable {
private void basicClose(boolean forceDelete) {
flushAll();
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
unpreblow(this.crf, getMaxCrfSize());
if (!this.crf.RAFClosed) {
@@ -3312,6 +3318,8 @@ public class Oplog implements CompactableOplog, Flushable {
}
this.closed = true;
}
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* drf */) {
unpreblow(this.drf, getMaxDrfSize());
if (!this.drf.RAFClosed) {
@@ -3560,118 +3568,123 @@ public class Oplog implements CompactableOplog, Flushable {
System.out.println("basicCreate KRF_DEBUG");
Thread.sleep(1000);
}
- synchronized (this.lock) { // TODO soplog perf analysis shows this as a
- // contention point
- // synchronized (this.crf) {
- initOpState(OPLOG_NEW_ENTRY_0ID, dr, entry, value, userBits, false);
- // Check if the current data in ByteBuffer will cause a
- // potential increase in the size greater than the max allowed
- long temp = (getOpStateSize() + this.crf.currSize);
- if (!this.wroteNewEntryBase) {
- temp += OPLOG_NEW_ENTRY_BASE_REC_SIZE;
- }
- if (this != getOplogSet().getChild()) {
- useNextOplog = true;
- } else if (temp > getMaxCrfSize() && !isFirstRecord()) {
- switchOpLog(dr, getOpStateSize(), entry);
- useNextOplog = true;
- } else {
- if (this.lockedForKRFcreate) {
- CacheClosedException cce = new CacheClosedException("The disk store is closed.");
- dr.getCancelCriterion().checkCancelInProgress(cce);
- throw cce;
- }
- this.firstRecord = false;
- writeNewEntryBaseRecord(async);
- // Now we can finally call newOplogEntryId.
- // We need to make sure the create records
- // are written in the same order as they are created.
- // This allows us to not encode the oplogEntryId explicitly in the
- // record
- long createOplogEntryId = getOplogSet().newOplogEntryId();
- id.setKeyId(createOplogEntryId);
-
- // startPosForSynchOp = this.crf.currSize;
- // Allow it to be added to the OpLOg so increase the
- // size of currenstartPosForSynchOpt oplog
- int dataLength = getOpStateSize();
- // It is necessary that we set the
- // Oplog ID here without releasing the lock on object as we are
- // writing to the file after releasing the lock. This can cause
- // a situation where the
- // switching thread has added Oplog for compaction while the previous
- // thread has still not started writing. Thus compactor can
- // miss an entry as the oplog Id was not set till then.
- // This is because a compactor thread will iterate over the entries &
- // use only those which have OplogID equal to that of Oplog being
- // compacted without taking any lock. A lock is taken only if the
- // entry is a potential candidate.
- // Further the compactor may delete the file as a compactor thread does
- // not require to take any shared/exclusive lock at DiskStoreImpl
- // or Oplog level.
- // It is also assumed that compactor thread will take a lock on both
- // entry as well as DiskID while compacting. In case of synch
- // mode we can
- // safely set OplogID without taking lock on DiskId. But
- // for asynch mode
- // we have to take additional precaution as the asynch
- // writer of previous
- // oplog can interfere with the current oplog.
- id.setOplogId(getOplogId());
- // do the io while holding lock so that switch can set doneAppending
- // Write the data to the opLog for the synch mode
- startPosForSynchOp = writeOpLogBytes(this.crf, async, true);
- // if (this.crf.currSize != startPosForSynchOp) {
- // assert false;
- // }
- this.crf.currSize = temp;
- if (EntryBits.isNeedsValue(userBits)) {
- id.setValueLength(value.getLength());
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) { // TODO soplog perf analysis shows this as a
+ // contention point
+ // synchronized (this.crf) {
+ initOpState(OPLOG_NEW_ENTRY_0ID, dr, entry, value, userBits, false);
+ // Check if the current data in ByteBuffer will cause a
+ // potential increase in the size greater than the max allowed
+ long temp = (getOpStateSize() + this.crf.currSize);
+ if (!this.wroteNewEntryBase) {
+ temp += OPLOG_NEW_ENTRY_BASE_REC_SIZE;
+ }
+ if (this != getOplogSet().getChild()) {
+ useNextOplog = true;
+ } else if (temp > getMaxCrfSize() && !isFirstRecord()) {
+ switchOpLog(dr, getOpStateSize(), entry);
+ useNextOplog = true;
} else {
- id.setValueLength(0);
- }
- id.setUserBits(userBits);
+ if (this.lockedForKRFcreate) {
+ CacheClosedException cce = new CacheClosedException("The disk store is closed.");
+ dr.getCancelCriterion().checkCancelInProgress(cce);
+ throw cce;
+ }
+ this.firstRecord = false;
+ writeNewEntryBaseRecord(async);
+ // Now we can finally call newOplogEntryId.
+ // We need to make sure the create records
+ // are written in the same order as they are created.
+ // This allows us to not encode the oplogEntryId explicitly in the
+ // record
+ long createOplogEntryId = getOplogSet().newOplogEntryId();
+ id.setKeyId(createOplogEntryId);
+
+ // startPosForSynchOp = this.crf.currSize;
+ // Allow it to be added to the OpLOg so increase the
+ // size of currenstartPosForSynchOpt oplog
+ int dataLength = getOpStateSize();
+ // It is necessary that we set the
+ // Oplog ID here without releasing the lock on object as we are
+ // writing to the file after releasing the lock. This can cause
+ // a situation where the
+ // switching thread has added Oplog for compaction while the previous
+ // thread has still not started writing. Thus compactor can
+ // miss an entry as the oplog Id was not set till then.
+ // This is because a compactor thread will iterate over the entries &
+ // use only those which have OplogID equal to that of Oplog being
+ // compacted without taking any lock. A lock is taken only if the
+ // entry is a potential candidate.
+ // Further the compactor may delete the file as a compactor thread does
+ // not require to take any shared/exclusive lock at DiskStoreImpl
+ // or Oplog level.
+ // It is also assumed that compactor thread will take a lock on both
+ // entry as well as DiskID while compacting. In case of synch
+ // mode we can
+ // safely set OplogID without taking lock on DiskId. But
+ // for asynch mode
+ // we have to take additional precaution as the asynch
+ // writer of previous
+ // oplog can interfere with the current oplog.
+ id.setOplogId(getOplogId());
+ // do the io while holding lock so that switch can set doneAppending
+ // Write the data to the opLog for the synch mode
+ startPosForSynchOp = writeOpLogBytes(this.crf, async, true);
+ // if (this.crf.currSize != startPosForSynchOp) {
+ // assert false;
+ // }
+ this.crf.currSize = temp;
+ if (EntryBits.isNeedsValue(userBits)) {
+ id.setValueLength(value.getLength());
+ } else {
+ id.setValueLength(0);
+ }
+ id.setUserBits(userBits);
- if (logger.isTraceEnabled()) {
- logger.trace("Oplog::basicCreate:Release dByteBuffer with data for Disk ID = {}", id);
- }
- // As such for any put or get operation , a synch is taken
- // on the Entry object in the DiskEntry's Helper functions.
- // Compactor thread will also take a lock on entry object. Therefore
- // we do not require a lock on DiskID, as concurrent access for
- // value will not occur.
- startPosForSynchOp += getOpStateValueOffset();
- if (logger.isTraceEnabled(LogMarker.PERSIST_WRITES)) {
- VersionTag tag = null;
- if (entry.getVersionStamp() != null) {
- tag = entry.getVersionStamp().asVersionTag();
+ if (logger.isTraceEnabled()) {
+ logger.trace("Oplog::basicCreate:Release dByteBuffer with data for Disk ID = {}", id);
}
- logger.trace(LogMarker.PERSIST_WRITES,
- "basicCreate: id=<{}> key=<{}> valueOffset={} userBits={} valueLen={} valueBytes={} drId={} versionTag={} oplog#{}",
- abs(id.getKeyId()), entry.getKey(), startPosForSynchOp, userBits,
- (value != null ? value.getLength() : 0), value.getBytesAsString(), dr.getId(), tag,
- getOplogId());
- }
- id.setOffsetInOplog(startPosForSynchOp);
- addLive(dr, entry);
- // Size of the current oplog being increased
- // due to 'create' operation. Set the change in stats.
- this.dirHolder.incrementTotalOplogSize(dataLength);
- incTotalCount();
-
- // Update the region version vector for the disk store.
- // This needs to be done under lock so that we don't switch oplogs
- // unit the version vector accurately represents what is in this oplog
- RegionVersionVector rvv = dr.getRegionVersionVector();
- if (rvv != null && entry.getVersionStamp() != null) {
- rvv.recordVersion(entry.getVersionStamp().getMemberID(),
- entry.getVersionStamp().getRegionVersion());
- }
-
- EntryLogger.logPersistPut(dr.getName(), entry.getKey(), dr.getDiskStoreID());
+ // As such for any put or get operation , a synch is taken
+ // on the Entry object in the DiskEntry's Helper functions.
+ // Compactor thread will also take a lock on entry object. Therefore
+ // we do not require a lock on DiskID, as concurrent access for
+ // value will not occur.
+ startPosForSynchOp += getOpStateValueOffset();
+ if (logger.isTraceEnabled(LogMarker.PERSIST_WRITES)) {
+ VersionTag tag = null;
+ if (entry.getVersionStamp() != null) {
+ tag = entry.getVersionStamp().asVersionTag();
+ }
+ logger.trace(LogMarker.PERSIST_WRITES,
+ "basicCreate: id=<{}> key=<{}> valueOffset={} userBits={} valueLen={} valueBytes={} drId={} versionTag={} oplog#{}",
+ abs(id.getKeyId()), entry.getKey(), startPosForSynchOp, userBits,
+ (value != null ? value.getLength() : 0), value.getBytesAsString(), dr.getId(), tag,
+ getOplogId());
+ }
+ id.setOffsetInOplog(startPosForSynchOp);
+ addLive(dr, entry);
+ // Size of the current oplog being increased
+ // due to 'create' operation. Set the change in stats.
+ this.dirHolder.incrementTotalOplogSize(dataLength);
+ incTotalCount();
+
+ // Update the region version vector for the disk store.
+ // This needs to be done under lock so that we don't switch oplogs
+ // unit the version vector accurately represents what is in this oplog
+ RegionVersionVector rvv = dr.getRegionVersionVector();
+ if (rvv != null && entry.getVersionStamp() != null) {
+ rvv.recordVersion(entry.getVersionStamp().getMemberID(),
+ entry.getVersionStamp().getRegionVersion());
+ }
+
+ EntryLogger.logPersistPut(dr.getName(), entry.getKey(), dr.getDiskStoreID());
+ }
+ clearOpState();
+ // }
}
- clearOpState();
- // }
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (useNextOplog) {
if (LocalRegion.ISSUE_CALLBACKS_TO_CACHE_OBSERVER) {
@@ -3700,10 +3713,15 @@ public class Oplog implements CompactableOplog, Flushable {
*/
void forceRolling(DiskRegion dr) {
if (getOplogSet().getChild() == this) {
- synchronized (this.lock) {
- if (getOplogSet().getChild() == this) {
- switchOpLog(dr, 0, null);
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) {
+ if (getOplogSet().getChild() == this) {
+ switchOpLog(dr, 0, null);
+ }
}
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (LocalRegion.ISSUE_CALLBACKS_TO_CACHE_OBSERVER) {
CacheObserverHolder.getInstance().afterSwitchingOplog();
@@ -4129,6 +4147,8 @@ public class Oplog implements CompactableOplog, Flushable {
lockCompactor();
try {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock) {
// 42733: after set it to true, we will not reset it, since this oplog
// will be
@@ -4579,96 +4599,101 @@ public class Oplog implements CompactableOplog, Flushable {
System.out.println("basicModify KRF_DEBUG");
Thread.sleep(1000);
}
- synchronized (this.lock) {
- // synchronized (this.crf) {
- if (getOplogSet().getChild() != this) {
- useNextOplog = true;
- } else {
- initOpState(OPLOG_MOD_ENTRY_1ID, dr, entry, value, userBits, false);
- adjustment = getOpStateSize();
- assert adjustment > 0;
- long temp = (this.crf.currSize + adjustment);
- if (temp > getMaxCrfSize() && !isFirstRecord()) {
- switchOpLog(dr, adjustment, entry);
- // we can't reuse it since it contains variable length data
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) {
+ // synchronized (this.crf) {
+ if (getOplogSet().getChild() != this) {
useNextOplog = true;
} else {
- if (this.lockedForKRFcreate) {
- CacheClosedException cce = new CacheClosedException("The disk store is closed.");
- dr.getCancelCriterion().checkCancelInProgress(cce);
- throw cce;
- }
- this.firstRecord = false;
- long oldOplogId;
- // do the io while holding lock so that switch can set doneAppending
- // Write the data to the opLog for the synch mode
- startPosForSynchOp = writeOpLogBytes(this.crf, async, true);
- this.crf.currSize = temp;
- startPosForSynchOp += getOpStateValueOffset();
- if (logger.isTraceEnabled(LogMarker.PERSIST_WRITES)) {
- VersionTag tag = null;
- if (entry.getVersionStamp() != null) {
- tag = entry.getVersionStamp().asVersionTag();
- }
- logger.trace(LogMarker.PERSIST_WRITES,
- "basicModify: id=<{}> key=<{}> valueOffset={} userBits={} valueLen={} valueBytes=<{}> drId={} versionStamp={} oplog#{}",
- abs(id.getKeyId()), entry.getKey(), startPosForSynchOp, userBits, value.getLength(),
- value.getBytesAsString(), dr.getId(), tag, getOplogId());
- }
- if (EntryBits.isNeedsValue(userBits)) {
- id.setValueLength(value.getLength());
+ initOpState(OPLOG_MOD_ENTRY_1ID, dr, entry, value, userBits, false);
+ adjustment = getOpStateSize();
+ assert adjustment > 0;
+ long temp = (this.crf.currSize + adjustment);
+ if (temp > getMaxCrfSize() && !isFirstRecord()) {
+ switchOpLog(dr, adjustment, entry);
+ // we can't reuse it since it contains variable length data
+ useNextOplog = true;
} else {
- id.setValueLength(0);
- }
- id.setUserBits(userBits);
- if (logger.isTraceEnabled()) {
- logger.trace("Oplog::basicModify:Released ByteBuffer with data for Disk ID = {}", id);
- }
- synchronized (id) {
- // Need to do this while synced on id
- // now that we compact forward to most recent oplog.
- // @todo darrel: The sync logic in the disk code is so complex
- // a really doubt is is correct.
- // I think we need to do a fresh rewrite of it.
- oldOplogId = id.setOplogId(getOplogId());
- if (EntryBits.isAnyInvalid(userBits) || EntryBits.isTombstone(userBits)) {
- id.setOffsetInOplog(-1);
+ if (this.lockedForKRFcreate) {
+ CacheClosedException cce = new CacheClosedException("The disk store is closed.");
+ dr.getCancelCriterion().checkCancelInProgress(cce);
+ throw cce;
+ }
+ this.firstRecord = false;
+ long oldOplogId;
+ // do the io while holding lock so that switch can set doneAppending
+ // Write the data to the opLog for the synch mode
+ startPosForSynchOp = writeOpLogBytes(this.crf, async, true);
+ this.crf.currSize = temp;
+ startPosForSynchOp += getOpStateValueOffset();
+ if (logger.isTraceEnabled(LogMarker.PERSIST_WRITES)) {
+ VersionTag tag = null;
+ if (entry.getVersionStamp() != null) {
+ tag = entry.getVersionStamp().asVersionTag();
+ }
+ logger.trace(LogMarker.PERSIST_WRITES,
+ "basicModify: id=<{}> key=<{}> valueOffset={} userBits={} valueLen={} valueBytes=<{}> drId={} versionStamp={} oplog#{}",
+ abs(id.getKeyId()), entry.getKey(), startPosForSynchOp, userBits,
+ value.getLength(), value.getBytesAsString(), dr.getId(), tag, getOplogId());
+ }
+ if (EntryBits.isNeedsValue(userBits)) {
+ id.setValueLength(value.getLength());
} else {
- id.setOffsetInOplog(startPosForSynchOp);
+ id.setValueLength(0);
}
- }
- // Set the oplog size change for stats
- this.dirHolder.incrementTotalOplogSize(adjustment);
- this.incTotalCount();
-
- EntryLogger.logPersistPut(dr.getName(), entry.getKey(), dr.getDiskStoreID());
- if (oldOplogId != getOplogId()) {
- Oplog oldOplog = getOplogSet().getChild(oldOplogId);
- if (oldOplog != null) {
- oldOplog.rmLive(dr, entry);
- emptyOplog = oldOplog;
+ id.setUserBits(userBits);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Oplog::basicModify:Released ByteBuffer with data for Disk ID = {}", id);
+ }
+ synchronized (id) {
+ // Need to do this while synced on id
+ // now that we compact forward to most recent oplog.
+ // @todo darrel: The sync logic in the disk code is so complex
+ // a really doubt is is correct.
+ // I think we need to do a fresh rewrite of it.
+ oldOplogId = id.setOplogId(getOplogId());
+ if (EntryBits.isAnyInvalid(userBits) || EntryBits.isTombstone(userBits)) {
+ id.setOffsetInOplog(-1);
+ } else {
+ id.setOffsetInOplog(startPosForSynchOp);
+ }
+ }
+ // Set the oplog size change for stats
+ this.dirHolder.incrementTotalOplogSize(adjustment);
+ this.incTotalCount();
+
+ EntryLogger.logPersistPut(dr.getName(), entry.getKey(), dr.getDiskStoreID());
+ if (oldOplogId != getOplogId()) {
+ Oplog oldOplog = getOplogSet().getChild(oldOplogId);
+ if (oldOplog != null) {
+ oldOplog.rmLive(dr, entry);
+ emptyOplog = oldOplog;
+ }
+ addLive(dr, entry);
+ // Note if this mod was done to oldOplog then this entry is already
+ // in
+ // the linked list. All we needed to do in this case is call
+ // incTotalCount
+ } else {
+ getOrCreateDRI(dr).update(entry);
}
- addLive(dr, entry);
- // Note if this mod was done to oldOplog then this entry is already
- // in
- // the linked list. All we needed to do in this case is call
- // incTotalCount
- } else {
- getOrCreateDRI(dr).update(entry);
- }
- // Update the region version vector for the disk store.
- // This needs to be done under lock so that we don't switch oplogs
- // unit the version vector accurately represents what is in this oplog
- RegionVersionVector rvv = dr.getRegionVersionVector();
- if (rvv != null && entry.getVersionStamp() != null) {
- rvv.recordVersion(entry.getVersionStamp().getMemberID(),
- entry.getVersionStamp().getRegionVersion());
+ // Update the region version vector for the disk store.
+ // This needs to be done under lock so that we don't switch oplogs
+ // unit the version vector accurately represents what is in this oplog
+ RegionVersionVector rvv = dr.getRegionVersionVector();
+ if (rvv != null && entry.getVersionStamp() != null) {
+ rvv.recordVersion(entry.getVersionStamp().getMemberID(),
+ entry.getVersionStamp().getRegionVersion());
+ }
}
+ clearOpState();
}
- clearOpState();
+ // }
}
- // }
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (useNextOplog) {
if (LocalRegion.ISSUE_CALLBACKS_TO_CACHE_OBSERVER) {
@@ -4702,43 +4727,48 @@ public class Oplog implements CompactableOplog, Flushable {
throws IOException, InterruptedException {
boolean useNextOplog = false;
int adjustment = 0;
- synchronized (this.lock) {
- if (getOplogSet().getChild() != this) {
- useNextOplog = true;
- } else {
- this.opState.initialize(OPLOG_CONFLICT_VERSION, dr.getId(), tag);
- adjustment = getOpStateSize();
- assert adjustment > 0;
- long temp = (this.crf.currSize + adjustment);
- if (temp > getMaxCrfSize() && !isFirstRecord()) {
- switchOpLog(dr, adjustment, null);
- // we can't reuse it since it contains variable length data
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) {
+ if (getOplogSet().getChild() != this) {
useNextOplog = true;
} else {
- if (this.lockedForKRFcreate) {
- CacheClosedException cce = new CacheClosedException("The disk store is closed.");
- dr.getCancelCriterion().checkCancelInProgress(cce);
- throw cce;
- }
- this.firstRecord = false;
- writeOpLogBytes(this.crf, async, true);
- this.crf.currSize = temp;
- if (logger.isTraceEnabled(LogMarker.PERSIST_WRITES)) {
- logger.trace(LogMarker.PERSIST_WRITES,
- "basicSaveConflictVersionTag: drId={} versionStamp={} oplog#{}", dr.getId(), tag,
- getOplogId());
- }
- this.dirHolder.incrementTotalOplogSize(adjustment);
- // Update the region version vector for the disk store.
- // This needs to be done under lock so that we don't switch oplogs
- // unit the version vector accurately represents what is in this oplog
- RegionVersionVector rvv = dr.getRegionVersionVector();
- if (rvv != null && dr.getFlags().contains(DiskRegionFlag.IS_WITH_VERSIONING)) {
- rvv.recordVersion(tag.getMemberID(), tag.getRegionVersion());
+ this.opState.initialize(OPLOG_CONFLICT_VERSION, dr.getId(), tag);
+ adjustment = getOpStateSize();
+ assert adjustment > 0;
+ long temp = (this.crf.currSize + adjustment);
+ if (temp > getMaxCrfSize() && !isFirstRecord()) {
+ switchOpLog(dr, adjustment, null);
+ // we can't reuse it since it contains variable length data
+ useNextOplog = true;
+ } else {
+ if (this.lockedForKRFcreate) {
+ CacheClosedException cce = new CacheClosedException("The disk store is closed.");
+ dr.getCancelCriterion().checkCancelInProgress(cce);
+ throw cce;
+ }
+ this.firstRecord = false;
+ writeOpLogBytes(this.crf, async, true);
+ this.crf.currSize = temp;
+ if (logger.isTraceEnabled(LogMarker.PERSIST_WRITES)) {
+ logger.trace(LogMarker.PERSIST_WRITES,
+ "basicSaveConflictVersionTag: drId={} versionStamp={} oplog#{}", dr.getId(), tag,
+ getOplogId());
+ }
+ this.dirHolder.incrementTotalOplogSize(adjustment);
+ // Update the region version vector for the disk store.
+ // This needs to be done under lock so that we don't switch oplogs
+ // unit the version vector accurately represents what is in this oplog
+ RegionVersionVector rvv = dr.getRegionVersionVector();
+ if (rvv != null && dr.getFlags().contains(DiskRegionFlag.IS_WITH_VERSIONING)) {
+ rvv.recordVersion(tag.getMemberID(), tag.getRegionVersion());
+ }
}
+ clearOpState();
}
- clearOpState();
}
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (useNextOplog) {
if (LocalRegion.ISSUE_CALLBACKS_TO_CACHE_OBSERVER) {
@@ -4755,6 +4785,7 @@ public class Oplog implements CompactableOplog, Flushable {
boolean useNextOplog = false;
long startPosForSynchOp = -1L;
int adjustment = 0;
+ // No need to get the backup lock since this is only for offline compaction
synchronized (this.lock) {
// synchronized (this.crf) {
if (getOplogSet().getChild() != this) {
@@ -4907,19 +4938,24 @@ public class Oplog implements CompactableOplog, Flushable {
*/
public void writeGCRVV(DiskRegion dr) {
boolean useNextOplog = false;
- synchronized (this.lock) {
- if (getOplogSet().getChild() != this) {
- useNextOplog = true;
- } else {
- try {
- writeRVVRecord(this.drf,
- Collections.<Long, AbstractDiskRegion>singletonMap(dr.getId(), dr), true);
- } catch (IOException ex) {
- dr.getCancelCriterion().checkCancelInProgress(ex);
- throw new DiskAccessException(LocalizedStrings.Oplog_FAILED_RECORDING_RVV_BECAUSE_OF_0
- .toLocalizedString(this.diskFile.getPath()), ex, dr.getName());
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) {
+ if (getOplogSet().getChild() != this) {
+ useNextOplog = true;
+ } else {
+ try {
+ writeRVVRecord(this.drf,
+ Collections.<Long, AbstractDiskRegion>singletonMap(dr.getId(), dr), true);
+ } catch (IOException ex) {
+ dr.getCancelCriterion().checkCancelInProgress(ex);
+ throw new DiskAccessException(LocalizedStrings.Oplog_FAILED_RECORDING_RVV_BECAUSE_OF_0
+ .toLocalizedString(this.diskFile.getPath()), ex, dr.getName());
+ }
}
}
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (useNextOplog) {
getOplogSet().getChild().writeGCRVV(dr);
@@ -4936,36 +4972,41 @@ public class Oplog implements CompactableOplog, Flushable {
*/
public void writeRVV(DiskRegion dr, RegionVersionVector sourceRVV, Boolean isRVVTrusted) {
boolean useNextOplog = false;
- synchronized (this.lock) {
- if (getOplogSet().getChild() != this) {
- useNextOplog = true;
- } else {
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) {
+ if (getOplogSet().getChild() != this) {
+ useNextOplog = true;
+ } else {
- try {
- // We'll update the RVV of the disk region while holding the lock on
- // the oplog,
- // to make sure we don't switch oplogs while we're in the middle of
- // this.
- if (sourceRVV != null) {
- dr.getRegionVersionVector().recordVersions(sourceRVV);
- } else {
- // it's original EndGII, not to write duplicate rvv if its trusted
- if (dr.getRVVTrusted()) {
- return;
+ try {
+ // We'll update the RVV of the disk region while holding the lock on
+ // the oplog,
+ // to make sure we don't switch oplogs while we're in the middle of
+ // this.
+ if (sourceRVV != null) {
+ dr.getRegionVersionVector().recordVersions(sourceRVV);
+ } else {
+ // it's original EndGII, not to write duplicate rvv if its trusted
+ if (dr.getRVVTrusted()) {
+ return;
+ }
}
+ if (isRVVTrusted != null) {
+ // isRVVTrusted == null means "as is"
+ dr.setRVVTrusted(isRVVTrusted);
+ }
+ writeRVVRecord(this.crf,
+ Collections.<Long, AbstractDiskRegion>singletonMap(dr.getId(), dr), false);
+ } catch (IOException ex) {
+ dr.getCancelCriterion().checkCancelInProgress(ex);
+ throw new DiskAccessException(LocalizedStrings.Oplog_FAILED_RECORDING_RVV_BECAUSE_OF_0
+ .toLocalizedString(this.diskFile.getPath()), ex, dr.getName());
}
- if (isRVVTrusted != null) {
- // isRVVTrusted == null means "as is"
- dr.setRVVTrusted(isRVVTrusted);
- }
- writeRVVRecord(this.crf,
- Collections.<Long, AbstractDiskRegion>singletonMap(dr.getId(), dr), false);
- } catch (IOException ex) {
- dr.getCancelCriterion().checkCancelInProgress(ex);
- throw new DiskAccessException(LocalizedStrings.Oplog_FAILED_RECORDING_RVV_BECAUSE_OF_0
- .toLocalizedString(this.diskFile.getPath()), ex, dr.getName());
}
}
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (useNextOplog) {
getOplogSet().getChild().writeRVV(dr, sourceRVV, isRVVTrusted);
@@ -5009,74 +5050,79 @@ public class Oplog implements CompactableOplog, Flushable {
System.out.println("basicRemove KRF_DEBUG");
Thread.sleep(1000);
}
- synchronized (this.lock) {
- if (getOplogSet().getChild() != this) {
- useNextOplog = true;
- } else if ((this.drf.currSize + MAX_DELETE_ENTRY_RECORD_BYTES) > getMaxDrfSize()
- && !isFirstRecord()) {
- switchOpLog(dr, MAX_DELETE_ENTRY_RECORD_BYTES, entry);
- useNextOplog = true;
- } else {
- if (this.lockedForKRFcreate) {
- CacheClosedException cce = new CacheClosedException("The disk store is closed.");
- dr.getCancelCriterion().checkCancelInProgress(cce);
- throw cce;
- }
- long oldOplogId = id.setOplogId(getOplogId());
- if (!isClear) {
- this.firstRecord = false;
- // Ok now we can go ahead and find out its actual size
- // This is the only place to set notToUseUserBits=true
- initOpState(OPLOG_DEL_ENTRY_1ID, dr, entry, null, (byte) 0, true);
- int adjustment = getOpStateSize();
-
- this.drf.currSize += adjustment;
- // do the io while holding lock so that switch can set doneAppending
- if (logger.isTraceEnabled()) {
- logger.trace(
- "Oplog::basicRemove: Recording the Deletion of entry in the Oplog with id = {} The Oplog Disk ID for the entry being deleted = {} Mode is Synch",
- getOplogId(), id);
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock) {
+ if (getOplogSet().getChild() != this) {
+ useNextOplog = true;
+ } else if ((this.drf.currSize + MAX_DELETE_ENTRY_RECORD_BYTES) > getMaxDrfSize()
+ && !isFirstRecord()) {
+ switchOpLog(dr, MAX_DELETE_ENTRY_RECORD_BYTES, entry);
+ useNextOplog = true;
+ } else {
+ if (this.lockedForKRFcreate) {
+ CacheClosedException cce = new CacheClosedException("The disk store is closed.");
+ dr.getCancelCriterion().checkCancelInProgress(cce);
+ throw cce;
}
+ long oldOplogId = id.setOplogId(getOplogId());
+ if (!isClear) {
+ this.firstRecord = false;
+ // Ok now we can go ahead and find out its actual size
+ // This is the only place to set notToUseUserBits=true
+ initOpState(OPLOG_DEL_ENTRY_1ID, dr, entry, null, (byte) 0, true);
+ int adjustment = getOpStateSize();
+
+ this.drf.currSize += adjustment;
+ // do the io while holding lock so that switch can set doneAppending
+ if (logger.isTraceEnabled()) {
+ logger.trace(
+ "Oplog::basicRemove: Recording the Deletion of entry in the Oplog with id = {} The Oplog Disk ID for the entry being deleted = {} Mode is Synch",
+ getOplogId(), id);
+ }
- // Write the data to the opLog for the synch mode
- // TODO: if we don't sync write destroys what will happen if
- // we do 1. create k1 2. destroy k1 3. create k1?
- // It would be possible for the crf to be flushed but not the drf.
- // Then during recovery we will find identical keys with different
- // entryIds.
- // I think we can safely have drf writes be async as long as we flush
- // the drf
- // before we flush the crf.
- // However we can't have removes by async if we are doing a sync write
- // because we might be killed right after we do this write.
- startPosForSynchOp = writeOpLogBytes(this.drf, async, true);
- setHasDeletes(true);
- if (logger.isDebugEnabled(LogMarker.PERSIST_WRITES)) {
- logger.debug("basicRemove: id=<{}> key=<{}> drId={} oplog#{}", abs(id.getKeyId()),
- entry.getKey(), dr.getId(), getOplogId());
- }
+ // Write the data to the opLog for the synch mode
+ // TODO: if we don't sync write destroys what will happen if
+ // we do 1. create k1 2. destroy k1 3. create k1?
+ // It would be possible for the crf to be flushed but not the drf.
+ // Then during recovery we will find identical keys with different
+ // entryIds.
+ // I think we can safely have drf writes be async as long as we flush
+ // the drf
+ // before we flush the crf.
+ // However we can't have removes by async if we are doing a sync write
+ // because we might be killed right after we do this write.
+ startPosForSynchOp = writeOpLogBytes(this.drf, async, true);
+ setHasDeletes(true);
+ if (logger.isDebugEnabled(LogMarker.PERSIST_WRITES)) {
+ logger.debug("basicRemove: id=<{}> key=<{}> drId={} oplog#{}", abs(id.getKeyId()),
+ entry.getKey(), dr.getId(), getOplogId());
+ }
- if (logger.isTraceEnabled()) {
- logger.trace("Oplog::basicRemove:Released ByteBuffer for Disk ID = {}", id);
+ if (logger.isTraceEnabled()) {
+ logger.trace("Oplog::basicRemove:Released ByteBuffer for Disk ID = {}", id);
+ }
+ this.dirHolder.incrementTotalOplogSize(adjustment);
}
- this.dirHolder.incrementTotalOplogSize(adjustment);
- }
- // Set the oplog size change for stats
- id.setOffsetInOplog(-1);
+ // Set the oplog size change for stats
+ id.setOffsetInOplog(-1);
- EntryLogger.logPersistDestroy(dr.getName(), entry.getKey(), dr.getDiskStoreID());
- Oplog rmOplog = null;
- if (oldOplogId == getOplogId()) {
- rmOplog = this;
- } else {
- rmOplog = getOplogSet().getChild(oldOplogId);
- }
- if (rmOplog != null) {
- rmOplog.rmLive(dr, entry);
- emptyOplog = rmOplog;
+ EntryLogger.logPersistDestroy(dr.getName(), entry.getKey(), dr.getDiskStoreID());
+ Oplog rmOplog = null;
+ if (oldOplogId == getOplogId()) {
+ rmOplog = this;
+ } else {
+ rmOplog = getOplogSet().getChild(oldOplogId);
+ }
+ if (rmOplog != null) {
+ rmOplog.rmLive(dr, entry);
+ emptyOplog = rmOplog;
+ }
+ clearOpState();
}
- clearOpState();
}
+ } finally {
+ getParent().getBackupLock().unlock();
}
if (useNextOplog) {
if (LocalRegion.ISSUE_CALLBACKS_TO_CACHE_OBSERVER) {
@@ -5130,6 +5176,8 @@ public class Oplog implements CompactableOplog, Flushable {
private void flush(OplogFile olf, boolean doSync) throws IOException {
try {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* olf */) {
if (olf.RAFClosed) {
return;
@@ -5187,6 +5235,8 @@ public class Oplog implements CompactableOplog, Flushable {
private void flush(OplogFile olf, ByteBuffer b1, ByteBuffer b2) throws IOException {
try {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* olf */) {
if (olf.RAFClosed) {
return;
@@ -5255,34 +5305,40 @@ public class Oplog implements CompactableOplog, Flushable {
private long writeOpLogBytes(OplogFile olf, boolean async, boolean doFlushIfSync)
throws IOException {
long startPos = -1L;
- synchronized (this.lock/* olf */) {
- Assert.assertTrue(!this.doneAppending);
- if (this.closed) {
- Assert.assertTrue(false, "The Oplog " + this.oplogId + " for store " + getParent().getName()
- + " has been closed for synch mode while writing is going on. This should not happen");
- }
- // It is assumed that the file pointer is already at the
- // appropriate position in the file so as to allow writing at the end.
- // Any fault in operations will set the pointer back to the write
- // location.
- // Also it is only in case of synch writing, we are writing more
- // than what is actually needed, we will have to reset the pointer.
- // Also need to add in offset in writeBuf in case we are not flushing
- // writeBuf
- startPos = olf.channel.position() + olf.writeBuf.position();
- // Assert.assertTrue(startPos > lastWritePos,
- // "startPos=" + startPos +
- // " was not > lastWritePos=" + lastWritePos);
- long bytesWritten = this.opState.write(olf);
- if (!async && doFlushIfSync) {
- flushAndSync(olf);
- }
- getStats().incWrittenBytes(bytesWritten, async);
-
- // // Moved the set of lastWritePos to after write
- // // so if write throws an exception it will not be updated.
- // // This fixes bug 40449.
- // this.lastWritePos = startPos;
+ getParent().getBackupLock().lock();
+ try {
+ synchronized (this.lock/* olf */) {
+ Assert.assertTrue(!this.doneAppending);
+ if (this.closed) {
+ Assert.assertTrue(false, "The Oplog " + this.oplogId + " for store "
+ + getParent().getName()
+ + " has been closed for synch mode while writing is going on. This should not happen");
+ }
+ // It is assumed that the file pointer is already at the
+ // appropriate position in the file so as to allow writing at the end.
+ // Any fault in operations will set the pointer back to the write
+ // location.
+ // Also it is only in case of synch writing, we are writing more
+ // than what is actually needed, we will have to reset the pointer.
+ // Also need to add in offset in writeBuf in case we are not flushing
+ // writeBuf
+ startPos = olf.channel.position() + olf.writeBuf.position();
+ // Assert.assertTrue(startPos > lastWritePos,
+ // "startPos=" + startPos +
+ // " was not > lastWritePos=" + lastWritePos);
+ long bytesWritten = this.opState.write(olf);
+ if (!async && doFlushIfSync) {
+ flushAndSync(olf);
+ }
+ getStats().incWrittenBytes(bytesWritten, async);
+
+ // // Moved the set of lastWritePos to after write
+ // // so if write throws an exception it will not be updated.
+ // // This fixes bug 40449.
+ // this.lastWritePos = startPos;
+ }
+ } finally {
+ getParent().getBackupLock().unlock();
}
return startPos;
}
@@ -5296,6 +5352,8 @@ public class Oplog implements CompactableOplog, Flushable {
boolean closeRAF() {
if (this.beingRead)
return false;
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
if (this.beingRead)
return false;
@@ -5325,6 +5383,8 @@ public class Oplog implements CompactableOplog, Flushable {
* @return true if oplog file is open and can be read from; false if not
*/
private boolean reopenFileIfClosed() throws IOException {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
boolean result = !this.crf.RAFClosed;
if (!result && this.okToReopen) {
@@ -5343,6 +5403,8 @@ public class Oplog implements CompactableOplog, Flushable {
boolean didReopen = false;
boolean accessedInactive = false;
try {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
// if (this.closed || this.deleted.get()) {
// throw new DiskAccessException("attempting get on "
@@ -5523,6 +5585,8 @@ public class Oplog implements CompactableOplog, Flushable {
}
} else {
try {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
if (/*
* !getParent().isSync() since compactor groups writes &&
@@ -5708,6 +5772,8 @@ public class Oplog implements CompactableOplog, Flushable {
}
private void deleteFile(final OplogFile olf) {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock) {
if (olf.currSize != 0) {
this.dirHolder.decrementTotalOplogSize(olf.currSize);
@@ -5799,6 +5865,8 @@ public class Oplog implements CompactableOplog, Flushable {
}
private void finishedAppending() {
+ // No need to get the backup lock prior to synchronizing (correct lock order) since the
+ // synchronized block does not attempt to get the backup lock (incorrect lock order)
synchronized (this.lock/* crf */) {
this.doneAppending = true;
}
[21/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandStatusDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandStatusDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandStatusDUnitTest.java
deleted file mode 100644
index d067bad..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandStatusDUnitTest.java
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-
-@Category(DistributedTest.class)
-public class WanCommandStatusDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- @Test
- public void testGatewaySenderStatus() {
-
- Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
-
- vm6.invoke(() -> createAndStartReceiver(nyPort));
-
- vm3.invoke(() -> createCache(lnPort));
- vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm4.invoke(() -> createCache(lnPort));
- vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm5.invoke(() -> createCache(lnPort));
- vm5.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- pause(10000);
- String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(3, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-
- tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
- assertEquals(2, result_hosts.size());
-
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> startSender("ln_Serial"));
- vm3.invoke(() -> startSender("ln_Parallel"));
-
- vm4.invoke(() -> startSender("ln_Serial"));
- vm4.invoke(() -> startSender("ln_Parallel"));
-
- vm5.invoke(() -> startSender("ln_Serial"));
- vm5.invoke(() -> startSender("ln_Parallel"));
-
- pause(10000);
- command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial";
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(3, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-
- tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
- assertEquals(2, result_hosts.size());
-
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
- }
-
- @Test
- public void testGatewaySenderStatus_OnMember() {
-
- Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
-
- vm6.invoke(() -> createAndStartReceiver(nyPort));
-
- vm3.invoke(() -> createCache(lnPort));
- vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm4.invoke(() -> createCache(lnPort));
- vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm5.invoke(() -> createCache(lnPort));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- pause(10000);
- String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial --" + CliStrings.MEMBER + "=" + vm1Member.getId();
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(1, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-
-
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> startSender("ln_Serial"));
- vm3.invoke(() -> startSender("ln_Parallel"));
-
- vm4.invoke(() -> startSender("ln_Serial"));
- vm4.invoke(() -> startSender("ln_Parallel"));
-
- pause(10000);
- command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial --" + CliStrings.MEMBER + "=" + vm1Member.getId();
-
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- // TabularResultData tableResultData =
- // (TabularResultData) cmdResult.getResultData();
- // List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- // assertIndexDetailsEquals(1, result_Status.size());
- // assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(1, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
-
- final DistributedMember vm5Member = vm5.invoke(() -> getMember());
-
- command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial --" + CliStrings.MEMBER + "=" + vm5Member.getId();
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- // ErrorResultData errorResultData =
- // (ErrorResultData) cmdResult.getResultData();
- assertTrue(cmdResult != null);
-
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
- }
-
- @Test
- public void testGatewaySenderStatus_OnGroups() {
-
- Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
-
- vm7.invoke(() -> createAndStartReceiver(nyPort));
-
- vm3.invoke(() -> createCacheWithGroups(lnPort, "Serial_Sender, Parallel_Sender"));
- vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm4.invoke(() -> createCacheWithGroups(lnPort, "Serial_Sender, Parallel_Sender"));
- vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm5.invoke(() -> createCacheWithGroups(lnPort, "Parallel_Sender"));
- vm5.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
-
- vm6.invoke(() -> createCacheWithGroups(lnPort, "Serial_Sender"));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- pause(10000);
- String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial --" + CliStrings.GROUP + "=Serial_Sender";
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(2, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-
- tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
- assertEquals(1, result_hosts.size());
-
-
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus_OnGroups : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> startSender("ln_Serial"));
- vm3.invoke(() -> startSender("ln_Parallel"));
-
- vm4.invoke(() -> startSender("ln_Serial"));
- vm4.invoke(() -> startSender("ln_Parallel"));
-
- pause(10000);
- command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
- + "=ln_Serial --" + CliStrings.GROUP + "=Serial_Sender";
-
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(2, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-
- tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
- List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
- assertEquals(1, result_hosts.size());
-
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewaySenderStatus_OnGroups : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- } else {
- fail("testListGatewaySender failed as did not get CommandResult");
- }
- }
-
- @Test
- public void testGatewayReceiverStatus() {
-
- Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
-
- vm6.invoke(() -> createAndStartReceiver(nyPort));
-
- vm3.invoke(() -> createAndStartReceiver(lnPort));
- vm4.invoke(() -> createAndStartReceiver(lnPort));
- vm5.invoke(() -> createAndStartReceiver(lnPort));
-
- pause(10000);
- String command = CliStrings.STATUS_GATEWAYRECEIVER;
- CommandResult cmdResult = executeCommand(command);
-
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(3, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-
- tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
- List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
- assertEquals(2, result_hosts.size());
-
- } else {
- fail("testGatewayReceiverStatus failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> stopReceiver());
- vm4.invoke(() -> stopReceiver());
- vm5.invoke(() -> stopReceiver());
-
- pause(10000);
-
- command = CliStrings.STATUS_GATEWAYRECEIVER;
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(3, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-
- tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
- List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
- assertEquals(2, result_hosts.size());
-
- } else {
- fail("testGatewayReceiverStatus failed as did not get CommandResult");
- }
- }
-
- @Category(FlakyTest.class) // GEODE-1395
- @Test
- public void testGatewayReceiverStatus_OnMember() {
-
- Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
-
- vm6.invoke(() -> createAndStartReceiver(nyPort));
-
- vm3.invoke(() -> createAndStartReceiver(lnPort));
- vm4.invoke(() -> createAndStartReceiver(lnPort));
- vm5.invoke(() -> createAndStartReceiver(lnPort));
-
- final DistributedMember vm3Member = vm3.invoke(() -> getMember());
-
- pause(10000);
- String command =
- CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm3Member.getId();
-
- CommandResult cmdResult = executeCommand(command);
-
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- // TabularResultData tableResultData = (TabularResultData) cmdResult.getResultData();
- // List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- // assertIndexDetailsEquals(1, result_Status.size());
- // assertFalse(strCmdResult.contains(CliStrings.GATEWAY_NOT_RUNNING));
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(1, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
- } else {
- fail("testGatewayReceiverStatus failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> stopReceiver());
- vm4.invoke(() -> stopReceiver());
- vm5.invoke(() -> stopReceiver());
-
- pause(10000);
-
- command =
- CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm3Member.getId();
-
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-
- // TabularResultData tableResultData =
- // (TabularResultData) cmdResult.getResultData();
- // List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- // assertIndexDetailsEquals(1, result_Status.size());
- // assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(1, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
- } else {
- fail("testGatewayReceiverStatus failed as did not get CommandResult");
- }
- }
-
- @Test
- public void testGatewayReceiverStatus_OnGroups() {
-
- Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
-
- vm7.invoke(() -> createAndStartReceiver(nyPort));
-
- vm3.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG1, RG2"));
- vm4.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG1, RG2"));
- vm5.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG1"));
- vm6.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG2"));
-
- pause(10000);
- String command = CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
-
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(3, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
-
- } else {
- fail("testGatewayReceiverStatus failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> stopReceiver());
- vm4.invoke(() -> stopReceiver());
- vm5.invoke(() -> stopReceiver());
-
- pause(10000);
- command = CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
-
- cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testGatewayReceiverStatus_OnGroups : " + strCmdResult + ">>>>> ");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
- .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-
- List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
- assertEquals(3, result_Status.size());
- assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
-
- } else {
- fail("testGatewayReceiverStatus failed as did not get CommandResult");
- }
- }
-}
[23/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
index 5578f76..8229745 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
@@ -14,12 +14,36 @@
*/
package org.apache.geode.internal.cache.wan.wancommand;
+import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
+import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.START_LOCATOR;
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.junit.Assert.assertNull;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.management.remote.JMXConnectorServer;
+
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.DiskStore;
import org.apache.geode.cache.DiskStoreFactory;
-import org.apache.geode.cache.wan.*;
+import org.apache.geode.cache.wan.GatewayEventFilter;
+import org.apache.geode.cache.wan.GatewayReceiver;
+import org.apache.geode.cache.wan.GatewayReceiverFactory;
+import org.apache.geode.cache.wan.GatewaySender;
import org.apache.geode.cache.wan.GatewaySender.OrderPolicy;
+import org.apache.geode.cache.wan.GatewaySenderFactory;
+import org.apache.geode.cache.wan.GatewayTransportFilter;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
@@ -31,20 +55,11 @@ import org.apache.geode.internal.cache.wan.AbstractGatewaySender;
import org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue;
import org.apache.geode.management.ManagementService;
import org.apache.geode.management.internal.cli.commands.CliCommandTestBase;
-import org.apache.geode.test.dunit.*;
-
-import javax.management.remote.JMXConnectorServer;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.junit.Assert.assertNull;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.dunit.Invoke;
+import org.apache.geode.test.dunit.SerializableRunnable;
+import org.apache.geode.test.dunit.VM;
public abstract class WANCommandTestBase extends CliCommandTestBase {
@@ -462,15 +477,12 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
}
}
assertNull(sender);
-
String queueRegionNameSuffix = null;
if (isParallel) {
queueRegionNameSuffix = ParallelGatewaySenderQueue.QSTRING;
} else {
queueRegionNameSuffix = "_SERIAL_GATEWAY_SENDER_QUEUE";
}
-
-
Set<LocalRegion> allRegions = ((GemFireCacheImpl) cache).getAllRegions();
for (LocalRegion region : allRegions) {
if (region.getName().indexOf(senderId + queueRegionNameSuffix) != -1) {
@@ -479,7 +491,12 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
}
}
-
+ public void propsSetUp(Integer lnPort) {
+ Properties props = getDistributedSystemProperties();
+ props.setProperty(MCAST_PORT, "0");
+ props.setProperty(LOCATORS, "localhost[" + lnPort + "]");
+ setUpJmxManagerOnVm0ThenConnect(props);
+ }
@Override
public final void postTearDownCacheTestCase() throws Exception {
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateDestroyGatewaySenderDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateDestroyGatewaySenderDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateDestroyGatewaySenderDUnitTest.java
deleted file mode 100644
index cffc4c1..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateDestroyGatewaySenderDUnitTest.java
+++ /dev/null
@@ -1,794 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.cache.wan.GatewaySender;
-import org.apache.geode.cache.wan.GatewaySender.OrderPolicy;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.cache.wan.GatewaySenderException;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-
-@Category(DistributedTest.class)
-public class WanCommandCreateDestroyGatewaySenderDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- private CommandResult executeCommandWithIgnoredExceptions(String command) {
- final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
- try {
- CommandResult commandResult = executeCommand(command);
- return commandResult;
- } finally {
- exln.remove();
- }
- }
-
-
- /**
- * GatewaySender with all default attributes
- */
- @Test
- public void testCreateDestroyGatewaySenderWithDefault() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info(
- "testCreateDestroyGatewaySenderWithDefault stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateDestroyGatewaySenderWithDefault failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- doDestroyAndVerifyGatewaySender("ln", null, null, "testCreateDestroyGatewaySenderWithDefault",
- Arrays.asList(vm3, vm4, vm5), 5, false);
- }
-
-
-
- /**
- * + * GatewaySender with given attribute values +
- */
- @Test
- public void testCreateDestroyGatewaySender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateDestroyGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateDestroyGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
- vm4.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
- vm5.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
-
- doDestroyAndVerifyGatewaySender("ln", null, null, "testCreateDestroyGatewaySender",
- Arrays.asList(vm3, vm4, vm5), 5, false);
- }
-
- /**
- * GatewaySender with given attribute values. Error scenario where dispatcher threads is set to
- * more than 1 and no order policy provided.
- */
- @Test
- public void testCreateGatewaySender_Error() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateDestroyGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation should fail", status.get(i).indexOf("ERROR:") != -1);
- }
- } else {
- fail("testCreateDestroyGatewaySender failed as did not get CommandResult");
- }
-
- }
-
- /**
- * GatewaySender with given attribute values and event filters.
- */
- @Test
- public void testCreateDestroyGatewaySenderWithGatewayEventFilters() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER
- + "=org.apache.geode.cache30.MyGatewayEventFilter1,org.apache.geode.cache30.MyGatewayEventFilter2";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateDestroyGatewaySenderWithGatewayEventFilters stringResult : "
- + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail(
- "testCreateDestroyGatewaySenderWithGatewayEventFilters failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- List<String> eventFilters = new ArrayList<String>();
- eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter1");
- eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter2");
- vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, eventFilters, null));
- vm4.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, eventFilters, null));
- vm5.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, eventFilters, null));
-
- doDestroyAndVerifyGatewaySender("ln", null, null,
- "testCreateDestroyGatewaySenderWithGatewayEventFilters", Arrays.asList(vm3, vm4, vm5), 5,
- false);
-
- }
-
- /**
- * GatewaySender with given attribute values and transport filters.
- */
- @Test
- public void testCreateDestroyGatewaySenderWithGatewayTransportFilters() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER
- + "=org.apache.geode.cache30.MyGatewayTransportFilter1";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testCreateDestroyGatewaySenderWithGatewayTransportFilters stringResult : "
- + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail(
- "testCreateDestroyGatewaySenderWithGatewayTransportFilters failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- List<String> transportFilters = new ArrayList<String>();
- transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
- vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, transportFilters));
- vm4.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, transportFilters));
- vm5.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, transportFilters));
-
- doDestroyAndVerifyGatewaySender("ln", null, null,
- "testCreateDestroyGatewaySenderWithGatewayTransportFilters", Arrays.asList(vm3, vm4, vm5),
- 5, false);
- }
-
- /**
- * GatewaySender with given attribute values on given member.
- */
- @Test
- public void testCreateDestroyGatewaySender_OnMember() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- final DistributedMember vm3Member = vm3.invoke(() -> getMember());
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.MEMBER + "=" + vm3Member.getId() + " --"
- + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testCreateDestroyGatewaySender_OnMember stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(1, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateDestroyGatewaySender_OnMember failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
-
- vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
- 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
-
- doDestroyAndVerifyGatewaySender("ln", null, vm3Member,
- "testCreateDestroyGatewaySender_OnMember", Arrays.asList(vm3), 1, false);
- }
-
- /**
- * GatewaySender with given attribute values on given group
- */
- @Test
- public void testCreateDestroyGatewaySender_Group() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.GROUP + "=SenderGroup1" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testCreateDestroyGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(3, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateDestroyGatewaySender_Group failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- doDestroyAndVerifyGatewaySender("ln", "SenderGroup1", null,
- "testCreateDestroyGatewaySender_Group", Arrays.asList(vm3, vm4, vm5), 3, false);
-
- }
-
- /**
- * GatewaySender with given attribute values on given group. Only 2 of 3 members are part of the
- * group.
- */
- @Test
- public void testCreateDestroyGatewaySender_Group_Scenario2() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.GROUP + "=SenderGroup1" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info(
- "testCreateDestroyGatewaySender_Group_Scenario2 stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(2, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateDestroyGatewaySender_Group_Scenario2 failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
-
- doDestroyAndVerifyGatewaySender("ln", "SenderGroup1", null,
- "testCreateDestroyGatewaySender_Group_Scenario2", Arrays.asList(vm3, vm4), 2, false);
-
- }
-
- /**
- * + * Parallel GatewaySender with given attribute values +
- */
- @Test
- public void testCreateDestroyParallelGatewaySender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testCreateDestroyParallelGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateDestroyParallelGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- vm3.invoke(
- () -> verifySenderAttributes("ln", 2, true, true, 1000, socketReadTimeout, true, 1000, 5000,
- true, false, 1000, 100, GatewaySender.DEFAULT_DISPATCHER_THREADS, null, null, null));
- vm4.invoke(
- () -> verifySenderAttributes("ln", 2, true, true, 1000, socketReadTimeout, true, 1000, 5000,
- true, false, 1000, 100, GatewaySender.DEFAULT_DISPATCHER_THREADS, null, null, null));
- vm5.invoke(
- () -> verifySenderAttributes("ln", 2, true, true, 1000, socketReadTimeout, true, 1000, 5000,
- true, false, 1000, 100, GatewaySender.DEFAULT_DISPATCHER_THREADS, null, null, null));
-
- doDestroyAndVerifyGatewaySender("ln", null, null, "testCreateDestroyParallelGatewaySender",
- Arrays.asList(vm3, vm4), 5, true);
- }
-
- /**
- * Parallel GatewaySender with given attribute values. Provide dispatcherThreads as 2 which is not
- * valid for Parallel sender.
- */
- @Test
- public void testCreateParallelGatewaySender_Error() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
- String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
- + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
- + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
- IgnoredException exp =
- IgnoredException.addIgnoredException(GatewaySenderException.class.getName());
- try {
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testCreateParallelGatewaySender_Error stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender creation should have failed",
- status.get(i).indexOf("ERROR:") != -1);
- }
- } else {
- fail("testCreateParallelGatewaySender_Error failed as did not get CommandResult");
- }
- } finally {
- exp.remove();
- }
-
- }
-
- @Test
- public void testDestroyGatewaySender_NotCreatedSender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- // Test Destroy Command
- String command =
- CliStrings.DESTROY_GATEWAYSENDER + " --" + CliStrings.DESTROY_GATEWAYSENDER__ID + "=ln";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info(
- "testDestroyGatewaySender_NotCreatedSender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(5, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender destroy should fail", status.get(i).indexOf("ERROR:") != -1);
- }
-
- } else {
- fail("testCreateDestroyParallelGatewaySender failed as did not get CommandResult");
- }
- }
-
- /**
- * doDestroyAndVerifyGatewaySender helper command.
- *
- * @param id if of the Gateway Sender
- * @param group Group for the GatewaySender
- * @param member Distributed Member for memeber id.
- * @param testName testName for the logging
- * @param vms list of vms where to verify the destroyed gateway sender
- * @param size command result.
- * @param isParallel true if parallel , false otherwise.
- */
-
- private void doDestroyAndVerifyGatewaySender(final String id, final String group,
- final DistributedMember member, final String testName, final List<VM> vms, final int size,
- final boolean isParallel) {
- String command =
- CliStrings.DESTROY_GATEWAYSENDER + " --" + CliStrings.DESTROY_GATEWAYSENDER__ID + "=" + id;
-
- if (group != null) {
- command += " --" + CliStrings.GROUP + "=" + group;
- }
-
- if (member != null) {
- command += " --" + CliStrings.MEMBER + "=" + member.getId();
- }
-
- final CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info(testName + " stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(size, status.size());
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewaySender destroy failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
-
- } else {
- fail(testName + " failed as did not get CommandResult");
- }
- for (VM vm : vms) {
- vm.invoke(() -> verifySenderDestroyed(id, isParallel));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateGatewayReceiverDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateGatewayReceiverDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateGatewayReceiverDUnitTest.java
deleted file mode 100644
index bdccabe..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandCreateGatewayReceiverDUnitTest.java
+++ /dev/null
@@ -1,584 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.cache.wan.GatewayReceiver;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-
-/**
- * DUnit tests for 'create gateway-receiver' command.
- */
-@Category(DistributedTest.class)
-public class WanCommandCreateGatewayReceiverDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * GatewayReceiver with all default attributes
- */
- @Test
- public void testCreateGatewayReceiverWithDefault() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- String command = CliStrings.CREATE_GATEWAYRECEIVER;
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(4, status.size());// expected size 4 includes the manager node
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
- GatewayReceiver.DEFAULT_START_PORT, GatewayReceiver.DEFAULT_END_PORT,
- GatewayReceiver.DEFAULT_BIND_ADDRESS, GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS,
- GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE, null));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
- GatewayReceiver.DEFAULT_START_PORT, GatewayReceiver.DEFAULT_END_PORT,
- GatewayReceiver.DEFAULT_BIND_ADDRESS, GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS,
- GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE, null));
- vm5.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
- GatewayReceiver.DEFAULT_START_PORT, GatewayReceiver.DEFAULT_END_PORT,
- GatewayReceiver.DEFAULT_BIND_ADDRESS, GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS,
- GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE, null));
- }
-
- /**
- * GatewayReceiver with given attributes
- */
- @Test
- public void testCreateGatewayReceiver() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(4, status.size());// expected size 4 includes the manager node
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm5.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- }
-
- /**
- * GatewayReceiver with given attributes and a single GatewayTransportFilter.
- */
- @Test
- public void testCreateGatewayReceiverWithGatewayTransportFilter() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=false" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER
- + "=org.apache.geode.cache30.MyGatewayTransportFilter1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(4, status.size());// expected size 4 includes the manager node
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- List<String> transportFilters = new ArrayList<String>();
- transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000,
- 512000, transportFilters));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000,
- 512000, transportFilters));
- vm5.invoke(() -> verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000,
- 512000, transportFilters));
- }
-
- /**
- * GatewayReceiver with given attributes and multiple GatewayTransportFilters.
- */
- @Test
- public void testCreateGatewayReceiverWithMultipleGatewayTransportFilters() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- String command = CliStrings.CREATE_GATEWAYRECEIVER + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER
- + "=org.apache.geode.cache30.MyGatewayTransportFilter1,org.apache.geode.cache30.MyGatewayTransportFilter2";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(4, status.size());// expected size 4 includes the manager node
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- List<String> transportFilters = new ArrayList<String>();
- transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
- transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter2");
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
- 10000, 11000, "localhost", 100000, 512000, transportFilters));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
- 10000, 11000, "localhost", 100000, 512000, transportFilters));
- vm5.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
- 10000, 11000, "localhost", 100000, 512000, transportFilters));
- }
-
- /**
- * GatewayReceiver with given attributes. Error scenario where startPort is greater than endPort.
- */
- @Test
- public void testCreateGatewayReceiver_Error() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS
- + "=localhost" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(4, status.size());// expected size 4 includes the manager
- // node
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation should have failed",
- status.get(i).indexOf("ERROR:") != -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
- }
-
- /**
- * GatewayReceiver with given attributes on the given member.
- */
- @Test
- public void testCreateGatewayReceiver_onMember() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- final DistributedMember vm3Member = vm3.invoke(() -> getMember());
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.MEMBER + "=" + vm3Member.getId();
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(1, status.size());
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- }
-
- /**
- * GatewayReceiver with given attributes on multiple members.
- */
- @Category(FlakyTest.class) // GEODE-1355
- @Test
- public void testCreateGatewayReceiver_onMultipleMembers() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
-
- final DistributedMember vm3Member = vm3.invoke(() -> getMember());
- final DistributedMember vm4Member = vm4.invoke(() -> getMember());
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.MEMBER + "=" + vm3Member.getId() + "," + vm4Member.getId();
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(2, status.size());
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- }
-
- /**
- * GatewayReceiver with given attributes on the given group.
- */
- @Test
- public void testCreateGatewayReceiver_onGroup() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.GROUP + "=receiverGroup1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(3, status.size());//
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm5.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- }
-
- /**
- * GatewayReceiver with given attributes on the given group. Only 2 of 3 members are part of the
- * group.
- */
- @Test
- public void testCreateGatewayReceiver_onGroup_Scenario2() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup2"));
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.GROUP + "=receiverGroup1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(2, status.size());//
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- }
-
- /**
- * GatewayReceiver with given attributes on multiple groups.
- */
- @Test
- public void testCreateGatewayReceiver_onMultipleGroups() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup2"));
-
- String command =
- CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
- + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
- + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
- + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
- + CliStrings.GROUP + "=receiverGroup1,receiverGroup2";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Status");
- assertEquals(3, status.size());//
- // verify there is no error in the status
- for (int i = 0; i < status.size(); i++) {
- assertTrue("GatewayReceiver creation failed with: " + status.get(i),
- status.get(i).indexOf("ERROR:") == -1);
- }
- } else {
- fail("testCreateGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- vm5.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
- 512000, null));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStartDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStartDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStartDUnitTest.java
deleted file mode 100644
index 9f97dd7..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStartDUnitTest.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-
-@Category(DistributedTest.class)
-public class WanCommandGatewayReceiverStartDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Test wan commands for error in input 1> start gateway-sender command needs only one of member
- * or group.
- */
- @Test
- public void testStartGatewayReceiver_ErrorConditions() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createReceiver(punePort));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
- + vm1Member.getId() + " --" + CliStrings.GROUP + "=RG1";
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testStartGatewayReceiver_ErrorConditions stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.ERROR, cmdResult.getStatus());
- assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
- } else {
- fail("testStartGatewayReceiver_ErrorConditions failed as did not get CommandResult");
- }
- }
-
- @Category(FlakyTest.class) // GEODE-1448
- @Test
- public void testStartGatewayReceiver() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createReceiver(punePort));
- vm4.invoke(() -> createReceiver(punePort));
- vm5.invoke(() -> createReceiver(punePort));
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
-
- pause(10000);
- String command = CliStrings.START_GATEWAYRECEIVER;
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewayReceiver stringResult : " + strCmdResult + ">>>>");
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertTrue(status.contains("Error"));
- } else {
- fail("testStartGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a member
- */
- @Test
- public void testStartGatewayReceiver_onMember() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createReceiver(punePort));
- vm4.invoke(() -> createReceiver(punePort));
- vm5.invoke(() -> createReceiver(punePort));
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
- pause(10000);
- String command =
- CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm1Member.getId();
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testStartGatewayReceiver_onMember stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- assertTrue(strCmdResult.contains("is started on member"));
- } else {
- fail("testStartGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a group of members
- */
- @Test
- public void testStartGatewayReceiver_Group() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
-
- pause(10000);
- String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStartGatewayReceiver_Group failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
- }
-
- /**
- * Test to validate the scenario gateway sender is started when one or more sender members belongs
- * to multiple groups
- *
- */
- @Test
- public void testStartGatewayReceiver_MultipleGroup() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createReceiverWithGroup(punePort, "RG1, RG2"));
- vm6.invoke(() -> createReceiverWithGroup(punePort, "RG1, RG2"));
- vm7.invoke(() -> createReceiverWithGroup(punePort, "RG3"));
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
- vm6.invoke(() -> verifyReceiverState(false));
- vm7.invoke(() -> verifyReceiverState(false));
-
- pause(10000);
- String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1,RG2";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStartGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
- vm6.invoke(() -> verifyReceiverState(true));
- vm7.invoke(() -> verifyReceiverState(false));
- }
-
-}
[19/50] [abbrv] geode git commit: GEODE-2936: Refactoring
OrderByComparator and updating OrderByComparatorJUnitTest
Posted by kl...@apache.org.
GEODE-2936: Refactoring OrderByComparator and updating OrderByComparatorJUnitTest
This closes #580
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/06b44db8
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/06b44db8
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/06b44db8
Branch: refs/heads/feature/GEODE-3299
Commit: 06b44db8ccf9016899ae79c663147a0829293a94
Parents: 6267809
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Wed Jun 7 16:10:56 2017 -0700
Committer: Ken Howe <kh...@pivotal.io>
Committed: Wed Jul 26 15:27:08 2017 -0700
----------------------------------------------------------------------
.../query/internal/CompiledSortCriterion.java | 6 +-
.../cache/query/internal/OrderByComparator.java | 208 ++++++++-----------
.../internal/OrderByComparatorUnmapped.java | 6 +-
.../query/functional/StructSetOrResultsSet.java | 13 +-
.../internal/OrderByComparatorJUnitTest.java | 69 +++---
5 files changed, 134 insertions(+), 168 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/06b44db8/geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledSortCriterion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledSortCriterion.java b/geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledSortCriterion.java
index d49b4a5..4d2be62 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledSortCriterion.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledSortCriterion.java
@@ -56,7 +56,7 @@ public class CompiledSortCriterion extends AbstractCompiledValue {
* evaluates sort criteria in order by clause
*/
public Object evaluate(Object data, ExecutionContext context) {
- Object value = null;
+ Object value;
if (this.columnIndex > 0) {
value = ((Object[]) data)[this.columnIndex];
} else if (this.columnIndex == 0) {
@@ -113,7 +113,7 @@ public class CompiledSortCriterion extends AbstractCompiledValue {
}
private CompiledValue getReconstructedExpression(String projAttribStr, ExecutionContext context)
- throws AmbiguousNameException, TypeMismatchException, NameResolutionException {
+ throws TypeMismatchException, NameResolutionException {
List<CompiledValue> expressions = PathUtils.collectCompiledValuesInThePath(expr, context);
StringBuilder tempBuff = new StringBuilder();
ListIterator<CompiledValue> listIter = expressions.listIterator(expressions.size());
@@ -180,7 +180,7 @@ public class CompiledSortCriterion extends AbstractCompiledValue {
}
boolean mapExpressionToProjectionField(List projAttrs, ExecutionContext context)
- throws AmbiguousNameException, TypeMismatchException, NameResolutionException {
+ throws TypeMismatchException, NameResolutionException {
boolean mappedColumn = false;
this.originalCorrectedExpression = expr;
if (projAttrs != null) {
http://git-wip-us.apache.org/repos/asf/geode/blob/06b44db8/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparator.java b/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparator.java
index 59eb493..04469cb 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparator.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparator.java
@@ -15,7 +15,6 @@
package org.apache.geode.cache.query.internal;
import java.util.Comparator;
-import java.util.Iterator;
import java.util.List;
import org.apache.geode.cache.query.FunctionDomainException;
@@ -28,9 +27,8 @@ import org.apache.geode.internal.cache.VMCachedDeserializable;
import org.apache.geode.pdx.internal.PdxString;
/**
- * A generic comparator class which compares two Object/StructImpl according to their sort criterion
- * specified in order by clause
- *
+ * A generic comparator class which compares two Object/StructImpl according to their sort criteria
+ * specified in order by clause.
*/
public class OrderByComparator implements Comparator {
private final ObjectType objType;
@@ -45,78 +43,44 @@ public class OrderByComparator implements Comparator {
}
/**
- * Yogesh : This methods evaluates sort criteria and returns a ArrayList of Object[] arrays of
- * evaluated criteria
+ * This method evaluates sort criteria and returns an ArrayList of Object[] arrays of the
+ * evaluated criteria.
*
- * @param value
- * @return Object[]
+ * @param value the criteria to be evaluated.
+ * @return an Object array of Object arrays of the evaluated criteria.
*/
protected Object[] evaluateSortCriteria(Object value) {
-
- CompiledSortCriterion csc;
Object[] array = null;
if (orderByAttrs != null) {
array = new Object[orderByAttrs.size()];
- Iterator orderiter = orderByAttrs.iterator();
int i = 0;
- while (orderiter.hasNext()) {
- csc = (CompiledSortCriterion) orderiter.next();
- Object[] arr = new Object[2];
- arr[0] = csc.evaluate(value, context);
- arr[1] = Boolean.valueOf(csc.getCriterion());
+ for (CompiledSortCriterion csc : orderByAttrs) {
+ Object[] arr = {csc.evaluate(value, context), csc.getCriterion()};
array[i++] = arr;
}
-
}
return array;
}
+ /**
+ * This method evaluates sort criteria and returns the resulting integer value of comparing the
+ * two objects passed into it based on these criteria.
+ *
+ * @param value1 the first object to be compared.
+ * @param value2 the second object to be compared.
+ * @return a negative integer, zero, or a positive integer if the first argument is less than,
+ * equal to, or greater than the second, based on the evaluated sort criteria.
+ */
protected int evaluateSortCriteria(Object value1, Object value2) {
int result = -1;
- CompiledSortCriterion csc;
if (orderByAttrs != null) {
- Iterator orderiter = orderByAttrs.iterator();
- while (orderiter.hasNext()) {
- csc = (CompiledSortCriterion) orderiter.next();
+ for (CompiledSortCriterion csc : orderByAttrs) {
Object sortCriteriaForValue1 = csc.evaluate(value1, context);
Object sortCriteriaForValue2 = csc.evaluate(value2, context);
-
- if (sortCriteriaForValue1 == null || sortCriteriaForValue2 == null) {
- if (sortCriteriaForValue1 == null) {
- result = (sortCriteriaForValue2 == null ? 0 : -1);
- } else {
- result = 1;
- }
- } else if (sortCriteriaForValue1 == QueryService.UNDEFINED
- || sortCriteriaForValue2 == QueryService.UNDEFINED) {
- if (sortCriteriaForValue1 == QueryService.UNDEFINED) {
- result = (sortCriteriaForValue2 == QueryService.UNDEFINED ? 0 : -1);
- } else {
- result = 1;
- }
- } else {
- if (sortCriteriaForValue1 instanceof Number && sortCriteriaForValue2 instanceof Number) {
- double diff = ((Number) sortCriteriaForValue1).doubleValue()
- - ((Number) sortCriteriaForValue2).doubleValue();
- result = diff > 0 ? 1 : diff < 0 ? -1 : 0;
- } else {
- if (sortCriteriaForValue1 instanceof PdxString
- && sortCriteriaForValue2 instanceof String) {
- sortCriteriaForValue2 = new PdxString((String) sortCriteriaForValue2);
- } else if (sortCriteriaForValue2 instanceof PdxString
- && sortCriteriaForValue1 instanceof String) {
- sortCriteriaForValue1 = new PdxString((String) sortCriteriaForValue1);
- }
- result = ((Comparable) sortCriteriaForValue1).compareTo(sortCriteriaForValue2);
- }
-
- }
-
- if (result == 0) {
- continue;
- } else {
- if (Boolean.valueOf(csc.getCriterion())) {
- result = (result * (-1));
+ result = compareHelperMethod(sortCriteriaForValue1, sortCriteriaForValue2);
+ if (result != 0) {
+ if (csc.getCriterion()) {
+ result *= -1;
}
break;
}
@@ -137,89 +101,35 @@ public class OrderByComparator implements Comparator {
* Comparator.
*/
public int compare(Object obj1, Object obj2) {
- int result = -1;
+ int result;
if (obj1 == null && obj2 == null) {
return 0;
}
assert !(obj1 instanceof VMCachedDeserializable || obj2 instanceof VMCachedDeserializable);
-
if ((this.objType.isStructType() && obj1 instanceof Object[] && obj2 instanceof Object[])
- || !this.objType.isStructType()) { // obj1 instanceof Object && obj2
- // instanceof Object){
- if ((result = evaluateSortCriteria(obj1, obj2)) != 0) {
+ || !this.objType.isStructType()) {
+ if (((result = evaluateSortCriteria(obj1, obj2)) != 0) && (orderByAttrs != null)) {
return result;
}
-
- QueryObserver observer = QueryObserverHolder.getInstance();
- if (observer != null) {
- observer.orderByColumnsEqual();
+ if (QueryObserverHolder.getInstance() != null) {
+ QueryObserverHolder.getInstance().orderByColumnsEqual();
}
- // The comparable fields are equal, so we check if the overall keys are
- // equal or not
+ // Comparable fields are equal - check if overall keys are equal
if (this.objType.isStructType()) {
int i = 0;
for (Object o1 : (Object[]) obj1) {
Object o2 = ((Object[]) obj2)[i++];
-
- // Check for null value.
- if (o1 == null || o2 == null) {
- if (o1 == null) {
- if (o2 == null) {
- continue;
- }
- return -1;
- } else {
- return 1;
- }
- } else if (o1 == QueryService.UNDEFINED || o2 == QueryService.UNDEFINED) {
- if (o1 == QueryService.UNDEFINED) {
- if (o2 == QueryService.UNDEFINED) {
- continue;
- }
- return -1;
- } else {
- return 1;
- }
- }
-
- if (o1 instanceof Comparable) {
- final int rslt;
- if (o1 instanceof Number && o2 instanceof Number) {
- double diff = ((Number) o1).doubleValue() - ((Number) o2).doubleValue();
- rslt = diff > 0 ? 1 : diff < 0 ? -1 : 0;
- } else {
- if (o1 instanceof PdxString && o2 instanceof String) {
- o2 = new PdxString((String) o2);
- } else if (o2 instanceof PdxString && o1 instanceof String) {
- o1 = new PdxString((String) o1);
- }
- rslt = ((Comparable) o1).compareTo(o2);
- }
- if (rslt == 0) {
- continue;
- } else {
- return rslt;
- }
- } else if (!o1.equals(o2)) {
- return -1;
+ result = compareHelperMethod(o1, o2);
+ if (result != 0) {
+ return result;
}
}
return 0;
} else {
- if (obj1 instanceof PdxString && obj2 instanceof String) {
- obj2 = new PdxString((String) obj2);
- } else if (obj2 instanceof PdxString && obj1 instanceof String) {
- obj1 = new PdxString((String) obj1);
- }
-
- if (obj1 instanceof Comparable) {
- return ((Comparable) obj1).compareTo(obj2);
- } else {
- return obj1.equals(obj2) ? 0 : -1;
- }
+ return compareTwoStrings(obj1, obj2);
}
}
- return -1;
+ throw new ClassCastException(); // throw exception if args can't be compared w/this comparator
}
void addEvaluatedSortCriteria(Object row, ExecutionContext context)
@@ -228,4 +138,56 @@ public class OrderByComparator implements Comparator {
// No op
}
+ private int compareHelperMethod(Object obj1, Object obj2) {
+ if (obj1 == null || obj2 == null) {
+ return compareIfOneOrMoreNull(obj1, obj2);
+ } else if (obj1 == QueryService.UNDEFINED || obj2 == QueryService.UNDEFINED) {
+ return compareIfOneOrMoreQueryServiceUndefined(obj1, obj2);
+ } else {
+ return compareTwoObjects(obj1, obj2);
+ }
+ }
+
+ private int compareIfOneOrMoreNull(Object obj1, Object obj2) {
+ if (obj1 == null) {
+ return obj2 == null ? 0 : -1;
+ } else {
+ return 1;
+ }
+ }
+
+ private int compareIfOneOrMoreQueryServiceUndefined(Object obj1, Object obj2) {
+ if (obj1 == QueryService.UNDEFINED) {
+ return obj2 == QueryService.UNDEFINED ? 0 : -1;
+ } else {
+ return 1;
+ }
+ }
+
+ private int compareTwoObjects(Object obj1, Object obj2) {
+ if (obj1 instanceof Number && obj2 instanceof Number) {
+ return compareTwoNumbers(obj1, obj2);
+ } else {
+ return compareTwoStrings(obj1, obj2);
+ }
+ }
+
+ private int compareTwoNumbers(Object obj1, Object obj2) {
+ Number num1 = (Number) obj1;
+ Number num2 = (Number) obj2;
+ return Double.compare(num1.doubleValue(), num2.doubleValue());
+ }
+
+ private int compareTwoStrings(Object obj1, Object obj2) {
+ if (obj1 instanceof PdxString && obj2 instanceof String) {
+ obj2 = new PdxString((String) obj2);
+ } else if (obj2 instanceof PdxString && obj1 instanceof String) {
+ obj1 = new PdxString((String) obj1);
+ }
+ if (obj1 instanceof Comparable) {
+ return ((Comparable) obj1).compareTo(obj2);
+ } else {
+ return obj1.equals(obj2) ? 0 : -1;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/06b44db8/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparatorUnmapped.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparatorUnmapped.java b/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparatorUnmapped.java
index db31df9..ee2caa0 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparatorUnmapped.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/query/internal/OrderByComparatorUnmapped.java
@@ -14,13 +14,13 @@
*/
package org.apache.geode.cache.query.internal;
-import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
-
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
+
import org.apache.geode.cache.query.FunctionDomainException;
import org.apache.geode.cache.query.NameResolutionException;
import org.apache.geode.cache.query.QueryInvocationTargetException;
@@ -113,7 +113,7 @@ public class OrderByComparatorUnmapped extends OrderByComparator {
@Override
protected Object[] evaluateSortCriteria(Object row) {
- return (Object[]) orderByMap.get(row);
+ return orderByMap.get(row);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/06b44db8/geode-core/src/test/java/org/apache/geode/cache/query/functional/StructSetOrResultsSet.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/functional/StructSetOrResultsSet.java b/geode-core/src/test/java/org/apache/geode/cache/query/functional/StructSetOrResultsSet.java
index fa5b3cd..b328cfe 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/query/functional/StructSetOrResultsSet.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/functional/StructSetOrResultsSet.java
@@ -18,7 +18,9 @@
*/
package org.apache.geode.cache.query.functional;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -93,8 +95,8 @@ public class StructSetOrResultsSet {
public void CompareQueryResultsWithoutAndWithIndexes(Object[][] r, int len, boolean checkOrder,
String queries[]) {
- Collection coll1 = null;
- Collection coll2 = null;
+ Collection coll1;
+ Collection coll2;
for (int j = 0; j < len; j++) {
checkSelectResultTypes((SelectResults) r[j][0], (SelectResults) r[j][1], queries[j]);
checkResultSizes((SelectResults) r[j][0], (SelectResults) r[j][1], queries[j]);
@@ -113,7 +115,7 @@ public class StructSetOrResultsSet {
public void compareExternallySortedQueriesWithOrderBy(String[] queries, Object[][] baseResults)
throws Exception {
for (int i = 0; i < queries.length; i++) {
- Query q = null;
+ Query q;
try {
String query = queries[i];
int indexOfOrderBy = query.indexOf("order ");
@@ -124,7 +126,7 @@ public class StructSetOrResultsSet {
int unorderedResultsSize = ((SelectResults) baseResults[i][1]).size();
if (unorderedResultsSize == 0) {
fail(
- "The test results size is 0 , it possibly is not validating anything. rewrite the test");
+ "The test results size is 0. It may not be validating anything. Please rewrite the test.");
}
Wrapper wrapper = getOrderByComparatorAndLimitForQuery(queries[i], unorderedResultsSize);
if (wrapper.validationLevel != ValidationLevel.NONE) {
@@ -230,7 +232,6 @@ public class StructSetOrResultsSet {
@Override
public int compare(Struct o1, Struct o2) {
return obc.compare(o1.getFieldValues(), o2.getFieldValues());
-
}
};
}
http://git-wip-us.apache.org/repos/asf/geode/blob/06b44db8/geode-core/src/test/java/org/apache/geode/cache/query/internal/OrderByComparatorJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/internal/OrderByComparatorJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/internal/OrderByComparatorJUnitTest.java
index 4d5174e..6c365cd 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/internal/OrderByComparatorJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/internal/OrderByComparatorJUnitTest.java
@@ -14,12 +14,15 @@
*/
package org.apache.geode.cache.query.internal;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.lang.reflect.Field;
import java.util.Collection;
+import java.util.List;
import org.junit.After;
import org.junit.Before;
@@ -32,9 +35,9 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.query.CacheUtils;
import org.apache.geode.cache.query.Query;
import org.apache.geode.cache.query.QueryInvalidException;
-import org.apache.geode.cache.query.QueryService;
import org.apache.geode.cache.query.data.Portfolio;
import org.apache.geode.cache.query.data.Position;
+import org.apache.geode.cache.query.internal.types.StructTypeImpl;
import org.apache.geode.test.junit.categories.IntegrationTest;
@Category(IntegrationTest.class)
@@ -43,7 +46,6 @@ public class OrderByComparatorJUnitTest {
@Before
public void setUp() throws java.lang.Exception {
CacheUtils.startCache();
-
}
@After
@@ -53,18 +55,13 @@ public class OrderByComparatorJUnitTest {
@Test
public void testOrderByComparatorUnmapped() throws Exception {
-
String queries[] = {
-
"SELECT distinct ID, description, createTime FROM /portfolio1 pf1 where ID > 0 order by ID desc, pkid desc ",};
Object r[][] = new Object[queries.length][2];
- QueryService qs;
- qs = CacheUtils.getQueryService();
Position.resetCounter();
- // Create Regions
+ // Create Regions
Region r1 = CacheUtils.createRegion("portfolio1", Portfolio.class);
-
for (int i = 0; i < 10; i++) {
r1.put(i + "", new Portfolio(i));
}
@@ -85,7 +82,6 @@ public class OrderByComparatorJUnitTest {
assertTrue(base instanceof SortedStructSet);
SortedStructSet sss = (SortedStructSet) base;
assertTrue(sss.comparator() instanceof OrderByComparatorUnmapped);
-
} catch (Exception e) {
e.printStackTrace();
fail(q.getQueryString());
@@ -95,16 +91,12 @@ public class OrderByComparatorJUnitTest {
@Test
public void testOrderByComparatorMapped() throws Exception {
-
String queries[] = {
-
"SELECT distinct ID, description, createTime, pkid FROM /portfolio1 pf1 where ID > 0 order by ID desc, pkid desc ",};
Object r[][] = new Object[queries.length][2];
- QueryService qs;
- qs = CacheUtils.getQueryService();
Position.resetCounter();
- // Create Regions
+ // Create Regions
Region r1 = CacheUtils.createRegion("portfolio1", Portfolio.class);
for (int i = 0; i < 10; i++) {
@@ -128,7 +120,6 @@ public class OrderByComparatorJUnitTest {
SortedStructSet sss = (SortedStructSet) base;
assertFalse(sss.comparator() instanceof OrderByComparatorUnmapped);
assertTrue(sss.comparator() instanceof OrderByComparator);
-
} catch (Exception e) {
e.printStackTrace();
fail(q.getQueryString());
@@ -138,14 +129,9 @@ public class OrderByComparatorJUnitTest {
@Test
public void testUnsupportedOrderByForPR() throws Exception {
-
String unsupportedQueries[] =
- {"select distinct p.status from /portfolio1 p order by p.status, p.ID",
-
- };
+ {"select distinct p.status from /portfolio1 p order by p.status, p.ID"};
Object r[][] = new Object[unsupportedQueries.length][2];
- QueryService qs;
- qs = CacheUtils.getQueryService();
Position.resetCounter();
// Create Regions
PartitionAttributesFactory paf = new PartitionAttributesFactory();
@@ -158,8 +144,7 @@ public class OrderByComparatorJUnitTest {
}
for (int i = 0; i < unsupportedQueries.length; i++) {
- Query q = null;
-
+ Query q;
CacheUtils.getLogger().info("Executing query: " + unsupportedQueries[i]);
q = CacheUtils.getQueryService().newQuery(unsupportedQueries[i]);
try {
@@ -173,17 +158,12 @@ public class OrderByComparatorJUnitTest {
@Test
public void testSupportedOrderByForRR() throws Exception {
-
String unsupportedQueries[] =
- {"select distinct p.status from /portfolio1 p order by p.status, p.ID",
-
- };
+ {"select distinct p.status from /portfolio1 p order by p.status, p.ID"};
Object r[][] = new Object[unsupportedQueries.length][2];
- QueryService qs;
- qs = CacheUtils.getQueryService();
Position.resetCounter();
- // Create Regions
+ // Create Regions
Region r1 = CacheUtils.createRegion("portfolio1", Portfolio.class);
for (int i = 0; i < 50; i++) {
@@ -191,13 +171,11 @@ public class OrderByComparatorJUnitTest {
}
for (int i = 0; i < unsupportedQueries.length; i++) {
- Query q = null;
-
+ Query q;
CacheUtils.getLogger().info("Executing query: " + unsupportedQueries[i]);
q = CacheUtils.getQueryService().newQuery(unsupportedQueries[i]);
try {
r[i][0] = q.execute();
-
} catch (QueryInvalidException qe) {
qe.printStackTrace();
fail(qe.toString());
@@ -205,4 +183,29 @@ public class OrderByComparatorJUnitTest {
}
}
+ // The following tests cover edge cases in OrderByComparator.
+ @Test
+ public void testCompareTwoNulls() throws Exception {
+ assertThat(createComparator().compare(null, null)).isEqualTo(0);
+ }
+
+ @Test
+ public void testCompareTwoObjectArrays() throws Exception {
+ String[] arrString1 = {"elephants"};
+ String[] arrString2 = {"elephant"};
+ assertThat(createComparator().compare(arrString1, arrString2)).isEqualTo(1);
+ }
+
+ @Test
+ public void testCompareThrowsClassCastException() throws Exception {
+ String testString = "elephant";
+ int testInt = 159;
+ assertThatThrownBy(() -> createComparator().compare(testString, testInt))
+ .isInstanceOf(ClassCastException.class);
+ }
+
+ private OrderByComparator createComparator() throws Exception {
+ StructTypeImpl objType = new StructTypeImpl();
+ return new OrderByComparator(null, objType, null);
+ }
}
[30/50] [abbrv] geode git commit: GEODE-3301: Cargo installs now
delete left over directories
Posted by kl...@apache.org.
GEODE-3301: Cargo installs now delete left over directories
* This should hopefully fix Jenkins build issues
This closes #662
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/7dc15b27
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/7dc15b27
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/7dc15b27
Branch: refs/heads/feature/GEODE-3299
Commit: 7dc15b27f114254a265757e085fbbce8cbfb0719
Parents: 9e87f5a
Author: David Anuta <da...@gmail.com>
Authored: Thu Jul 27 12:23:15 2017 -0700
Committer: nabarun <nn...@pivotal.io>
Committed: Thu Jul 27 16:44:51 2017 -0700
----------------------------------------------------------------------
.../geode/session/tests/ContainerInstall.java | 45 +++++++++-----------
.../geode/session/tests/ServerContainer.java | 4 --
.../geode/session/tests/TomcatContainer.java | 3 +-
.../geode/session/tests/TomcatInstall.java | 24 +++++++++++
4 files changed, 47 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/7dc15b27/geode-assembly/src/test/java/org/apache/geode/session/tests/ContainerInstall.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/session/tests/ContainerInstall.java b/geode-assembly/src/test/java/org/apache/geode/session/tests/ContainerInstall.java
index 490f586..45b8668 100644
--- a/geode-assembly/src/test/java/org/apache/geode/session/tests/ContainerInstall.java
+++ b/geode-assembly/src/test/java/org/apache/geode/session/tests/ContainerInstall.java
@@ -29,6 +29,7 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.logging.log4j.Logger;
import org.codehaus.cargo.container.installer.Installer;
@@ -112,6 +113,9 @@ public abstract class ContainerInstall {
String moduleName) throws IOException {
this.connType = connType;
+ // Removes previous run stuff (modules, installs, etc.)
+ clearPreviousRuns();
+
logger.info("Installing container from URL " + downloadURL);
// Optional step to install the container from a URL pointing to its distribution
@@ -142,6 +146,23 @@ public abstract class ContainerInstall {
}
/**
+ * Cleans up the installation by deleting the extracted module and downloaded installation folders
+ */
+ public void clearPreviousRuns() throws IOException {
+ File modulesFolder = new File(DEFAULT_MODULE_EXTRACTION_DIR);
+ File installsFolder = new File(DEFAULT_INSTALL_DIR);
+
+ // Remove default modules extraction from previous runs
+ if (modulesFolder.exists()) {
+ FileUtils.deleteDirectory(modulesFolder);
+ }
+ // Remove default installs from previous runs
+ if (installsFolder.exists()) {
+ FileUtils.deleteDirectory(installsFolder);
+ }
+ }
+
+ /**
* Sets the default locator address and port
*/
public void setDefaultLocator(String address, int port) {
@@ -219,30 +240,6 @@ public abstract class ContainerInstall {
}
/**
- * Get the server life cycle class that should be used
- *
- * Generates the class based on whether the installation's connection type (@link #connType) is
- * client server or peer to peer.
- */
- public String getServerLifeCycleListenerClass() {
- String className = "org.apache.geode.modules.session.catalina.";
- switch (connType) {
- case PEER_TO_PEER:
- className += "PeerToPeer";
- break;
- case CLIENT_SERVER:
- className += "ClientServer";
- break;
- default:
- throw new IllegalArgumentException(
- "Bad connection type. Must be either PEER_TO_PEER or CLIENT_SERVER");
- }
-
- className += "CacheLifecycleListener";
- return className;
- }
-
- /**
* Cargo specific string to identify the container with
*/
public abstract String getInstallId();
http://git-wip-us.apache.org/repos/asf/geode/blob/7dc15b27/geode-assembly/src/test/java/org/apache/geode/session/tests/ServerContainer.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/session/tests/ServerContainer.java b/geode-assembly/src/test/java/org/apache/geode/session/tests/ServerContainer.java
index ba635ac..94a13e9 100644
--- a/geode-assembly/src/test/java/org/apache/geode/session/tests/ServerContainer.java
+++ b/geode-assembly/src/test/java/org/apache/geode/session/tests/ServerContainer.java
@@ -211,10 +211,6 @@ public abstract class ServerContainer {
File configDir = new File(getConfiguration().getHome());
if (configDir.exists()) {
- logger.info("Configuration in " + configDir.getAbsolutePath());
- FileUtils.copyDirectory(configDir, new File(logDir.getAbsolutePath() + "/config"));
- logger.info("Copied configuration to "
- + new File(logDir.getAbsolutePath() + "/config").getAbsolutePath());
logger.info("Deleting configuration folder " + configDir.getAbsolutePath());
FileUtils.deleteDirectory(configDir);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/7dc15b27/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatContainer.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatContainer.java b/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatContainer.java
index 0edf0b3..d1bf714 100644
--- a/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatContainer.java
+++ b/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatContainer.java
@@ -99,7 +99,8 @@ public class TomcatContainer extends ServerContainer {
ContainerInstall.editXMLFile(contextXMLFile.getAbsolutePath(), "Tomcat", "Manager", "Context",
cacheProperties);
writePropertiesToConfig(config, DEFAULT_TOMCAT_CONFIG_XML_DIR + "/" + serverXMLFile.getName(),
- "//Server/Listener[@className='" + getInstall().getServerLifeCycleListenerClass() + "']",
+ "//Server/Listener[@className='"
+ + ((TomcatInstall) getInstall()).getServerLifeCycleListenerClass() + "']",
systemProperties);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/7dc15b27/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatInstall.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatInstall.java b/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatInstall.java
index 6a6f2df..ba5f6bc 100644
--- a/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatInstall.java
+++ b/geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatInstall.java
@@ -167,6 +167,30 @@ public class TomcatInstall extends ContainerInstall {
}
/**
+ * Get the server life cycle class that should be used
+ *
+ * Generates the class based on whether the installation's connection type
+ * {@link ContainerInstall#connType} is client server or peer to peer.
+ */
+ public String getServerLifeCycleListenerClass() {
+ String className = "org.apache.geode.modules.session.catalina.";
+ switch (getConnectionType()) {
+ case PEER_TO_PEER:
+ className += "PeerToPeer";
+ break;
+ case CLIENT_SERVER:
+ className += "ClientServer";
+ break;
+ default:
+ throw new IllegalArgumentException(
+ "Bad connection type. Must be either PEER_TO_PEER or CLIENT_SERVER");
+ }
+
+ className += "CacheLifecycleListener";
+ return className;
+ }
+
+ /**
* Location of the context XML file in the installation's 'conf' directory
*/
public File getDefaultContextXMLFile() {
[06/50] [abbrv] geode git commit: GEODE-240: Remove deprecated
methods on TransactionEvent
Posted by kl...@apache.org.
GEODE-240: Remove deprecated methods on TransactionEvent
Removed deprecated methods getCreateEvents, getDestroyEvents, getPutEvents, getInvalidateEvents from the TransactionEvent.
Removed implementation for methods getCreateEvents, getDestroyEvents, getPutEvents, getInvalidateEvents from TxEvent and TxRmtEvent.
Added utility methods getCreateEvents, getDestroyEvents, getPutEvents, getInvalidateEvents in TxEventTestUtil.
Changed tests to use the new utilty methods from TxEventTestUtil.
Signed-off-by: Shankar <sh...@ampool.io>
This closes #515
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/eb7d2eaa
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/eb7d2eaa
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/eb7d2eaa
Branch: refs/heads/feature/GEODE-3299
Commit: eb7d2eaa7c7047eec5c8a88f54a07d2d4822574c
Parents: 09dd45f
Author: shankarh <sh...@apache.org>
Authored: Tue May 16 08:17:05 2017 +0530
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Tue Jul 25 16:52:09 2017 -0700
----------------------------------------------------------------------
.../apache/geode/cache/TransactionEvent.java | 39 --
.../apache/geode/internal/cache/TXEvent.java | 79 ----
.../apache/geode/internal/cache/TXRmtEvent.java | 78 ----
.../test/java/org/apache/geode/TXJUnitTest.java | 363 ++++++++++---------
.../geode/cache/util/TxEventTestUtil.java | 88 +++++
.../geode/cache30/MultiVMRegionTestCase.java | 67 ++--
6 files changed, 304 insertions(+), 410 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/eb7d2eaa/geode-core/src/main/java/org/apache/geode/cache/TransactionEvent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/TransactionEvent.java b/geode-core/src/main/java/org/apache/geode/cache/TransactionEvent.java
index cb15f1b..b589611 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/TransactionEvent.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/TransactionEvent.java
@@ -56,45 +56,6 @@ public interface TransactionEvent {
public TransactionId getTransactionId();
/**
- * Gets all "create" EntryEvents for this transaction; <code>Region.create</code> and/or
- * <code>Region.put</code>
- *
- * @return <code>List</code> of <code>EntryEvents</code> or <code>Collections.EMPTY_LIST</code>
- * @deprecated as of GemFire 5.0, use {@link #getEvents} instead
- */
- @Deprecated
- public List<EntryEvent<?, ?>> getCreateEvents();
-
- /**
- * Gets all "destroy" EntryEvents for this transaction; <code>Region.destroy</code> and
- * <code>Region.localDestroy</code>.
- *
- * @return <code>List</code> of <code>EntryEvents</code> or <code>Collections.EMPTY_LIST</code>
- * @deprecated as of GemFire 5.0, use {@link #getEvents} instead
- */
- @Deprecated
- public List<EntryEvent<?, ?>> getDestroyEvents();
-
- /**
- * Gets all <code>Region.put</code> EntryEvents for this transaction.
- *
- * @return <code>List</code> of <code>EntryEvents</code> or <code>Collections.EMPTY_LIST</code>
- * @deprecated as of GemFire 5.0, use {@link #getEvents} instead
- */
- @Deprecated
- public List<EntryEvent<?, ?>> getPutEvents();
-
- /**
- * Gets all "invalidate" EntryEvents for this transaction; <code>Region.invalidate</code> and
- * <code>Region.localInvalidate</code>.
- *
- * @return <code>List</code> of <code>EntryEvents</code> or <code>Collections.EMPTY_LIST</code>
- * @deprecated as of GemFire 5.0, use {@link #getEvents} instead
- */
- @Deprecated
- public List<EntryEvent<?, ?>> getInvalidateEvents();
-
- /**
* Returns an ordered list of every {@link CacheEvent} for this transaction. The event order is
* consistent with the order in which the operations were performed during the transaction.
*
http://git-wip-us.apache.org/repos/asf/geode/blob/eb7d2eaa/geode-core/src/main/java/org/apache/geode/internal/cache/TXEvent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/TXEvent.java b/geode-core/src/main/java/org/apache/geode/internal/cache/TXEvent.java
index 8acc63b..777eea5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/TXEvent.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/TXEvent.java
@@ -27,10 +27,6 @@ public class TXEvent implements TransactionEvent, Releasable {
private final TXStateInterface localTxState;
private List events;
- private List createEvents = null;
- private List putEvents = null;
- private List invalidateEvents = null;
- private List destroyEvents = null;
final private Cache cache;
TXEvent(TXStateInterface localTxState, Cache cache) {
@@ -43,81 +39,6 @@ public class TXEvent implements TransactionEvent, Releasable {
return this.localTxState.getTransactionId();
}
- public synchronized List getCreateEvents() {
- if (this.createEvents == null) {
- ArrayList result = new ArrayList();
- Iterator it = getEvents().iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isCreate()) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- this.createEvents = Collections.EMPTY_LIST;
- } else {
- this.createEvents = Collections.unmodifiableList(result);
- }
- }
- return this.createEvents;
- }
-
- public synchronized List getPutEvents() {
- if (this.putEvents == null) {
- ArrayList result = new ArrayList();
- Iterator it = getEvents().iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isUpdate()) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- this.putEvents = Collections.EMPTY_LIST;
- } else {
- this.putEvents = Collections.unmodifiableList(result);
- }
- }
- return this.putEvents;
- }
-
- public synchronized List getInvalidateEvents() {
- if (this.invalidateEvents == null) {
- ArrayList result = new ArrayList();
- Iterator it = getEvents().iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isInvalidate()) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- this.invalidateEvents = Collections.EMPTY_LIST;
- } else {
- this.invalidateEvents = Collections.unmodifiableList(result);
- }
- }
- return this.invalidateEvents;
- }
-
- public synchronized List getDestroyEvents() {
- if (this.destroyEvents == null) {
- ArrayList result = new ArrayList();
- Iterator it = getEvents().iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isDestroy()) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- this.destroyEvents = Collections.EMPTY_LIST;
- } else {
- this.destroyEvents = Collections.unmodifiableList(result);
- }
- }
- return this.destroyEvents;
- }
public synchronized List getEvents() {
if (this.events == null) {
http://git-wip-us.apache.org/repos/asf/geode/blob/eb7d2eaa/geode-core/src/main/java/org/apache/geode/internal/cache/TXRmtEvent.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/TXRmtEvent.java b/geode-core/src/main/java/org/apache/geode/internal/cache/TXRmtEvent.java
index 92e4b8b..f41ae16 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/TXRmtEvent.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/TXRmtEvent.java
@@ -103,85 +103,7 @@ public class TXRmtEvent implements TransactionEvent {
return true;
}
- public List getCreateEvents() {
- if (this.events == null) {
- return Collections.EMPTY_LIST;
- } else {
- ArrayList result = new ArrayList(this.events.size());
- Iterator it = this.events.iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isCreate() && isEventUserVisible(ce)) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- return Collections.EMPTY_LIST;
- } else {
- return Collections.unmodifiableList(result);
- }
- }
- }
-
- public List getPutEvents() {
- if (this.events == null) {
- return Collections.EMPTY_LIST;
- } else {
- ArrayList result = new ArrayList(this.events.size());
- Iterator it = this.events.iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isUpdate() && isEventUserVisible(ce)) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- return Collections.EMPTY_LIST;
- } else {
- return Collections.unmodifiableList(result);
- }
- }
- }
- public List getInvalidateEvents() {
- if (this.events == null) {
- return Collections.EMPTY_LIST;
- } else {
- ArrayList result = new ArrayList(this.events.size());
- Iterator it = this.events.iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isInvalidate() && isEventUserVisible(ce)) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- return Collections.EMPTY_LIST;
- } else {
- return Collections.unmodifiableList(result);
- }
- }
- }
-
- public List getDestroyEvents() {
- if (this.events == null) {
- return Collections.EMPTY_LIST;
- } else {
- ArrayList result = new ArrayList(this.events.size());
- Iterator it = this.events.iterator();
- while (it.hasNext()) {
- CacheEvent ce = (CacheEvent) it.next();
- if (ce.getOperation().isDestroy() && isEventUserVisible(ce)) {
- result.add(ce);
- }
- }
- if (result.isEmpty()) {
- return Collections.EMPTY_LIST;
- } else {
- return Collections.unmodifiableList(result);
- }
- }
- }
public boolean isEmpty() {
return (events == null) || events.isEmpty();
http://git-wip-us.apache.org/repos/asf/geode/blob/eb7d2eaa/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java b/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
index 5a72cf9..733b31c 100644
--- a/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
@@ -29,6 +29,7 @@ import java.util.Set;
import javax.transaction.Synchronization;
+import org.apache.geode.cache.util.TxEventTestUtil;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -470,7 +471,7 @@ public class TXJUnitTest {
assertEquals("value2", reg2.get("key2"));
assertEquals(txCommitChanges + 2, stats.getTxCommitChanges());
{
- List<EntryEvent<?, ?>> creates = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(2, creates.size());
@@ -536,13 +537,13 @@ public class TXJUnitTest {
reg1.create("key1", "value1");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -568,13 +569,13 @@ public class TXJUnitTest {
reg1.put("key1", "value1");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getPutEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getPutEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -600,13 +601,13 @@ public class TXJUnitTest {
reg1.put("key1", "value0");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -632,13 +633,13 @@ public class TXJUnitTest {
reg1.invalidate("key1");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getInvalidateEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getInvalidateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -665,13 +666,13 @@ public class TXJUnitTest {
reg1.localInvalidate("key1");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getInvalidateEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getInvalidateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -699,13 +700,13 @@ public class TXJUnitTest {
reg1.destroy("key1");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -732,13 +733,13 @@ public class TXJUnitTest {
reg1.localDestroy("key1");
this.txMgr.rollback();
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
{
Cache teCache = this.te.getCache();
assertEquals(teCache, this.cache);
- List<EntryEvent<?, ?>> creates = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> creates = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, creates.size());
@@ -1141,11 +1142,11 @@ public class TXJUnitTest {
callbackVal.reAssert();
assertEquals("value2", reg1.getEntry("key1").getValue());
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1182,11 +1183,11 @@ public class TXJUnitTest {
assertTrue(reg1.containsKey("key1"));
assertTrue(!reg1.containsValueForKey("key1"));
assertEquals(1, this.te.getEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1227,10 +1228,10 @@ public class TXJUnitTest {
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
assertEquals(0, this.te.getEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
// Check C + LI -> C
callbackVal.reset();
@@ -1247,12 +1248,12 @@ public class TXJUnitTest {
callbackVal.reAssert();
assertTrue(reg1.containsKey("key1"));
assertTrue(!reg1.containsValueForKey("key1"));
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1298,12 +1299,12 @@ public class TXJUnitTest {
callbackVal.reAssert();
assertTrue(reg1.containsKey("key1"));
assertEquals("value2", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1338,10 +1339,10 @@ public class TXJUnitTest {
callbackVal.assertDestroyListenerCnt(0);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(0, this.te.getEvents().size());
// Check C + LI + DD -> NOOP
@@ -1359,10 +1360,10 @@ public class TXJUnitTest {
callbackVal.assertCreateListenerCnt(0);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(0, this.te.getEvents().size());
// check C + LD -> NOOP
@@ -1378,10 +1379,10 @@ public class TXJUnitTest {
callbackVal.assertLocalDestroyListenerCnt(0);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(0, this.te.getEvents().size());
// check C + LD + D -> EX
@@ -1426,12 +1427,12 @@ public class TXJUnitTest {
callbackVal.assertCreateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1467,12 +1468,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(0);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1516,12 +1517,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getPutEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getPutEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1558,12 +1559,12 @@ public class TXJUnitTest {
callbackVal.reAssert();
assertTrue(reg1.containsKey("key1"));
assertTrue(!reg1.containsValueForKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getInvalidateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getInvalidateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1599,12 +1600,12 @@ public class TXJUnitTest {
callbackVal.assertDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1640,12 +1641,12 @@ public class TXJUnitTest {
assertTrue(reg1.containsKey("key1"));
assertEquals(null, reg1.getEntry("key1").getValue());
assertTrue(!reg1.containsValueForKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getInvalidateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getInvalidateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1691,12 +1692,12 @@ public class TXJUnitTest {
callbackVal.reAssert();
assertTrue(reg1.containsKey("key1"));
assertEquals("value2", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getPutEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getPutEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1734,12 +1735,12 @@ public class TXJUnitTest {
callbackVal.assertLocalDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1775,12 +1776,12 @@ public class TXJUnitTest {
callbackVal.assertDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1815,12 +1816,12 @@ public class TXJUnitTest {
callbackVal.assertLocalDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1883,12 +1884,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1925,12 +1926,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -1971,12 +1972,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value2", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getPutEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getPutEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2010,12 +2011,12 @@ public class TXJUnitTest {
callbackVal.assertDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2049,12 +2050,12 @@ public class TXJUnitTest {
callbackVal.assertLocalDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2120,12 +2121,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2164,12 +2165,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2211,12 +2212,12 @@ public class TXJUnitTest {
callbackVal.assertInvalidateCnt(0);
callbackVal.reAssert();
assertEquals("value2", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getPutEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getPutEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2251,12 +2252,12 @@ public class TXJUnitTest {
callbackVal.assertDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2290,12 +2291,12 @@ public class TXJUnitTest {
callbackVal.assertLocalDestroyListenerCnt(1);
callbackVal.reAssert();
assertTrue(!reg1.containsKey("key1"));
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getDestroyEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getDestroyEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2361,12 +2362,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2405,12 +2406,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value3", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2451,12 +2452,12 @@ public class TXJUnitTest {
LocalRegion.NonTXEntry nonTXe = (LocalRegion.NonTXEntry) reg1.getEntry("key1");
assertTrue(nonTXe.getRegionEntry().isInvalid());
}
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getInvalidateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getInvalidateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2495,12 +2496,12 @@ public class TXJUnitTest {
LocalRegion.NonTXEntry nonTXe = (LocalRegion.NonTXEntry) reg1.getEntry("key1");
assertTrue(nonTXe.getRegionEntry().isInvalid());
}
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
- assertEquals(0, this.te.getCreateEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getInvalidateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getInvalidateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2536,12 +2537,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value1", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2577,12 +2578,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value1", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2618,12 +2619,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value1", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2659,12 +2660,12 @@ public class TXJUnitTest {
callbackVal.assertUpdateListenerCnt(1);
callbackVal.reAssert();
assertEquals("value1", reg1.getEntry("key1").getValue());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(1, this.te.getEvents().size());
{
- List<EntryEvent<?, ?>> events = this.te.getCreateEvents();
+ List<EntryEvent<?, ?>> events = TxEventTestUtil.getCreateEvents(this.te.getEvents());
assertEquals(myTxId, this.te.getTransactionId());
assertEquals(1, events.size());
@@ -2858,10 +2859,10 @@ public class TXJUnitTest {
assertEquals(0, this.listenerAfterRollback);
this.txMgr.rollback();
assertEquals(1, this.listenerAfterRollback);
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(0, this.te.getEvents().size());
assertEquals(myTxId, this.te.getTransactionId());
@@ -2874,10 +2875,10 @@ public class TXJUnitTest {
fail("did not expect " + unexpected);
}
assertEquals(1, this.listenerAfterCommit);
- assertEquals(0, this.te.getCreateEvents().size());
- assertEquals(0, this.te.getPutEvents().size());
- assertEquals(0, this.te.getInvalidateEvents().size());
- assertEquals(0, this.te.getDestroyEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getInvalidateEvents(this.te.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getDestroyEvents(this.te.getEvents()).size());
assertEquals(0, this.te.getEvents().size());
assertEquals(myTxId, this.te.getTransactionId());
http://git-wip-us.apache.org/repos/asf/geode/blob/eb7d2eaa/geode-core/src/test/java/org/apache/geode/cache/util/TxEventTestUtil.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/util/TxEventTestUtil.java b/geode-core/src/test/java/org/apache/geode/cache/util/TxEventTestUtil.java
new file mode 100644
index 0000000..dad18d7
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/cache/util/TxEventTestUtil.java
@@ -0,0 +1,88 @@
+/*
+ * 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.cache.util;
+
+import org.apache.geode.cache.CacheEvent;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Utilty class for getting Transaction events for create, invalidate, put, destroy operations.
+ */
+public class TxEventTestUtil {
+
+ /**
+ * Retrieves the cache events with operation create
+ *
+ * @return list of cache events
+ */
+ public static List getCreateEvents(List<CacheEvent<?, ?>> events) {
+ if (events != null && !events.isEmpty()) {
+ List<CacheEvent<?, ?>> result =
+ events.stream().filter(ce -> ce.getOperation().isCreate()).collect(Collectors.toList());
+ return result;
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+ /**
+ * Retrieves the cache events with operation update
+ *
+ * @return list of cache events
+ */
+ public static List getPutEvents(List<CacheEvent<?, ?>> events) {
+ if (events != null && !events.isEmpty()) {
+ List<CacheEvent<?, ?>> result =
+ events.stream().filter(ce -> ce.getOperation().isUpdate()).collect(Collectors.toList());
+ return result;
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+ /**
+ * Retrieves the cache events with operation invalidate
+ *
+ * @return list of cache events
+ */
+ public static List getInvalidateEvents(List<CacheEvent<?, ?>> events) {
+ if (events != null && !events.isEmpty()) {
+ List<CacheEvent<?, ?>> result = events.stream().filter(ce -> ce.getOperation().isInvalidate())
+ .collect(Collectors.toList());
+ return result;
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+ /**
+ * Retrieves the cache events with operation destroy
+ *
+ * @return list of cache events
+ */
+ public static List getDestroyEvents(List<CacheEvent<?, ?>> events) {
+ if (events != null && !events.isEmpty()) {
+ List<CacheEvent<?, ?>> result =
+ events.stream().filter(ce -> ce.getOperation().isDestroy()).collect(Collectors.toList());
+ return result;
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/eb7d2eaa/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
index ff996a2..34cf1ca 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
@@ -40,6 +40,7 @@ import java.util.Random;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
+import org.apache.geode.cache.util.TxEventTestUtil;
import org.apache.logging.log4j.Logger;
import org.junit.AfterClass;
import org.junit.Ignore;
@@ -6089,9 +6090,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -6136,7 +6137,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
tl.checkAfterCommitCount(2);
assertEquals(rgn1.getCache(), tl.lastEvent.getCache());
{
- Collection events = tl.lastEvent.getPutEvents();
+ Collection events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(tl.expectedTxId, ev.getTransactionId());
@@ -6182,7 +6183,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
tl.checkAfterCommitCount(3);
assertEquals(rgn1.getCache(), tl.lastEvent.getCache());
{
- Collection events = tl.lastEvent.getInvalidateEvents();
+ Collection events = TxEventTestUtil.getInvalidateEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(tl.expectedTxId, ev.getTransactionId());
@@ -6226,7 +6227,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
tl.checkAfterCommitCount(4);
assertEquals(rgn1.getCache(), tl.lastEvent.getCache());
{
- Collection events = tl.lastEvent.getDestroyEvents();
+ Collection events = TxEventTestUtil.getDestroyEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(tl.expectedTxId, ev.getTransactionId());
@@ -6354,7 +6355,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
getSystem().getLogWriter().info("testTXUpdateLoadNoConflict: did commit");
assertEquals("txValue", rgn.getEntry("key").getValue());
{
- Collection events = tl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(myTXId, ev.getTransactionId());
@@ -6403,7 +6404,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
getSystem().getLogWriter().info("testTXUpdateLoadNoConflict: did commit");
assertEquals("txValue3", rgn.getEntry("key3").getValue());
{
- Collection events = tl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(myTXId, ev.getTransactionId());
@@ -6462,7 +6463,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
getSystem().getLogWriter().info("testTXUpdateLoadNoConflict: did commit");
assertEquals("new txValue", rgn.getEntry("key").getValue());
{
- Collection events = tl.lastEvent.getPutEvents();
+ Collection events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(myTXId, ev.getTransactionId());
@@ -6636,9 +6637,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(2, events.size());
ArrayList eventList = new ArrayList(events);
@@ -6713,9 +6714,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(2, events.size());
ArrayList eventList = new ArrayList(events);
@@ -6784,9 +6785,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -6824,9 +6825,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -6864,9 +6865,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7333,7 +7334,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertEquals(0, tl.closeCount);
assertEquals(rgn.getCache(), tl.lastEvent.getCache());
{
- Collection events = tl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
// assertIndexDetailsEquals(tl.expectedTxId, ev.getTransactionId());
@@ -7366,8 +7367,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertEquals(0, tl.afterFailedCommitCount);
assertEquals(0, tl.afterRollbackCount);
assertEquals(0, tl.closeCount);
- assertEquals(0, tl.lastEvent.getCreateEvents().size());
- assertEquals(0, tl.lastEvent.getPutEvents().size());
+ assertEquals(0, TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents()).size());
+ assertEquals(0, TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents()).size());
assertEquals(rgn.getCache(), tl.lastEvent.getCache());
}
};
@@ -7485,9 +7486,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7511,7 +7512,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertEquals("value2", rgn.getEntry("key").getValue());
{
localTl.assertCounts(1, 0, 0, 0);
- Collection events = localTl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(localTl.lastEvent.getEvents());
assertEquals(myTXId, localTl.lastEvent.getTransactionId());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7564,9 +7565,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7591,7 +7592,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertTrue(!rgn.containsValueForKey("key"));
localTl.assertCounts(2, 0, 0, 0);
{
- Collection events = localTl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(localTl.lastEvent.getEvents());
assertEquals(myTXId, localTl.lastEvent.getTransactionId());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7670,7 +7671,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertNull(rgn.getEntry("key").getValue());
localTl.assertCounts(3, 0, 0, 0);
{
- Collection events = localTl.lastEvent.getInvalidateEvents();
+ Collection events = TxEventTestUtil.getInvalidateEvents(localTl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
assertEquals(myTXId, ev.getTransactionId());
@@ -7717,7 +7718,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertTrue(!rgn1.containsValueForKey("key"));
tl.assertCounts(3, 0, 0, 0);
{
- Collection events = tl.lastEvent.getDestroyEvents();
+ Collection events = TxEventTestUtil.getDestroyEvents(tl.lastEvent.getEvents());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
// assertIndexDetailsEquals(tl.expectedTxId, ev.getTransactionId());
@@ -7781,9 +7782,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Collection events;
RegionAttributes attr = getRegionAttributes();
if (!attr.getDataPolicy().withReplication() || attr.getConcurrencyChecksEnabled()) {
- events = tl.lastEvent.getPutEvents();
+ events = TxEventTestUtil.getPutEvents(tl.lastEvent.getEvents());
} else {
- events = tl.lastEvent.getCreateEvents();
+ events = TxEventTestUtil.getCreateEvents(tl.lastEvent.getEvents());
}
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7808,7 +7809,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertTrue(!rgn.containsValueForKey("key"));
localTl.assertCounts(4, 0, 0, 0);
{
- Collection events = localTl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(localTl.lastEvent.getEvents());
assertEquals(myTXId, localTl.lastEvent.getTransactionId());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
@@ -7854,7 +7855,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertEquals("value2", rgn.getEntry("key").getValue());
localTl.assertCounts(5, 0, 0, 0);
{
- Collection events = localTl.lastEvent.getCreateEvents();
+ Collection events = TxEventTestUtil.getCreateEvents(localTl.lastEvent.getEvents());
assertEquals(myTXId, localTl.lastEvent.getTransactionId());
assertEquals(1, events.size());
EntryEvent ev = (EntryEvent) events.iterator().next();
[07/50] [abbrv] geode git commit: GEODE-3291: add soundex analyzer
into lucene query This closes #654
Posted by kl...@apache.org.
GEODE-3291: add soundex analyzer into lucene query
This closes #654
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/289a0857
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/289a0857
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/289a0857
Branch: refs/heads/feature/GEODE-3299
Commit: 289a0857f5822aee89d78625d226d5765fac8d40
Parents: eb7d2ea
Author: zhouxh <gz...@pivotal.io>
Authored: Mon Jul 24 14:27:42 2017 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Tue Jul 25 22:28:38 2017 -0700
----------------------------------------------------------------------
geode-assembly/build.gradle | 1 +
.../src/test/resources/expected_jars.txt | 1 +
geode-lucene/build.gradle | 1 +
.../lucene/LuceneQueriesIntegrationTest.java | 36 ++++++++++++++++++++
4 files changed, 39 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/289a0857/geode-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 02c9e33..69f1f19 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -195,6 +195,7 @@ def cp = {
it.contains('lucene-core') ||
it.contains('lucene-queries') ||
it.contains('lucene-queryparser') ||
+ it.contains('lucene-analyzers-phonetic') ||
// dependencies from geode-protobuf
it.contains('protobuf-java')
http://git-wip-us.apache.org/repos/asf/geode/blob/289a0857/geode-assembly/src/test/resources/expected_jars.txt
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/resources/expected_jars.txt b/geode-assembly/src/test/resources/expected_jars.txt
index 05f5834..a082539 100644
--- a/geode-assembly/src/test/resources/expected_jars.txt
+++ b/geode-assembly/src/test/resources/expected_jars.txt
@@ -46,6 +46,7 @@ lucene-analyzers-common
lucene-core
lucene-queries
lucene-queryparser
+lucene-analyzers-phonetic
mx4j
mx4j-remote
mx4j-tools
http://git-wip-us.apache.org/repos/asf/geode/blob/289a0857/geode-lucene/build.gradle
----------------------------------------------------------------------
diff --git a/geode-lucene/build.gradle b/geode-lucene/build.gradle
index 74de7a6..66061aa 100644
--- a/geode-lucene/build.gradle
+++ b/geode-lucene/build.gradle
@@ -22,6 +22,7 @@ dependencies {
compile 'org.apache.lucene:lucene-analyzers-common:' + project.'lucene.version'
compile 'org.apache.lucene:lucene-core:' + project.'lucene.version'
compile 'org.apache.lucene:lucene-queries:' + project.'lucene.version'
+ compile ('org.apache.lucene:lucene-analyzers-phonetic:' + project.'lucene.version')
compile ('org.apache.lucene:lucene-queryparser:' + project.'lucene.version') {
exclude module: 'lucene-sandbox'
}
http://git-wip-us.apache.org/repos/asf/geode/blob/289a0857/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesIntegrationTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesIntegrationTest.java
index 3c0b10d..fb86e19 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesIntegrationTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/LuceneQueriesIntegrationTest.java
@@ -145,6 +145,42 @@ public class LuceneQueriesIntegrationTest extends LuceneIntegrationTest {
"primitiveInt2");
}
+ @Test()
+ public void shouldQueryUsingSoundexAnalyzer() throws Exception {
+ Map<String, Analyzer> fields = new HashMap<String, Analyzer>();
+ fields.put("field1", new StandardAnalyzer());
+ fields.put("field2", new DoubleMetaphoneAnalyzer());
+ luceneService.createIndexFactory().setFields(fields).create(INDEX_NAME, REGION_NAME);
+ Region region = cache.createRegionFactory(RegionShortcut.PARTITION).create(REGION_NAME);
+ final LuceneIndex index = luceneService.getIndex(INDEX_NAME, REGION_NAME);
+
+ // Put two values with some of the same tokens
+ String value1 = "Stefan";
+ String value2 = "Steph";
+ String value3 = "Stephen";
+ String value4 = "Steve";
+ String value5 = "Steven";
+ String value6 = "Stove";
+ String value7 = "Stuffin";
+
+ region.put("A", new TestObject(value1, value1));
+ region.put("B", new TestObject(value2, value2));
+ region.put("C", new TestObject(value3, value3));
+ region.put("D", new TestObject(value4, value4));
+ region.put("E", new TestObject(value5, value5));
+ region.put("F", new TestObject(value6, value6));
+ region.put("G", new TestObject(value7, value7));
+
+ luceneService.waitUntilFlushed(INDEX_NAME, REGION_NAME, 60000, TimeUnit.MILLISECONDS);
+ // soundex search
+ verifyQuery("field2:Stephen", DEFAULT_FIELD, "A", "C", "E", "G");
+
+ // compare with Ste* search on soundex analyzer will not find anything
+ // but on standard analyzer will find 5 matchs
+ verifyQuery("field2:Ste*", DEFAULT_FIELD);
+ verifyQuery("field1:Ste*", DEFAULT_FIELD, "A", "B", "C", "D", "E");
+ }
+
@Ignore
@Test()
public void queryParserCannotQueryByRange() throws Exception {
[46/50] [abbrv] geode git commit: GEODE-3333:
GMSJoinLeaveJUnitTest.testViewNotSentWhenShuttingDown fails
Posted by kl...@apache.org.
GEODE-3333: GMSJoinLeaveJUnitTest.testViewNotSentWhenShuttingDown fails
Moved assertion to remove race condition. The test wanted to
confirm that the object under test thought it was membership
coordinator and then check to see if it decided to stop being
coordinator. If the background thread did this quickly enough
the first condition would never be seen by the test.
Since the object under test was the coordinator immediately after
setup there was no need to delay the assertion until after removing
other members from the view.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/b218ca30
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/b218ca30
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/b218ca30
Branch: refs/heads/feature/GEODE-3299
Commit: b218ca30bd447afffbb5da6360219a61c84ffe8a
Parents: 3236416
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Aug 1 13:34:34 2017 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Aug 1 13:37:36 2017 -0700
----------------------------------------------------------------------
.../internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/b218ca30/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
index 2807be3..7c2033a 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
@@ -1145,6 +1145,7 @@ public class GMSJoinLeaveJUnitTest {
mockMembers[2], gmsJoinLeaveMemberId, mockMembers[3]));
assertTrue(gmsJoinLeave.getViewCreator().isAlive());
+ assertTrue(testLocator.isCoordinator);
when(manager.shutdownInProgress()).thenReturn(Boolean.TRUE);
for (int i = 1; i < 4; i++) {
@@ -1154,8 +1155,6 @@ public class GMSJoinLeaveJUnitTest {
gmsJoinLeave.processMessage(msg);
}
- assertTrue(testLocator.isCoordinator);
-
Awaitility.await("waiting for view creator to stop").atMost(5000, MILLISECONDS)
.until(() -> !gmsJoinLeave.getViewCreator().isAlive());
assertEquals(1, gmsJoinLeave.getView().getViewId());
[29/50] [abbrv] geode git commit: GEODE-3231: use tempWorkingFolder
to avoid test log file contamination between tests.
Posted by kl...@apache.org.
GEODE-3231: use tempWorkingFolder to avoid test log file contamination between tests.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/9e87f5a9
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/9e87f5a9
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/9e87f5a9
Branch: refs/heads/feature/GEODE-3299
Commit: 9e87f5a990b8535ae11f5016d13db9cfb79dbebd
Parents: 0debd20
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Thu Jul 27 09:56:15 2017 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Thu Jul 27 09:56:33 2017 -0700
----------------------------------------------------------------------
.../internal/cli/commands/ExportLogsWithMemberGroupDUnitTest.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/9e87f5a9/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsWithMemberGroupDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsWithMemberGroupDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsWithMemberGroupDUnitTest.java
index ef62269..320cc2e 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsWithMemberGroupDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsWithMemberGroupDUnitTest.java
@@ -46,7 +46,8 @@ import org.apache.geode.test.junit.categories.DistributedTest;
@Category(DistributedTest.class)
public class ExportLogsWithMemberGroupDUnitTest {
@ClassRule
- public static LocatorServerStartupRule lsRule = new LocatorServerStartupRule().withLogFile();
+ public static LocatorServerStartupRule lsRule =
+ new LocatorServerStartupRule().withTempWorkingDir().withLogFile();
@ClassRule
public static GfshShellConnectionRule connector = new GfshShellConnectionRule();
[25/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
new file mode 100644
index 0000000..ab0a355
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
@@ -0,0 +1,532 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.wan.GatewaySender;
+import org.apache.geode.cache.wan.GatewaySender.OrderPolicy;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTestBase {
+ /**
+ * GatewaySender with all default attributes
+ */
+ @Test
+ public void testCreateDestroyGatewaySenderWithDefault() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info(
+ "testCreateDestroyGatewaySenderWithDefault stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyGatewaySenderWithDefault failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ doDestroyAndVerifyGatewaySender("ln", null, null, "testCreateDestroyGatewaySenderWithDefault",
+ Arrays.asList(vm3, vm4, vm5), 5, false);
+ }
+
+ /**
+ * + * GatewaySender with given attribute values +
+ */
+ @Test
+ public void testCreateDestroyGatewaySender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateDestroyGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
+ vm4.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
+ vm5.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
+ doDestroyAndVerifyGatewaySender("ln", null, null, "testCreateDestroyGatewaySender",
+ Arrays.asList(vm3, vm4, vm5), 5, false);
+ }
+
+ /**
+ * GatewaySender with given attribute values and event filters.
+ */
+ @Test
+ public void testCreateDestroyGatewaySenderWithGatewayEventFilters() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER
+ + "=org.apache.geode.cache30.MyGatewayEventFilter1,org.apache.geode.cache30.MyGatewayEventFilter2";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateDestroyGatewaySenderWithGatewayEventFilters stringResult : "
+ + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail(
+ "testCreateDestroyGatewaySenderWithGatewayEventFilters failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ List<String> eventFilters = new ArrayList<String>();
+ eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter1");
+ eventFilters.add("org.apache.geode.cache30.MyGatewayEventFilter2");
+ vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, eventFilters, null));
+ vm4.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, eventFilters, null));
+ vm5.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, eventFilters, null));
+ doDestroyAndVerifyGatewaySender("ln", null, null,
+ "testCreateDestroyGatewaySenderWithGatewayEventFilters", Arrays.asList(vm3, vm4, vm5), 5,
+ false);
+ }
+
+ /**
+ * GatewaySender with given attribute values and transport filters.
+ */
+ @Test
+ public void testCreateDestroyGatewaySenderWithGatewayTransportFilters() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER
+ + "=org.apache.geode.cache30.MyGatewayTransportFilter1";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testCreateDestroyGatewaySenderWithGatewayTransportFilters stringResult : "
+ + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail(
+ "testCreateDestroyGatewaySenderWithGatewayTransportFilters failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ List<String> transportFilters = new ArrayList<String>();
+ transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
+ vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, transportFilters));
+ vm4.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, transportFilters));
+ vm5.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, transportFilters));
+ doDestroyAndVerifyGatewaySender("ln", null, null,
+ "testCreateDestroyGatewaySenderWithGatewayTransportFilters", Arrays.asList(vm3, vm4, vm5),
+ 5, false);
+ }
+
+ /**
+ * GatewaySender with given attribute values on given member.
+ */
+ @Test
+ public void testCreateDestroyGatewaySender_OnMember() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ final DistributedMember vm3Member = vm3.invoke(this::getMember);
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.MEMBER + "=" + vm3Member.getId() + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testCreateDestroyGatewaySender_OnMember stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(1, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyGatewaySender_OnMember failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm3.invoke(() -> verifySenderAttributes("ln", 2, false, true, 1000, socketReadTimeout, true,
+ 1000, 5000, true, false, 1000, 100, 2, OrderPolicy.THREAD, null, null));
+ doDestroyAndVerifyGatewaySender("ln", null, vm3Member,
+ "testCreateDestroyGatewaySender_OnMember", Arrays.asList(vm3), 1, false);
+ }
+
+ /**
+ * GatewaySender with given attribute values on given group
+ */
+ @Test
+ public void testCreateDestroyGatewaySender_Group() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.GROUP + "=SenderGroup1" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testCreateDestroyGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(3, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyGatewaySender_Group failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ doDestroyAndVerifyGatewaySender("ln", "SenderGroup1", null,
+ "testCreateDestroyGatewaySender_Group", Arrays.asList(vm3, vm4, vm5), 3, false);
+ }
+
+ /**
+ * GatewaySender with given attribute values on given group. Only 2 of 3 members are part of the
+ * group.
+ */
+ @Test
+ public void testCreateDestroyGatewaySender_Group_Scenario2() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.GROUP + "=SenderGroup1" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info(
+ "testCreateDestroyGatewaySender_Group_Scenario2 stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(2, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyGatewaySender_Group_Scenario2 failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ doDestroyAndVerifyGatewaySender("ln", "SenderGroup1", null,
+ "testCreateDestroyGatewaySender_Group_Scenario2", Arrays.asList(vm3, vm4), 2, false);
+ }
+
+ /**
+ * + * Parallel GatewaySender with given attribute values +
+ */
+ @Test
+ public void testCreateDestroyParallelGatewaySender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testCreateDestroyParallelGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyParallelGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ vm3.invoke(
+ () -> verifySenderAttributes("ln", 2, true, true, 1000, socketReadTimeout, true, 1000, 5000,
+ true, false, 1000, 100, GatewaySender.DEFAULT_DISPATCHER_THREADS, null, null, null));
+ vm4.invoke(
+ () -> verifySenderAttributes("ln", 2, true, true, 1000, socketReadTimeout, true, 1000, 5000,
+ true, false, 1000, 100, GatewaySender.DEFAULT_DISPATCHER_THREADS, null, null, null));
+ vm5.invoke(
+ () -> verifySenderAttributes("ln", 2, true, true, 1000, socketReadTimeout, true, 1000, 5000,
+ true, false, 1000, 100, GatewaySender.DEFAULT_DISPATCHER_THREADS, null, null, null));
+ doDestroyAndVerifyGatewaySender("ln", null, null, "testCreateDestroyParallelGatewaySender",
+ Arrays.asList(vm3, vm4), 5, true);
+ }
+
+ /**
+ * doDestroyAndVerifyGatewaySender helper command.
+ *
+ * @param id if of the Gateway Sender
+ * @param group Group for the GatewaySender
+ * @param member Distributed Member for memeber id.
+ * @param testName testName for the logging
+ * @param vms list of vms where to verify the destroyed gateway sender
+ * @param size command result.
+ * @param isParallel true if parallel , false otherwise.
+ */
+ private void doDestroyAndVerifyGatewaySender(final String id, final String group,
+ final DistributedMember member, final String testName, final List<VM> vms, final int size,
+ final boolean isParallel) {
+ String command =
+ CliStrings.DESTROY_GATEWAYSENDER + " --" + CliStrings.DESTROY_GATEWAYSENDER__ID + "=" + id;
+ if (group != null) {
+ command += " --" + CliStrings.GROUP + "=" + group;
+ }
+ if (member != null) {
+ command += " --" + CliStrings.MEMBER + "=" + member.getId();
+ }
+ final CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info(testName + " stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(size, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender destroy failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail(testName + " failed as did not get CommandResult");
+ }
+ for (VM vm : vms) {
+ vm.invoke(() -> verifySenderDestroyed(id, isParallel));
+ }
+ }
+
+ private CommandResult executeCommandWithIgnoredExceptions(String command) {
+ final IgnoredException ignored = IgnoredException.addIgnoredException("Could not connect");
+ try {
+ return executeCommand(command);
+ } finally {
+ ignored.remove();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
new file mode 100644
index 0000000..5fb18a5
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
@@ -0,0 +1,506 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.wan.GatewayReceiver;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
+
+/**
+ * DUnit tests for 'create gateway-receiver' command.
+ */
+@Category(DistributedTest.class)
+public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * GatewayReceiver with all default attributes
+ */
+ @Test
+ public void testCreateGatewayReceiverWithDefault() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ String command = CliStrings.CREATE_GATEWAYRECEIVER;
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(4, status.size());// expected size 4 includes the manager node
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
+ GatewayReceiver.DEFAULT_START_PORT, GatewayReceiver.DEFAULT_END_PORT,
+ GatewayReceiver.DEFAULT_BIND_ADDRESS, GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS,
+ GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE, null));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
+ GatewayReceiver.DEFAULT_START_PORT, GatewayReceiver.DEFAULT_END_PORT,
+ GatewayReceiver.DEFAULT_BIND_ADDRESS, GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS,
+ GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE, null));
+ vm5.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
+ GatewayReceiver.DEFAULT_START_PORT, GatewayReceiver.DEFAULT_END_PORT,
+ GatewayReceiver.DEFAULT_BIND_ADDRESS, GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS,
+ GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE, null));
+ }
+
+ /**
+ * GatewayReceiver with given attributes
+ */
+ @Test
+ public void testCreateGatewayReceiver() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(4, status.size());// expected size 4 includes the manager node
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm5.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ }
+
+ /**
+ * GatewayReceiver with given attributes and a single GatewayTransportFilter.
+ */
+ @Test
+ public void testCreateGatewayReceiverWithGatewayTransportFilter() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=false" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER
+ + "=org.apache.geode.cache30.MyGatewayTransportFilter1";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(4, status.size());// expected size 4 includes the manager node
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ List<String> transportFilters = new ArrayList<String>();
+ transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
+
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000,
+ 512000, transportFilters));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000,
+ 512000, transportFilters));
+ vm5.invoke(() -> verifyReceiverCreationWithAttributes(true, 10000, 11000, "localhost", 100000,
+ 512000, transportFilters));
+ }
+
+ /**
+ * GatewayReceiver with given attributes and multiple GatewayTransportFilters.
+ */
+ @Test
+ public void testCreateGatewayReceiverWithMultipleGatewayTransportFilters() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ String command = CliStrings.CREATE_GATEWAYRECEIVER + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER
+ + "=org.apache.geode.cache30.MyGatewayTransportFilter1,org.apache.geode.cache30.MyGatewayTransportFilter2";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(4, status.size());// expected size 4 includes the manager node
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ List<String> transportFilters = new ArrayList<String>();
+ transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter1");
+ transportFilters.add("org.apache.geode.cache30.MyGatewayTransportFilter2");
+
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
+ 10000, 11000, "localhost", 100000, 512000, transportFilters));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
+ 10000, 11000, "localhost", 100000, 512000, transportFilters));
+ vm5.invoke(() -> verifyReceiverCreationWithAttributes(!GatewayReceiver.DEFAULT_MANUAL_START,
+ 10000, 11000, "localhost", 100000, 512000, transportFilters));
+ }
+
+ /**
+ * GatewayReceiver with given attributes. Error scenario where startPort is greater than endPort.
+ */
+ @Test
+ public void testCreateGatewayReceiver_Error() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS
+ + "=localhost" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(4, status.size());// expected size 4 includes the manager
+ // node
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation should have failed", stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ }
+
+ /**
+ * GatewayReceiver with given attributes on the given member.
+ */
+ @Test
+ public void testCreateGatewayReceiver_onMember() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ final DistributedMember vm3Member = vm3.invoke(this::getMember);
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.MEMBER + "=" + vm3Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(1, status.size());
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ }
+
+ /**
+ * GatewayReceiver with given attributes on multiple members.
+ */
+ @Category(FlakyTest.class) // GEODE-1355
+ @Test
+ public void testCreateGatewayReceiver_onMultipleMembers() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ final DistributedMember vm3Member = vm3.invoke(this::getMember);
+ final DistributedMember vm4Member = vm4.invoke(this::getMember);
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.MEMBER + "=" + vm3Member.getId() + "," + vm4Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(2, status.size());
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ }
+
+ /**
+ * GatewayReceiver with given attributes on the given group.
+ */
+ @Test
+ public void testCreateGatewayReceiver_onGroup() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.GROUP + "=receiverGroup1";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(3, status.size());//
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm5.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ }
+
+ /**
+ * GatewayReceiver with given attributes on the given group. Only 2 of 3 members are part of the
+ * group.
+ */
+ @Test
+ public void testCreateGatewayReceiver_onGroup_Scenario2() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup2"));
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.GROUP + "=receiverGroup1";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(2, status.size());//
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ }
+
+ /**
+ * GatewayReceiver with given attributes on multiple groups.
+ */
+ @Test
+ public void testCreateGatewayReceiver_onMultipleGroups() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup2"));
+
+ String command =
+ CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
+ + "=true" + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost"
+ + " --" + CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT + "=10000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT + "=11000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS + "=100000" + " --"
+ + CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE + "=512000" + " --"
+ + CliStrings.GROUP + "=receiverGroup1,receiverGroup2";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(3, status.size());//
+ // verify there is no error in the status
+ for (String stat : status) {
+ assertTrue("GatewayReceiver creation failed with: " + stat, !stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm4.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ vm5.invoke(() -> verifyReceiverCreationWithAttributes(false, 10000, 11000, "localhost", 100000,
+ 512000, null));
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..5132ef5
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,148 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.wan.GatewaySender;
+import org.apache.geode.internal.cache.wan.GatewaySenderException;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class CreateGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+
+ /**
+ * GatewaySender with given attribute values. Error scenario where dispatcher threads is set to
+ * more than 1 and no order policy provided.
+ */
+ @Test
+ public void testCreateGatewaySender_Error() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testCreateDestroyGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation should fail", stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ /**
+ * Parallel GatewaySender with given attribute values. Provide dispatcherThreads as 2 which is not
+ * valid for Parallel sender.
+ */
+ @Test
+ public void testCreateParallelGatewaySender_Error() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
+ String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ + "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__PARALLEL + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MANUALSTART + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT + "=" + socketReadTimeout + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL + "=5000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE + "=true" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS + "=false" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY + "=1000" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD + "=100" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS + "=2" + " --"
+ + CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY + "=THREAD";
+ IgnoredException exp =
+ IgnoredException.addIgnoredException(GatewaySenderException.class.getName());
+ try {
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testCreateParallelGatewaySender_Error stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender creation should have failed", stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateParallelGatewaySender_Error failed as did not get CommandResult");
+ }
+ } finally {
+ exp.remove();
+ }
+ }
+
+ private CommandResult executeCommandWithIgnoredExceptions(String command) {
+ final IgnoredException ignored = IgnoredException.addIgnoredException("Could not connect");
+ try {
+ return executeCommand(command);
+ } finally {
+ ignored.remove();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..6ec0d72
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,75 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class DestroyGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+ @Test
+ public void testDestroyGatewaySender_NotCreatedSender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(punePort));
+
+ // Test Destroy Command
+ String command =
+ CliStrings.DESTROY_GATEWAYSENDER + " --" + CliStrings.DESTROY_GATEWAYSENDER__ID + "=ln";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info(
+ "testDestroyGatewaySender_NotCreatedSender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Status");
+ assertEquals(5, status.size());
+ for (String stat : status) {
+ assertTrue("GatewaySender destroy should fail", stat.contains("ERROR:"));
+ }
+ } else {
+ fail("testCreateDestroyParallelGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ private CommandResult executeCommandWithIgnoredExceptions(String command) {
+ final IgnoredException ignored = IgnoredException.addIgnoredException("Could not connect");
+ try {
+ return executeCommand(command);
+ } finally {
+ ignored.remove();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..c97b0ae
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,233 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class PauseGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+ @Test
+ public void testPauseGatewaySender_ErrorConditions() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
+ + "=SenderGroup1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.ERROR, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
+ } else {
+ fail("testPauseGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a member
+ */
+ @Test
+ public void testPauseGatewaySender_onMember() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains("is paused on member"));
+ } else {
+ fail("testPauseGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ }
+
+ @Test
+ public void testPauseGatewaySender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+
+ pause(10000);
+ String command =
+ CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID + "=ln";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(5, status.size());
+ assertTrue(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testPauseGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ vm4.invoke(() -> verifySenderState("ln", true, true));
+ vm5.invoke(() -> verifySenderState("ln", true, true));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a group of members
+ */
+ @Test
+ public void testPauseGatewaySender_Group() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+
+ pause(10000);
+ String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testPauseGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testPauseGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ vm4.invoke(() -> verifySenderState("ln", true, true));
+ vm5.invoke(() -> verifySenderState("ln", true, true));
+ }
+
+ /**
+ * Test to validate the scenario gateway sender is started when one or more sender members belongs
+ * to multiple groups
+ */
+ @Test
+ public void testPauseGatewaySender_MultipleGroup() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm6.invoke(() -> startSender("ln"));
+ vm7.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ vm6.invoke(() -> verifySenderState("ln", true, false));
+ vm7.invoke(() -> verifySenderState("ln", true, false));
+
+ pause(10000);
+ String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testPauseGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testPauseGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ vm4.invoke(() -> verifySenderState("ln", true, true));
+ vm5.invoke(() -> verifySenderState("ln", true, true));
+ vm6.invoke(() -> verifySenderState("ln", true, true));
+ vm7.invoke(() -> verifySenderState("ln", true, false));
+ }
+}
[49/50] [abbrv] geode git commit: Convert to use
FunctionContext.getCache()
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunction.java
index b2a7e7e..f1a3d57 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunction.java
@@ -20,10 +20,7 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
import java.nio.file.Path;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
-import java.time.ZoneId;
import java.util.Arrays;
import org.apache.commons.lang.StringUtils;
@@ -38,7 +35,6 @@ import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.InternalEntity;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.InternalRegionArguments;
import org.apache.geode.internal.logging.LogService;
@@ -47,21 +43,22 @@ import org.apache.geode.management.internal.cli.commands.ExportLogsCommand;
import org.apache.geode.management.internal.cli.util.ExportLogsCacheWriter;
import org.apache.geode.management.internal.cli.util.LogExporter;
import org.apache.geode.management.internal.cli.util.LogFilter;
+import org.apache.geode.management.internal.cli.util.TimeParser;
import org.apache.geode.management.internal.configuration.domain.Configuration;
/**
- * this function extracts the logs using a LogExporter which creates a zip file, and then writes the
- * zip file bytes into a replicated region, this in effect, "stream" the zip file bytes to the
- * locator
+ * Extracts the logs using a LogExporter which creates a zip file, and then writes the zip file
+ * bytes into a replicated region, this in effect, "stream" the zip file bytes to the locator
*
+ * <p>
* The function only extracts .log and .gfs files under server's working directory
*/
public class ExportLogsFunction implements Function, InternalEntity {
+ private static final long serialVersionUID = 1L;
private static final Logger logger = LogService.getLogger();
public static final String EXPORT_LOGS_REGION = "__exportLogsRegion";
- private static final long serialVersionUID = 1L;
private static final int BUFFER_SIZE = 1024;
@Override
@@ -114,15 +111,18 @@ public class ExportLogsFunction implements Function, InternalEntity {
context.getResultSender().lastResult(null);
} catch (Exception e) {
- e.printStackTrace();
logger.error(e);
context.getResultSender().sendException(e);
}
}
- public static Region createOrGetExistingExportLogsRegion(boolean isInitiatingMember,
- InternalCache cache) throws IOException, ClassNotFoundException {
+ @Override
+ public boolean isHA() {
+ return false;
+ }
+ public static Region createOrGetExistingExportLogsRegion(final boolean isInitiatingMember,
+ final InternalCache cache) throws IOException, ClassNotFoundException {
Region exportLogsRegion = cache.getRegion(EXPORT_LOGS_REGION);
if (exportLogsRegion == null) {
AttributesFactory<String, Configuration> regionAttrsFactory = new AttributesFactory<>();
@@ -141,7 +141,7 @@ public class ExportLogsFunction implements Function, InternalEntity {
return exportLogsRegion;
}
- public static void destroyExportLogsRegion(InternalCache cache) {
+ public static void destroyExportLogsRegion(final InternalCache cache) {
Region exportLogsRegion = cache.getRegion(EXPORT_LOGS_REGION);
if (exportLogsRegion == null) {
return;
@@ -149,23 +149,22 @@ public class ExportLogsFunction implements Function, InternalEntity {
exportLogsRegion.destroyRegion();
}
- @Override
- public boolean isHA() {
- return false;
- }
-
+ /**
+ * Arguments for ExportLogsFunction.
+ */
public static class Args implements Serializable {
- private LocalDateTime startTime;
- private LocalDateTime endTime;
- private Level logLevel;
- private boolean thisLogLevelOnly;
- private boolean includeLogs;
- private boolean includeStats;
-
- public Args(String startTime, String endTime, String logLevel, boolean logLevelOnly,
- boolean logsOnly, boolean statsOnly) {
- this.startTime = parseTime(startTime);
- this.endTime = parseTime(endTime);
+
+ private final LocalDateTime startTime;
+ private final LocalDateTime endTime;
+ private final Level logLevel;
+ private final boolean thisLogLevelOnly;
+ private final boolean includeLogs;
+ private final boolean includeStats;
+
+ public Args(final String startTime, final String endTime, final String logLevel,
+ final boolean logLevelOnly, final boolean logsOnly, final boolean statsOnly) {
+ this.startTime = TimeParser.parseTime(startTime);
+ this.endTime = TimeParser.parseTime(endTime);
if (StringUtils.isBlank(logLevel)) {
this.logLevel = LogLevel.getLevel(ExportLogsCommand.DEFAULT_EXPORT_LOG_LEVEL);
@@ -203,21 +202,4 @@ public class ExportLogsFunction implements Function, InternalEntity {
}
}
- public static LocalDateTime parseTime(String dateString) {
- if (dateString == null) {
- return null;
- }
-
- try {
- SimpleDateFormat df = new SimpleDateFormat(ExportLogsCommand.FORMAT);
- return df.parse(dateString).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- } catch (ParseException e) {
- try {
- SimpleDateFormat df = new SimpleDateFormat(ExportLogsCommand.ONLY_DATE_FORMAT);
- return df.parse(dateString).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- } catch (ParseException e1) {
- return null;
- }
- }
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction.java
index 1173568..ba7fc54 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction.java
@@ -20,29 +20,23 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.AttributesFactory;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.CacheListener;
import org.apache.geode.cache.CacheLoader;
import org.apache.geode.cache.CacheWriter;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
+import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
/**
- *
* @since GemFire 7.0
*/
-public class FetchRegionAttributesFunction extends FunctionAdapter {
- private static final Logger logger = LogService.getLogger();
-
+public class FetchRegionAttributesFunction implements Function, InternalEntity {
private static final long serialVersionUID = 4366812590788342070L;
-
- private static final String ID = FetchRegionAttributesFunction.class.getName();
-
- public static FetchRegionAttributesFunction INSTANCE = new FetchRegionAttributesFunction();
+ private static final Logger logger = LogService.getLogger();
@Override
public boolean isHA() {
@@ -50,15 +44,17 @@ public class FetchRegionAttributesFunction extends FunctionAdapter {
}
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
try {
String regionPath = (String) context.getArguments();
if (regionPath == null) {
throw new IllegalArgumentException(
CliStrings.CREATE_REGION__MSG__SPECIFY_VALID_REGION_PATH);
}
- FetchRegionAttributesFunctionResult<?, ?> result = getRegionAttributes(regionPath);
+ FetchRegionAttributesFunctionResult<?, ?> result =
+ getRegionAttributes(context.getCache(), regionPath);
context.getResultSender().lastResult(result);
+
} catch (IllegalArgumentException e) {
if (logger.isDebugEnabled()) {
logger.debug(e.getMessage(), e);
@@ -67,10 +63,8 @@ public class FetchRegionAttributesFunction extends FunctionAdapter {
}
}
- @SuppressWarnings("deprecation")
public static <K, V> FetchRegionAttributesFunctionResult<K, V> getRegionAttributes(
- String regionPath) {
- Cache cache = CacheFactory.getAnyInstance();
+ final Cache cache, final String regionPath) {
Region<K, V> foundRegion = cache.getRegion(regionPath);
if (foundRegion == null) {
@@ -87,40 +81,45 @@ public class FetchRegionAttributesFunction extends FunctionAdapter {
return result;
}
- @Override
- public String getId() {
- return ID;
- }
-
+ /**
+ * Result of executing FetchRegionAttributesFunction.
+ */
public static class FetchRegionAttributesFunctionResult<K, V> implements Serializable {
private static final long serialVersionUID = -3970828263897978845L;
- private RegionAttributes<K, V> regionAttributes;
- private String[] cacheListenerClasses;
- private String cacheLoaderClass;
- private String cacheWriterClass;
+ private final RegionAttributes<K, V> regionAttributes;
+ private final String[] cacheListenerClasses;
+ private final String cacheLoaderClass;
+ private final String cacheWriterClass;
- @SuppressWarnings("deprecation")
- public FetchRegionAttributesFunctionResult(AttributesFactory<K, V> afactory) {
- this.regionAttributes = afactory.create();
+ public FetchRegionAttributesFunctionResult(final AttributesFactory<K, V> afactory) {
+ RegionAttributes<K, V> regionAttributes = afactory.create();
- CacheListener<K, V>[] cacheListeners = this.regionAttributes.getCacheListeners();
+ CacheListener<K, V>[] cacheListeners = regionAttributes.getCacheListeners();
if (cacheListeners != null && cacheListeners.length != 0) {
cacheListenerClasses = new String[cacheListeners.length];
for (int i = 0; i < cacheListeners.length; i++) {
cacheListenerClasses[i] = cacheListeners[i].getClass().getName();
}
afactory.initCacheListeners(null);
+ } else {
+ cacheListenerClasses = null;
}
- CacheLoader<K, V> cacheLoader = this.regionAttributes.getCacheLoader();
+
+ CacheLoader<K, V> cacheLoader = regionAttributes.getCacheLoader();
if (cacheLoader != null) {
cacheLoaderClass = cacheLoader.getClass().getName();
afactory.setCacheLoader(null);
+ } else {
+ cacheLoaderClass = null;
}
- CacheWriter<K, V> cacheWriter = this.regionAttributes.getCacheWriter();
+
+ CacheWriter<K, V> cacheWriter = regionAttributes.getCacheWriter();
if (cacheWriter != null) {
cacheWriterClass = cacheWriter.getClass().getName();
afactory.setCacheWriter(null);
+ } else {
+ cacheWriterClass = null;
}
// recreate attributes
@@ -143,4 +142,5 @@ public class FetchRegionAttributesFunction extends FunctionAdapter {
return cacheWriterClass;
}
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction.java
index c688d7a..a7204d3 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction.java
@@ -15,24 +15,22 @@
package org.apache.geode.management.internal.cli.functions;
import org.apache.commons.lang.StringUtils;
-import org.apache.geode.cache.execute.FunctionAdapter;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.internal.InternalEntity;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.internal.configuration.domain.SharedConfigurationStatus;
-public class FetchSharedConfigurationStatusFunction extends FunctionAdapter
- implements InternalEntity {
-
+public class FetchSharedConfigurationStatusFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
InternalLocator locator = InternalLocator.getLocator();
- InternalCache cache = GemFireCacheImpl.getInstance();
+ Cache cache = context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
SharedConfigurationStatus status = locator.getSharedConfigurationStatus().getStatus();
@@ -45,9 +43,4 @@ public class FetchSharedConfigurationStatusFunction extends FunctionAdapter
context.getResultSender().lastResult(result);
}
- @Override
- public String getId() {
- return FetchSharedConfigurationStatusFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
index 46588eb..60a165c 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
@@ -16,8 +16,8 @@ package org.apache.geode.management.internal.cli.functions;
import java.util.HashMap;
import java.util.Map;
+
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
@@ -26,24 +26,18 @@ import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.util.BytesToString;
/**
- *
* Class for Garbage collection function
- *
- *
- *
*/
public class GarbageCollectionFunction implements Function, InternalEntity {
- public static final String ID = GarbageCollectionFunction.class.getName();
-
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
BytesToString bytesToString = new BytesToString();
Map<String, String> resultMap = null;
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
long freeMemoryBeforeGC = Runtime.getRuntime().freeMemory();
long totalMemoryBeforeGC = Runtime.getRuntime().totalMemory();
@@ -59,6 +53,7 @@ public class GarbageCollectionFunction implements Function, InternalEntity {
resultMap.put("HeapSizeBeforeGC", bytesToString.of(totalMemoryBeforeGC - freeMemoryBeforeGC));
resultMap.put("HeapSizeAfterGC", bytesToString.of(totalMemoryAfterGC - freeMemoryAfterGC));
resultMap.put("TimeSpentInGC", String.valueOf(timeAfterGC - timeBeforeGC));
+
} catch (Exception ex) {
String message = "Exception in GC:" + ex.getMessage() + CliUtil.stackTraceAsString(ex);
@@ -68,14 +63,10 @@ public class GarbageCollectionFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return GarbageCollectionFunction.ID;
- }
-
- @Override
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
index a7dc7ea..2d27569 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
@@ -20,8 +20,7 @@ import java.util.Map;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.cache.wan.GatewayReceiver;
@@ -38,21 +37,15 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
/**
* The function to a create GatewayReceiver using given configuration parameters.
*/
-public class GatewayReceiverCreateFunction extends FunctionAdapter implements InternalEntity {
-
- private static final Logger logger = LogService.getLogger();
-
+public class GatewayReceiverCreateFunction implements Function, InternalEntity {
private static final long serialVersionUID = 8746830191680509335L;
-
- private static final String ID = GatewayReceiverCreateFunction.class.getName();
-
- public static GatewayReceiverCreateFunction INSTANCE = new GatewayReceiverCreateFunction();
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
ResultSender<Object> resultSender = context.getResultSender();
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
@@ -63,26 +56,30 @@ public class GatewayReceiverCreateFunction extends FunctionAdapter implements In
GatewayReceiver createdGatewayReceiver =
createGatewayReceiver(cache, gatewayReceiverCreateArgs);
- Map<String, String> attributes = new HashMap<String, String>();
+ Map<String, String> attributes = new HashMap<>();
+
if (gatewayReceiverCreateArgs.getStartPort() != null) {
attributes.put("start-port", gatewayReceiverCreateArgs.getStartPort().toString());
}
+
if (gatewayReceiverCreateArgs.getEndPort() != null) {
attributes.put("end-port", gatewayReceiverCreateArgs.getEndPort().toString());
}
+
if (gatewayReceiverCreateArgs.getBindAddress() != null) {
attributes.put("bind-address", gatewayReceiverCreateArgs.getBindAddress());
}
+
XmlEntity xmlEntity = XmlEntity.builder().withType(CacheXml.GATEWAY_RECEIVER)
.withAttributes(attributes).build();
resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity,
CliStrings.format(
CliStrings.CREATE_GATEWAYRECEIVER__MSG__GATEWAYRECEIVER_CREATED_ON_0_ONPORT_1,
- new Object[] {memberNameOrId, createdGatewayReceiver.getPort()})));
-
+ memberNameOrId, createdGatewayReceiver.getPort())));
} catch (IllegalStateException e) {
resultSender.lastResult(handleException(memberNameOrId, e.getMessage(), e));
+
} catch (Exception e) {
String exceptionMsg = e.getMessage();
if (exceptionMsg == null) {
@@ -90,7 +87,6 @@ public class GatewayReceiverCreateFunction extends FunctionAdapter implements In
}
resultSender.lastResult(handleException(memberNameOrId, exceptionMsg, e));
}
-
}
private CliFunctionResult handleException(final String memberNameOrId, final String exceptionMsg,
@@ -107,13 +103,9 @@ public class GatewayReceiverCreateFunction extends FunctionAdapter implements In
/**
* GatewayReceiver creation happens here.
- *
- * @param cache
- * @param gatewayReceiverCreateArgs
- * @return GatewayReceiver
*/
- private static GatewayReceiver createGatewayReceiver(Cache cache,
- GatewayReceiverFunctionArgs gatewayReceiverCreateArgs) {
+ private static GatewayReceiver createGatewayReceiver(final Cache cache,
+ final GatewayReceiverFunctionArgs gatewayReceiverCreateArgs) {
GatewayReceiverFactory gatewayReceiverFactory = cache.createGatewayReceiverFactory();
@@ -160,20 +152,22 @@ public class GatewayReceiverCreateFunction extends FunctionAdapter implements In
return gatewayReceiverFactory.create();
}
- @SuppressWarnings("unchecked")
- private static Class forName(String classToLoadName, String neededFor) {
+ private static Class forName(final String classToLoadName, final String neededFor) {
Class loadedClass = null;
+
try {
// Set Constraints
ClassPathLoader classPathLoader = ClassPathLoader.getLatest();
if (classToLoadName != null && !classToLoadName.isEmpty()) {
loadedClass = classPathLoader.forName(classToLoadName);
}
+
} catch (ClassNotFoundException e) {
throw new RuntimeException(
CliStrings.format(CliStrings.CREATE_REGION__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
classToLoadName, neededFor),
e);
+
} catch (ClassCastException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_REGION__MSG__CLASS_SPECIFIED_FOR_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
@@ -183,25 +177,24 @@ public class GatewayReceiverCreateFunction extends FunctionAdapter implements In
return loadedClass;
}
- private static Object newInstance(Class klass, String neededFor) {
- Object instance = null;
+ private static Object newInstance(final Class klass, final String neededFor) {
+ Object instance;
+
try {
instance = klass.newInstance();
+
} catch (InstantiationException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_GATEWAYSENDER__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1,
klass, neededFor), e);
+
} catch (IllegalAccessException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_GATEWAYSENDER__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1, klass,
neededFor), e);
}
- return instance;
- }
- @Override
- public String getId() {
- return ID;
+ return instance;
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverFunctionArgs.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverFunctionArgs.java
index 2084af9..615c683 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverFunctionArgs.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverFunctionArgs.java
@@ -23,22 +23,16 @@ public class GatewayReceiverFunctionArgs implements Serializable {
private static final long serialVersionUID = -5158224572470173267L;
private final Boolean manualStart;
-
private final Integer startPort;
-
private final Integer endPort;
-
private final String bindAddress;
-
private final Integer socketBufferSize;
-
private final Integer maximumTimeBetweenPings;
-
private final String[] gatewayTransportFilters;
- public GatewayReceiverFunctionArgs(Boolean manualStart, Integer startPort, Integer endPort,
- String bindAddress, Integer socketBufferSize, Integer maximumTimeBetweenPings,
- String[] gatewayTransportFilters) {
+ public GatewayReceiverFunctionArgs(final Boolean manualStart, final Integer startPort,
+ final Integer endPort, final String bindAddress, final Integer socketBufferSize,
+ final Integer maximumTimeBetweenPings, final String[] gatewayTransportFilters) {
this.manualStart = manualStart;
this.startPort = startPort;
this.endPort = endPort;
@@ -75,4 +69,5 @@ public class GatewayReceiverFunctionArgs implements Serializable {
public String[] getGatewayTransportFilters() {
return this.gatewayTransportFilters;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction.java
index 33bffd8..cb9d02d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderCreateFunction.java
@@ -17,8 +17,7 @@ package org.apache.geode.management.internal.cli.functions;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.cache.wan.GatewayEventFilter;
@@ -35,22 +34,15 @@ import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
-public class GatewaySenderCreateFunction extends FunctionAdapter implements InternalEntity {
-
- private static final Logger logger = LogService.getLogger();
-
+public class GatewaySenderCreateFunction implements Function, InternalEntity {
private static final long serialVersionUID = 8746830191680509335L;
-
- private static final String ID = GatewaySenderCreateFunction.class.getName();
-
- public static GatewaySenderCreateFunction INSTANCE = new GatewaySenderCreateFunction();
-
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
ResultSender<Object> resultSender = context.getResultSender();
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
@@ -63,9 +55,11 @@ public class GatewaySenderCreateFunction extends FunctionAdapter implements Inte
new XmlEntity(CacheXml.GATEWAY_SENDER, "id", gatewaySenderCreateArgs.getId());
resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity,
CliStrings.format(CliStrings.CREATE_GATEWAYSENDER__MSG__GATEWAYSENDER_0_CREATED_ON_1,
- new Object[] {createdGatewaySender.getId(), memberNameOrId})));
+ createdGatewaySender.getId(), memberNameOrId)));
+
} catch (GatewaySenderException e) {
resultSender.lastResult(handleException(memberNameOrId, e.getMessage(), e));
+
} catch (Exception e) {
String exceptionMsg = e.getMessage();
if (exceptionMsg == null) {
@@ -89,13 +83,9 @@ public class GatewaySenderCreateFunction extends FunctionAdapter implements Inte
/**
* Creates the GatewaySender with given configuration.
- *
- * @param cache
- * @param gatewaySenderCreateArgs
- * @return GatewaySender
*/
- private static GatewaySender createGatewaySender(Cache cache,
- GatewaySenderFunctionArgs gatewaySenderCreateArgs) {
+ private static GatewaySender createGatewaySender(final Cache cache,
+ final GatewaySenderFunctionArgs gatewaySenderCreateArgs) {
GatewaySenderFactory gateway = cache.createGatewaySenderFactory();
Boolean isParallel = gatewaySenderCreateArgs.isParallel();
@@ -189,20 +179,22 @@ public class GatewaySenderCreateFunction extends FunctionAdapter implements Inte
gatewaySenderCreateArgs.getRemoteDistributedSystemId());
}
- @SuppressWarnings("unchecked")
- private static Class forName(String classToLoadName, String neededFor) {
+ private static Class forName(final String classToLoadName, final String neededFor) {
Class loadedClass = null;
+
try {
// Set Constraints
ClassPathLoader classPathLoader = ClassPathLoader.getLatest();
if (classToLoadName != null && !classToLoadName.isEmpty()) {
loadedClass = classPathLoader.forName(classToLoadName);
}
+
} catch (ClassNotFoundException e) {
throw new RuntimeException(
CliStrings.format(CliStrings.CREATE_REGION__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
classToLoadName, neededFor),
e);
+
} catch (ClassCastException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_REGION__MSG__CLASS_SPECIFIED_FOR_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
@@ -212,25 +204,24 @@ public class GatewaySenderCreateFunction extends FunctionAdapter implements Inte
return loadedClass;
}
- private static Object newInstance(Class klass, String neededFor) {
- Object instance = null;
+ private static Object newInstance(final Class klass, final String neededFor) {
+ Object instance;
+
try {
instance = klass.newInstance();
+
} catch (InstantiationException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_GATEWAYSENDER__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1,
klass, neededFor), e);
+
} catch (IllegalAccessException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_GATEWAYSENDER__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1, klass,
neededFor), e);
}
- return instance;
- }
- @Override
- public String getId() {
- return ID;
+ return instance;
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunction.java
----------------------------------------------------------------------
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 2873633..6ac5387 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
@@ -14,9 +14,10 @@
*/
package org.apache.geode.management.internal.cli.functions;
+import org.apache.logging.log4j.Logger;
+
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.cache.wan.GatewaySender;
@@ -25,20 +26,16 @@ import org.apache.geode.internal.cache.wan.GatewaySenderException;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.logging.log4j.Logger;
-public class GatewaySenderDestroyFunction extends FunctionAdapter implements InternalEntity {
+public class GatewaySenderDestroyFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
-
private static final Logger logger = LogService.getLogger();
- private static final String ID = GatewaySenderDestroyFunction.class.getName();
- public static GatewaySenderDestroyFunction INSTANCE = new GatewaySenderDestroyFunction();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
ResultSender<Object> resultSender = context.getResultSender();
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
@@ -53,14 +50,15 @@ public class GatewaySenderDestroyFunction extends FunctionAdapter implements Int
gatewaySender.destroy();
} else {
throw new GatewaySenderException(
- "GateWaySender with Id " + gatewaySenderDestroyFunctionArgs.getId() + " not found");
+ "GatewaySender with id " + gatewaySenderDestroyFunctionArgs.getId() + " not found");
}
resultSender.lastResult(new CliFunctionResult(memberNameOrId, true,
CliStrings.format(CliStrings.DESTROY_GATEWAYSENDER__MSG__GATEWAYSENDER_0_DESTROYED_ON_1,
- new Object[] {gatewaySenderDestroyFunctionArgs.getId(), memberNameOrId})));
+ gatewaySenderDestroyFunctionArgs.getId(), memberNameOrId)));
} catch (GatewaySenderException gse) {
resultSender.lastResult(handleException(memberNameOrId, gse.getMessage(), gse));
+
} catch (Exception e) {
String exceptionMsg = e.getMessage();
if (exceptionMsg == null) {
@@ -82,9 +80,4 @@ public class GatewaySenderDestroyFunction extends FunctionAdapter implements Int
return new CliFunctionResult(memberNameOrId);
}
- @Override
- public String getId() {
- return ID;
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs.java
index cf3fa24..440acbb 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderDestroyFunctionArgs.java
@@ -17,17 +17,17 @@ package org.apache.geode.management.internal.cli.functions;
import java.io.Serializable;
public class GatewaySenderDestroyFunctionArgs implements Serializable {
-
private static final long serialVersionUID = 3848480256348119530L;
- private String id;
+ private final String id;
- public GatewaySenderDestroyFunctionArgs(String id) {
+ public GatewaySenderDestroyFunctionArgs(final String id) {
this.id = id;
}
public String getId() {
return id;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs.java
index 0e4f635..8dbda6e 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewaySenderFunctionArgs.java
@@ -16,7 +16,6 @@ package org.apache.geode.management.internal.cli.functions;
import java.io.Serializable;
-
public class GatewaySenderFunctionArgs implements Serializable {
private static final long serialVersionUID = -5158224572470173267L;
@@ -36,16 +35,18 @@ public class GatewaySenderFunctionArgs implements Serializable {
private final Integer alertThreshold;
private final Integer dispatcherThreads;
private final String orderPolicy;
- // array of fully qualified class names of the filters
+
+ /** array of fully qualified class names of the filters */
private final String[] gatewayEventFilters;
private final String[] gatewayTransportFilters;
- public GatewaySenderFunctionArgs(String id, Integer remoteDSId, Boolean parallel,
- Boolean manualStart, Integer socketBufferSize, Integer socketReadTimeout,
- Boolean enableBatchConflation, Integer batchSize, Integer batchTimeInterval,
- Boolean enablePersistence, String diskStoreName, Boolean diskSynchronous,
- Integer maxQueueMemory, Integer alertThreshold, Integer dispatcherThreads, String orderPolicy,
- String[] gatewayEventFilters, String[] gatewayTransportFilters) {
+ public GatewaySenderFunctionArgs(final String id, final Integer remoteDSId,
+ final Boolean parallel, final Boolean manualStart, final Integer socketBufferSize,
+ final Integer socketReadTimeout, final Boolean enableBatchConflation, final Integer batchSize,
+ final Integer batchTimeInterval, final Boolean enablePersistence, final String diskStoreName,
+ final Boolean diskSynchronous, final Integer maxQueueMemory, final Integer alertThreshold,
+ final Integer dispatcherThreads, final String orderPolicy, final String[] gatewayEventFilters,
+ final String[] gatewayTransportFilters) {
this.id = id;
this.remoteDSId = remoteDSId;
@@ -138,4 +139,5 @@ public class GatewaySenderFunctionArgs implements Serializable {
public String[] getGatewayTransportFilter() {
return this.gatewayTransportFilters;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction.java
index 56ba115..cd9eb4c 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberConfigInformationFunction.java
@@ -14,9 +14,18 @@
*/
package org.apache.geode.management.internal.cli.functions;
+import static org.apache.geode.distributed.ConfigurationProperties.SOCKET_BUFFER_SIZE;
+
+import java.lang.management.ManagementFactory;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.distributed.internal.DistributionConfig;
@@ -29,30 +38,15 @@ import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.ha.HARegionQueue;
import org.apache.geode.management.internal.cli.domain.MemberConfigurationInfo;
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-import java.util.*;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-
-/****
- *
- *
- */
-public class GetMemberConfigInformationFunction extends FunctionAdapter implements InternalEntity {
-
- /**
- *
- */
+public class GetMemberConfigInformationFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
-
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
Object argsObject = context.getArguments();
- boolean hideDefaults = ((Boolean) argsObject).booleanValue();
+ boolean hideDefaults = (Boolean) argsObject;
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
InternalDistributedSystem system = (InternalDistributedSystem) cache.getDistributedSystem();
DistributionConfig config = system.getConfig();
@@ -70,7 +64,7 @@ public class GetMemberConfigInformationFunction extends FunctionAdapter implemen
memberConfigInfo.setGfePropsSetFromFile(distConfigImpl.getConfigPropsDefinedUsingFiles());
// CacheAttributes
- Map<String, String> cacheAttributes = new HashMap<String, String>();
+ Map<String, String> cacheAttributes = new HashMap<>();
cacheAttributes.put("copy-on-read", Boolean.toString(cache.getCopyOnRead()));
cacheAttributes.put("is-server", Boolean.toString(cache.isServer()));
@@ -96,12 +90,12 @@ public class GetMemberConfigInformationFunction extends FunctionAdapter implemen
memberConfigInfo.setCacheAttributes(cacheAttributes);
- List<Map<String, String>> cacheServerAttributesList = new ArrayList<Map<String, String>>();
+ List<Map<String, String>> cacheServerAttributesList = new ArrayList<>();
List<CacheServer> cacheServers = cache.getCacheServers();
if (cacheServers != null)
for (CacheServer cacheServer : cacheServers) {
- Map<String, String> cacheServerAttributes = new HashMap<String, String>();
+ Map<String, String> cacheServerAttributes = new HashMap<>();
cacheServerAttributes.put("bind-address", cacheServer.getBindAddress());
cacheServerAttributes.put("hostname-for-clients", cacheServer.getHostnameForClients());
@@ -134,14 +128,13 @@ public class GetMemberConfigInformationFunction extends FunctionAdapter implemen
context.getResultSender().lastResult(memberConfigInfo);
}
- /****
+ /**
* Gets the default values for the cache attributes
*
* @return a map containing the cache attributes - default values
*/
private Map<String, String> getCacheAttributesDefaultValues() {
- String d = CacheConfig.DEFAULT_PDX_DISK_STORE;
- Map<String, String> cacheAttributesDefault = new HashMap<String, String>();
+ Map<String, String> cacheAttributesDefault = new HashMap<>();
cacheAttributesDefault.put("pdx-disk-store", "");
cacheAttributesDefault.put("pdx-read-serialized",
Boolean.toString(CacheConfig.DEFAULT_PDX_READ_SERIALIZED));
@@ -163,13 +156,13 @@ public class GetMemberConfigInformationFunction extends FunctionAdapter implemen
return cacheAttributesDefault;
}
- /***
+ /**
* Gets the default values for the cache attributes
*
* @return a map containing the cache server attributes - default values
*/
private Map<String, String> getCacheServerAttributesDefaultValues() {
- Map<String, String> csAttributesDefault = new HashMap<String, String>();
+ Map<String, String> csAttributesDefault = new HashMap<>();
csAttributesDefault.put("bind-address", CacheServer.DEFAULT_BIND_ADDRESS);
csAttributesDefault.put("hostname-for-clients", CacheServer.DEFAULT_HOSTNAME_FOR_CLIENTS);
csAttributesDefault.put("max-connections",
@@ -189,46 +182,34 @@ public class GetMemberConfigInformationFunction extends FunctionAdapter implemen
csAttributesDefault.put("load-poll-interval",
Long.toString(CacheServer.DEFAULT_LOAD_POLL_INTERVAL));
return csAttributesDefault;
-
}
- /****
+ /**
* Removes the default values from the attributesMap based on defaultAttributesMap
- *
- * @param attributesMap
- * @param defaultAttributesMap
*/
- private void removeDefaults(Map<String, String> attributesMap,
- Map<String, String> defaultAttributesMap) {
+ private void removeDefaults(final Map<String, String> attributesMap,
+ final Map<String, String> defaultAttributesMap) {
// Make a copy to avoid the CME's
- Set<String> attributesSet = new HashSet<String>(attributesMap.keySet());
-
- if (attributesSet != null) {
- for (String attribute : attributesSet) {
- String attributeValue = attributesMap.get(attribute);
- String defaultValue = defaultAttributesMap.get(attribute);
-
- if (attributeValue != null) {
- if (attributeValue.equals(defaultValue)) {
- attributesMap.remove(attribute);
- }
- } else {
- if (defaultValue == null || defaultValue.equals("")) {
- attributesMap.remove(attribute);
- }
+ Set<String> attributesSet = new HashSet<>(attributesMap.keySet());
+
+ for (String attribute : attributesSet) {
+ String attributeValue = attributesMap.get(attribute);
+ String defaultValue = defaultAttributesMap.get(attribute);
+
+ if (attributeValue != null) {
+ if (attributeValue.equals(defaultValue)) {
+ attributesMap.remove(attribute);
+ }
+ } else {
+ if (defaultValue == null || defaultValue.equals("")) {
+ attributesMap.remove(attribute);
}
}
}
}
- @Override
- public String getId() {
- // TODO Auto-generated method stub
- return GetMemberConfigInformationFunction.class.toString();
- }
-
private List<String> getJvmInputArguments() {
- RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
- return runtimeBean.getInputArguments();
+ return ManagementFactory.getRuntimeMXBean().getInputArguments();
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
index 70fa68b..f8abc2e 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
@@ -14,75 +14,41 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import org.apache.geode.cache.Cache;
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+import java.lang.management.MemoryUsage;
+import java.util.List;
+import java.util.Map;
+
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.cache.CacheClientStatus;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.tier.InternalClientMembership;
import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.domain.CacheServerInfo;
import org.apache.geode.management.internal.cli.domain.MemberInformation;
-import java.lang.management.ManagementFactory;
-import java.lang.management.MemoryMXBean;
-import java.lang.management.MemoryUsage;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/***
- *
- * since 7.0
+/**
+ * @since GemFire 7.0
*/
-
-public class GetMemberInformationFunction extends FunctionAdapter implements InternalEntity {
- /**
- *
- */
+public class GetMemberInformationFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public String getId() {
- return GetMemberInformationFunction.class.getName();
- }
-
- @Override
-
- public boolean hasResult() {
- return true;
- }
-
- @Override
-
- public boolean isHA() {
- return true;
- }
-
- @Override
- /**
- * Read only function
- */
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public void execute(FunctionContext functionContext) {
+ public void execute(final FunctionContext functionContext) {
try {
- Cache cache = CacheFactory.getAnyInstance();
+ InternalCache cache = (InternalCache) functionContext.getCache();
- /*
- * TODO: 1) Get the CPU usage%
- */
+ // TODO: 1) Get the CPU usage%
- InternalDistributedSystem system = (InternalDistributedSystem) cache.getDistributedSystem();
+ InternalDistributedSystem system = cache.getInternalDistributedSystem();
DistributionConfig config = system.getConfig();
String serverBindAddress = config.getServerBindAddress();
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
@@ -108,10 +74,7 @@ public class GetMemberInformationFunction extends FunctionAdapter implements Int
// A member is a server only if it has a cacheserver
if (csList != null) {
memberInfo.setServer(true);
- Iterator<CacheServer> iters = csList.iterator();
- while (iters.hasNext()) {
- CacheServer cs = iters.next();
-
+ for (CacheServer cs : csList) {
String bindAddress = cs.getBindAddress();
int port = cs.getPort();
boolean isRunning = cs.isRunning();
@@ -119,28 +82,49 @@ public class GetMemberInformationFunction extends FunctionAdapter implements Int
CacheServerInfo cacheServerInfo = new CacheServerInfo(bindAddress, port, isRunning);
memberInfo.addCacheServerInfo(cacheServerInfo);
}
+
Map<ClientProxyMembershipID, CacheClientStatus> allConnectedClients =
InternalClientMembership.getStatusForAllClientsIgnoreSubscriptionStatus();
- Iterator<ClientProxyMembershipID> it = allConnectedClients.keySet().iterator();
- int numConnections = 0;
- while (it.hasNext()) {
- CacheClientStatus status = allConnectedClients.get(it.next());
+ int numConnections = 0;
+ for (ClientProxyMembershipID clientProxyMembershipID : allConnectedClients.keySet()) {
+ CacheClientStatus status = allConnectedClients.get(clientProxyMembershipID);
numConnections = numConnections + status.getNumberOfConnections();
}
+
memberInfo.setClientCount(numConnections);
+
} else {
memberInfo.setServer(false);
}
+
functionContext.getResultSender().lastResult(memberInfo);
+
} catch (CacheClosedException e) {
functionContext.getResultSender().sendException(e);
+
} catch (Exception e) {
functionContext.getResultSender().sendException(e);
}
}
- private long bytesToMeg(long bytes) {
+ @Override
+ public boolean hasResult() {
+ return true;
+ }
+
+ @Override
+ public boolean isHA() {
+ return true;
+ }
+
+ @Override
+ public boolean optimizeForWrite() {
+ return false;
+ }
+
+ private long bytesToMeg(final long bytes) {
return bytes / (1024L * 1024L);
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java
index cbf70ac..657d4a8 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionDescriptionFunction.java
@@ -14,26 +14,23 @@
*/
package org.apache.geode.management.internal.cli.functions;
-
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.management.internal.cli.domain.RegionDescriptionPerMember;
-public class GetRegionDescriptionFunction extends FunctionAdapter implements InternalEntity {
-
-
+public class GetRegionDescriptionFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
String regionPath = (String) context.getArguments();
+
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
Region<?, ?> region = cache.getRegion(regionPath);
if (region != null) {
@@ -44,17 +41,13 @@ public class GetRegionDescriptionFunction extends FunctionAdapter implements Int
} else {
context.getResultSender().lastResult(null);
}
+
} catch (CacheClosedException e) {
context.getResultSender().sendException(e);
+
} catch (Exception e) {
context.getResultSender().sendException(e);
}
}
- @Override
- public String getId() {
- // TODO Auto-generated method stub
- return GetRegionDescriptionFunction.class.toString();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionsFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionsFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionsFunction.java
index 6571dca..e6a6173 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionsFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetRegionsFunction.java
@@ -28,17 +28,10 @@ import org.apache.geode.management.internal.cli.domain.RegionInformation;
* Function that retrieves regions hosted on every member
*/
public class GetRegionsFunction implements Function, InternalEntity {
-
private static final long serialVersionUID = 1L;
@Override
- public String getId() {
- // TODO Auto-generated method stub
- return GetRegionsFunction.class.toString();
- }
-
- @Override
- public void execute(FunctionContext functionContext) {
+ public void execute(final FunctionContext functionContext) {
try {
Cache cache = functionContext.getCache();
Set<Region<?, ?>> regions = cache.rootRegions(); // should never return a null
@@ -52,8 +45,10 @@ public class GetRegionsFunction implements Function, InternalEntity {
RegionInformation regInfo = new RegionInformation(region, true);
regionInformationSet.add(regInfo);
}
+
functionContext.getResultSender().lastResult(regionInformationSet.toArray());
}
+
} catch (Exception e) {
functionContext.getResultSender().sendException(e);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetStackTracesFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetStackTracesFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetStackTracesFunction.java
index 4e9f9d6..2714537 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetStackTracesFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetStackTracesFunction.java
@@ -14,23 +14,20 @@
*/
package org.apache.geode.management.internal.cli.functions;
-
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.OSProcess;
import org.apache.geode.management.internal.cli.domain.StackTracesPerMember;
-public class GetStackTracesFunction extends FunctionAdapter implements InternalEntity {
-
+public class GetStackTracesFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId = cache.getDistributedSystem().getDistributedMember().getName();
if (memberNameOrId == null) {
@@ -39,14 +36,10 @@ public class GetStackTracesFunction extends FunctionAdapter implements InternalE
StackTracesPerMember stackTracePerMember =
new StackTracesPerMember(memberNameOrId, OSProcess.zipStacks());
context.getResultSender().lastResult(stackTracePerMember);
+
} catch (Exception e) {
context.getResultSender().sendException(e);
}
}
- @Override
- public String getId() {
- // TODO Auto-generated method stub
- return GetStackTracesFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction.java
index 70b649c..3e5b556 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetSubscriptionQueueSizeFunction.java
@@ -15,7 +15,7 @@
package org.apache.geode.management.internal.cli.functions;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.query.CqQuery;
import org.apache.geode.cache.query.internal.CqQueryVsdStats;
@@ -28,18 +28,16 @@ import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.domain.SubscriptionQueueSizeResult;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-/***
+/**
* Function to get subscription-queue-size
- *
*/
-public class GetSubscriptionQueueSizeFunction extends FunctionAdapter implements InternalEntity {
-
+public class GetSubscriptionQueueSizeFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
- final Cache cache = CliUtil.getCacheIfExists();
- final String memberNameOrId =
+ public void execute(final FunctionContext context) {
+ Cache cache = context.getCache();
+ String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
String args[] = (String[]) context.getArguments();
String durableClientId = null, cqName = null;
@@ -90,16 +88,13 @@ public class GetSubscriptionQueueSizeFunction extends FunctionAdapter implements
} else {
result.setErrorMessage(CliStrings.NO_CLIENT_FOUND);
}
+
} catch (Exception e) {
result.setExceptionMessage(e.getMessage());
+
} finally {
context.getResultSender().lastResult(result);
}
}
- @Override
- public String getId() {
- return GetSubscriptionQueueSizeFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ImportDataFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ImportDataFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ImportDataFunction.java
index 13949c8..68ed7cf 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ImportDataFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ImportDataFunction.java
@@ -17,9 +17,8 @@ package org.apache.geode.management.internal.cli.functions;
import java.io.File;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.snapshot.RegionSnapshotService;
import org.apache.geode.cache.snapshot.SnapshotOptions;
@@ -27,28 +26,28 @@ import org.apache.geode.cache.snapshot.SnapshotOptions.SnapshotFormat;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-/****
+/**
* Function which carries out the import of a region to a file on a member. Uses the
* RegionSnapshotService to import the data
- *
*/
-public class ImportDataFunction extends FunctionAdapter implements InternalEntity {
-
+public class ImportDataFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
- public void execute(FunctionContext context) {
- final Object[] args = (Object[]) context.getArguments();
- final String regionName = (String) args[0];
- final String importFileName = (String) args[1];
+ public void execute(final FunctionContext context) {
+ Object[] args = (Object[]) context.getArguments();
+ String regionName = (String) args[0];
+ String importFileName = (String) args[1];
+
boolean invokeCallbacks = false;
if (args.length > 2) {
invokeCallbacks = (boolean) args[2];
}
try {
- final Cache cache = CacheFactory.getAnyInstance();
- final Region<?, ?> region = cache.getRegion(regionName);
- final String hostName = cache.getDistributedSystem().getDistributedMember().getHost();
+ Cache cache = context.getCache();
+ Region<?, ?> region = cache.getRegion(regionName);
+ String hostName = cache.getDistributedSystem().getDistributedMember().getHost();
+
if (region != null) {
RegionSnapshotService<?, ?> snapshotService = region.getSnapshotService();
SnapshotOptions options = snapshotService.createOptions();
@@ -58,6 +57,7 @@ public class ImportDataFunction extends FunctionAdapter implements InternalEntit
String successMessage = CliStrings.format(CliStrings.IMPORT_DATA__SUCCESS__MESSAGE,
importFile.getCanonicalPath(), hostName, regionName);
context.getResultSender().lastResult(successMessage);
+
} else {
throw new IllegalArgumentException(
CliStrings.format(CliStrings.REGION_NOT_FOUND, regionName));
@@ -68,8 +68,4 @@ public class ImportDataFunction extends FunctionAdapter implements InternalEntit
}
}
- public String getId() {
- return ImportDataFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction.java
index 507e9f8..e9bcc17 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListAsyncEventQueuesFunction.java
@@ -19,14 +19,12 @@ import java.util.Set;
import org.apache.logging.log4j.Logger;
-import org.apache.geode.LogWriter;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.asyncqueue.AsyncEventListener;
import org.apache.geode.cache.asyncqueue.AsyncEventQueue;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.InternalEntity;
@@ -37,23 +35,12 @@ import org.apache.geode.management.internal.cli.domain.AsyncEventQueueDetails;
/**
* An implementation of GemFire Function interface used to determine all the async event queues that
* exist for the entire cache, distributed across the GemFire distributed system.
- * </p>
- *
+ *
* @since GemFire 8.0
*/
-public class ListAsyncEventQueuesFunction extends FunctionAdapter implements InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
+public class ListAsyncEventQueuesFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
-
- @Override
- public String getId() {
- return getClass().getName();
- }
-
- protected Cache getCache() {
- return CacheFactory.getAnyInstance();
- }
+ private static final Logger logger = LogService.getLogger();
@Override
public void execute(final FunctionContext context) {
@@ -61,7 +48,7 @@ public class ListAsyncEventQueuesFunction extends FunctionAdapter implements Int
String memberId = "";
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -105,4 +92,5 @@ public class ListAsyncEventQueuesFunction extends FunctionAdapter implements Int
context.getResultSender().lastResult(result);
}
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDeployedFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDeployedFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDeployedFunction.java
index 88a77be..5633946 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDeployedFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDeployedFunction.java
@@ -16,40 +16,32 @@ package org.apache.geode.management.internal.cli.functions;
import java.util.List;
-import org.apache.geode.internal.ClassPathLoader;
-import org.apache.geode.internal.DeployedJar;
import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
+import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.ClassPathLoader;
+import org.apache.geode.internal.DeployedJar;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.JarDeployer;
-import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.logging.LogService;
public class ListDeployedFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = ListDeployedFunction.class.getName();
-
private static final long serialVersionUID = 1L;
-
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
- InternalCache cache = getCache();
- final JarDeployer jarDeployer = ClassPathLoader.getLatest().getJarDeployer();
+ Cache cache = context.getCache();
+ JarDeployer jarDeployer = ClassPathLoader.getLatest().getJarDeployer();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -59,8 +51,9 @@ public class ListDeployedFunction implements Function, InternalEntity {
memberId = member.getName();
}
- final List<DeployedJar> jarClassLoaders = jarDeployer.findDeployedJars();
- final String[] jars = new String[jarClassLoaders.size() * 2];
+ List<DeployedJar> jarClassLoaders = jarDeployer.findDeployedJars();
+ String[] jars = new String[jarClassLoaders.size() * 2];
+
int index = 0;
for (DeployedJar jarClassLoader : jarClassLoaders) {
jars[index++] = jarClassLoader.getJarName();
@@ -87,11 +80,6 @@ public class ListDeployedFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
@@ -105,4 +93,5 @@ public class ListDeployedFunction implements Function, InternalEntity {
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction.java
index 80c84b5..0b5f1a6 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction.java
@@ -16,13 +16,10 @@
package org.apache.geode.management.internal.cli.functions;
import java.util.HashSet;
-import java.util.Properties;
import java.util.Set;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.DiskStore;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.InternalEntity;
@@ -33,47 +30,34 @@ import org.apache.geode.management.internal.cli.domain.DiskStoreDetails;
* The ListDiskStoresFunction class is an implementation of GemFire Function interface used to
* determine all the disk stores that exist for the entire cache, distributed across the GemFire
* distributed system.
- * </p>
- *
+ *
* @see org.apache.geode.cache.DiskStore
* @see org.apache.geode.cache.execute.Function
* @see org.apache.geode.cache.execute.FunctionAdapter
* @see org.apache.geode.cache.execute.FunctionContext
* @see org.apache.geode.internal.InternalEntity
* @see org.apache.geode.management.internal.cli.domain.DiskStoreDetails
+ *
* @since GemFire 7.0
*/
-public class ListDiskStoresFunction extends FunctionAdapter implements InternalEntity {
-
- @SuppressWarnings("unused")
- public void init(final Properties props) {}
-
- public String getId() {
- return getClass().getName();
- }
-
- protected Cache getCache() {
- return CacheFactory.getAnyInstance();
- }
+public class ListDiskStoresFunction implements Function, InternalEntity {
+ @Override
public void execute(final FunctionContext context) {
- final Set<DiskStoreDetails> memberDiskStores = new HashSet<DiskStoreDetails>();
+ Set<DiskStoreDetails> memberDiskStores = new HashSet<>();
try {
- final Cache cache = getCache();
+ InternalCache cache = (InternalCache) context.getCache();
- if (cache instanceof InternalCache) {
- final InternalCache gemfireCache = (InternalCache) cache;
+ DistributedMember member = cache.getMyId();
- final DistributedMember member = gemfireCache.getMyId();
-
- for (final DiskStore memberDiskStore : gemfireCache.listDiskStoresIncludingRegionOwned()) {
- memberDiskStores.add(new DiskStoreDetails(memberDiskStore.getDiskStoreUUID(),
- memberDiskStore.getName(), member.getId(), member.getName()));
- }
+ for (DiskStore memberDiskStore : cache.listDiskStoresIncludingRegionOwned()) {
+ memberDiskStores.add(new DiskStoreDetails(memberDiskStore.getDiskStoreUUID(),
+ memberDiskStore.getName(), member.getId(), member.getName()));
}
context.getResultSender().lastResult(memberDiskStores);
+
} catch (Exception e) {
context.getResultSender().sendException(e);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction.java
index 434c619..d9db328 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction.java
@@ -16,12 +16,10 @@
package org.apache.geode.management.internal.cli.functions;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.query.internal.cq.CqService;
import org.apache.geode.distributed.DistributedMember;
@@ -35,31 +33,22 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings;
/**
* The ListDurableCqs class is a GemFire function used to collect all the durable client names on
* the server
- * </p>
- *
+ *
* @see org.apache.geode.cache.Cache
* @see org.apache.geode.cache.execute.Function
* @see org.apache.geode.cache.execute.FunctionAdapter
* @see org.apache.geode.cache.execute.FunctionContext
* @see org.apache.geode.internal.InternalEntity
* @see org.apache.geode.management.internal.cli.domain.IndexDetails
+ *
* @since GemFire 7.0.1
*/
-@SuppressWarnings("unused")
-public class ListDurableCqNamesFunction extends FunctionAdapter implements InternalEntity {
+public class ListDurableCqNamesFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
- protected Cache getCache() {
- return CacheFactory.getAnyInstance();
- }
-
- public String getId() {
- return ListDurableCqNamesFunction.class.getName();
- }
-
public void execute(final FunctionContext context) {
- final Cache cache = getCache();
- final DistributedMember member = cache.getDistributedSystem().getDistributedMember();
+ Cache cache = context.getCache();
+ DistributedMember member = cache.getDistributedSystem().getDistributedMember();
String memberNameOrId = CliUtil.getMemberNameOrId(member);
DurableCqNamesResult result = new DurableCqNamesResult(memberNameOrId);
@@ -89,10 +78,13 @@ public class ListDurableCqNamesFunction extends FunctionAdapter implements Inter
} else {
result.setErrorMessage(CliStrings.NO_CLIENT_FOUND);
}
+
} catch (Exception e) {
result.setExceptionMessage(e.getMessage());
+
} finally {
context.getResultSender().lastResult(result);
}
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListFunctionFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListFunctionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListFunctionFunction.java
index a45ed0b..d078a5b 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListFunctionFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListFunctionFunction.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.FunctionService;
@@ -34,22 +33,19 @@ import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
public class ListFunctionFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = ListFunctionFunction.class.getName();
-
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
- final Object[] args = (Object[]) context.getArguments();
- final String stringPattern = (String) args[0];
+ Object[] args = (Object[]) context.getArguments();
+ String stringPattern = (String) args[0];
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
memberId = member.getId();
@@ -58,10 +54,12 @@ public class ListFunctionFunction implements Function, InternalEntity {
memberId = member.getName();
}
- final Map<String, Function> functions = FunctionService.getRegisteredFunctions();
+ Map<String, Function> functions = FunctionService.getRegisteredFunctions();
CliFunctionResult result;
+
if (stringPattern == null || stringPattern.isEmpty()) {
result = new CliFunctionResult(memberId, functions.keySet().toArray(new String[0]));
+
} else {
Pattern pattern = Pattern.compile(stringPattern);
List<String> resultList = new LinkedList<String>();
@@ -73,6 +71,7 @@ public class ListFunctionFunction implements Function, InternalEntity {
}
result = new CliFunctionResult(memberId, resultList.toArray(new String[0]));
}
+
context.getResultSender().lastResult(result);
} catch (CacheClosedException cce) {
@@ -92,11 +91,6 @@ public class ListFunctionFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
@@ -110,4 +104,5 @@ public class ListFunctionFunction implements Function, InternalEntity {
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListIndexFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListIndexFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListIndexFunction.java
index f8d302c..163f7b3 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListIndexFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ListIndexFunction.java
@@ -19,8 +19,7 @@ import java.util.HashSet;
import java.util.Set;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.query.Index;
import org.apache.geode.distributed.DistributedMember;
@@ -30,39 +29,31 @@ import org.apache.geode.management.internal.cli.domain.IndexDetails;
/**
* The ListIndexFunction class is a GemFire function used to collect all the index information on
* all Regions across the entire GemFire Cache (distributed system).
- * </p>
- *
+ *
* @see org.apache.geode.cache.Cache
* @see org.apache.geode.cache.execute.Function
* @see org.apache.geode.cache.execute.FunctionAdapter
* @see org.apache.geode.cache.execute.FunctionContext
* @see org.apache.geode.internal.InternalEntity
* @see org.apache.geode.management.internal.cli.domain.IndexDetails
+ *
* @since GemFire 7.0
*/
-@SuppressWarnings("unused")
-public class ListIndexFunction extends FunctionAdapter implements InternalEntity {
-
- protected Cache getCache() {
- return CacheFactory.getAnyInstance();
- }
-
- public String getId() {
- return ListIndexFunction.class.getName();
- }
+public class ListIndexFunction implements Function, InternalEntity {
public void execute(final FunctionContext context) {
try {
- final Set<IndexDetails> indexDetailsSet = new HashSet<IndexDetails>();
+ Set<IndexDetails> indexDetailsSet = new HashSet<>();
- final Cache cache = getCache();
- final DistributedMember member = cache.getDistributedSystem().getDistributedMember();
+ Cache cache = context.getCache();
+ DistributedMember member = cache.getDistributedSystem().getDistributedMember();
for (final Index index : cache.getQueryService().getIndexes()) {
indexDetailsSet.add(new IndexDetails(member, index));
}
context.getResultSender().lastResult(indexDetailsSet);
+
} catch (Exception e) {
context.getResultSender().sendException(e);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java
deleted file mode 100644
index c23bcbe..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MemberRegionFunction.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.functions;
-
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.Execution;
-import org.apache.geode.cache.execute.Function;
-import org.apache.geode.cache.execute.FunctionContext;
-import org.apache.geode.cache.execute.FunctionException;
-import org.apache.geode.cache.execute.FunctionService;
-import org.apache.geode.internal.InternalEntity;
-
-
-public class MemberRegionFunction implements Function, InternalEntity {
- public static final String ID = MemberRegionFunction.class.getName();
- private static final long serialVersionUID = 1L;
-
- @Override
- public void execute(FunctionContext context) {
- Object[] args = (Object[]) context.getArguments();
- String region = (String) args[0];
- String functionId = (String) args[1];
- Cache cache = CacheFactory.getAnyInstance();
-
- try {
- Function function = FunctionService.getFunction(functionId);
- if (function == null) {
- context.getResultSender()
- .lastResult("For region on a member did not get function " + functionId);
- }
- Execution execution = FunctionService.onRegion(cache.getRegion(region));
- if (execution == null) {
- context.getResultSender().lastResult("For region on a member could not execute");
- } else {
- execution.execute(function);
- context.getResultSender().lastResult("succeeded in executing on region " + region);
- }
-
- } catch (FunctionException e) {
- context.getResultSender()
- .lastResult("FunctionException in MemberRegionFunction =" + e.getMessage());
- } catch (Exception e) {
- context.getResultSender().lastResult("Exception in MemberRegionFunction =" + e.getMessage());
- }
-
- }
-
- @Override
- public String getId() {
- return MemberRegionFunction.ID;
-
- }
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
- // no need of optimization since read-only.
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-
-}
[41/50] [abbrv] geode git commit: GEODE-3317: Fix
UniversalMembershipListenerAdapterDUnitTest
Posted by kl...@apache.org.
GEODE-3317: Fix UniversalMembershipListenerAdapterDUnitTest
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/ab0543be
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/ab0543be
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/ab0543be
Branch: refs/heads/feature/GEODE-3299
Commit: ab0543bee3901b113a50b8b12ef9c08f90a9cefa
Parents: 9db5c8e
Author: Jared Stewart <js...@pivotal.io>
Authored: Fri Jul 28 10:37:52 2017 -0700
Committer: Jared Stewart <js...@pivotal.io>
Committed: Mon Jul 31 13:15:39 2017 -0700
----------------------------------------------------------------------
.../UniversalMembershipListenerAdapterDUnitTest.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/ab0543be/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
index d6f2579..0773262 100644
--- a/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
@@ -15,6 +15,7 @@
package org.apache.geode.management;
import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.internal.DistributionConfig.RESTRICT_MEMBERSHIP_PORT_RANGE;
import static org.apache.geode.test.dunit.Assert.*;
import static org.apache.geode.test.dunit.LogWriterUtils.*;
@@ -32,6 +33,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.geode.distributed.internal.ServerLocation;
import org.junit.Before;
+import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -64,6 +66,7 @@ import org.apache.geode.test.dunit.SerializableCallable;
import org.apache.geode.test.dunit.SerializableRunnable;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.Wait;
+import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.FlakyTest;
@@ -74,6 +77,9 @@ import org.apache.geode.test.junit.categories.FlakyTest;
*/
@Category(DistributedTest.class)
public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTestCase {
+ @ClassRule
+ public static DistributedRestoreSystemProperties distributedRestoreSystemProperties =
+ new DistributedRestoreSystemProperties();
protected static final boolean CLIENT = true;
protected static final boolean SERVER = false;
@@ -916,6 +922,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
SerializableCallable createBridgeClient = new SerializableCallable("Create bridge client") {
@Override
public Object call() {
+ System.setProperty(RESTRICT_MEMBERSHIP_PORT_RANGE, "false");
System.out.println("[doTestSystemClientEventsInServer] create system bridge client");
assertTrue(getSystem(serverProperties).isConnected());
assertFalse(getCache().isClosed());
[39/50] [abbrv] geode git commit: GEODE-2971: Introduce ExitCode to
resolve inconsistency of shell exit values.
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
index 36888e8..ef25e8f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
@@ -14,12 +14,6 @@
*/
package org.apache.geode.internal.statistics;
-import org.apache.geode.GemFireIOException;
-import org.apache.geode.InternalGemFireException;
-import org.apache.geode.internal.Assert;
-import org.apache.geode.internal.i18n.LocalizedStrings;
-import org.apache.geode.internal.logging.DateFormatter;
-
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.EOFException;
@@ -46,6 +40,13 @@ import java.util.SimpleTimeZone;
import java.util.TimeZone;
import java.util.zip.GZIPInputStream;
+import org.apache.geode.GemFireIOException;
+import org.apache.geode.InternalGemFireException;
+import org.apache.geode.internal.Assert;
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.logging.DateFormatter;
+
/**
* StatArchiveReader provides APIs to read statistic snapshots from an archive file.
*/
@@ -222,7 +223,7 @@ public class StatArchiveReader implements StatArchiveFormat {
String archiveName = null;
if (args.length > 1) {
System.err.println("Usage: [archiveName]");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
} else if (args.length == 1) {
archiveName = args[0];
} else {
@@ -397,7 +398,7 @@ public class StatArchiveReader implements StatArchiveFormat {
}
}
- public static interface StatValue {
+ public interface StatValue {
/**
* {@link StatArchiveReader.StatValue} filter that causes the statistic values to be unfiltered.
* This causes the raw values written to the archive to be used.
@@ -405,7 +406,7 @@ public class StatArchiveReader implements StatArchiveFormat {
* This is the default filter for non-counter statistics. To determine if a statistic is not a
* counter use {@link StatArchiveReader.StatDescriptor#isCounter}.
*/
- public static final int FILTER_NONE = 0;
+ int FILTER_NONE = 0;
/**
* {@link StatArchiveReader.StatValue} filter that causes the statistic values to be filtered to
* reflect how often they change per second. Since the difference between two samples is used to
@@ -417,7 +418,7 @@ public class StatArchiveReader implements StatArchiveFormat {
* This is the default filter for counter statistics. To determine if a statistic is a counter
* use {@link StatArchiveReader.StatDescriptor#isCounter}.
*/
- public static final int FILTER_PERSEC = 1;
+ int FILTER_PERSEC = 1;
/**
* {@link StatArchiveReader.StatValue} filter that causes the statistic values to be filtered to
* reflect how much they changed between sample periods. Since the difference between two
@@ -426,90 +427,90 @@ public class StatArchiveReader implements StatArchiveFormat {
* per second value is the instance's first time stamp
* {@link StatArchiveReader.ResourceInst#getFirstTimeMillis}.
*/
- public static final int FILTER_PERSAMPLE = 2;
+ int FILTER_PERSAMPLE = 2;
/**
* Creates and returns a trimmed version of this stat value. Any samples taken before
* <code>startTime</code> and after <code>endTime</code> are discarded from the resulting value.
* Set a time parameter to <code>-1</code> to not trim that side.
*/
- public StatValue createTrimmed(long startTime, long endTime);
+ StatValue createTrimmed(long startTime, long endTime);
/**
* Returns true if value has data that has been trimmed off it by a start timestamp.
*/
- public boolean isTrimmedLeft();
+ boolean isTrimmedLeft();
/**
* Gets the {@link StatArchiveReader.ResourceType type} of the resources that this value belongs
* to.
*/
- public ResourceType getType();
+ ResourceType getType();
/**
* Gets the {@link StatArchiveReader.ResourceInst resources} that this value belongs to.
*/
- public ResourceInst[] getResources();
+ ResourceInst[] getResources();
/**
* Returns an array of timestamps for each unfiltered snapshot in this value. Each returned time
* stamp is the number of millis since midnight, Jan 1, 1970 UTC.
*/
- public long[] getRawAbsoluteTimeStamps();
+ long[] getRawAbsoluteTimeStamps();
/**
* Returns an array of timestamps for each unfiltered snapshot in this value. Each returned time
* stamp is the number of millis since midnight, Jan 1, 1970 UTC. The resolution is seconds.
*/
- public long[] getRawAbsoluteTimeStampsWithSecondRes();
+ long[] getRawAbsoluteTimeStampsWithSecondRes();
/**
* Returns an array of doubles containing the unfiltered value of this statistic for each point
* in time that it was sampled.
*/
- public double[] getRawSnapshots();
+ double[] getRawSnapshots();
/**
* Returns an array of doubles containing the filtered value of this statistic for each point in
* time that it was sampled.
*/
- public double[] getSnapshots();
+ double[] getSnapshots();
/**
* Returns the number of samples taken of this statistic's value.
*/
- public int getSnapshotsSize();
+ int getSnapshotsSize();
/**
* Returns the smallest of all the samples taken of this statistic's value.
*/
- public double getSnapshotsMinimum();
+ double getSnapshotsMinimum();
/**
* Returns the largest of all the samples taken of this statistic's value.
*/
- public double getSnapshotsMaximum();
+ double getSnapshotsMaximum();
/**
* Returns the average of all the samples taken of this statistic's value.
*/
- public double getSnapshotsAverage();
+ double getSnapshotsAverage();
/**
* Returns the standard deviation of all the samples taken of this statistic's value.
*/
- public double getSnapshotsStandardDeviation();
+ double getSnapshotsStandardDeviation();
/**
* Returns the most recent value of all the samples taken of this statistic's value.
*/
- public double getSnapshotsMostRecent();
+ double getSnapshotsMostRecent();
/**
* Returns true if sample whose value was different from previous values has been added to this
* StatValue since the last time this method was called.
*/
- public boolean hasValueChanged();
+ boolean hasValueChanged();
/**
* Returns the current filter used to calculate this statistic's values. It will be one of these
@@ -520,7 +521,7 @@ public class StatArchiveReader implements StatArchiveFormat {
* <li>{@link #FILTER_PERSEC}
* </ul>
*/
- public int getFilter();
+ int getFilter();
/**
* Sets the current filter used to calculate this statistic's values. The default filter is
@@ -535,12 +536,12 @@ public class StatArchiveReader implements StatArchiveFormat {
* </ul>
* @throws IllegalArgumentException if <code>filter</code> is not a valid filter constant.
*/
- public void setFilter(int filter);
+ void setFilter(int filter);
/**
* Returns a description of this statistic.
*/
- public StatDescriptor getDescriptor();
+ StatDescriptor getDescriptor();
}
protected static abstract class AbstractValue implements StatValue {
@@ -826,11 +827,6 @@ public class StatArchiveReader implements StatArchiveFormat {
if (values.length == 0) {
return new long[0];
}
- // for (int i=0; i < values.length; i++) {
- // System.out.println("DEBUG: inst# " + i + " has "
- // + values[i].getRawAbsoluteTimeStamps().length
- // + " timestamps");
- // }
long[] valueTimeStamps = values[0].getRawAbsoluteTimeStamps();
int tsCount = valueTimeStamps.length + 1;
long[] ourTimeStamps = new long[(tsCount * 2) + 1];
@@ -867,8 +863,6 @@ public class StatArchiveReader implements StatArchiveFormat {
ourIdx++; // never put the next timestamp at this index
while (!closer(tsToInsert, ourTimeStamps[ourIdx - 1], ourTimeStamps[ourIdx])
&& !mustInsert(j, valueTimeStamps, ourTimeStamps[ourIdx])) {
- // System.out.println("DEBUG: skipping mergeTs[" + (ourIdx-1) + "]="
- // + tsAtInsertPoint + " because it was closer to the next one");
ourIdx++; // it is closer to the next one so skip forward on more
}
} else {
@@ -880,22 +874,6 @@ public class StatArchiveReader implements StatArchiveFormat {
endRunIdx++;
}
int numToCopy = endRunIdx - j;
- // System.out.println("DEBUG: tsToInsert=" + tsToInsert
- // + " tsAtInsertPoint=" + tsAtInsertPoint
- // + " timeDelta=" + timeDelta
- // + " vDelta=" + (Math.abs(tsToInsert-tsAtInsertPoint)/2)
- // + " numToCopy=" + numToCopy);
- // if (j > 0) {
- // System.out.println("DEBUG: prevTsToInsert=" + valueTimeStamps[j-1]);
- // }
- // if (ourIdx > 0) {
- // System.out.println("DEBUG ourTimeStamps[" + (ourIdx-1) + "]=" +
- // ourTimeStamps[ourIdx-1]);
- // }
-
- // if (numToCopy > 1) {
- // System.out.println("DEBUG: endRunTs=" + valueTimeStamps[endRunIdx-1]);
- // }
if (tsCount + numToCopy > ourTimeStamps.length) {
// grow our timestamp array
long[] tmp = new long[(tsCount + numToCopy) * 2];
@@ -916,84 +894,16 @@ public class StatArchiveReader implements StatArchiveFormat {
// skip over all inserted elements
j += numToCopy;
}
- // System.out.println("DEBUG: inst #" + i
- // + " valueTs[" + (j-1) + "]=" + tsToInsert
- // + " found/inserted at"
- // + " mergeTs[" + (ourIdx-1) + "]=" + ourTimeStamps[ourIdx-1]);
- }
- }
- // for (int i=0; i < tsCount; i++) {
- // System.out.println("DEBUG: mergedTs[" + i + "]=" + ourTimeStamps[i]);
- // if (i > 0 && ourTimeStamps[i] <= ourTimeStamps[i-1]) {
- // System.out.println("DEBUG: ERROR ts was not greater than previous");
- // }
- // }
- // Now make one more pass over all the timestamps and make sure they
- // will all fit into the current merged timestamps in ourTimeStamps
- // boolean changed;
- // do {
- // changed = false;
- // for (int i=0; i < values.length; i++) {
- // valueTimeStamps = values[i].getRawAbsoluteTimeStamps();
- // if (valueTimeStamps.length == 0) {
- // continue;
- // }
- // int ourIdx = 0;
- // for (int j=0; j < valueTimeStamps.length; j++) {
- // while ((ourIdx < (tsCount-1))
- // && !isClosest(valueTimeStamps[j], ourTimeStamps, ourIdx)) {
- // ourIdx++;
- // }
- // if (ourIdx == (tsCount-1)) {
- // // we are at the end so we need to append all our remaining stamps
- // [j..valueTimeStamps.length-1]
- // // and then reappend the Long.MAX_VALUE that
- // // is currently at tsCount-1
- // int numToCopy = valueTimeStamps.length - j;
- // if (tsCount+numToCopy > ourTimeStamps.length) {
- // // grow our timestamp array
- // long[] tmp = new long[tsCount+numToCopy+1];
- // System.arraycopy(ourTimeStamps, 0, tmp, 0, tsCount);
- // ourTimeStamps = tmp;
- // }
- // System.arraycopy(valueTimeStamps, j,
- // ourTimeStamps, ourIdx,
- // numToCopy);
- // tsCount += numToCopy;
- // ourTimeStamps[tsCount-1] = Long.MAX_VALUE;
- // //changed = true;
- // System.out.println("DEBUG: had to add " + numToCopy
- // + " timestamps for inst#" + i + " starting at index " + j + " starting with ts=" +
- // valueTimeStamps[j]);
- // break; // our of the for j loop since we just finished off this guy
- // } else {
- // ourIdx++;
- // }
- // }
- // }
- // } while (changed);
- // remove the max ts we added
+ }
+ }
tsCount--;
{
int startIdx = 0;
int endIdx = tsCount - 1;
if (startTime != -1) {
- // for (int i=0; i < tsCount; i++) {
- // if (ourTimeStamps[i] >= startTime) {
- // break;
- // }
- // startIdx++;
- // }
Assert.assertTrue(ourTimeStamps[startIdx] >= startTime);
}
if (endTime != -1) {
- // endIdx = startIdx-1;
- // for (int i=startIdx; i < tsCount; i++) {
- // if (ourTimeStamps[i] >= endTime) {
- // break;
- // }
- // endIdx++;
- // }
Assert.assertTrue(endIdx == startIdx - 1 || ourTimeStamps[endIdx] < endTime);
}
tsCount = (endIdx - startIdx) + 1;
@@ -1036,7 +946,6 @@ public class StatArchiveReader implements StatArchiveFormat {
private double[] getRawSnapshots(long[] ourTimeStamps) {
double[] result = new double[ourTimeStamps.length];
- // System.out.println("DEBUG: producing " + result.length + " values");
if (result.length > 0) {
for (int i = 0; i < values.length; i++) {
long[] valueTimeStamps = values[i].getRawAbsoluteTimeStamps();
@@ -1046,19 +955,11 @@ public class StatArchiveReader implements StatArchiveFormat {
if (values[i].isTrimmedLeft() && valueSnapshots.length > 0) {
currentValue = valueSnapshots[0];
}
- // System.out.println("DEBUG: inst#" + i + " has " + valueSnapshots.length + " values");
for (int j = 0; j < valueSnapshots.length; j++) {
- // System.out.println("DEBUG: Doing v with"
- // + " vTs[" + j + "]=" + valueTimeStamps[j]
- // + " at mergeTs[" + curIdx + "]=" + ourTimeStamps[curIdx]);
while (!isClosest(valueTimeStamps[j], ourTimeStamps, curIdx)) {
if (descriptor.isCounter()) {
result[curIdx] += currentValue;
}
- // System.out.println("DEBUG: skipping curIdx=" + curIdx
- // + " valueTimeStamps[" + j + "]=" + valueTimeStamps[j]
- // + " ourTimeStamps[" + curIdx + "]=" + ourTimeStamps[curIdx]
- // + " ourTimeStamps[" + (curIdx+1) + "]=" + ourTimeStamps[curIdx+1]);
curIdx++;
}
@@ -1104,11 +1005,6 @@ public class StatArchiveReader implements StatArchiveFormat {
if (filter == FILTER_PERSEC) {
long timeDelta = timestamps[i + 1] - timestamps[i];
result[i] = valueDelta / (timeDelta / 1000.0);
- // if (result[i] > valueDelta) {
- // System.out.println("DEBUG: timeDelta was " + timeDelta + " ms.");
- // System.out.println("DEBUG: valueDelta was " + valueDelta);
- // System.out.println("DEBUG: valueDelta/sec was " + result[i]);
- // }
} else {
result[i] = valueDelta;
}
@@ -2176,7 +2072,6 @@ public class StatArchiveReader implements StatArchiveFormat {
*/
public static class ResourceType {
private boolean loaded;
- // private final int id;
private final String name;
private String desc;
private final StatDescriptor[] stats;
@@ -2193,7 +2088,6 @@ public class StatArchiveReader implements StatArchiveFormat {
protected ResourceType(int id, String name, int statCount) {
this.loaded = false;
- // this.id = id;
this.name = name;
this.desc = null;
this.stats = new StatDescriptor[statCount];
@@ -2202,7 +2096,6 @@ public class StatArchiveReader implements StatArchiveFormat {
protected ResourceType(int id, String name, String desc, int statCount) {
this.loaded = true;
- // this.id = id;
this.name = name;
this.desc = desc;
this.stats = new StatDescriptor[statCount];
@@ -2252,9 +2145,6 @@ public class StatArchiveReader implements StatArchiveFormat {
}
}
- // private int getId() {
- // return this.id;
- // }
/**
* Returns the name of this resource type.
*/
@@ -2468,7 +2358,6 @@ public class StatArchiveReader implements StatArchiveFormat {
public static class ResourceInst {
private final boolean loaded;
private final StatArchiveFile archive;
- // private final int uniqueId;
private final ResourceType type;
private final String name;
private final long id;
@@ -2537,7 +2426,6 @@ public class StatArchiveReader implements StatArchiveFormat {
ResourceType type, boolean loaded) {
this.loaded = loaded;
this.archive = archive;
- // this.uniqueId = uniqueId;
this.name = name;
this.id = id;
Assert.assertTrue(type != null);
@@ -2751,26 +2639,26 @@ public class StatArchiveReader implements StatArchiveFormat {
}
}
- public static interface StatSpec extends ValueFilter {
+ public interface StatSpec extends ValueFilter {
/**
* Causes all stats that matches this spec, in all archive files, to be combined into a single
* global stat value.
*/
- public static final int GLOBAL = 2;
+ int GLOBAL = 2;
/**
* Causes all stats that matches this spec, in each archive file, to be combined into a single
* stat value for each file.
*/
- public static final int FILE = 1;
+ int FILE = 1;
/**
* No combination is done.
*/
- public final int NONE = 0;
+ int NONE = 0;
/**
* Returns one of the following values: {@link #GLOBAL}, {@link #FILE}, {@link #NONE}.
*/
- public int getCombineType();
+ int getCombineType();
}
/**
@@ -2778,30 +2666,30 @@ public class StatArchiveReader implements StatArchiveFormat {
* when loading a statistic archive file to reduce the memory footprint. Only statistic data that
* matches all four will be selected for loading.
*/
- public static interface ValueFilter {
+ public interface ValueFilter {
/**
* Returns true if the specified archive file matches this spec. Any archives whose name does
* not match this spec will not be selected for loading by this spec.
*/
- public boolean archiveMatches(File archive);
+ boolean archiveMatches(File archive);
/**
* Returns true if the specified type name matches this spec. Any types whose name does not
* match this spec will not be selected for loading by this spec.
*/
- public boolean typeMatches(String typeName);
+ boolean typeMatches(String typeName);
/**
* Returns true if the specified statistic name matches this spec. Any stats whose name does not
* match this spec will not be selected for loading by this spec.
*/
- public boolean statMatches(String statName);
+ boolean statMatches(String statName);
/**
* Returns true if the specified instance matches this spec. Any instance whose text id and
* numeric id do not match this spec will not be selected for loading by this spec.
*/
- public boolean instanceMatches(String textId, long numericId);
+ boolean instanceMatches(String textId, long numericId);
}
public static class StatArchiveFile {
@@ -3098,7 +2986,6 @@ public class StatArchiveReader implements StatArchiveFormat {
return true;
}
}
- // System.out.println("DEBUG: don't load type=" + typeName);
return false;
}
}
@@ -3116,7 +3003,6 @@ public class StatArchiveReader implements StatArchiveFormat {
return true;
}
}
- // System.out.println("DEBUG: don't load stat=" + stat.getName());
stat.unload();
return false;
}
@@ -3143,8 +3029,6 @@ public class StatArchiveReader implements StatArchiveFormat {
}
}
}
- // System.out.println("DEBUG: don't load instance=" + textId);
- // type.unload();
return false;
}
}
@@ -3284,9 +3168,6 @@ public class StatArchiveReader implements StatArchiveFormat {
}
private int readResourceInstId() throws IOException {
- /*
- * if (this.archiveVersion <= 1) { return dataIn.readInt(); }
- */
int token = dataIn.readUnsignedByte();
if (token <= MAX_BYTE_RESOURCE_INST_ID) {
return token;
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
index a5986f5..157bb91 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
@@ -25,6 +25,7 @@ import joptsimple.OptionParser;
import joptsimple.OptionSet;
import org.springframework.shell.core.ExitShellRequest;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.internal.PureJavaMode;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
@@ -131,7 +132,8 @@ public class Launcher {
}
Launcher launcher = new Launcher();
- System.exit(launcher.parseCommandLine(args));
+ int exitValue = launcher.parseCommandLine(args);
+ ExitCode.fromValue(exitValue).doSystemExit();
}
private int parseCommandLineCommand(final String... args) {
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
index eebae0d..06f8350 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
@@ -18,7 +18,13 @@ import static org.apache.geode.management.internal.cli.i18n.CliStrings.LOCATOR_T
import static org.apache.geode.management.internal.cli.shell.MXBeanProvider.getMemberMXBean;
import static org.apache.geode.management.internal.cli.util.HostUtils.getLocatorId;
+import java.io.IOException;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
import org.apache.geode.SystemFailure;
+import org.apache.geode.distributed.AbstractLauncher;
import org.apache.geode.distributed.LocatorLauncher;
import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.internal.lang.SystemUtils;
@@ -31,10 +37,6 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.InfoResultData;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.management.internal.configuration.utils.ClusterConfigurationStatusRetriever;
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
-
-import java.io.IOException;
public class StatusLocatorCommand implements GfshCommand {
@CliCommand(value = CliStrings.STATUS_LOCATOR, help = CliStrings.STATUS_LOCATOR__HELP)
@@ -75,8 +77,12 @@ public class StatusLocatorCommand implements GfshCommand {
.setBindAddress(locatorHost).setDebug(isDebugging()).setPid(pid)
.setPort(locatorPort).setWorkingDirectory(workingDirectory).build();
- final LocatorLauncher.LocatorState state = locatorLauncher.status();
- return createStatusLocatorResult(state);
+ final LocatorLauncher.LocatorState status = locatorLauncher.status();
+ if (status.getStatus().equals(AbstractLauncher.Status.NOT_RESPONDING)
+ || status.getStatus().equals(AbstractLauncher.Status.STOPPED)) {
+ return ResultBuilder.createShellClientErrorResult(status.toString());
+ }
+ return createStatusLocatorResult(status);
}
} catch (IllegalArgumentException | IllegalStateException e) {
return ResultBuilder.createUserErrorResult(e.getMessage());
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
index d8e77e6..43374ab 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
@@ -16,7 +16,11 @@ package org.apache.geode.management.internal.cli.commands.lifecycle;
import static org.apache.geode.management.internal.cli.shell.MXBeanProvider.getMemberMXBean;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
import org.apache.geode.SystemFailure;
+import org.apache.geode.distributed.AbstractLauncher;
import org.apache.geode.distributed.ServerLauncher;
import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.MemberMXBean;
@@ -26,8 +30,6 @@ import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.commands.GfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
public class StatusServerCommand implements GfshCommand {
@@ -70,9 +72,14 @@ public class StatusServerCommand implements GfshCommand {
final ServerLauncher.ServerState status = serverLauncher.status();
+ if (status.getStatus().equals(AbstractLauncher.Status.NOT_RESPONDING)
+ || status.getStatus().equals(AbstractLauncher.Status.STOPPED)) {
+ return ResultBuilder.createGemFireErrorResult(status.toString());
+ }
return ResultBuilder.createInfoResult(status.toString());
}
} catch (IllegalArgumentException | IllegalStateException e) {
+
return ResultBuilder.createUserErrorResult(e.getMessage());
} catch (VirtualMachineError e) {
SystemFailure.initiateFailure(e);
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Add.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Add.java b/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Add.java
index e69006c..c2428a3 100644
--- a/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Add.java
+++ b/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Add.java
@@ -14,15 +14,20 @@
*/
package com.main;
+import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.START_LOCATOR;
+
+import java.util.Set;
+
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.wan.GatewaySender;
import org.apache.geode.distributed.internal.DistributionConfig;
-
-import java.util.Set;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import org.apache.geode.internal.ExitCode;
/**
* This is a member representing site 1 who wants to send data to site 2
@@ -108,6 +113,6 @@ public class WANBootStrapping_Site1_Add {
System.out.println("Sender " + sender.getId() + " is stopped");
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Remove.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Remove.java b/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Remove.java
index e25f9d3..4ed7e74 100644
--- a/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Remove.java
+++ b/geode-core/src/test/java/com/main/WANBootStrapping_Site1_Remove.java
@@ -14,15 +14,17 @@
*/
package com.main;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.DistributionConfig;
+import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
import java.io.IOException;
import java.util.Properties;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.ExitCode;
/**
* This is a stand alone locator with a distributed-system-id = -1
@@ -68,7 +70,7 @@ public class WANBootStrapping_Site1_Remove {
locator.stop();
System.out.println("Locator stopped ");
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Add.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Add.java b/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Add.java
index a5f9bbc..d191f25 100644
--- a/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Add.java
+++ b/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Add.java
@@ -14,13 +14,19 @@
*/
package com.main;
+import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.START_LOCATOR;
+
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.wan.GatewayReceiver;
import org.apache.geode.distributed.internal.DistributionConfig;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import org.apache.geode.internal.ExitCode;
/**
* This is a member representing site 2 who wants to receive data from site 1
@@ -92,7 +98,7 @@ public class WANBootStrapping_Site2_Add {
}
}
- System.out.println("GatewayReciver " + receiver + " is stopped");
- System.exit(0);
+ System.out.println("GatewayReceiver " + receiver + " is stopped");
+ ExitCode.NORMAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Remove.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Remove.java b/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Remove.java
index d9e321d..af32736 100644
--- a/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Remove.java
+++ b/geode-core/src/test/java/com/main/WANBootStrapping_Site2_Remove.java
@@ -14,13 +14,17 @@
*/
package com.main;
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.DistributionConfig;
+import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
import java.io.IOException;
import java.util.Properties;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.ExitCode;
/**
* This is a stand alone locator with a distributed-system-id = -2
@@ -62,7 +66,7 @@ public class WANBootStrapping_Site2_Remove {
locator.stop();
System.out.println("Locator stopped ");
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/CompiledClass.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/CompiledClass.java b/geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/CompiledClass.java
index 91c22be..edf57f4 100644
--- a/geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/CompiledClass.java
+++ b/geode-core/src/test/java/org/apache/geode/codeAnalysis/decode/CompiledClass.java
@@ -30,6 +30,7 @@ import org.apache.geode.codeAnalysis.decode.cp.CpClass;
import org.apache.geode.codeAnalysis.decode.cp.CpDouble;
import org.apache.geode.codeAnalysis.decode.cp.CpLong;
import org.apache.geode.internal.DataSerializableFixedID;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.logging.PureLogWriter;
@@ -222,15 +223,15 @@ public class CompiledClass implements Comparable {
classFile = new File(argv[0]);
} catch (NullPointerException e) {
System.err.println("You must give the name of a class file on the command line");
- exit(3);
+ System.exit(3);
}
if (classFile == null) {
System.err.println("Unable to access " + argv[0]);
- exit(3);
+ System.exit(3);
}
if (!classFile.canRead()) {
System.err.println("Unable to read " + argv[0]);
- exit(3);
+ System.exit(3);
}
try {
instance = getInstance(classFile);
@@ -253,23 +254,9 @@ public class CompiledClass implements Comparable {
}
} catch (Throwable e) {
System.err.println("Error reading file: " + e.getMessage());
- exit(3);
+ System.exit(3);
}
- exit(0);
- }
-
- private static void exit(int exitCode) {
- int b;
- // if (false) {
- // if (exitCode == 0)
- // System.out.println("Done - press Enter to exit: ");
- // else
- // System.out.println("Press Enter to exit:");
- // try {
- // b = System.in.read();
- // } catch (java.io.IOException e) {};
- // }
- System.exit(exitCode);
+ ExitCode.NORMAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/distributed/DistributedSystemConnectPerf.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/DistributedSystemConnectPerf.java b/geode-core/src/test/java/org/apache/geode/distributed/DistributedSystemConnectPerf.java
index 9cdc04b..8f97ba5 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/DistributedSystemConnectPerf.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/DistributedSystemConnectPerf.java
@@ -14,10 +14,14 @@
*/
package org.apache.geode.distributed;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+
import java.io.PrintStream;
import java.util.Properties;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import org.apache.geode.internal.ExitCode;
/**
* This program is used to measure the amount of time it takes to connect and re-connect to a
@@ -40,7 +44,7 @@ public class DistributedSystemConnectPerf {
+ "to connect/disconnect to a DistributedSystem");
err.println("");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
public static void main(String[] args) throws Exception {
@@ -120,7 +124,7 @@ public class DistributedSystemConnectPerf {
out.println("** Average connect time took: " + (totalConnect / iterations) + " ms");
out.println("** Average disconnect time took: " + (totalDisconnect / iterations) + " ms");
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTest.java
index c7674c1..47e512a 100755
--- a/geode-core/src/test/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTest.java
@@ -14,9 +14,16 @@
*/
package org.apache.geode.distributed;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.*;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileNotFoundException;
@@ -28,12 +35,21 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
import org.apache.geode.distributed.AbstractLauncher.Status;
import org.apache.geode.distributed.LocatorLauncher.Builder;
import org.apache.geode.distributed.LocatorLauncher.LocatorState;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.internal.DistributionLocator;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.internal.logging.InternalLogWriter;
import org.apache.geode.internal.logging.LocalLogWriter;
@@ -45,13 +61,6 @@ import org.apache.geode.internal.process.ProcessUtils;
import org.apache.geode.test.junit.categories.FlakyTest;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
/**
* Integration tests for launching a Locator in a forked process.
@@ -1036,7 +1045,7 @@ public class LocatorLauncherRemoteIntegrationTest
logWriter.info(LocatorLauncherForkingProcess.class.getSimpleName() + "#main exiting...");
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
} catch (Throwable t) {
logWriter.info(LocatorLauncherForkingProcess.class.getSimpleName() + "#main error: " + t,
t);
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/distributed/ServerLauncherRemoteIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/ServerLauncherRemoteIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/distributed/ServerLauncherRemoteIntegrationTest.java
index 1dba3cf..d59cde1 100755
--- a/geode-core/src/test/java/org/apache/geode/distributed/ServerLauncherRemoteIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/ServerLauncherRemoteIntegrationTest.java
@@ -14,9 +14,16 @@
*/
package org.apache.geode.distributed;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.*;
+import static org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FILE;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileOutputStream;
@@ -30,6 +37,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Scope;
import org.apache.geode.distributed.AbstractLauncher.Status;
@@ -38,6 +49,7 @@ import org.apache.geode.distributed.ServerLauncher.ServerState;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.internal.cache.AbstractCacheServer;
import org.apache.geode.internal.cache.xmlcache.CacheCreation;
@@ -54,9 +66,6 @@ import org.apache.geode.internal.process.ProcessUtils;
import org.apache.geode.test.junit.categories.FlakyTest;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.process.ProcessWrapper;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
/**
* Integration tests for launching a Server in a forked process.
@@ -1445,7 +1454,7 @@ public class ServerLauncherRemoteIntegrationTest
logWriter.info(ServerLauncherForkingProcess.class.getSimpleName() + "#main exiting...");
// -System.out.println("exiting");
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
} catch (Throwable t) {
logWriter.info(ServerLauncherForkingProcess.class.getSimpleName() + "#main error: " + t, t);
System.exit(-1);
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/internal/jta/functional/TestXACacheLoader.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/jta/functional/TestXACacheLoader.java b/geode-core/src/test/java/org/apache/geode/internal/jta/functional/TestXACacheLoader.java
index 351c642..3394811 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/jta/functional/TestXACacheLoader.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/jta/functional/TestXACacheLoader.java
@@ -14,16 +14,24 @@
*/
package org.apache.geode.internal.jta.functional;
-import org.apache.geode.cache.*;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import javax.naming.Context;
import javax.sql.DataSource;
-import javax.naming.*;
+import javax.transaction.UserTransaction;
-import java.sql.*;
+import org.apache.geode.cache.AttributesFactory;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.CacheLoader;
+import org.apache.geode.cache.CacheLoaderException;
+import org.apache.geode.cache.LoaderHelper;
+import org.apache.geode.cache.Region;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.jta.CacheUtils;
-import javax.transaction.*;
-
/**
* A <code>CacheLoader</code> used in testing. Users should override the "2" method.
*
@@ -81,7 +89,7 @@ public class TestXACacheLoader implements CacheLoader {
utx.rollback();
System.out.println(re.get(args[0]));
cache.close();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
} catch (Exception e) {
e.printStackTrace();
cache.close();
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/sequence/GemfireSequenceDisplay.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/sequence/GemfireSequenceDisplay.java b/geode-core/src/test/java/org/apache/geode/sequence/GemfireSequenceDisplay.java
index 4a24451..201e2c0 100644
--- a/geode-core/src/test/java/org/apache/geode/sequence/GemfireSequenceDisplay.java
+++ b/geode-core/src/test/java/org/apache/geode/sequence/GemfireSequenceDisplay.java
@@ -14,20 +14,38 @@
*/
package org.apache.geode.sequence;
-import org.apache.geode.internal.sequencelog.GraphType;
-import org.apache.geode.internal.sequencelog.io.Filter;
-import org.apache.geode.internal.sequencelog.io.GraphReader;
-import org.apache.geode.internal.sequencelog.model.*;
-import org.apache.geode.sequence.*;
-
-import javax.swing.*;
-import java.awt.event.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.regex.Pattern;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.KeyStroke;
+
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.internal.sequencelog.GraphType;
+import org.apache.geode.internal.sequencelog.io.Filter;
+import org.apache.geode.internal.sequencelog.io.GraphReader;
+import org.apache.geode.internal.sequencelog.model.Edge;
+import org.apache.geode.internal.sequencelog.model.Graph;
+import org.apache.geode.internal.sequencelog.model.GraphID;
+import org.apache.geode.internal.sequencelog.model.GraphSet;
+import org.apache.geode.internal.sequencelog.model.Vertex;
+
/**
*/
public class GemfireSequenceDisplay {
@@ -250,7 +268,7 @@ public class GemfireSequenceDisplay {
+ "\t-logs (expiremental) instead of using .graph files, parse the gemfire logs to generate the sequence display"
+ "\t-filterkey a java regular expression to match against key names. If specified\n"
+ "The list of key sequence diagrams will only contain matching keys");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
return;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
index b14ff1d..a1045f8 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
@@ -16,15 +16,15 @@ package org.apache.geode.test.dunit.standalone;
import java.rmi.Naming;
+import org.apache.logging.log4j.Logger;
+
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.OSProcess;
import org.apache.geode.internal.Version;
import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.standalone.DUnitLauncher.MasterRemote;
-import org.apache.logging.log4j.Logger;
-
/**
*
*/
@@ -68,7 +68,7 @@ public class ChildVM {
}
} catch (Throwable t) {
logger.info("VM is exiting with error", t);
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
} finally {
logger.info("VM is exiting");
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
index 3232933..43220fa 100644
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -7,6 +7,7 @@ org/apache/geode/distributed/LocatorLauncher$Command
org/apache/geode/distributed/ServerLauncher
org/apache/geode/distributed/ServerLauncher$Command
org/apache/geode/distributed/internal/DistributionManager
+org/apache/geode/internal/ExitCode
org/apache/geode/internal/JarDeployer
org/apache/geode/internal/cache/BackupLock
org/apache/geode/internal/logging/GemFireLevel
[10/50] [abbrv] geode git commit: An empty commit to close PR. This
now closes #474
Posted by kl...@apache.org.
An empty commit to close PR. This now closes #474
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/bf8971c4
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/bf8971c4
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/bf8971c4
Branch: refs/heads/feature/GEODE-3299
Commit: bf8971c4d24ddcea9d5adf7bc1954483a1e00024
Parents: b9ba1d4
Author: Udo Kohlmeyer <uk...@pivotal.io>
Authored: Wed Jul 26 09:49:44 2017 -0700
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Wed Jul 26 09:49:44 2017 -0700
----------------------------------------------------------------------
----------------------------------------------------------------------
[38/50] [abbrv] geode git commit: GEODE-3286: Failing to cleanup
connections from ConnectionTable
Posted by kl...@apache.org.
GEODE-3286: Failing to cleanup connections from ConnectionTable
Merge branch 'feature/GEODE-3286' into develop
This closes #657
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/3acb47e6
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/3acb47e6
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/3acb47e6
Branch: refs/heads/feature/GEODE-3299
Commit: 3acb47e60f74d34d2cb737db2bf2d02d1fe177a2
Parents: 36665ae 7e06476
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Jul 31 09:48:16 2017 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Mon Jul 31 09:48:16 2017 -0700
----------------------------------------------------------------------
.../apache/geode/internal/tcp/Connection.java | 118 +++++++++++--------
.../geode/internal/tcp/ConnectionTable.java | 54 +++++----
.../apache/geode/internal/tcp/MsgReader.java | 2 +-
.../internal/tcp/PeerConnectionFactory.java | 32 +++++
.../apache/geode/internal/tcp/TCPConduit.java | 30 +++--
.../geode/internal/tcp/ConnectionTableTest.java | 66 +++++++++++
6 files changed, 215 insertions(+), 87 deletions(-)
----------------------------------------------------------------------
[33/50] [abbrv] geode git commit: GEODE-3310: Avoid running a test
case in distributed transaction.
Posted by kl...@apache.org.
GEODE-3310: Avoid running a test case in distributed transaction.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/acf0668f
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/acf0668f
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/acf0668f
Branch: refs/heads/feature/GEODE-3299
Commit: acf0668fdddacc8da9fff6275880fcaafe172cbf
Parents: 03e11e8
Author: eshu <es...@pivotal.io>
Authored: Thu Jul 27 17:18:38 2017 -0700
Committer: eshu <es...@pivotal.io>
Committed: Thu Jul 27 17:18:38 2017 -0700
----------------------------------------------------------------------
.../test/java/org/apache/geode/disttx/PRDistTXDUnitTest.java | 5 +++++
.../org/apache/geode/disttx/PRDistTXWithVersionsDUnitTest.java | 5 +++++
2 files changed, 10 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/acf0668f/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXDUnitTest.java b/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXDUnitTest.java
index f276b9f..77bf740 100644
--- a/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXDUnitTest.java
@@ -75,4 +75,9 @@ public class PRDistTXDUnitTest extends PRTransactionDUnitTest {
@Test
public void testBasicPRTransactionNoDataRedundancy2() {}
+ @Ignore("[DISTTX] TODO test overridden and intentionally left blank as they fail.")
+ @Override
+ @Test
+ public void testBasicPRTransactionNonColatedFunction0() {}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/acf0668f/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXWithVersionsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXWithVersionsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXWithVersionsDUnitTest.java
index 022c93b..9ab5145 100644
--- a/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXWithVersionsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/disttx/PRDistTXWithVersionsDUnitTest.java
@@ -81,4 +81,9 @@ public class PRDistTXWithVersionsDUnitTest extends PRTransactionWithVersionsDUni
@Test
public void testBasicPRTransactionNoDataRedundancy2() {}
+ @Ignore("[DISTTX] TODO test overridden and intentionally left blank as they fail.")
+ @Override
+ @Test
+ public void testBasicPRTransactionNonColatedFunction0() {}
+
}
[20/50] [abbrv] geode git commit: GEODE-3271: Renaming punePort
variables, refactoring WANCommandsTestBase
Posted by kl...@apache.org.
GEODE-3271: Renaming punePort variables, refactoring WANCommandsTestBase
This closes #647
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/c62764b5
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/c62764b5
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/c62764b5
Branch: refs/heads/feature/GEODE-3299
Commit: c62764b5affc137c9e5a6dc6d076678e36f9d17e
Parents: e1befef
Author: YehEmily <em...@gmail.com>
Authored: Fri Jul 21 16:44:55 2017 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Wed Jul 26 15:39:46 2017 -0700
----------------------------------------------------------------------
...ndDestroyGatewaySenderCommandsDUnitTest.java | 96 +++++++--------
.../CreateGatewayReceiverCommandDUnitTest.java | 120 +++++++++----------
.../CreateGatewaySenderCommandDUnitTest.java | 24 ++--
.../DestroyGatewaySenderCommandDUnitTest.java | 12 +-
.../PauseGatewaySenderCommandDUnitTest.java | 56 ++++-----
.../ResumeGatewaySenderCommandDUnitTest.java | 56 ++++-----
.../StartGatewayReceiverCommandDUnitTest.java | 62 +++++-----
.../StartGatewaySenderCommandDUnitTest.java | 68 +++++------
.../StopGatewayReceiverCommandDUnitTest.java | 62 +++++-----
.../StopGatewaySenderCommandDUnitTest.java | 56 ++++-----
.../wan/wancommand/WANCommandTestBase.java | 64 +++-------
.../wan/wancommand/WanCommandListDUnitTest.java | 49 ++++----
.../management/WANManagementDUnitTest.java | 58 +++++----
.../pulse/TestRemoteClusterDUnitTest.java | 39 +++---
14 files changed, 396 insertions(+), 426 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
index ab0a355..f89ca29 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateAndDestroyGatewaySenderCommandsDUnitTest.java
@@ -44,13 +44,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySenderWithDefault() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
+ "=ln" + " --" + CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID + "=2";
@@ -82,13 +82,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
@@ -139,13 +139,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySenderWithGatewayEventFilters() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
@@ -203,13 +203,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySenderWithGatewayTransportFilters() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
@@ -267,13 +267,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySender_OnMember() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
final DistributedMember vm3Member = vm3.invoke(this::getMember);
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
@@ -320,13 +320,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySender_Group() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
@@ -374,13 +374,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyGatewaySender_Group_Scenario2() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup2"));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
@@ -425,13 +425,13 @@ public class CreateAndDestroyGatewaySenderCommandsDUnitTest extends WANCommandTe
*/
@Test
public void testCreateDestroyParallelGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
index 5fb18a5..af27a60 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewayReceiverCommandDUnitTest.java
@@ -50,13 +50,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiverWithDefault() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
String command = CliStrings.CREATE_GATEWAYRECEIVER;
CommandResult cmdResult = executeCommand(command);
@@ -96,13 +96,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
String command =
CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -141,13 +141,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiverWithGatewayTransportFilter() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
String command =
CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -191,13 +191,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiverWithMultipleGatewayTransportFilters() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
String command = CliStrings.CREATE_GATEWAYRECEIVER + " --"
+ CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS + "=localhost" + " --"
@@ -241,13 +241,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver_Error() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
String command =
CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS
@@ -280,13 +280,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver_onMember() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
final DistributedMember vm3Member = vm3.invoke(this::getMember);
@@ -325,13 +325,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver_onMultipleMembers() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
final DistributedMember vm3Member = vm3.invoke(this::getMember);
final DistributedMember vm4Member = vm4.invoke(this::getMember);
@@ -372,13 +372,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver_onGroup() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
String command =
CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -420,13 +420,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver_onGroup_Scenario2() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup2"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup2"));
String command =
CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
@@ -464,13 +464,13 @@ public class CreateGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testCreateGatewayReceiver_onMultipleGroups() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm4.invoke(() -> createCacheWithGroups(punePort, "receiverGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "receiverGroup2"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "receiverGroup2"));
String command =
CliStrings.CREATE_GATEWAYRECEIVER + " --" + CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
index 5132ef5..15c7d38 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/CreateGatewaySenderCommandDUnitTest.java
@@ -43,13 +43,13 @@ public class CreateGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testCreateGatewaySender_Error() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
@@ -89,13 +89,13 @@ public class CreateGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testCreateParallelGatewaySender_Error() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
int socketReadTimeout = GatewaySender.MINIMUM_SOCKET_READ_TIMEOUT + 1000;
String command = CliStrings.CREATE_GATEWAYSENDER + " --" + CliStrings.CREATE_GATEWAYSENDER__ID
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
index 6ec0d72..5310be7 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/DestroyGatewaySenderCommandDUnitTest.java
@@ -36,13 +36,13 @@ import org.apache.geode.test.junit.categories.DistributedTest;
public class DestroyGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testDestroyGatewaySender_NotCreatedSender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
// Test Destroy Command
String command =
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
index c97b0ae..246ff97 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/PauseGatewaySenderCommandDUnitTest.java
@@ -37,11 +37,11 @@ import org.apache.geode.test.junit.categories.DistributedTest;
public class PauseGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testPauseGatewaySender_ErrorConditions() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
final DistributedMember vm1Member = vm3.invoke(this::getMember);
@@ -65,11 +65,11 @@ public class PauseGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testPauseGatewaySender_onMember() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm3.invoke(() -> verifySenderState("ln", true, false));
@@ -93,15 +93,15 @@ public class PauseGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testPauseGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(dsIdPort));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(dsIdPort));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
@@ -137,15 +137,15 @@ public class PauseGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testPauseGatewaySender_Group() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
@@ -182,19 +182,19 @@ public class PauseGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testPauseGatewaySender_MultipleGroup() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1, SenderGroup2"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm6.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup2"));
vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup3"));
vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
index 61d512f..09aa627 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
@@ -38,11 +38,11 @@ import org.apache.geode.test.junit.categories.DistributedTest;
public class ResumeGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testResumeGatewaySender_ErrorConditions() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
final DistributedMember vm1Member = vm3.invoke(this::getMember);
@@ -64,15 +64,15 @@ public class ResumeGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testResumeGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(dsIdPort));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(dsIdPort));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
@@ -114,11 +114,11 @@ public class ResumeGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testResumeGatewaySender_onMember() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm3.invoke(() -> verifySenderState("ln", true, false));
@@ -146,15 +146,15 @@ public class ResumeGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testResumeGatewaySender_Group() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
@@ -202,19 +202,19 @@ public class ResumeGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testResumeGatewaySender_MultipleGroup() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1, SenderGroup2"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm6.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup2"));
vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup3"));
vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
index e84b8e3..5794d3a 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
@@ -45,11 +45,11 @@ public class StartGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStartGatewayReceiver_ErrorConditions() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createReceiver(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createReceiver(dsIdPort));
final DistributedMember vm1Member = vm3.invoke(this::getMember);
String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
@@ -71,13 +71,13 @@ public class StartGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStartGatewayReceiver() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createReceiver(punePort));
- vm4.invoke(() -> createReceiver(punePort));
- vm5.invoke(() -> createReceiver(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createReceiver(dsIdPort));
+ vm4.invoke(() -> createReceiver(dsIdPort));
+ vm5.invoke(() -> createReceiver(dsIdPort));
vm3.invoke(() -> verifyReceiverState(false));
vm4.invoke(() -> verifyReceiverState(false));
vm5.invoke(() -> verifyReceiverState(false));
@@ -107,13 +107,13 @@ public class StartGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStartGatewayReceiver_onMember() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createReceiver(punePort));
- vm4.invoke(() -> createReceiver(punePort));
- vm5.invoke(() -> createReceiver(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createReceiver(dsIdPort));
+ vm4.invoke(() -> createReceiver(dsIdPort));
+ vm5.invoke(() -> createReceiver(dsIdPort));
vm3.invoke(() -> verifyReceiverState(false));
vm4.invoke(() -> verifyReceiverState(false));
vm5.invoke(() -> verifyReceiverState(false));
@@ -144,13 +144,13 @@ public class StartGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStartGatewayReceiver_Group() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1"));
+ vm4.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1"));
+ vm5.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1"));
vm3.invoke(() -> verifyReceiverState(false));
vm4.invoke(() -> verifyReceiverState(false));
vm5.invoke(() -> verifyReceiverState(false));
@@ -184,15 +184,15 @@ public class StartGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStartGatewayReceiver_MultipleGroup() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
-
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createReceiverWithGroup(punePort, "RG1, RG2"));
- vm6.invoke(() -> createReceiverWithGroup(punePort, "RG1, RG2"));
- vm7.invoke(() -> createReceiverWithGroup(punePort, "RG3"));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1"));
+ vm4.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1"));
+ vm5.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1, RG2"));
+ vm6.invoke(() -> createReceiverWithGroup(dsIdPort, "RG1, RG2"));
+ vm7.invoke(() -> createReceiverWithGroup(dsIdPort, "RG3"));
vm3.invoke(() -> verifyReceiverState(false));
vm4.invoke(() -> verifyReceiverState(false));
vm5.invoke(() -> verifyReceiverState(false));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
index 57b3072..2f8e96b 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
@@ -42,11 +42,11 @@ public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStartGatewaySender_ErrorConditions() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
final DistributedMember vm1Member = vm3.invoke(this::getMember);
@@ -67,15 +67,15 @@ public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStartGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(dsIdPort));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(dsIdPort));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> verifySenderState("ln", false, false));
vm4.invoke(() -> verifySenderState("ln", false, false));
@@ -108,11 +108,11 @@ public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStartGatewaySender_onMember() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> verifySenderState("ln", false, false));
@@ -138,15 +138,15 @@ public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStartGatewaySender_Group() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> verifySenderState("ln", false, false));
vm4.invoke(() -> verifySenderState("ln", false, false));
@@ -180,19 +180,19 @@ public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStartGatewaySender_MultipleGroup() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1, SenderGroup2"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm6.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1, SenderGroup2"));
vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup3"));
vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> verifySenderState("ln", false, false));
vm4.invoke(() -> verifySenderState("ln", false, false));
@@ -229,14 +229,14 @@ public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStartGatewaySender_Group_MissingSenderFromGroup() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> verifySenderState("ln", false, false));
vm5.invoke(() -> verifySenderState("ln", false, false));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
index 70b94be..dd29fb0 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
@@ -45,11 +45,11 @@ public class StopGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewayReceiver_ErrorConditions() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createReceiver(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createReceiver(dsIdPort));
final DistributedMember vm1Member = vm3.invoke(this::getMember);
String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
@@ -70,13 +70,13 @@ public class StopGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewayReceiver() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createAndStartReceiver(punePort));
- vm4.invoke(() -> createAndStartReceiver(punePort));
- vm5.invoke(() -> createAndStartReceiver(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createAndStartReceiver(dsIdPort));
+ vm4.invoke(() -> createAndStartReceiver(dsIdPort));
+ vm5.invoke(() -> createAndStartReceiver(dsIdPort));
vm3.invoke(() -> verifyReceiverState(true));
vm4.invoke(() -> verifyReceiverState(true));
vm5.invoke(() -> verifyReceiverState(true));
@@ -106,13 +106,13 @@ public class StopGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewayReceiver_onMember() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createAndStartReceiver(punePort));
- vm4.invoke(() -> createAndStartReceiver(punePort));
- vm5.invoke(() -> createAndStartReceiver(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createAndStartReceiver(dsIdPort));
+ vm4.invoke(() -> createAndStartReceiver(dsIdPort));
+ vm5.invoke(() -> createAndStartReceiver(dsIdPort));
vm3.invoke(() -> verifyReceiverState(true));
vm4.invoke(() -> verifyReceiverState(true));
vm5.invoke(() -> verifyReceiverState(true));
@@ -142,13 +142,13 @@ public class StopGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewayReceiver_Group() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1"));
+ vm4.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1"));
+ vm5.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1"));
vm3.invoke(() -> verifyReceiverState(true));
vm4.invoke(() -> verifyReceiverState(true));
vm5.invoke(() -> verifyReceiverState(true));
@@ -182,15 +182,15 @@ public class StopGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewayReceiver_MultipleGroup() {
VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(this::getLocatorPort);
- propsSetUp(punePort);
-
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm6.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1, RG2"));
- vm7.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG3"));
+ int dsIdPort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(dsIdPort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1"));
+ vm4.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1"));
+ vm5.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1"));
+ vm6.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG1, RG2"));
+ vm7.invoke(() -> createAndStartReceiverWithGroup(dsIdPort, "RG3"));
vm3.invoke(() -> verifyReceiverState(true));
vm4.invoke(() -> verifyReceiverState(true));
vm5.invoke(() -> verifyReceiverState(true));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
index 53dd6cf..ac43e1b 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
@@ -38,11 +38,11 @@ import org.apache.geode.test.junit.categories.DistributedTest;
public class StopGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewaySender_ErrorConditions() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
final DistributedMember vm1Member = vm3.invoke(this::getMember);
@@ -62,15 +62,15 @@ public class StopGatewaySenderCommandDUnitTest extends WANCommandTestBase {
@Test
public void testStopGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(dsIdPort));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(dsIdPort));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
@@ -105,11 +105,11 @@ public class StopGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStopGatewaySender_onMember() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCache(punePort));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm3.invoke(() -> verifySenderState("ln", true, false));
@@ -135,15 +135,15 @@ public class StopGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStopGatewaySender_Group() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
@@ -179,19 +179,19 @@ public class StopGatewaySenderCommandDUnitTest extends WANCommandTestBase {
*/
@Test
public void testStopGatewaySender_MultipleGroup() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
- propsSetUp(punePort);
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(dsIdPort);
- vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
+ vm3.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1"));
vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup1, SenderGroup2"));
vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm6.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup2"));
vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createCacheWithGroups(dsIdPort, "SenderGroup3"));
vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
vm3.invoke(() -> startSender("ln"));
vm4.invoke(() -> startSender("ln"));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
index 8229745..1e67093 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WANCommandTestBase.java
@@ -186,13 +186,8 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
try {
Set<GatewaySender> senders = cache.getGatewaySenders();
- GatewaySender sender = null;
- for (GatewaySender s : senders) {
- if (s.getId().equals(senderId)) {
- sender = s;
- break;
- }
- }
+ AbstractGatewaySender sender = (AbstractGatewaySender) senders.stream()
+ .filter(s -> s.getId().equalsIgnoreCase(senderId)).findFirst().orElse(null);
sender.start();
} finally {
exln.remove();
@@ -203,13 +198,8 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
try {
Set<GatewaySender> senders = cache.getGatewaySenders();
- GatewaySender sender = null;
- for (GatewaySender s : senders) {
- if (s.getId().equals(senderId)) {
- sender = s;
- break;
- }
- }
+ AbstractGatewaySender sender = (AbstractGatewaySender) senders.stream()
+ .filter(s -> s.getId().equalsIgnoreCase(senderId)).findFirst().orElse(null);
sender.pause();
} finally {
exln.remove();
@@ -337,14 +327,8 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
try {
Set<GatewaySender> senders = cache.getGatewaySenders();
- AbstractGatewaySender sender = null;
- for (GatewaySender s : senders) {
- if (s.getId().equals(senderId)) {
- sender = (AbstractGatewaySender) s;
- break;
- }
- }
-
+ AbstractGatewaySender sender = (AbstractGatewaySender) senders.stream()
+ .filter(s -> s.getId().equalsIgnoreCase(senderId)).findFirst().orElse(null);
assertEquals(isRunning, sender.isRunning());
assertEquals(isPaused, sender.isPaused());
} finally {
@@ -360,13 +344,8 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
List<String> expectedGatewayTransportFilters) {
Set<GatewaySender> senders = cache.getGatewaySenders();
- AbstractGatewaySender sender = null;
- for (GatewaySender s : senders) {
- if (s.getId().equals(senderId)) {
- sender = (AbstractGatewaySender) s;
- break;
- }
- }
+ AbstractGatewaySender sender = (AbstractGatewaySender) senders.stream()
+ .filter(s -> s.getId().equalsIgnoreCase(senderId)).findFirst().orElse(null);
assertEquals("remoteDistributedSystemId", remoteDsID, sender.getRemoteDSId());
assertEquals("isParallel", isParallel, sender.isParallel());
assertEquals("manualStart", manualStart, sender.isManualStart());
@@ -469,13 +448,8 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
public static void verifySenderDestroyed(String senderId, boolean isParallel) {
Set<GatewaySender> senders = cache.getGatewaySenders();
- AbstractGatewaySender sender = null;
- for (GatewaySender s : senders) {
- if (s.getId().equals(senderId)) {
- sender = (AbstractGatewaySender) s;
- break;
- }
- }
+ AbstractGatewaySender sender = (AbstractGatewaySender) senders.stream()
+ .filter(s -> s.getId().equalsIgnoreCase(senderId)).findFirst().orElse(null);
assertNull(sender);
String queueRegionNameSuffix = null;
if (isParallel) {
@@ -485,7 +459,7 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
}
Set<LocalRegion> allRegions = ((GemFireCacheImpl) cache).getAllRegions();
for (LocalRegion region : allRegions) {
- if (region.getName().indexOf(senderId + queueRegionNameSuffix) != -1) {
+ if (region.getName().contains(senderId + queueRegionNameSuffix)) {
fail("Region underlying the sender is not destroyed.");
}
}
@@ -501,14 +475,14 @@ public abstract class WANCommandTestBase extends CliCommandTestBase {
@Override
public final void postTearDownCacheTestCase() throws Exception {
closeCacheAndDisconnect();
- vm0.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm1.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm2.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm3.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm4.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm5.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm6.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
- vm7.invoke(() -> WANCommandTestBase.closeCacheAndDisconnect());
+ vm0.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm1.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm2.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm3.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm4.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm5.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm6.invoke(WANCommandTestBase::closeCacheAndDisconnect);
+ vm7.invoke(WANCommandTestBase::closeCacheAndDisconnect);
}
public static void closeCacheAndDisconnect() {
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
index 409c457..3f4f5ed 100644
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandListDUnitTest.java
@@ -14,6 +14,21 @@
*/
package org.apache.geode.internal.cache.wan.wancommand;
+import static org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+import java.util.Properties;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.json.GfJsonException;
@@ -21,16 +36,6 @@ import org.apache.geode.management.internal.cli.result.CommandResult;
import org.apache.geode.management.internal.cli.result.CompositeResultData;
import org.apache.geode.management.internal.cli.result.TabularResultData;
import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
@Category(DistributedTest.class)
public class WanCommandListDUnitTest extends WANCommandTestBase {
@@ -40,19 +45,19 @@ public class WanCommandListDUnitTest extends WANCommandTestBase {
@Test
public void testListGatewayWithNoSenderReceiver() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
Properties props = getDistributedSystemProperties();
props.setProperty(MCAST_PORT, "0");
props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
+ props.setProperty(LOCATORS, "localhost[" + dsIdPort + "]");
setUpJmxManagerOnVm0ThenConnect(props);
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
- vm3.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
+ vm4.invoke(() -> createCache(dsIdPort));
+ vm5.invoke(() -> createCache(dsIdPort));
pause(10000);
String command = CliStrings.LIST_GATEWAY;
@@ -69,28 +74,28 @@ public class WanCommandListDUnitTest extends WANCommandTestBase {
@Test
public void testListGatewaySender() {
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ Integer dsIdPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
Properties props = getDistributedSystemProperties();
props.setProperty(MCAST_PORT, "0");
props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
+ props.setProperty(LOCATORS, "localhost[" + dsIdPort + "]");
setUpJmxManagerOnVm0ThenConnect(props);
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, dsIdPort));
vm6.invoke(() -> createAndStartReceiver(nyPort));
vm7.invoke(() -> createAndStartReceiver(nyPort));
- vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createCache(dsIdPort));
vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, false));
vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, false));
- vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createCache(dsIdPort));
vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, false));
vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, false));
- vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createCache(dsIdPort));
vm5.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, false));
pause(10000);
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/management/WANManagementDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/management/WANManagementDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/management/WANManagementDUnitTest.java
index 880648d..5584150 100644
--- a/geode-wan/src/test/java/org/apache/geode/management/WANManagementDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/management/WANManagementDUnitTest.java
@@ -14,29 +14,33 @@
*/
package org.apache.geode.management;
-import org.apache.geode.management.internal.SystemManagementService;
-import org.junit.experimental.categories.Category;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-import org.awaitility.Awaitility;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.management.ObjectName;
+import org.awaitility.Awaitility;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import org.apache.geode.cache.Cache;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.Locator;
import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.wan.WANTestBase;
+import org.apache.geode.management.internal.SystemManagementService;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.SerializableRunnable;
import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
/**
* Tests for WAN artifacts like Sender and Receiver. The purpose of this test is not to check WAN
@@ -73,15 +77,14 @@ public class WANManagementDUnitTest extends ManagementTestBase {
VM managing = getManagingNode();
VM puneLocator = Host.getLocator();
- int punePort = (Integer) puneLocator.invoke(() -> WANManagementDUnitTest.getLocatorPort());
+ int dsIdPort = puneLocator.invoke(() -> WANManagementDUnitTest.getLocatorPort());
- Integer nyPort =
- (Integer) nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, punePort));
+ Integer nyPort = nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, dsIdPort));
- puneSender.invoke(() -> WANTestBase.createCache(punePort));
- managing.invoke(() -> WANTestBase.createManagementCache(punePort));
+ puneSender.invoke(() -> WANTestBase.createCache(dsIdPort));
+ managing.invoke(() -> WANTestBase.createManagementCache(dsIdPort));
startManagingNode(managing);
@@ -118,8 +121,7 @@ public class WANManagementDUnitTest extends ManagementTestBase {
stopGatewaySender(puneSender);
startGatewaySender(puneSender);
- DistributedMember puneMember =
- (DistributedMember) puneSender.invoke(() -> WANManagementDUnitTest.getMember());
+ DistributedMember puneMember = puneSender.invoke(() -> WANManagementDUnitTest.getMember());
checkProxySender(managing, puneMember);
checkSenderNavigationAPIS(managing, puneMember);
@@ -140,12 +142,11 @@ public class WANManagementDUnitTest extends ManagementTestBase {
VM managing = getManagingNode();
VM puneLocator = Host.getLocator();
- int punePort = (Integer) puneLocator.invoke(() -> WANManagementDUnitTest.getLocatorPort());
+ int dsIdPort = puneLocator.invoke(() -> WANManagementDUnitTest.getLocatorPort());
- Integer nyPort =
- (Integer) nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, punePort));
+ Integer nyPort = nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, dsIdPort));
- puneSender.invoke(() -> WANTestBase.createCache(punePort));
+ puneSender.invoke(() -> WANTestBase.createCache(dsIdPort));
nyReceiver.invoke(() -> WANTestBase.createCache(nyPort));
nyReceiver.invoke(() -> WANTestBase.createPartitionedRegion(getTestMethodName() + "_PR", null,
@@ -171,8 +172,7 @@ public class WANManagementDUnitTest extends ManagementTestBase {
checkSenderMBean(puneSender, getTestMethodName() + "_PR", true);
checkReceiverMBean(nyReceiver);
- DistributedMember nyMember =
- (DistributedMember) nyReceiver.invoke(() -> WANManagementDUnitTest.getMember());
+ DistributedMember nyMember = nyReceiver.invoke(() -> WANManagementDUnitTest.getMember());
checkProxyReceiver(managing, nyMember);
checkReceiverNavigationAPIS(managing, nyMember);
@@ -188,13 +188,12 @@ public class WANManagementDUnitTest extends ManagementTestBase {
VM managing = getManagingNode();
VM puneLocator = Host.getLocator();
- int punePort = (Integer) puneLocator.invoke(() -> WANManagementDUnitTest.getLocatorPort());
+ int dsIdPort = puneLocator.invoke(() -> WANManagementDUnitTest.getLocatorPort());
- Integer nyPort =
- (Integer) nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, punePort));
+ Integer nyPort = nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, dsIdPort));
- puneSender.invoke(() -> WANTestBase.createCache(punePort));
- managing.invoke(() -> WANTestBase.createManagementCache(punePort));
+ puneSender.invoke(() -> WANTestBase.createCache(dsIdPort));
+ managing.invoke(() -> WANTestBase.createManagementCache(dsIdPort));
startManagingNode(managing);
puneSender.invoke(() -> WANTestBase.createAsyncEventQueue("pn", false, 100, 100, false, false,
@@ -215,8 +214,7 @@ public class WANManagementDUnitTest extends ManagementTestBase {
checkAsyncQueueMBean(puneSender, true);
checkAsyncQueueMBean(managing, true);
- DistributedMember puneMember =
- (DistributedMember) puneSender.invoke(() -> WANManagementDUnitTest.getMember());
+ DistributedMember puneMember = puneSender.invoke(() -> WANManagementDUnitTest.getMember());
checkProxyAsyncQueue(managing, puneMember, true);
@@ -228,7 +226,7 @@ public class WANManagementDUnitTest extends ManagementTestBase {
VM managerVm = getManagingNode();
VM locatorVm = Host.getLocator();
- int locatorPort = (Integer) locatorVm.invoke(() -> WANManagementDUnitTest.getLocatorPort());
+ int locatorPort = locatorVm.invoke(() -> WANManagementDUnitTest.getLocatorPort());
memberVM.invoke(() -> WANTestBase.createCache(locatorPort));
managerVm.invoke(() -> WANTestBase.createManagementCache(locatorPort));
http://git-wip-us.apache.org/repos/asf/geode/blob/c62764b5/geode-wan/src/test/java/org/apache/geode/management/internal/pulse/TestRemoteClusterDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/management/internal/pulse/TestRemoteClusterDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/management/internal/pulse/TestRemoteClusterDUnitTest.java
index 3f381f1..f806069 100644
--- a/geode-wan/src/test/java/org/apache/geode/management/internal/pulse/TestRemoteClusterDUnitTest.java
+++ b/geode-wan/src/test/java/org/apache/geode/management/internal/pulse/TestRemoteClusterDUnitTest.java
@@ -14,21 +14,19 @@
*/
package org.apache.geode.management.internal.pulse;
-import org.junit.experimental.categories.Category;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import java.util.Map;
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import org.apache.geode.cache.Cache;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.Locator;
@@ -37,11 +35,9 @@ import org.apache.geode.internal.cache.wan.WANTestBase;
import org.apache.geode.management.DistributedSystemMXBean;
import org.apache.geode.management.GatewayReceiverMXBean;
import org.apache.geode.management.GatewaySenderMXBean;
-import org.apache.geode.management.MBeanUtil;
import org.apache.geode.management.ManagementService;
import org.apache.geode.management.ManagementTestBase;
import org.apache.geode.management.RegionMXBean;
-
import org.apache.geode.management.internal.MBeanJMXAdapter;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.LogWriterUtils;
@@ -49,6 +45,8 @@ import org.apache.geode.test.dunit.SerializableRunnable;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.Wait;
import org.apache.geode.test.dunit.WaitCriterion;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
/**
* This is for testing remote Cluster
@@ -77,13 +75,12 @@ public class TestRemoteClusterDUnitTest extends ManagementTestBase {
VM managing = getManagingNode();
VM puneLocator = Host.getLocator();
- int punePort = (Integer) puneLocator.invoke(() -> TestRemoteClusterDUnitTest.getLocatorPort());
+ int dsIdPort = puneLocator.invoke(() -> TestRemoteClusterDUnitTest.getLocatorPort());
- Integer nyPort =
- (Integer) nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, punePort));
+ Integer nyPort = nyLocator.invoke(() -> WANTestBase.createFirstRemoteLocator(12, dsIdPort));
- puneSender.invoke(() -> WANTestBase.createCache(punePort));
- managing.invoke(() -> WANTestBase.createManagementCache(punePort));
+ puneSender.invoke(() -> WANTestBase.createCache(dsIdPort));
+ managing.invoke(() -> WANTestBase.createManagementCache(dsIdPort));
startManagingNode(managing);
puneSender
@@ -115,8 +112,7 @@ public class TestRemoteClusterDUnitTest extends ManagementTestBase {
stopGatewaySender(puneSender);
startGatewaySender(puneSender);
- DistributedMember puneMember =
- (DistributedMember) puneSender.invoke(() -> TestRemoteClusterDUnitTest.getMember());
+ DistributedMember puneMember = puneSender.invoke(() -> TestRemoteClusterDUnitTest.getMember());
checkRemoteClusterStatus(managing, puneMember);
@@ -146,10 +142,7 @@ public class TestRemoteClusterDUnitTest extends ManagementTestBase {
Cache cache = GemFireCacheImpl.getInstance();
final ManagementService service = ManagementService.getManagementService(cache);
final DistributedSystemMXBean dsBean = service.getDistributedSystemMXBean();
- if (dsBean != null) {
- return true;
- }
- return false;
+ return dsBean != null;
}
@Override
@@ -164,7 +157,7 @@ public class TestRemoteClusterDUnitTest extends ManagementTestBase {
Map<String, Boolean> dsMap = dsBean.viewRemoteClusterStatus();
LogWriterUtils.getLogWriter().info("Ds Map is: " + dsMap.size());
assertNotNull(dsMap);
- assertEquals(true, dsMap.size() > 0 ? true : false);
+ assertEquals(true, dsMap.size() > 0);
}
};
vm.invoke(checkProxySender);
[15/50] [abbrv] geode git commit: GEODE-3253: Refactoring
ClientCommands and related tests
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
new file mode 100644
index 0000000..33527f8
--- /dev/null
+++ b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
@@ -0,0 +1,783 @@
+/*
+ * 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 static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_ARCHIVE_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
+import static org.apache.geode.management.internal.cli.commands.ClientCommandsTestUtils.getMember;
+import static org.apache.geode.management.internal.cli.commands.ClientCommandsTestUtils.getNonDurableClientProps;
+import static org.apache.geode.management.internal.cli.commands.ClientCommandsTestUtils.getServerProperties;
+import static org.apache.geode.management.internal.cli.commands.ClientCommandsTestUtils.setupCqsOnVM;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.NetworkUtils.getServerHostName;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import javax.management.ObjectName;
+
+import org.awaitility.Awaitility;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.AttributesFactory;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.Scope;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.cache.client.ClientRegionFactory;
+import org.apache.geode.cache.client.ClientRegionShortcut;
+import org.apache.geode.cache.client.PoolManager;
+import org.apache.geode.cache.client.internal.PoolImpl;
+import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.OSProcess;
+import org.apache.geode.internal.cache.DistributedRegion;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.tier.sockets.CacheServerTestUtil;
+import org.apache.geode.management.CacheServerMXBean;
+import org.apache.geode.management.ClientHealthStatus;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+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.CompositeResultData;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.SerializableCallable;
+import org.apache.geode.test.dunit.SerializableRunnableIF;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
+
+@Category(DistributedTest.class)
+public class DescribeClientCommandDUnitTest extends CliCommandTestBase {
+
+ private static final long serialVersionUID = 1L;
+ private final String regionName = "stocks";
+ private final String cq1 = "cq1";
+ private final String cq2 = "cq2";
+ private final String cq3 = "cq3";
+ private String clientId = "";
+ private int port0 = 0;
+ private int port1 = 0;
+
+ @Ignore("disabled for unknown reason")
+ @Test
+ public void testDescribeClientWithServers3() throws Exception {
+ setupSystem3();
+ String commandString;
+
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM server2 = Host.getHost(0).getVM(3);
+ final VM manager = Host.getHost(0).getVM(0);
+
+ String serverName1 =
+ server1.invoke("get DistributedMemberID ", ClientCommandsTestUtils::getDistributedMemberId);
+ String serverName2 =
+ server2.invoke("get DistributedMemberID ", ClientCommandsTestUtils::getDistributedMemberId);
+
+ final DistributedMember serverMember1 = getMember(server1);
+
+ String[] clientIds = manager.invoke("get Client Ids", () -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember1);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds();
+ });
+
+ String clientId1 = "";
+
+ for (String str : clientIds) {
+ clientId1 = str;
+ getLogWriter().info("testDescribeClientWithServers clientIds for server1 =" + str);
+ }
+
+ final DistributedMember serverMember2 = getMember(server2);
+
+ String[] clientIds2 = manager.invoke("get Client Ids", () -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port1, serverMember2);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds();
+ });
+
+ String clientId2 = "";
+
+ for (String str : clientIds2) {
+ clientId2 = str;
+ getLogWriter().info("testDescribeClientWithServers clientIds for server2 =" + str);
+ }
+
+ commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID + "=\""
+ + clientId1 + "\"";
+ getLogWriter().info("testDescribeClientWithServers commandStr clientId1 =" + commandString);
+ CommandResult commandResultForClient1 = executeCommand(commandString);
+ getLogWriter()
+ .info("testDescribeClientWithServers commandStr clientId1=" + commandResultForClient1);
+ String resultAsString = commandResultToString(commandResultForClient1);
+ getLogWriter().info("testDescribeClientWithServers commandStr clientId1 =" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResultForClient1.getStatus()));
+ ClientCommandsTestUtils.verifyClientStats(commandResultForClient1, serverName1);
+ commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID + "=\""
+ + clientId2 + "\"";
+ getLogWriter().info("testDescribeClientWithServers commandStr1=" + commandString);
+ CommandResult commandResultForClient2 = executeCommand(commandString);
+ getLogWriter().info("testDescribeClientWithServers commandResult1=" + commandResultForClient2);
+ resultAsString = commandResultToString(commandResultForClient2);
+ getLogWriter().info("testDescribeClientWithServers resultAsString1=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResultForClient2.getStatus()));
+ ClientCommandsTestUtils.verifyClientStats(commandResultForClient2, serverName2);
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(3));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ }
+
+ @Ignore("disabled for unknown reason")
+ @Test
+ public void testDescribeClient() throws Exception {
+ setupSystem1();
+
+ getLogWriter().info("testDescribeClient clientId=" + clientId);
+ assertNotNull(clientId);
+
+ String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
+ + "=\"" + clientId + "\"";
+ getLogWriter().info("testDescribeClient commandStr=" + commandString);
+
+ final VM server1 = Host.getHost(0).getVM(1);
+
+ String serverName = server1.invoke("get distributed member Id",
+ ClientCommandsTestUtils::getDistributedMemberId);
+
+ CommandResult commandResult = executeCommand(commandString);
+ getLogWriter().info("testDescribeClient commandResult=" + commandResult);
+ String resultAsString = commandResultToString(commandResult);
+ getLogWriter().info("testDescribeClient resultAsString=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResult.getStatus()));
+
+ CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("InfoSection");
+ assertNotNull(section);
+ TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
+ assertNotNull(tableResultData);
+
+ List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
+ List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
+ List<String> redundancy =
+ tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
+ List<String> numCqs = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_CQs);
+
+ assertTrue(minConn.contains("1"));
+ assertTrue(maxConn.contains("-1"));
+ assertTrue(redundancy.contains("1"));
+ assertTrue(numCqs.contains("3"));
+ String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
+ assertTrue(puts.equals("2"));
+ String queue = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE);
+ assertTrue(queue.equals("1"));
+ String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
+ assertTrue(calls.equals("1"));
+ String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
+ assertTrue(primServer.equals(serverName));
+ String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
+ assertTrue(durable.equals("No"));
+ String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
+ assertTrue(Integer.parseInt(threads) > 0);
+ String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
+ assertTrue(Integer.parseInt(cpu) > 0);
+ String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
+ assertTrue(Integer.parseInt(upTime) >= 0);
+ String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
+ assertTrue(Long.parseLong(prcTime) > 0);
+
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(3));
+ }
+
+ @Test
+ public void testDescribeClientWithServers() throws Exception {
+ setupSystem2();
+
+ String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
+ + "=\"" + clientId + "\"";
+ getLogWriter().info("testDescribeClientWithServers commandStr=" + commandString);
+
+ final VM server1 = Host.getHost(0).getVM(1);
+
+ String serverName = server1.invoke("get Distributed Member Id",
+ ClientCommandsTestUtils::getDistributedMemberId);
+ CommandResult commandResult = executeCommand(commandString);
+ getLogWriter().info("testDescribeClientWithServers commandResult=" + commandResult);
+
+ String resultAsString = commandResultToString(commandResult);
+ getLogWriter().info("testDescribeClientWithServers resultAsString=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResult.getStatus()));
+
+ CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("InfoSection");
+ assertNotNull(section);
+
+ TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
+ assertNotNull(tableResultData);
+
+ List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
+ List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
+ List<String> redundancy =
+ tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
+ List<String> numCqs = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_CQs);
+
+ assertTrue(minConn.contains("1"));
+ assertTrue(maxConn.contains("-1"));
+ assertTrue(redundancy.contains("1"));
+ assertTrue(numCqs.contains("3"));
+ String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
+ assertTrue(puts.equals("2"));
+ String queue = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE);
+ assertTrue(queue.equals("1"));
+ String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
+ assertTrue(calls.equals("1"));
+ String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
+ assertTrue(primServer.equals(serverName));
+ String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
+ assertTrue(durable.equals("No"));
+ String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
+ assertTrue(Integer.parseInt(threads) > 0);
+ String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
+ assertTrue(Integer.parseInt(cpu) > 0);
+ String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
+ assertTrue(Integer.parseInt(upTime) >= 0);
+ String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
+ assertTrue(Long.parseLong(prcTime) > 0);
+
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(3));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ }
+
+ @Category(FlakyTest.class) // GEODE-910: random ports, HeadlessGfsh
+ @Test
+ public void testDescribeClientForNonSubscribedClient() throws Exception {
+ setUpNonSubscribedClient();
+
+ getLogWriter().info("testDescribeClientForNonSubscribedClient clientId=" + clientId);
+ assertNotNull(clientId);
+
+ String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
+ + "=\"" + clientId + "\"";
+ getLogWriter().info("testDescribeClientForNonSubscribedClient commandStr=" + commandString);
+ CommandResult commandResult = executeCommand(commandString);
+ getLogWriter().info("testDescribeClientForNonSubscribedClient commandResult=" + commandResult);
+ String resultAsString = commandResultToString(commandResult);
+ getLogWriter()
+ .info("testDescribeClientForNonSubscribedClient resultAsString=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResult.getStatus()));
+
+ CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("InfoSection");
+ assertNotNull(section);
+
+ TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
+ assertNotNull(tableResultData);
+
+ List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
+ List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
+ List<String> redundancy =
+ tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
+
+ assertTrue(minConn.contains("1"));
+ assertTrue(maxConn.contains("-1"));
+ assertTrue(redundancy.contains("1"));
+ String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
+ assertTrue(puts.equals("2"));
+ String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
+ assertTrue(calls.equals("1"));
+ String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
+ assertTrue(primServer.equals("N.A."));
+ String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
+ assertTrue(durable.equals("No"));
+ String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
+ assertTrue(Integer.parseInt(threads) > 0);
+ String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
+ assertTrue(Integer.parseInt(cpu) > 0);
+ String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
+ assertTrue(Integer.parseInt(upTime) == 0);
+ String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
+ assertTrue(Long.parseLong(prcTime) > 0);
+
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(3));
+ }
+
+ @Test
+ public void testDescribeMixClientWithServers() throws Exception {
+ String[] clientIds = setupSystemWithSubAndNonSubClient();
+ final VM server1 = Host.getHost(0).getVM(1);
+ String serverName =
+ server1.invoke("Get DistributedMember Id", ClientCommandsTestUtils::getDistributedMemberId);
+ String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
+ + "=\"" + clientIds[0] + "\"";
+ getLogWriter().info("testDescribeMixClientWithServers commandStr=" + commandString);
+ executeAndVerifyResultsForMixedClients(commandString, serverName);
+ String commandString2 = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
+ + "=\"" + clientIds[1] + "\"";
+ getLogWriter().info("testDescribeMixClientWithServers commandString2=" + commandString2);
+ executeAndVerifyResultsForMixedClients(commandString2, serverName);
+
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(3));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ }
+
+ private void executeAndVerifyResultsForMixedClients(String commandString, String serverName) {
+ CommandResult commandResult = executeCommand(commandString);
+ getLogWriter().info("testDescribeMixClientWithServers commandResult=" + commandResult);
+ String resultAsString = commandResultToString(commandResult);
+ getLogWriter().info("testDescribeMixClientWithServers resultAsString=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResult.getStatus()));
+
+ CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("InfoSection");
+ assertNotNull(section);
+ TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
+ assertNotNull(tableResultData);
+
+ List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
+ List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
+ List<String> redundancy =
+ tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
+
+ assertTrue(minConn.contains("1"));
+ assertTrue(maxConn.contains("-1"));
+ assertTrue(redundancy.contains("1"));
+ String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
+ assertTrue(puts.equals("2"));
+ String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
+ assertTrue(calls.equals("1"));
+ String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
+ assertTrue(primServer.equals(serverName) || primServer.equals("N.A."));
+ String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
+ assertTrue(durable.equals("No"));
+ String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
+ assertTrue(Integer.parseInt(threads) > 0);
+ String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
+ assertTrue(Integer.parseInt(cpu) > 0);
+ String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
+ assertTrue(Integer.parseInt(upTime) >= 0);
+ String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
+ assertTrue(Long.parseLong(prcTime) > 0);
+ }
+
+ private String[] setupSystemWithSubAndNonSubClient() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(getServerProperties());
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM client2 = Host.getHost(0).getVM(3);
+ port0 = startCacheServer(server1, regionName);
+ startNonDurableClient(client1, server1, port0);
+ startNonSubscribedClient(client2, server1, port0);
+ waitForMixedClients();
+ return manager.invoke("get client Ids", () -> {
+ Cache cache = GemFireCacheImpl.getInstance();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+ DistributedMember serverMember = getMember(server1);
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds();
+ });
+ }
+
+ private int startCacheServer(VM server, final String regionName) {
+ return server.invoke("setup CacheServer", () -> {
+ getSystem(getServerProperties());
+ GemFireCacheImpl cache = (GemFireCacheImpl) getCache();
+ AttributesFactory factory = new AttributesFactory();
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
+ Region region = createRootRegion(regionName, factory.create());
+ assertTrue(region instanceof DistributedRegion);
+ CacheServer cacheServer = cache.addCacheServer();
+ cacheServer.setPort(0);
+ cacheServer.start();
+ return cacheServer.getPort();
+ });
+ }
+
+ private void waitForMixedClients() {
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final DistributedMember serverMember = getMember(server1);
+ assertNotNull(serverMember);
+ manager.invoke(() -> Awaitility.waitAtMost(5 * 60, TimeUnit.SECONDS)
+ .pollDelay(2, TimeUnit.SECONDS).until(() -> {
+ try {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ if (service == null) {
+ getLogWriter().info("waitForMixedClients Still probing for service");
+ return false;
+ } else {
+ getLogWriter().info("waitForMixedClients 1");
+ final ObjectName cacheServerMBeanName =
+ service.getCacheServerMBeanName(port0, serverMember);
+ getLogWriter()
+ .info("waitForMixedClients 2 cacheServerMBeanName " + cacheServerMBeanName);
+ CacheServerMXBean bean =
+ service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ getLogWriter().info("waitForMixedClients 2 bean " + bean);
+ if (bean.getClientIds().length > 1) {
+ return true;
+ }
+ }
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning("waitForMixedClients Exception in waitForMBean ::: "
+ + CliUtil.stackTraceAsString(e));
+ }
+ return false;
+ }));
+ }
+
+
+ private void setupSystem1() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(getServerProperties());
+
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM server2 = Host.getHost(0).getVM(3);
+
+ port0 = startCacheServer(server1, regionName);
+ startCacheServer(server2, regionName);
+
+ startNonDurableClient(client1, server1, port0);
+ setupCqsOnVM(cq1, cq2, cq3, regionName, client1);
+ waitForMBean();
+
+ clientId = manager.invoke("get client Id", () -> getClientIdString(server1));
+ }
+
+ private void setupSystem2() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(getServerProperties());
+
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM client2 = Host.getHost(0).getVM(3);
+
+ port0 = startCacheServer(server1, regionName);
+ startNonDurableClient(client1, server1, port0);
+ startNonDurableClient(client2, server1, port0);
+
+ setupCqsOnVM(cq1, cq2, cq3, regionName, client1);
+ setupCqsOnVM(cq1, cq2, cq3, regionName, client2);
+ waitForMBean();
+
+ clientId = manager.invoke("get client Id", () -> getClientIdString(server1));
+ }
+
+ private void setupSystem3() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(getServerProperties());
+
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM server2 = Host.getHost(0).getVM(3);
+
+ port0 = startCacheServer(server1, regionName);
+ port1 = startCacheServer(server2, regionName);
+ startNonDurableClient(client1, server1, port0);
+ startNonDurableClient(client1, server2, port1);
+
+ setupCqsOnVM(cq1, cq2, cq3, regionName, client1);
+ waitForListClientMBean3();
+
+ clientId = manager.invoke("get client Id", () -> getClientIdString(server1));
+ }
+
+ private void startNonDurableClient(VM client, final VM server, final int port) {
+ client.invoke("start non-durable client", () -> {
+ Cache cache = GemFireCacheImpl.getInstance();
+ if (cache == null) {
+
+ Properties props = getNonDurableClientProps();
+ props.setProperty(LOG_FILE, "client_" + OSProcess.getId() + ".log");
+ props.setProperty(LOG_LEVEL, "fine");
+ props.setProperty(STATISTIC_ARCHIVE_FILE, "client_" + OSProcess.getId() + ".gfs");
+ props.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
+
+ getSystem(props);
+
+ final ClientCacheFactory ccf = new ClientCacheFactory(props);
+ ccf.addPoolServer(getServerHostName(server.getHost()), port);
+ ccf.setPoolSubscriptionEnabled(true);
+ ccf.setPoolPingInterval(1);
+ ccf.setPoolStatisticInterval(1);
+ ccf.setPoolSubscriptionRedundancy(1);
+ ccf.setPoolMinConnections(1);
+
+ ClientCache clientCache = getClientCache(ccf);
+ // Create region
+ if (clientCache.getRegion(Region.SEPARATOR + regionName) == null
+ && clientCache.getRegion(regionName) == null) {
+ ClientRegionFactory<Object, Object> regionFactory =
+ clientCache.createClientRegionFactory(ClientRegionShortcut.LOCAL)
+ .setPoolName(clientCache.getDefaultPool().getName());
+ Region<Object, Object> dataRegion = regionFactory.create(regionName);
+ assertNotNull(dataRegion);
+ dataRegion.put("k1", "v1");
+ dataRegion.put("k2", "v2");
+ }
+ } else {
+ String poolName = "new_pool_" + System.currentTimeMillis();
+ try {
+ PoolImpl p = (PoolImpl) PoolManager.createFactory()
+ .addServer(getServerHostName(server.getHost()), port).setThreadLocalConnections(true)
+ .setMinConnections(1).setSubscriptionEnabled(true).setPingInterval(1)
+ .setStatisticInterval(1).setMinConnections(1).setSubscriptionRedundancy(1)
+ .create(poolName);
+ System.out.println("Created new pool pool " + poolName);
+ assertNotNull(p);
+ } catch (Exception eee) {
+ System.err.println("Exception in creating pool " + poolName + " Exception =="
+ + CliUtil.stackTraceAsString(eee));
+ }
+ }
+ });
+ }
+
+ private void waitForListClientMBean3() {
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM server2 = Host.getHost(0).getVM(3);
+ final DistributedMember serverMember1 = getMember(server1);
+ final DistributedMember serverMember2 = getMember(server2);
+ assertNotNull(serverMember1);
+ manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
+ .pollDelay(2, TimeUnit.SECONDS).until(() -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ if (service == null) {
+ getLogWriter().info("waitForListClientMBean3 Still probing for service");
+ return false;
+ } else {
+ final ObjectName cacheServerMBeanName1 =
+ service.getCacheServerMBeanName(port0, serverMember1);
+ final ObjectName cacheServerMBeanName2 =
+ service.getCacheServerMBeanName(port1, serverMember2);
+ CacheServerMXBean bean1 =
+ service.getMBeanProxy(cacheServerMBeanName1, CacheServerMXBean.class);
+ CacheServerMXBean bean2 =
+ service.getMBeanProxy(cacheServerMBeanName2, CacheServerMXBean.class);
+ try {
+ if (bean1 != null && bean2 != null) {
+ if (bean1.getClientIds().length > 0 && bean2.getClientIds().length > 0) {
+ return true;
+ }
+ }
+ return false;
+
+ } catch (Exception e) {
+ LogWrapper.getInstance()
+ .warning("waitForListClientMBean3 Exception in waitForListClientMbean ::: "
+ + CliUtil.stackTraceAsString(e));
+ }
+ return false;
+ }
+ }));
+ }
+
+ private void waitForMBean() {
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final DistributedMember serverMember = getMember(server1);
+ assertNotNull(serverMember);
+ manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
+ .pollDelay(2, TimeUnit.SECONDS).until(() -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ if (service == null) {
+ getLogWriter().info("waitForMBean Still probing for service");
+ return false;
+ } else {
+ final ObjectName cacheServerMBeanName =
+ service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean =
+ service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ try {
+ ClientHealthStatus stats = bean.showClientStats(bean.getClientIds()[0]);
+ Map<String, String> poolStats = stats.getPoolStats();
+ if (poolStats.size() > 0) {
+ for (Map.Entry<String, String> entry : poolStats.entrySet()) {
+ String poolStatsStr = entry.getValue();
+ String str[] = poolStatsStr.split(";");
+ int numCqs = Integer.parseInt(str[3].substring(str[3].indexOf("=") + 1));
+ if (numCqs == 3) {
+ return true;
+ }
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(
+ "waitForMBean Exception in waitForMBean ::: " + CliUtil.stackTraceAsString(e));
+ }
+ return false;
+ }
+ }));
+ }
+
+ private void startNonSubscribedClient(VM client, final VM server, final int port) {
+ client.invoke("Start client", () -> {
+ Cache cache = GemFireCacheImpl.getInstance();
+ if (cache == null) {
+ Properties props = getNonDurableClientProps();
+ props.setProperty(LOG_FILE, "client_" + OSProcess.getId() + ".log");
+ props.setProperty(LOG_LEVEL, "fine");
+ props.setProperty(STATISTIC_ARCHIVE_FILE, "client_" + OSProcess.getId() + ".gfs");
+ props.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
+ getSystem(props);
+ final ClientCacheFactory ccf = new ClientCacheFactory(props);
+ ccf.addPoolServer(getServerHostName(server.getHost()), port);
+ ccf.setPoolSubscriptionEnabled(false);
+ ccf.setPoolPingInterval(1);
+ ccf.setPoolStatisticInterval(1);
+ ccf.setPoolSubscriptionRedundancy(1);
+ ccf.setPoolMinConnections(1);
+ ClientCache clientCache = getClientCache(ccf);
+ // Create region
+ if (clientCache.getRegion(Region.SEPARATOR + regionName) == null
+ && clientCache.getRegion(regionName) == null) {
+ ClientRegionFactory<Object, Object> regionFactory =
+ clientCache.createClientRegionFactory(ClientRegionShortcut.LOCAL)
+ .setPoolName(clientCache.getDefaultPool().getName());
+ Region<Object, Object> dataRegion = regionFactory.create(regionName);
+ assertNotNull(dataRegion);
+ dataRegion.put("k1", "v1");
+ dataRegion.put("k2", "v2");
+ }
+ } else {
+ String poolName = "new_pool_" + System.currentTimeMillis();
+ try {
+ PoolImpl p = (PoolImpl) PoolManager.createFactory()
+ .addServer(getServerHostName(server.getHost()), port).setThreadLocalConnections(true)
+ .setMinConnections(1).setSubscriptionEnabled(false).setPingInterval(1)
+ .setStatisticInterval(1).setMinConnections(1).setSubscriptionRedundancy(1)
+ .create(poolName);
+ cache.getLogger().info("Created new pool pool " + poolName);
+ assertNotNull(p);
+ } catch (Exception eee) {
+ cache.getLogger().info("Exception in creating pool " + poolName + " Exception =="
+ + CliUtil.stackTraceAsString(eee));
+ }
+ }
+ });
+ }
+
+ private void setUpNonSubscribedClient() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(getServerProperties());
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM server2 = Host.getHost(0).getVM(3);
+ port0 = startCacheServer(server1, regionName);
+ startCacheServer(server2, regionName);
+ startNonSubscribedClient(client1, server1, port0);
+ setupCqsOnVM(cq1, cq2, cq3, regionName, client1);
+ waitForNonSubCliMBean();
+ clientId = (String) manager.invoke(new SerializableCallable() {
+ @Override
+ public Object call() throws Exception {
+ return getClientIdString(server1);
+ }
+ });
+ }
+
+ private void waitForNonSubCliMBean() {
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final DistributedMember serverMember = getMember(server1);
+ assertNotNull(serverMember);
+ manager.invoke(() -> Awaitility.waitAtMost(5 * 60, TimeUnit.SECONDS)
+ .pollDelay(2, TimeUnit.SECONDS).until(() -> {
+ try {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ if (service == null) {
+ getLogWriter().info("waitForNonSubScribedClientMBean Still probing for service");
+ return false;
+ } else {
+ getLogWriter().info("waitForNonSubScribedClientMBean 1");
+ final ObjectName cacheServerMBeanName =
+ service.getCacheServerMBeanName(port0, serverMember);
+ getLogWriter().info(
+ "waitForNonSubScribedClientMBean 2 cacheServerMBeanName " + cacheServerMBeanName);
+ CacheServerMXBean bean =
+ service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ getLogWriter().info("waitForNonSubScribedClientMBean 2 bean " + bean);
+ if (bean.getClientIds().length > 0) {
+ return true;
+ }
+ }
+ } catch (Exception e) {
+ LogWrapper.getInstance()
+ .warning("waitForNonSubScribedClientMBean Exception in waitForMBean ::: "
+ + CliUtil.stackTraceAsString(e));
+ }
+ return false;
+ }));
+ }
+
+ private String getClientIdString(VM server1) throws Exception {
+ Cache cache = GemFireCacheImpl.getInstance();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+ DistributedMember serverMember = getMember(server1);
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds()[0];
+ }
+
+ @Override
+ public final void postTearDownCacheTestCase() throws Exception {
+ Host.getHost(0).getVM(0).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ Host.getHost(0).getVM(1).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ Host.getHost(0).getVM(2).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ Host.getHost(0).getVM(3).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
new file mode 100644
index 0000000..fb08afa
--- /dev/null
+++ b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
@@ -0,0 +1,402 @@
+/*
+ * 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 static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_ARCHIVE_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.NetworkUtils.getServerHostName;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import javax.management.ObjectName;
+
+import org.awaitility.Awaitility;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.AttributesFactory;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.Scope;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.cache.client.ClientRegionFactory;
+import org.apache.geode.cache.client.ClientRegionShortcut;
+import org.apache.geode.cache.client.PoolManager;
+import org.apache.geode.cache.client.internal.PoolImpl;
+import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.OSProcess;
+import org.apache.geode.internal.cache.DistributedRegion;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.tier.sockets.CacheServerTestUtil;
+import org.apache.geode.management.CacheServerMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+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.CompositeResultData;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.SerializableRunnableIF;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
+
+@Category(DistributedTest.class)
+public class ListClientCommandDUnitTest extends CliCommandTestBase {
+
+ private static final long serialVersionUID = 1L;
+ private final String regionName = "stocks";
+ private int port0 = 0;
+ private int port1 = 0;
+
+ @Category(FlakyTest.class) // GEODE-908: random ports, BindException, time sensitive, HeadlessGfsh
+ @Test
+ public void testListClient() throws Exception {
+ setupSystemForListClient();
+
+ final VM manager = Host.getHost(0).getVM(0);
+
+ String commandString = CliStrings.LIST_CLIENTS;
+ getLogWriter().info("testListClient commandStr=" + commandString);
+
+ waitForListClientMbean();
+
+ final VM server1 = Host.getHost(0).getVM(1);
+
+ final DistributedMember serverMember = ClientCommandsTestUtils.getMember(server1);
+
+ String[] clientIds = manager.invoke("get client Ids", () -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds();
+ });
+
+ String serverName = server1.invoke("get distributed member Id",
+ ClientCommandsTestUtils::getDistributedMemberId);
+
+ CommandResult commandResult = executeCommand(commandString);
+ getLogWriter().info("testListClient commandResult=" + commandResult);
+
+ String resultAsString = commandResultToString(commandResult);
+ getLogWriter().info("testListClient resultAsString=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResult.getStatus()));
+
+ CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("section1");
+ assertNotNull(section);
+ TabularResultData tableResultData = section.retrieveTable("TableForClientList");
+ assertNotNull(tableResultData);
+
+ List<String> serverNames =
+ tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_SERVERS);
+ List<String> clientNames =
+ tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_Clients);
+
+ getLogWriter().info("testListClients serverNames : " + serverNames);
+ getLogWriter().info("testListClients clientNames : " + clientNames);
+ assertEquals(2, serverNames.size());
+ assertEquals(2, clientNames.size());
+ assertTrue(clientNames.contains(clientIds[0]));
+ assertTrue(clientNames.contains(clientIds[1]));
+ serverName = serverName.replace(":", "-");
+ getLogWriter().info("testListClients serverName : " + serverName);
+ for (String str : serverNames) {
+ assertTrue(str.contains(serverName));
+ }
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(3));
+ }
+
+ @Test
+ public void testListClientForServers() throws Exception {
+ setupSystem();
+
+ final VM manager = Host.getHost(0).getVM(0);
+
+ String commandString = CliStrings.LIST_CLIENTS;
+ System.out.println("testListClientForServers commandStr=" + commandString);
+
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM server2 = Host.getHost(0).getVM(3);
+
+ final DistributedMember serverMember = ClientCommandsTestUtils.getMember(server1);
+
+ String[] clientIds = manager.invoke("get client Ids", () -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds();
+ });
+
+ String serverName1 = server1.invoke("get distributed member Id",
+ ClientCommandsTestUtils::getDistributedMemberId);
+
+ String serverName2 = server2.invoke("get distributed member Id",
+ ClientCommandsTestUtils::getDistributedMemberId);
+
+ CommandResult commandResult = executeCommand(commandString);
+ System.out.println("testListClientForServers commandResult=" + commandResult);
+
+ String resultAsString = commandResultToString(commandResult);
+ System.out.println("testListClientForServers resultAsString=" + resultAsString);
+ assertTrue(Result.Status.OK.equals(commandResult.getStatus()));
+
+ CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("section1");
+ assertNotNull(section);
+ TabularResultData tableResultData = section.retrieveTable("TableForClientList");
+ assertNotNull(tableResultData);
+
+ List<String> serverNames =
+ tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_SERVERS);
+ List<String> clientNames =
+ tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_Clients);
+
+ serverName1 = serverName1.replace(":", "-");
+ serverName2 = serverName2.replace(":", "-");
+
+ System.out.println("testListClientForServers serverNames : " + serverNames);
+ System.out.println("testListClientForServers serverName1 : " + serverName1);
+ System.out.println("testListClientForServers serverName2 : " + serverName2);
+ System.out.println("testListClientForServers clientNames : " + clientNames);
+
+ for (String client : clientIds) {
+ assertTrue(clientNames.contains(client));
+ }
+
+ for (String server : serverNames) {
+ assertTrue(server.contains(serverName1) || server.contains(serverName2));
+ }
+
+ ClientCommandsTestUtils.closeNonDurableClient(Host.getHost(0).getVM(2));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(1));
+ ClientCommandsTestUtils.closeCacheServer(Host.getHost(0).getVM(3));
+ }
+
+ private void setupSystem() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(ClientCommandsTestUtils.getServerProperties());
+
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM server2 = Host.getHost(0).getVM(3);
+
+ port0 = startCacheServer(server1, regionName);
+ port1 = startCacheServer(server2, regionName);
+ startNonDurableClient(client1, server1, port0);
+ startNonDurableClient(client1, server2, port1);
+
+ waitForListClientMbean3();
+
+ manager.invoke("get client Id", () -> {
+ Cache cache = GemFireCacheImpl.getInstance();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+ DistributedMember serverMember = ClientCommandsTestUtils.getMember(server1);
+ final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ return bean.getClientIds()[0];
+ });
+ }
+
+ private void setupSystemForListClient() throws Exception {
+ disconnectAllFromDS();
+ setUpJmxManagerOnVm0ThenConnect(ClientCommandsTestUtils.getServerProperties());
+
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM client1 = Host.getHost(0).getVM(2);
+ final VM client2 = Host.getHost(0).getVM(3);
+
+ port0 = startCacheServer(server1, regionName);
+ startNonDurableClient(client1, server1, port0);
+ startNonDurableClient(client2, server1, port0);
+ }
+
+ private int startCacheServer(VM server, final String regionName) {
+
+ return server.invoke("setup CacheServer", () -> {
+ getSystem(ClientCommandsTestUtils.getServerProperties());
+
+ GemFireCacheImpl cache = (GemFireCacheImpl) getCache();
+ AttributesFactory factory = new AttributesFactory();
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
+ Region region = createRootRegion(regionName, factory.create());
+ assertTrue(region instanceof DistributedRegion);
+ CacheServer cacheServer = cache.addCacheServer();
+ cacheServer.setPort(0);
+ cacheServer.start();
+ return cacheServer.getPort();
+ });
+ }
+
+ private void waitForListClientMbean3() {
+
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final VM server2 = Host.getHost(0).getVM(3);
+
+ final DistributedMember serverMember1 = ClientCommandsTestUtils.getMember(server1);
+ final DistributedMember serverMember2 = ClientCommandsTestUtils.getMember(server2);
+
+ assertNotNull(serverMember1);
+
+ manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
+ .pollDelay(2, TimeUnit.SECONDS).until(() -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ if (service == null) {
+ getLogWriter().info("waitForListClientMbean3 Still probing for service");
+ return false;
+ } else {
+ final ObjectName cacheServerMBeanName1 =
+ service.getCacheServerMBeanName(port0, serverMember1);
+ final ObjectName cacheServerMBeanName2 =
+ service.getCacheServerMBeanName(port1, serverMember2);
+ CacheServerMXBean bean1 =
+ service.getMBeanProxy(cacheServerMBeanName1, CacheServerMXBean.class);
+ CacheServerMXBean bean2 =
+ service.getMBeanProxy(cacheServerMBeanName2, CacheServerMXBean.class);
+ try {
+ if (bean1 != null && bean2 != null) {
+ if (bean1.getClientIds().length > 0 && bean2.getClientIds().length > 0) {
+ return true;
+ }
+ }
+ return false;
+
+ } catch (Exception e) {
+ LogWrapper.getInstance()
+ .warning("waitForListClientMbean3 Exception in waitForListClientMbean ::: "
+ + CliUtil.stackTraceAsString(e));
+ }
+ return false;
+ }
+ }));
+ }
+
+ private void startNonDurableClient(VM client, final VM server, final int port) {
+ client.invoke("start non-durable client", () -> {
+ Cache cache = GemFireCacheImpl.getInstance();
+ if (cache == null) {
+
+ Properties props = ClientCommandsTestUtils.getNonDurableClientProps();
+ props.setProperty(LOG_FILE, "client_" + OSProcess.getId() + ".log");
+ props.setProperty(LOG_LEVEL, "fine");
+ props.setProperty(STATISTIC_ARCHIVE_FILE, "client_" + OSProcess.getId() + ".gfs");
+ props.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
+
+ getSystem(props);
+
+ final ClientCacheFactory ccf = new ClientCacheFactory(props);
+ ccf.addPoolServer(getServerHostName(server.getHost()), port);
+ ccf.setPoolSubscriptionEnabled(true);
+ ccf.setPoolPingInterval(1);
+ ccf.setPoolStatisticInterval(1);
+ ccf.setPoolSubscriptionRedundancy(1);
+ ccf.setPoolMinConnections(1);
+
+ ClientCache clientCache = getClientCache(ccf);
+ // Create region
+ if (clientCache.getRegion(Region.SEPARATOR + regionName) == null
+ && clientCache.getRegion(regionName) == null) {
+ ClientRegionFactory<Object, Object> regionFactory =
+ clientCache.createClientRegionFactory(ClientRegionShortcut.LOCAL)
+ .setPoolName(clientCache.getDefaultPool().getName());
+ Region<Object, Object> dataRegion = regionFactory.create(regionName);
+ assertNotNull(dataRegion);
+ dataRegion.put("k1", "v1");
+ dataRegion.put("k2", "v2");
+ }
+ } else {
+ String poolName = "new_pool_" + System.currentTimeMillis();
+ try {
+ PoolImpl p = (PoolImpl) PoolManager.createFactory()
+ .addServer(getServerHostName(server.getHost()), port).setThreadLocalConnections(true)
+ .setMinConnections(1).setSubscriptionEnabled(true).setPingInterval(1)
+ .setStatisticInterval(1).setMinConnections(1).setSubscriptionRedundancy(1)
+ .create(poolName);
+ System.out.println("Created new pool pool " + poolName);
+ assertNotNull(p);
+ } catch (Exception eee) {
+ System.err.println("Exception in creating pool " + poolName + " Exception =="
+ + CliUtil.stackTraceAsString(eee));
+ }
+ }
+ });
+ }
+
+ private void waitForListClientMbean() {
+ final VM manager = Host.getHost(0).getVM(0);
+ final VM server1 = Host.getHost(0).getVM(1);
+ final DistributedMember serverMember = ClientCommandsTestUtils.getMember(server1);
+ assertNotNull(serverMember);
+ manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
+ .pollDelay(2, TimeUnit.SECONDS).until(() -> {
+ final SystemManagementService service =
+ (SystemManagementService) ManagementService.getManagementService(getCache());
+ if (service == null) {
+ getLogWriter().info("waitForListClientMbean Still probing for service");
+ return false;
+ } else {
+ final ObjectName cacheServerMBeanName =
+ service.getCacheServerMBeanName(port0, serverMember);
+ CacheServerMXBean bean =
+ service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
+ try {
+ if (bean != null) {
+ if (bean.getClientIds().length > 1) {
+ return true;
+ }
+ }
+ return false;
+ } catch (Exception e) {
+ LogWrapper.getInstance()
+ .warning("waitForListClientMbean Exception in waitForListClientMbean ::: "
+ + CliUtil.stackTraceAsString(e));
+ }
+ return false;
+ }
+ }));
+ }
+
+ @Override
+ public final void postTearDownCacheTestCase() throws Exception {
+ Host.getHost(0).getVM(0).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ Host.getHost(0).getVM(1).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ Host.getHost(0).getVM(2).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ Host.getHost(0).getVM(3).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
+ }
+}
[34/50] [abbrv] geode git commit: GEODE-2924 Revise authorization
permissions
Posted by kl...@apache.org.
GEODE-2924 Revise authorization permissions
For finer-grained security, identify new targets for CLUSTER
operations (DISK, GATEWAY, QUERY, JAR, LUCENE). And, revise 4
operations listed in this ticket.
This closes #660
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/0b4a1a23
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/0b4a1a23
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/0b4a1a23
Branch: refs/heads/feature/GEODE-3299
Commit: 0b4a1a23900d93125e9b9286aa91d170a89f3353
Parents: acf0668
Author: Karen Miller <km...@pivotal.io>
Authored: Thu Jul 27 10:28:33 2017 -0700
Committer: Karen Miller <km...@pivotal.io>
Committed: Fri Jul 28 09:35:17 2017 -0700
----------------------------------------------------------------------
.../implementing_authorization.html.md.erb | 21 +++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/0b4a1a23/geode-docs/managing/security/implementing_authorization.html.md.erb
----------------------------------------------------------------------
diff --git a/geode-docs/managing/security/implementing_authorization.html.md.erb b/geode-docs/managing/security/implementing_authorization.html.md.erb
index d16280e..9fb55d3 100644
--- a/geode-docs/managing/security/implementing_authorization.html.md.erb
+++ b/geode-docs/managing/security/implementing_authorization.html.md.erb
@@ -56,13 +56,24 @@ which classifies whether the operation as
The operations are not hierarchical;
`MANAGE` does not imply `WRITE`, and `WRITE` does not imply `READ`.
-Some operations further specify a region name in the permission.
+Some `DATA` operations further specify a region name in the permission.
This permits restricting operations on that region to only those
authorized principals.
And within a region, some operations may specify a key.
This permits restricting operations on that key within that region to
only those authorized principals.
+Some `CLUSTER` operations further specify a finer-grained
+target for the operation.
+Specify the target with a string value of:
+
+- `DISK` to target operations that write to a disk store
+- `GATEWAY` to target operations that manage gateway senders and receivers
+- `QUERY` to target operations that manage both indexes and continuous
+ queries
+- `JAR` to target operations that deploy code to servers
+- `LUCENE` to target Lucene index operations
+
This table classifies the permissions assigned for operations common to
a Client-Server interaction.
@@ -110,7 +121,7 @@ This table classifies the permissions assigned for `gfsh` operations.
| close durable-cq | DATA:MANAGE |
| compact disk-store | DATA:MANAGE |
| compact offline-disk-store | DATA:MANAGE |
-| configure pdx | DATA:MANAGE |
+| configure pdx | CLUSTER:MANAGE |
| create async-event-queue | DATA:MANAGE |
| create defined indexes | DATA:MANAGE |
| create disk-store | DATA:MANAGE |
@@ -146,7 +157,7 @@ This table classifies the permissions assigned for `gfsh` operations.
| gc | CLUSTER:MANAGE |
| get ‑key=key1 ‑region=region1 | DATA:READ:RegionName:Key |
| import data | DATA:WRITE:RegionName |
-| import cluster-configuration | DATA:MANAGE |
+| import cluster-configuration | CLUSTER:MANAGE |
| list async-event-queues | CLUSTER:READ |
| list clients | CLUSTER:READ |
| list deployed | CLUSTER:READ |
@@ -157,7 +168,7 @@ This table classifies the permissions assigned for `gfsh` operations.
| list indexes | CLUSTER:READ |
| list lucene indexes | CLUSTER:READ |
| list members | CLUSTER:READ |
-| list regions | DATA:READ |
+| list regions | CLUSTER:READ |
| load-balance gateway-sender | DATA:MANAGE |
| locate entry | DATA:READ:RegionName:Key |
| netstat | CLUSTER:READ |
@@ -247,7 +258,7 @@ This table classifies the permissions assigned for JMX operations.
| GatewaySenderMXBean.resume | DATA:MANAGE |
| GatewaySenderMXBean.start | DATA:MANAGE |
| GatewaySenderMXBean.stop | DATA:MANAGE |
-| LockServiceMXBean.becomeLockGrantor | DATA:MANAGE |
+| LockServiceMXBean.becomeLockGrantor | CLUSTER:MANAGE |
| MemberMXBean.compactAllDiskStores | DATA:MANAGE |
## Implement Authorization
[02/50] [abbrv] geode git commit: GEODE-3286: Failing to cleanup
connections from ConnectionTable receiver table
Posted by kl...@apache.org.
GEODE-3286: Failing to cleanup connections from ConnectionTable receiver table
- prevent adding a closed connection to the connection table's receivers
- add a new unit test for connection table
- adding connection factory object for creating receiving connections
- have the idle connection timeout ensure connections are removed from connection
table receivers
- modify tcpConduit stat accesses to allow easier mocking
Signed-off-by: Hitesh Khamesra <hi...@yahoo.com>
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/8aed2684
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/8aed2684
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/8aed2684
Branch: refs/heads/feature/GEODE-3299
Commit: 8aed26846de6e9ff1c123acae98a7b5ce6d82a83
Parents: e7515f5
Author: Brian Rowe <br...@pivotal.io>
Authored: Tue Jul 25 15:43:35 2017 -0700
Committer: Hitesh Khamesra <hi...@yahoo.com>
Committed: Tue Jul 25 15:43:35 2017 -0700
----------------------------------------------------------------------
.../apache/geode/internal/tcp/Connection.java | 118 +++++++++++--------
.../geode/internal/tcp/ConnectionTable.java | 52 ++++----
.../apache/geode/internal/tcp/MsgReader.java | 2 +-
.../internal/tcp/PeerConnectionFactory.java | 32 +++++
.../apache/geode/internal/tcp/TCPConduit.java | 30 +++--
.../geode/internal/tcp/ConnectionTableTest.java | 66 +++++++++++
6 files changed, 213 insertions(+), 87 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/8aed2684/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
index 1afe6ff..9b1a10a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
@@ -510,22 +510,22 @@ public class Connection implements Runnable {
* creates a connection that we accepted (it was initiated by an explicit connect being done on
* the other side). We will only receive data on this socket; never send.
*/
- protected static Connection createReceiver(ConnectionTable t, Socket s)
+ protected static Connection createReceiver(ConnectionTable table, Socket socket)
throws IOException, ConnectionException {
- Connection c = new Connection(t, s);
+ Connection connection = new Connection(table, socket);
boolean readerStarted = false;
try {
- c.startReader(t);
+ connection.startReader(table);
readerStarted = true;
} finally {
if (!readerStarted) {
- c.closeForReconnect(
+ connection.closeForReconnect(
LocalizedStrings.Connection_COULD_NOT_START_READER_THREAD.toLocalizedString());
}
}
- c.waitForHandshake();
- c.finishedConnecting = true;
- return c;
+ connection.waitForHandshake();
+ connection.finishedConnecting = true;
+ return connection;
}
/**
@@ -568,6 +568,12 @@ public class Connection implements Runnable {
}
}
+ protected void initRecevier() {
+ this.startReader(owner);
+ this.waitForHandshake();
+ this.finishedConnecting = true;
+ }
+
void setIdleTimeoutTask(SystemTimerTask task) {
this.idleTask = task;
}
@@ -591,7 +597,7 @@ public class Connection implements Runnable {
this.accessed = false;
if (isIdle) {
this.timedOut = true;
- this.owner.getConduit().stats.incLostLease();
+ this.owner.getConduit().getStats().incLostLease();
if (logger.isDebugEnabled()) {
logger.debug("Closing idle connection {} shared={} ordered={}", this, this.sharedResource,
this.preserveOrder);
@@ -1059,7 +1065,7 @@ public class Connection implements Runnable {
LocalizedStrings.Connection_CONNECTION_ATTEMPTING_RECONNECT_TO_PEER__0,
remoteAddr));
}
- t.getConduit().stats.incReconnectAttempts();
+ t.getConduit().getStats().incReconnectAttempts();
}
// create connection
try {
@@ -1086,7 +1092,7 @@ public class Connection implements Runnable {
} // IOException
finally {
if (conn == null) {
- t.getConduit().stats.incFailedConnect();
+ t.getConduit().getStats().incFailedConnect();
}
}
if (conn != null) {
@@ -1322,6 +1328,14 @@ public class Connection implements Runnable {
this.batchFlusher.start();
}
+ public void onIdleCancel() {
+ // Make sure receivers are removed from the connection table, this should always be a noop, but
+ // is done here as a failsafe.
+ if (isReceiver) {
+ owner.removeReceiver(this);
+ }
+ }
+
private class BatchBufferFlusher extends Thread {
private volatile boolean flushNeeded = false;
private volatile boolean timeToStop = false;
@@ -1330,7 +1344,7 @@ public class Connection implements Runnable {
public BatchBufferFlusher() {
setDaemon(true);
- this.stats = owner.getConduit().stats;
+ this.stats = owner.getConduit().getStats();
}
/**
@@ -1367,7 +1381,7 @@ public class Connection implements Runnable {
} // while
}
} finally {
- owner.getConduit().stats.incBatchWaitTime(start);
+ owner.getConduit().getStats().incBatchWaitTime(start);
}
}
@@ -1456,7 +1470,7 @@ public class Connection implements Runnable {
if (src.remaining() <= dst.remaining()) {
final long copyStart = DistributionStats.getStatTime();
dst.put(src);
- this.owner.getConduit().stats.incBatchCopyTime(copyStart);
+ this.owner.getConduit().getStats().incBatchCopyTime(copyStart);
return;
}
}
@@ -1465,7 +1479,7 @@ public class Connection implements Runnable {
this.batchFlusher.flushBuffer(dst);
} while (true);
} finally {
- this.owner.getConduit().stats.incBatchSendTime(start);
+ this.owner.getConduit().getStats().incBatchSendTime(start);
}
}
@@ -1537,7 +1551,7 @@ public class Connection implements Runnable {
this.connected = false;
closeSenderSem();
{
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
if (this.finishedConnecting) {
if (this.isReceiver) {
stats.decReceivers();
@@ -1684,7 +1698,7 @@ public class Connection implements Runnable {
initiateSuspicionIfSharedUnordered();
if (this.isReceiver) {
if (!this.sharedResource) {
- this.conduit.stats.incThreadOwnedReceivers(-1L, dominoCount.get());
+ this.conduit.getStats().incThreadOwnedReceivers(-1L, dominoCount.get());
}
asyncClose(false);
this.owner.removeAndCloseThreadOwnedSockets();
@@ -1692,7 +1706,7 @@ public class Connection implements Runnable {
ByteBuffer tmp = this.nioInputBuffer;
if (tmp != null) {
this.nioInputBuffer = null;
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
Buffers.releaseReceiveBuffer(tmp, stats);
}
// make sure that if the reader thread exits we notify a thread waiting
@@ -1960,7 +1974,7 @@ public class Connection implements Runnable {
if (result != null) {
this.idleMsgDestreamer = null;
} else {
- result = new MsgDestreamer(this.owner.getConduit().stats,
+ result = new MsgDestreamer(this.owner.getConduit().getStats(),
this.conduit.getCancelCriterion(), v);
}
result.setName(p2pReaderName() + " msgId=" + msgId);
@@ -2019,7 +2033,7 @@ public class Connection implements Runnable {
}
}
- byte[] lenbytes = new byte[MSG_HEADER_BYTES];
+ byte[] headerBytes = new byte[MSG_HEADER_BYTES];
final ByteArrayDataInput dis = new ByteArrayDataInput();
while (!stopped) {
@@ -2040,20 +2054,20 @@ public class Connection implements Runnable {
break;
}
int len = 0;
- if (readFully(input, lenbytes, lenbytes.length) < 0) {
+ if (readFully(input, headerBytes, headerBytes.length) < 0) {
stopped = true;
continue;
}
// long recvNanos = DistributionStats.getStatTime();
- len = ((lenbytes[MSG_HEADER_SIZE_OFFSET] & 0xff) * 0x1000000)
- + ((lenbytes[MSG_HEADER_SIZE_OFFSET + 1] & 0xff) * 0x10000)
- + ((lenbytes[MSG_HEADER_SIZE_OFFSET + 2] & 0xff) * 0x100)
- + (lenbytes[MSG_HEADER_SIZE_OFFSET + 3] & 0xff);
+ len = ((headerBytes[MSG_HEADER_SIZE_OFFSET] & 0xff) * 0x1000000)
+ + ((headerBytes[MSG_HEADER_SIZE_OFFSET + 1] & 0xff) * 0x10000)
+ + ((headerBytes[MSG_HEADER_SIZE_OFFSET + 2] & 0xff) * 0x100)
+ + (headerBytes[MSG_HEADER_SIZE_OFFSET + 3] & 0xff);
/* byte msgHdrVersion = */ calcHdrVersion(len);
len = calcMsgByteSize(len);
- int msgType = lenbytes[MSG_HEADER_TYPE_OFFSET];
- short msgId = (short) (((lenbytes[MSG_HEADER_ID_OFFSET] & 0xff) << 8)
- + (lenbytes[MSG_HEADER_ID_OFFSET + 1] & 0xff));
+ int msgType = headerBytes[MSG_HEADER_TYPE_OFFSET];
+ short msgId = (short) (((headerBytes[MSG_HEADER_ID_OFFSET] & 0xff) << 8)
+ + (headerBytes[MSG_HEADER_ID_OFFSET + 1] & 0xff));
boolean myDirectAck = (msgType & DIRECT_ACK_BIT) != 0;
if (myDirectAck) {
msgType &= ~DIRECT_ACK_BIT; // clear the bit
@@ -2080,14 +2094,14 @@ public class Connection implements Runnable {
if (msgType == NORMAL_MSG_TYPE) {
// DMStats stats = this.owner.getConduit().stats;
// long start = DistributionStats.getStatTime();
- this.owner.getConduit().stats.incMessagesBeingReceived(true, len);
+ this.owner.getConduit().getStats().incMessagesBeingReceived(true, len);
dis.initialize(bytes, this.remoteVersion);
DistributionMessage msg = null;
try {
ReplyProcessor21.initMessageRPId();
- long startSer = this.owner.getConduit().stats.startMsgDeserialization();
+ long startSer = this.owner.getConduit().getStats().startMsgDeserialization();
msg = (DistributionMessage) InternalDataSerializer.readDSFID(dis);
- this.owner.getConduit().stats.endMsgDeserialization(startSer);
+ this.owner.getConduit().getStats().endMsgDeserialization(startSer);
if (dis.available() != 0) {
logger.warn(LocalizedMessage.create(
LocalizedStrings.Connection_MESSAGE_DESERIALIZATION_OF_0_DID_NOT_READ_1_BYTES,
@@ -2142,7 +2156,7 @@ public class Connection implements Runnable {
}
} else if (msgType == CHUNKED_MSG_TYPE) {
MsgDestreamer md = obtainMsgDestreamer(msgId, remoteVersion);
- this.owner.getConduit().stats.incMessagesBeingReceived(md.size() == 0, len);
+ this.owner.getConduit().getStats().incMessagesBeingReceived(md.size() == 0, len);
try {
md.addChunk(bytes);
} catch (IOException ex) {
@@ -2151,7 +2165,7 @@ public class Connection implements Runnable {
}
} else /* (messageType == END_CHUNKED_MSG_TYPE) */ {
MsgDestreamer md = obtainMsgDestreamer(msgId, remoteVersion);
- this.owner.getConduit().stats.incMessagesBeingReceived(md.size() == 0, len);
+ this.owner.getConduit().getStats().incMessagesBeingReceived(md.size() == 0, len);
try {
md.addChunk(bytes);
} catch (IOException ex) {
@@ -2166,13 +2180,13 @@ public class Connection implements Runnable {
try {
msg = md.getMessage();
} catch (ClassNotFoundException ex) {
- this.owner.getConduit().stats.decMessagesBeingReceived(md.size());
+ this.owner.getConduit().getStats().decMessagesBeingReceived(md.size());
failureEx = ex;
rpId = md.getRPid();
logger.warn(LocalizedMessage
.create(LocalizedStrings.Connection_CLASSNOTFOUND_DESERIALIZING_MESSAGE_0, ex));
} catch (IOException ex) {
- this.owner.getConduit().stats.decMessagesBeingReceived(md.size());
+ this.owner.getConduit().getStats().decMessagesBeingReceived(md.size());
failureMsg = LocalizedStrings.Connection_IOEXCEPTION_DESERIALIZING_MESSAGE
.toLocalizedString();
failureEx = ex;
@@ -2194,7 +2208,7 @@ public class Connection implements Runnable {
// error condition, so you also need to check to see if the JVM
// is still usable:
SystemFailure.checkFailure();
- this.owner.getConduit().stats.decMessagesBeingReceived(md.size());
+ this.owner.getConduit().getStats().decMessagesBeingReceived(md.size());
failureMsg = LocalizedStrings.Connection_UNEXPECTED_FAILURE_DESERIALIZING_MESSAGE
.toLocalizedString();
failureEx = ex;
@@ -2333,7 +2347,7 @@ public class Connection implements Runnable {
// logger.fine("thread-owned receiver with domino count of " + dominoNumber + "
// will prefer shared sockets");
}
- this.conduit.stats.incThreadOwnedReceivers(1L, dominoNumber);
+ this.conduit.getStats().incThreadOwnedReceivers(1L, dominoNumber);
}
if (logger.isDebugEnabled()) {
@@ -2704,7 +2718,7 @@ public class Connection implements Runnable {
private boolean addToQueue(ByteBuffer buffer, DistributionMessage msg, boolean force)
throws ConnectionException {
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
long start = DistributionStats.getStatTime();
try {
ConflationKey ck = null;
@@ -2864,7 +2878,7 @@ public class Connection implements Runnable {
private ByteBuffer takeFromOutgoingQueue() throws InterruptedException {
ByteBuffer result = null;
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
long start = DistributionStats.getStatTime();
try {
synchronized (this.outgoingQueue) {
@@ -2965,7 +2979,7 @@ public class Connection implements Runnable {
*/
protected void runNioPusher() {
try {
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
final long threadStart = stats.startAsyncThread();
try {
stats.incAsyncQueues(1);
@@ -3279,7 +3293,7 @@ public class Connection implements Runnable {
*/
protected void nioWriteFully(SocketChannel channel, ByteBuffer buffer, boolean forceAsync,
DistributionMessage msg) throws IOException, ConnectionException {
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
if (!this.sharedResource) {
stats.incTOSentMsg();
}
@@ -3318,7 +3332,7 @@ public class Connection implements Runnable {
/** gets the buffer for receiving message length bytes */
protected ByteBuffer getNIOBuffer() {
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
if (nioInputBuffer == null) {
int allocSize = this.recvBufferSize;
if (allocSize == -1) {
@@ -3374,7 +3388,7 @@ public class Connection implements Runnable {
boolean origSocketInUse = this.socketInUse;
this.socketInUse = true;
MsgReader msgReader = null;
- DMStats stats = owner.getConduit().stats;
+ DMStats stats = owner.getConduit().getStats();
final Version version = getRemoteVersion();
try {
if (useNIO()) {
@@ -3518,7 +3532,7 @@ public class Connection implements Runnable {
nioInputBuffer.limit(startPos + nioMessageLength);
if (this.handshakeRead) {
if (nioMessageType == NORMAL_MSG_TYPE) {
- this.owner.getConduit().stats.incMessagesBeingReceived(true, nioMessageLength);
+ this.owner.getConduit().getStats().incMessagesBeingReceived(true, nioMessageLength);
ByteBufferInputStream bbis =
remoteVersion == null ? new ByteBufferInputStream(nioInputBuffer)
: new VersionedByteBufferInputStream(nioInputBuffer, remoteVersion);
@@ -3526,9 +3540,9 @@ public class Connection implements Runnable {
try {
ReplyProcessor21.initMessageRPId();
// add serialization stats
- long startSer = this.owner.getConduit().stats.startMsgDeserialization();
+ long startSer = this.owner.getConduit().getStats().startMsgDeserialization();
msg = (DistributionMessage) InternalDataSerializer.readDSFID(bbis);
- this.owner.getConduit().stats.endMsgDeserialization(startSer);
+ this.owner.getConduit().getStats().endMsgDeserialization(startSer);
if (bbis.available() != 0) {
logger.warn(LocalizedMessage.create(
LocalizedStrings.Connection_MESSAGE_DESERIALIZATION_OF_0_DID_NOT_READ_1_BYTES,
@@ -3593,7 +3607,7 @@ public class Connection implements Runnable {
}
} else if (nioMessageType == CHUNKED_MSG_TYPE) {
MsgDestreamer md = obtainMsgDestreamer(nioMsgId, remoteVersion);
- this.owner.getConduit().stats.incMessagesBeingReceived(md.size() == 0,
+ this.owner.getConduit().getStats().incMessagesBeingReceived(md.size() == 0,
nioMessageLength);
try {
md.addChunk(nioInputBuffer, nioMessageLength);
@@ -3604,7 +3618,7 @@ public class Connection implements Runnable {
} else /* (nioMessageType == END_CHUNKED_MSG_TYPE) */ {
// logger.info("END_CHUNK msgId="+nioMsgId);
MsgDestreamer md = obtainMsgDestreamer(nioMsgId, remoteVersion);
- this.owner.getConduit().stats.incMessagesBeingReceived(md.size() == 0,
+ this.owner.getConduit().getStats().incMessagesBeingReceived(md.size() == 0,
nioMessageLength);
try {
md.addChunk(nioInputBuffer, nioMessageLength);
@@ -3621,7 +3635,7 @@ public class Connection implements Runnable {
try {
msg = md.getMessage();
} catch (ClassNotFoundException ex) {
- this.owner.getConduit().stats.decMessagesBeingReceived(md.size());
+ this.owner.getConduit().getStats().decMessagesBeingReceived(md.size());
failureMsg = LocalizedStrings.Connection_CLASSNOTFOUND_DESERIALIZING_MESSAGE
.toLocalizedString();
failureEx = ex;
@@ -3629,7 +3643,7 @@ public class Connection implements Runnable {
logger.fatal(LocalizedMessage
.create(LocalizedStrings.Connection_CLASSNOTFOUND_DESERIALIZING_MESSAGE_0, ex));
} catch (IOException ex) {
- this.owner.getConduit().stats.decMessagesBeingReceived(md.size());
+ this.owner.getConduit().getStats().decMessagesBeingReceived(md.size());
failureMsg = LocalizedStrings.Connection_IOEXCEPTION_DESERIALIZING_MESSAGE
.toLocalizedString();
failureEx = ex;
@@ -3652,7 +3666,7 @@ public class Connection implements Runnable {
// is still usable:
SystemFailure.checkFailure();
this.owner.getConduit().getCancelCriterion().checkCancelInProgress(ex);
- this.owner.getConduit().stats.decMessagesBeingReceived(md.size());
+ this.owner.getConduit().getStats().decMessagesBeingReceived(md.size());
failureMsg = LocalizedStrings.Connection_UNEXPECTED_FAILURE_DESERIALIZING_MESSAGE
.toLocalizedString();
failureEx = ex;
@@ -3822,7 +3836,7 @@ public class Connection implements Runnable {
// } else {
// ConnectionTable.threadWantsSharedResources();
}
- this.conduit.stats.incThreadOwnedReceivers(1L, dominoNumber);
+ this.conduit.getStats().incThreadOwnedReceivers(1L, dominoNumber);
// Because this thread is not shared resource, it will be used for direct
// ack. Direct ack messages can be large. This call will resize the send
// buffer.
@@ -3915,7 +3929,7 @@ public class Connection implements Runnable {
private void compactOrResizeBuffer(int messageLength) {
final int oldBufferSize = nioInputBuffer.capacity();
- final DMStats stats = this.owner.getConduit().stats;
+ final DMStats stats = this.owner.getConduit().getStats();
int allocSize = messageLength + MSG_HEADER_BYTES;
if (oldBufferSize < allocSize) {
// need a bigger buffer
http://git-wip-us.apache.org/repos/asf/geode/blob/8aed2684/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
index c55af82..affe5cd 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
@@ -114,6 +114,7 @@ public class ConnectionTable {
* acks, will be put in this map.
*/
protected final Map unorderedConnectionMap = new ConcurrentHashMap();
+
/**
* Used for all accepted connections. These connections are read only; we never send messages,
* except for acks; only receive.
@@ -201,14 +202,14 @@ public class ConnectionTable {
}
- private ConnectionTable(TCPConduit c) throws IOException {
- this.owner = c;
+ private ConnectionTable(TCPConduit conduit) throws IOException {
+ this.owner = conduit;
this.idleConnTimer = (this.owner.idleConnectionTimeout != 0)
- ? new SystemTimer(c.getDM().getSystem(), true) : null;
+ ? new SystemTimer(conduit.getDM().getSystem(), true) : null;
this.threadOrderedConnMap = new ThreadLocal();
this.threadConnMaps = new ArrayList();
this.threadConnectionMap = new ConcurrentHashMap();
- this.p2pReaderThreadPool = createThreadPoolForIO(c.getDM().getSystem().isShareSockets());
+ this.p2pReaderThreadPool = createThreadPoolForIO(conduit.getDM().getSystem().isShareSockets());
this.socketCloser = new SocketCloser();
}
@@ -248,14 +249,14 @@ public class ConnectionTable {
// }
/** conduit calls acceptConnection after an accept */
- protected void acceptConnection(Socket sock) throws IOException, ConnectionException {
- Connection connection = null;
+ protected void acceptConnection(Socket sock, PeerConnectionFactory peerConnectionFactory)
+ throws IOException, ConnectionException, InterruptedException {
InetAddress connAddress = sock.getInetAddress(); // for bug 44736
boolean finishedConnecting = false;
- Connection conn = null;
+ Connection connection = null;
// boolean exceptionLogged = false;
try {
- conn = Connection.createReceiver(this, sock);
+ connection = peerConnectionFactory.createReceiver(this, sock);
// check for shutdown (so it doesn't get missed in the finally block)
this.owner.getCancelCriterion().checkCancelInProgress(null);
@@ -279,26 +280,29 @@ public class ConnectionTable {
// in our caller.
// no need to log error here since caller will log warning
- if (conn != null && !finishedConnecting) {
+ if (connection != null && !finishedConnecting) {
// we must be throwing from checkCancelInProgress so close the connection
- closeCon(LocalizedStrings.ConnectionTable_CANCEL_AFTER_ACCEPT.toLocalizedString(), conn);
- conn = null;
+ closeCon(LocalizedStrings.ConnectionTable_CANCEL_AFTER_ACCEPT.toLocalizedString(),
+ connection);
+ connection = null;
}
}
- if (conn != null) {
+ if (connection != null) {
synchronized (this.receivers) {
- this.owner.stats.incReceivers();
+ this.owner.getStats().incReceivers();
if (this.closed) {
closeCon(LocalizedStrings.ConnectionTable_CONNECTION_TABLE_NO_LONGER_IN_USE
- .toLocalizedString(), conn);
+ .toLocalizedString(), connection);
return;
}
- this.receivers.add(conn);
+ if (!connection.isSocketClosed()) {
+ this.receivers.add(connection);
+ }
}
if (logger.isDebugEnabled()) {
- logger.debug("Accepted {} myAddr={} theirAddr={}", conn, getConduit().getMemberId(),
- conn.remoteAddr);
+ logger.debug("Accepted {} myAddr={} theirAddr={}", connection, getConduit().getMemberId(),
+ connection.remoteAddr);
}
}
}
@@ -328,11 +332,11 @@ public class ConnectionTable {
try {
con = Connection.createSender(owner.getMembershipManager(), this, preserveOrder, id,
sharedResource, startTime, ackThreshold, ackSAThreshold);
- this.owner.stats.incSenders(sharedResource, preserveOrder);
+ this.owner.getStats().incSenders(sharedResource, preserveOrder);
} finally {
// our connection failed to notify anyone waiting for our pending con
if (con == null) {
- this.owner.stats.incFailedConnect();
+ this.owner.getStats().incFailedConnect();
synchronized (m) {
Object rmObj = m.remove(id);
if (rmObj != pc && rmObj != null) {
@@ -521,7 +525,7 @@ public class ConnectionTable {
if (logger.isDebugEnabled()) {
logger.debug("ConnectionTable: created an ordered connection: {}", result);
}
- this.owner.stats.incSenders(false/* shared */, true /* preserveOrder */);
+ this.owner.getStats().incSenders(false/* shared */, true /* preserveOrder */);
// Update the list of connections owned by this thread....
@@ -1309,6 +1313,10 @@ public class ConnectionTable {
@Override
public boolean cancel() {
+ Connection con = this.c;
+ if (con != null) {
+ con.onIdleCancel();
+ }
this.c = null;
return super.cancel();
}
@@ -1355,5 +1363,7 @@ public class ConnectionTable {
}
}
-
+ public int getNumberOfReceivers() {
+ return receivers.size();
+ }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/8aed2684/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
index be1f533..1bbfd08 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
@@ -94,7 +94,7 @@ public abstract class MsgReader {
public abstract ByteBuffer readAtLeast(int bytes) throws IOException;
protected DMStats getStats() {
- return conn.getConduit().stats;
+ return conn.getConduit().getStats();
}
public static class Header {
http://git-wip-us.apache.org/repos/asf/geode/blob/8aed2684/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
new file mode 100644
index 0000000..7bf9638
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
@@ -0,0 +1,32 @@
+/*
+ * 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.internal.tcp;
+
+import java.io.IOException;
+import java.net.Socket;
+
+public class PeerConnectionFactory {
+ /**
+ * creates a connection that we accepted (it was initiated by an explicit connect being done on
+ * the other side). We will only receive data on this socket; never send.
+ */
+ public Connection createReceiver(ConnectionTable table, Socket socket)
+ throws IOException, ConnectionException {
+ Connection connection = new Connection(table, socket);
+ connection.initRecevier();
+ return connection;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/8aed2684/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
index 991aaf7..c52a676 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
@@ -20,7 +20,6 @@ import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
-import java.net.SocketAddress;
import java.net.SocketException;
import java.nio.channels.ClosedByInterruptException;
import java.nio.channels.ClosedChannelException;
@@ -189,10 +188,8 @@ public class TCPConduit implements Runnable {
* the object that receives DistributionMessage messages received by this conduit.
*/
private final DirectChannel directChannel;
- /**
- * Stats from the delegate
- */
- DMStats stats;
+
+ private DMStats stats;
/**
* Config from the delegate
@@ -260,7 +257,7 @@ public class TCPConduit implements Runnable {
this.stats = directChannel.getDMStats();
this.config = directChannel.getDMConfig();
}
- if (this.stats == null) {
+ if (this.getStats() == null) {
this.stats = new LonerDistributionManager.DummyDMStats();
}
@@ -642,7 +639,7 @@ public class TCPConduit implements Runnable {
if (directChannel != null) {
this.stats = directChannel.getDMStats();
}
- if (this.stats == null) {
+ if (this.getStats() == null) {
this.stats = new LonerDistributionManager.DummyDMStats();
}
try {
@@ -745,7 +742,7 @@ public class TCPConduit implements Runnable {
}
}
} else {
- this.stats.incFailedAccept();
+ this.getStats().incFailedAccept();
if (e instanceof IOException && "Too many open files".equals(e.getMessage())) {
getConTable().fileDescriptorsExhausted();
} else {
@@ -800,16 +797,16 @@ public class TCPConduit implements Runnable {
protected void basicAcceptConnection(Socket othersock) {
try {
- getConTable().acceptConnection(othersock);
+ getConTable().acceptConnection(othersock, new PeerConnectionFactory());
} catch (IOException io) {
// exception is logged by the Connection
if (!stopped) {
- this.stats.incFailedAccept();
+ this.getStats().incFailedAccept();
}
} catch (ConnectionException ex) {
// exception is logged by the Connection
if (!stopped) {
- this.stats.incFailedAccept();
+ this.getStats().incFailedAccept();
}
} catch (CancelException e) {
} catch (Exception e) {
@@ -820,7 +817,7 @@ public class TCPConduit implements Runnable {
// }
// else
{
- this.stats.incFailedAccept();
+ this.getStats().incFailedAccept();
logger.warn(LocalizedMessage.create(
LocalizedStrings.TCPConduit_FAILED_TO_ACCEPT_CONNECTION_FROM_0_BECAUSE_1,
new Object[] {othersock.getInetAddress(), e}), e);
@@ -977,7 +974,7 @@ public class TCPConduit implements Runnable {
}
// Close the connection (it will get rebuilt later).
- this.stats.incReconnectAttempts();
+ this.getStats().incReconnectAttempts();
if (conn != null) {
try {
if (logger.isDebugEnabled()) {
@@ -1172,6 +1169,13 @@ public class TCPConduit implements Runnable {
return (ct != null) && ct.hasReceiversFor(endPoint);
}
+ /**
+ * Stats from the delegate
+ */
+ public DMStats getStats() {
+ return stats;
+ }
+
protected class Stopper extends CancelCriterion {
/*
http://git-wip-us.apache.org/repos/asf/geode/blob/8aed2684/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTableTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTableTest.java b/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTableTest.java
new file mode 100644
index 0000000..312c64d
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/tcp/ConnectionTableTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.internal.tcp;
+
+import org.apache.geode.CancelCriterion;
+import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.distributed.internal.DMStats;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.net.Socket;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+
+@Category(UnitTest.class)
+public class ConnectionTableTest {
+
+ @Test
+ public void testConnectionsClosedDuringCreateAreNotAddedAsReceivers() throws Exception {
+ InternalDistributedSystem system = mock(InternalDistributedSystem.class);
+ when(system.isShareSockets()).thenReturn(false);
+
+ DM dm = mock(DM.class);
+ when(dm.getSystem()).thenReturn(system);
+
+ CancelCriterion cancelCriterion = mock(CancelCriterion.class);
+ DMStats dmStats = mock(DMStats.class);
+
+ TCPConduit tcpConduit = mock(TCPConduit.class);
+ when(tcpConduit.getDM()).thenReturn(dm);
+ when(tcpConduit.getCancelCriterion()).thenReturn(cancelCriterion);
+ when(tcpConduit.getStats()).thenReturn(dmStats);
+
+ Connection connection = mock(Connection.class);
+ when(connection.isSocketClosed()).thenReturn(true); // Pretend this closed as soon at it was
+ // created
+
+ Socket socket = mock(Socket.class);
+
+ ConnectionTable table = ConnectionTable.create(tcpConduit);
+
+ PeerConnectionFactory factory = mock(PeerConnectionFactory.class);
+ when(factory.createReceiver(table, socket)).thenReturn(connection);
+
+ table.acceptConnection(socket, factory);
+ assertEquals(0, table.getNumberOfReceivers());
+ }
+}
[31/50] [abbrv] geode git commit: GEODE-231: Remove deprecated
AttributesMutator.setCacheListener
Posted by kl...@apache.org.
GEODE-231: Remove deprecated AttributesMutator.setCacheListener
Removed setCacheListener method from AttributesMutator and AbstractRegion.
Changed tests to use either initCacheListeners or addCacheListener methods from AttributesMutator.
This closes #507
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/e24438b9
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/e24438b9
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/e24438b9
Branch: refs/heads/feature/GEODE-3299
Commit: e24438b946b00414a744af07df323de894c8a46e
Parents: 7dc15b2
Author: Shankar <sh...@ampool.io>
Authored: Tue May 9 23:50:39 2017 +0530
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Thu Jul 27 16:50:16 2017 -0700
----------------------------------------------------------------------
.../apache/geode/cache/AttributesMutator.java | 13 -------
.../apache/geode/cache/RegionRoleListener.java | 2 +-
.../geode/internal/cache/AbstractRegion.java | 36 --------------------
.../test/java/org/apache/geode/TXJUnitTest.java | 6 ++--
.../java/org/apache/geode/TXWriterTestCase.java | 2 +-
.../geode/cache/CacheListenerJUnitTest.java | 6 +---
.../geode/cache/ConnectionPoolDUnitTest.java | 6 ++--
.../geode/cache30/CacheLoaderTestCase.java | 2 +-
.../geode/cache30/DiskRegionDUnitTest.java | 4 +--
.../geode/cache30/RegionAttributesTestCase.java | 5 +--
.../internal/cache/DiskRegCbkChkJUnitTest.java | 6 ++--
.../internal/cache/DiskRegionJUnitTest.java | 2 +-
.../internal/cache/MapInterface2JUnitTest.java | 2 +-
.../tier/sockets/InterestListDUnitTest.java | 2 +-
.../cache/query/cq/dunit/CqDataDUnitTest.java | 2 +-
.../cq/dunit/CqDataUsingPoolDUnitTest.java | 2 +-
.../cache/query/cq/dunit/CqQueryDUnitTest.java | 2 +-
.../cq/dunit/CqQueryUsingPoolDUnitTest.java | 2 +-
.../dunit/QueryIndexUpdateRIDUnitTest.java | 6 ++--
.../internal/cache/ha/CQListGIIDUnitTest.java | 2 +-
20 files changed, 29 insertions(+), 81 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/main/java/org/apache/geode/cache/AttributesMutator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/AttributesMutator.java b/geode-core/src/main/java/org/apache/geode/cache/AttributesMutator.java
index 51301bc..579a4e8 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/AttributesMutator.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/AttributesMutator.java
@@ -107,19 +107,6 @@ public interface AttributesMutator<K, V> {
public CustomExpiry<K, V> setCustomEntryIdleTimeout(CustomExpiry<K, V> custom);
/**
- * Changes the CacheListener for the region. Removes listeners already added and calls
- * {@link CacheCallback#close} on each of them.
- *
- * @param aListener a user defined cache listener
- * @return the previous CacheListener if a single one exists; otherwise null.
- * @throws IllegalStateException if more than one cache listener has already been added
- * @deprecated as of GemFire 5.0, use {@link #addCacheListener} or {@link #initCacheListeners}
- * instead.
- */
- @Deprecated
- public CacheListener<K, V> setCacheListener(CacheListener<K, V> aListener);
-
- /**
* Adds a cache listener to the end of the list of cache listeners on this region.
*
* @param aListener the user defined cache listener to add to the region.
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/main/java/org/apache/geode/cache/RegionRoleListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/RegionRoleListener.java b/geode-core/src/main/java/org/apache/geode/cache/RegionRoleListener.java
index 0a666cc..1dff76a 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/RegionRoleListener.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/RegionRoleListener.java
@@ -25,7 +25,7 @@ package org.apache.geode.cache;
*
* @see AttributesFactory#setCacheListener
* @see RegionAttributes#getCacheListener
- * @see AttributesMutator#setCacheListener
+ * @see AttributesMutator#addCacheListener
* @deprecated this feature is scheduled to be removed
*/
public interface RegionRoleListener<K, V> extends CacheListener<K, V> {
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegion.java
index b7cd199..db9674e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractRegion.java
@@ -856,42 +856,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, Attrib
}
@Override
- public CacheListener setCacheListener(CacheListener aListener) {
- checkReadiness();
- CacheListener[] oldListeners;
- synchronized (this.clSync) {
- oldListeners = this.cacheListeners;
- if (oldListeners != null && oldListeners.length > 1) {
- throw new IllegalStateException(
- LocalizedStrings.AbstractRegion_MORE_THAN_ONE_CACHE_LISTENER_EXISTS
- .toLocalizedString());
- }
- this.cacheListeners = new CacheListener[] {aListener};
- }
- // moved the following out of the sync for bug 34512
- CacheListener result = null;
- if (oldListeners != null && oldListeners.length > 0) {
- if (oldListeners.length == 1) {
- result = oldListeners[0];
- }
- for (CacheListener oldListener : oldListeners) {
- if (aListener != oldListener) {
- closeCacheCallback(oldListener);
- }
- }
- if (aListener == null) {
- cacheListenersChanged(false);
- }
- } else { // we have no old listeners
- if (aListener != null) {
- // we have added a new listener
- cacheListenersChanged(true);
- }
- }
- return result;
- }
-
- @Override
public void addGatewaySenderId(String gatewaySenderId) {
getGatewaySenderIds().add(gatewaySenderId);
setAllGatewaySenderIds();
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java b/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
index 733b31c..cf1281d 100644
--- a/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/TXJUnitTest.java
@@ -1061,7 +1061,7 @@ public class TXJUnitTest {
return fetchLocal ? this.aLocalDestroyCalls : this.aDestroyCalls;
}
};
- mutator.setCacheListener(cntListener);
+ mutator.addCacheListener(cntListener);
CountingCacheWriter cntWriter = new CountingCacheWriter() {
int bCreateCalls, bUpdateCalls, bDestroyCalls, bLocalDestroyCalls;
@@ -2928,7 +2928,7 @@ public class TXJUnitTest {
public void testNoCallbacksOnRollback() throws CacheException {
// install listeners
AttributesMutator<String, String> mutator = this.region.getAttributesMutator();
- mutator.setCacheListener(new CacheListenerAdapter<String, String>() {
+ mutator.addCacheListener(new CacheListenerAdapter<String, String>() {
@Override
public void close() {
cbCount++;
@@ -3396,7 +3396,7 @@ public class TXJUnitTest {
};
vCl.setValidator(cbv);
- mutator.setCacheListener(vCl);
+ mutator.addCacheListener(vCl);
// CacheWriter
ValidatableCacheWriter vCw = new ValidatableCacheWriter() {
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/TXWriterTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/TXWriterTestCase.java b/geode-core/src/test/java/org/apache/geode/TXWriterTestCase.java
index a75e167..8242299 100644
--- a/geode-core/src/test/java/org/apache/geode/TXWriterTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/TXWriterTestCase.java
@@ -113,7 +113,7 @@ public class TXWriterTestCase {
void installCacheListenerAndWriter() {
AttributesMutator<String, String> mutator = this.region.getAttributesMutator();
- mutator.setCacheListener(new CacheListenerAdapter<String, String>() {
+ mutator.addCacheListener(new CacheListenerAdapter<String, String>() {
@Override
public void close() {
cbCount++;
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/cache/CacheListenerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/CacheListenerJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/CacheListenerJUnitTest.java
index 9353141..1273c43 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/CacheListenerJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/CacheListenerJUnitTest.java
@@ -155,11 +155,7 @@ public class CacheListenerJUnitTest {
fail("expected IllegalStateException");
} catch (IllegalStateException expected) {
}
- try {
- am.setCacheListener(cl1);
- fail("expected IllegalStateException");
- } catch (IllegalStateException expected) {
- }
+
am.removeCacheListener(cl1);
assertEquals(Arrays.asList(new CacheListener[] {cl2}), Arrays.asList(ra.getCacheListeners()));
am.removeCacheListener(cl1);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
index c3e756b..376f145 100755
--- a/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/ConnectionPoolDUnitTest.java
@@ -3462,7 +3462,7 @@ public class ConnectionPoolDUnitTest extends JUnit4CacheTestCase {
null);
region1 = createRegion(regionName1, regionFactory.create());
- region1.getAttributesMutator().setCacheListener(new CertifiableTestCacheListener(
+ region1.getAttributesMutator().addCacheListener(new CertifiableTestCacheListener(
org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()));
}
};
@@ -5310,7 +5310,7 @@ public class ConnectionPoolDUnitTest extends JUnit4CacheTestCase {
.info("vm2 numberOfAfterInvalidates: " + numberOfAfterInvalidates);
}
};
- region.getAttributesMutator().setCacheListener(listener);
+ region.getAttributesMutator().addCacheListener(listener);
region.registerInterestRegex(".*", false, false);
}
});
@@ -5334,7 +5334,7 @@ public class ConnectionPoolDUnitTest extends JUnit4CacheTestCase {
// getLogWriter().info("vm3 numberOfAfterInvalidates: " + numberOfAfterInvalidates);
}
};
- region.getAttributesMutator().setCacheListener(listener);
+ region.getAttributesMutator().addCacheListener(listener);
region.registerInterestRegex(".*", false, false);
}
});
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/cache30/CacheLoaderTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/CacheLoaderTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/CacheLoaderTestCase.java
index e596b95..9509c06 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/CacheLoaderTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/CacheLoaderTestCase.java
@@ -310,7 +310,7 @@ public abstract class CacheLoaderTestCase extends CacheWriterTestCase {
}
};
- region.getAttributesMutator().setCacheListener(listener);
+ region.getAttributesMutator().addCacheListener(listener);
region.put(key, newValue);
Wait.pause(500);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/cache30/DiskRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/DiskRegionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache30/DiskRegionDUnitTest.java
index e5d3fbd..f12672f 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/DiskRegionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/DiskRegionDUnitTest.java
@@ -493,7 +493,7 @@ public class DiskRegionDUnitTest extends JUnit4CacheTestCase {
public void close2() {}
};
- region.getAttributesMutator().setCacheListener(listener);
+ region.getAttributesMutator().addCacheListener(listener);
for (int i = 0; i < total; i++) {
String value = (String) region.get(new Integer(i));
@@ -513,7 +513,7 @@ public class DiskRegionDUnitTest extends JUnit4CacheTestCase {
}
};
- region.getAttributesMutator().setCacheListener(listener);
+ region.getAttributesMutator().addCacheListener(listener);
for (int i = 0; i < 20; i++) {
region.put(new Integer(i), new byte[i]);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/cache30/RegionAttributesTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/RegionAttributesTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/RegionAttributesTestCase.java
index d89003a..c521539 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/RegionAttributesTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/RegionAttributesTestCase.java
@@ -104,7 +104,7 @@ public abstract class RegionAttributesTestCase extends RegionTestCase {
assertEquals(region, mutator.getRegion());
assertSame(region, mutator);
- mutator.setCacheListener(listener);
+ mutator.addCacheListener(listener);
mutator.setCacheLoader(loader);
mutator.setCacheWriter(writer);
mutator.setEntryIdleTimeout(entryIdle);
@@ -140,7 +140,8 @@ public abstract class RegionAttributesTestCase extends RegionTestCase {
ExpirationAttributes regionIdle2 = new ExpirationAttributes(7, ExpirationAction.DESTROY);
ExpirationAttributes regionTTL2 = new ExpirationAttributes(8, ExpirationAction.INVALIDATE);
- assertEquals(listener, mutator.setCacheListener(listener2));
+ mutator.initCacheListeners(new CacheListener[] {listener2});
+ assertEquals(listener2, attrs.getCacheListener());
assertEquals(loader, mutator.setCacheLoader(loader2));
assertEquals(writer, mutator.setCacheWriter(writer2));
assertEquals(entryIdle, mutator.setEntryIdleTimeout(entryIdle2));
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegCbkChkJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegCbkChkJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegCbkChkJUnitTest.java
index 2ba36b8..d460994 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegCbkChkJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegCbkChkJUnitTest.java
@@ -50,7 +50,7 @@ public class DiskRegCbkChkJUnitTest extends DiskRegionTestingBase {
Scope.LOCAL);
// testing create callbacks
- region.getAttributesMutator().setCacheListener(new CacheListenerAdapter() {
+ region.getAttributesMutator().addCacheListener(new CacheListenerAdapter() {
public void afterCreate(EntryEvent event) {
intoCreateAfterCbk = true;
}
@@ -64,7 +64,7 @@ public class DiskRegCbkChkJUnitTest extends DiskRegionTestingBase {
assertTrue("Create callback not called", intoCreateAfterCbk);
// testing update callbacks
- region.getAttributesMutator().setCacheListener(new CacheListenerAdapter() {
+ region.getAttributesMutator().addCacheListener(new CacheListenerAdapter() {
public void afterUpdate(EntryEvent event) {
intoUpdateAfterCbk = true;
}
@@ -79,7 +79,7 @@ public class DiskRegCbkChkJUnitTest extends DiskRegionTestingBase {
assertTrue("Update callback not called", intoUpdateAfterCbk);
// testing destroy callbacks
- region.getAttributesMutator().setCacheListener(new CacheListenerAdapter() {
+ region.getAttributesMutator().addCacheListener(new CacheListenerAdapter() {
public void afterDestroy(EntryEvent event) {
intoDestroyAfterCbk = true;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegionJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegionJUnitTest.java
index 77f6e06..8f6d77b 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegionJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/DiskRegionJUnitTest.java
@@ -1527,7 +1527,7 @@ public class DiskRegionJUnitTest extends DiskRegionTestingBase {
}
});
- region.getAttributesMutator().setCacheListener(new CacheListenerAdapter() {
+ region.getAttributesMutator().addCacheListener(new CacheListenerAdapter() {
public void afterCreate(EntryEvent event) {
th.start();
}
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/internal/cache/MapInterface2JUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/MapInterface2JUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/MapInterface2JUnitTest.java
index f4e20d7..3fea214 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/MapInterface2JUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/MapInterface2JUnitTest.java
@@ -110,7 +110,7 @@ public class MapInterface2JUnitTest {
public void testBasicMapAfterClearCalback() {
Region rgn = CacheUtils.getRegion("Portfolios");
AttributesMutator atm = rgn.getAttributesMutator();
- atm.setCacheListener(new CacheListenerAdapter() {
+ atm.addCacheListener(new CacheListenerAdapter() {
public void afterRegionClear(RegionEvent event) {
synchronized (MapInterface2JUnitTest.this) {
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/InterestListDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/InterestListDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/InterestListDUnitTest.java
index ab21f53..1008d54 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/InterestListDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/InterestListDUnitTest.java
@@ -676,7 +676,7 @@ public class InterestListDUnitTest extends JUnit4DistributedTestCase {
private static void addCacheListener(int expectedCreates) {
// Add a cache listener to count the number of create and update events
Region region = cache.getRegion(REGION_NAME);
- region.getAttributesMutator().setCacheListener(new EventCountingCacheListener(expectedCreates));
+ region.getAttributesMutator().addCacheListener(new EventCountingCacheListener(expectedCreates));
}
private static void doGets(int numGets) {
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataDUnitTest.java
index c7d734d..cc8c197 100644
--- a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataDUnitTest.java
@@ -461,7 +461,7 @@ public class CqDataDUnitTest extends JUnit4CacheTestCase {
Region region = createRegion(cqDUnitTest.regions[i], factory.createRegionAttributes());
// Set CacheListener.
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
}
Wait.pause(2000);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataUsingPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataUsingPoolDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataUsingPoolDUnitTest.java
index ceedf69..5d3ce14 100644
--- a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataUsingPoolDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqDataUsingPoolDUnitTest.java
@@ -475,7 +475,7 @@ public class CqDataUsingPoolDUnitTest extends JUnit4CacheTestCase {
Region region = createRegion(cqDUnitTest.regions[i], factory.createRegionAttributes());
// Set CacheListener.
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
}
Wait.pause(2000);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryDUnitTest.java
index 18a61f2..ef5449a 100644
--- a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryDUnitTest.java
@@ -973,7 +973,7 @@ public class CqQueryDUnitTest extends JUnit4CacheTestCase {
try {
region = getRootRegion().getSubregion(regionName);
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
} catch (Exception cqe) {
AssertionError err = new AssertionError("Failed to get Region.");
err.initCause(cqe);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
index f9c6b4b..7e1dc03 100644
--- a/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
@@ -843,7 +843,7 @@ public class CqQueryUsingPoolDUnitTest extends JUnit4CacheTestCase {
try {
region = getRootRegion().getSubregion(regionName);
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
} catch (Exception cqe) {
fail("Failed to get Region.", cqe);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-cq/src/test/java/org/apache/geode/cache/query/dunit/QueryIndexUpdateRIDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/cache/query/dunit/QueryIndexUpdateRIDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/cache/query/dunit/QueryIndexUpdateRIDUnitTest.java
index 289d915..9eb6360 100644
--- a/geode-cq/src/test/java/org/apache/geode/cache/query/dunit/QueryIndexUpdateRIDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/cache/query/dunit/QueryIndexUpdateRIDUnitTest.java
@@ -492,7 +492,7 @@ public class QueryIndexUpdateRIDUnitTest extends JUnit4CacheTestCase {
region = getRootRegion().getSubregion(regionName);
}
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
} catch (Exception cqe) {
AssertionError err = new AssertionError("Failed to get Region.");
err.initCause(cqe);
@@ -537,7 +537,7 @@ public class QueryIndexUpdateRIDUnitTest extends JUnit4CacheTestCase {
region = getRootRegion().getSubregion(regionName);
}
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
} catch (Exception cqe) {
AssertionError err = new AssertionError("Failed to get Region.");
err.initCause(cqe);
@@ -802,7 +802,7 @@ public class QueryIndexUpdateRIDUnitTest extends JUnit4CacheTestCase {
region = getRootRegion().getSubregion(regionName);
}
region.getAttributesMutator()
- .setCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
+ .addCacheListener(new CertifiableTestCacheListener(LogWriterUtils.getLogWriter()));
} catch (Exception cqe) {
AssertionError err = new AssertionError("Failed to get Region.");
err.initCause(cqe);
http://git-wip-us.apache.org/repos/asf/geode/blob/e24438b9/geode-cq/src/test/java/org/apache/geode/internal/cache/ha/CQListGIIDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/internal/cache/ha/CQListGIIDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/internal/cache/ha/CQListGIIDUnitTest.java
index 5e8bdac..2b44a8e 100755
--- a/geode-cq/src/test/java/org/apache/geode/internal/cache/ha/CQListGIIDUnitTest.java
+++ b/geode-cq/src/test/java/org/apache/geode/internal/cache/ha/CQListGIIDUnitTest.java
@@ -425,7 +425,7 @@ public class CQListGIIDUnitTest extends JUnit4DistributedTestCase {
Region region = null;
try {
region = cache.getRegion("root").getSubregion(regionName);
- region.getAttributesMutator().setCacheListener(new CertifiableTestCacheListener(
+ region.getAttributesMutator().addCacheListener(new CertifiableTestCacheListener(
org.apache.geode.test.dunit.LogWriterUtils.getLogWriter()));
} catch (Exception e) {
fail("Failed to get Region.", e);
[47/50] [abbrv] geode git commit: Convert to use
FunctionContext.getCache()
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UndeployFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UndeployFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UndeployFunction.java
index 031c855..c3563c7 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UndeployFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UndeployFunction.java
@@ -16,46 +16,37 @@ package org.apache.geode.management.internal.cli.functions;
import java.util.ArrayList;
import java.util.List;
-import java.util.StringTokenizer;
import org.apache.commons.lang.ArrayUtils;
-import org.apache.geode.internal.ClassPathLoader;
import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
+import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.InternalEntity;
+import org.apache.geode.internal.ClassPathLoader;
import org.apache.geode.internal.DeployedJar;
+import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.JarDeployer;
-import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.logging.LogService;
public class UndeployFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = UndeployFunction.class.getName();
-
private static final long serialVersionUID = 1L;
-
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
- final Object[] args = (Object[]) context.getArguments();
- final String[] jarFilenameList = (String[]) args[0]; // Comma separated
- InternalCache cache = getCache();
+ Object[] args = (Object[]) context.getArguments();
+ String[] jarFilenameList = (String[]) args[0]; // Comma separated
+ Cache cache = context.getCache();
- final JarDeployer jarDeployer = ClassPathLoader.getLatest().getJarDeployer();
+ JarDeployer jarDeployer = ClassPathLoader.getLatest().getJarDeployer();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -67,8 +58,9 @@ public class UndeployFunction implements Function, InternalEntity {
String[] undeployedJars = new String[0];
if (ArrayUtils.isEmpty(jarFilenameList)) {
- final List<DeployedJar> jarClassLoaders = jarDeployer.findDeployedJars();
+ List<DeployedJar> jarClassLoaders = jarDeployer.findDeployedJars();
undeployedJars = new String[jarClassLoaders.size() * 2];
+
int index = 0;
for (DeployedJar jarClassLoader : jarClassLoaders) {
undeployedJars[index++] = jarClassLoader.getJarName();
@@ -80,8 +72,9 @@ public class UndeployFunction implements Function, InternalEntity {
undeployedJars[index++] = iaex.getMessage();
}
}
+
} else {
- List<String> undeployedList = new ArrayList<String>();
+ List<String> undeployedList = new ArrayList<>();
for (String jarFilename : jarFilenameList) {
try {
undeployedList.add(jarFilename);
@@ -114,11 +107,6 @@ public class UndeployFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
@@ -132,4 +120,5 @@ public class UndeployFunction implements Function, InternalEntity {
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UnregisterFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UnregisterFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UnregisterFunction.java
index 18e16ac..80c670d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UnregisterFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UnregisterFunction.java
@@ -14,44 +14,29 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.FunctionService;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.internal.InternalEntity;
-import org.apache.geode.internal.admin.remote.ShutdownAllRequest;
/**
- *
* Class for Unregister function
- *
- *
- *
*/
-
-
public class UnregisterFunction implements Function, InternalEntity {
- public static final String ID = UnregisterFunction.class.getName();
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
Object[] args = (Object[]) context.getArguments();
String functionId = (String) args[0];
+
try {
FunctionService.unregisterFunction(functionId);
+ context.getResultSender().lastResult("Succeeded in unregistering");
+
} catch (Exception e) {
context.getResultSender().lastResult("Failed in unregistering " + e.getMessage());
}
- context.getResultSender().lastResult("Succeeded in unregistering");
- }
-
- @Override
- public String getId() {
- return UnregisterFunction.ID;
-
}
@Override
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UserFunctionExecution.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UserFunctionExecution.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UserFunctionExecution.java
index 1f9a607..e95a16f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UserFunctionExecution.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UserFunctionExecution.java
@@ -19,7 +19,6 @@ import java.util.List;
import java.util.Set;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.execute.Execution;
import org.apache.geode.cache.execute.Function;
@@ -33,20 +32,18 @@ import org.apache.geode.management.internal.cli.GfshParser;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
/**
- *
* @since GemFire 7.0
*/
public class UserFunctionExecution implements Function, InternalEntity {
- public static final String ID = UserFunctionExecution.class.getName();
-
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
String[] functionArgs = null;
+
Object[] args = (Object[]) context.getArguments();
if (args != null) {
String functionId = ((String) args[0]);
@@ -115,6 +112,7 @@ public class UserFunctionExecution implements Function, InternalEntity {
}
}
context.getResultSender().lastResult(resultMessage);
+
} else {
context.getResultSender()
.lastResult(CliStrings.format(
@@ -129,12 +127,14 @@ public class UserFunctionExecution implements Function, InternalEntity {
.lastResult(CliStrings.format(
CliStrings.EXECUTE_FUNCTION__MSG__RESULT_COLLECTOR_0_NOT_FOUND_ERROR_1,
resultCollectorName, e.getMessage()));
+
} catch (Exception e) {
context.getResultSender()
.lastResult(CliStrings.format(
CliStrings.EXECUTE_FUNCTION__MSG__ERROR_IN_EXECUTING_ON_MEMBER_1_DETAILS_2,
functionId, member.getId(), e.getMessage()));
}
+
} else {
context.getResultSender()
.lastResult(CliStrings.EXECUTE_FUNCTION__MSG__COULD_NOT_RETRIEVE_ARGUMENTS);
@@ -146,11 +146,6 @@ public class UserFunctionExecution implements Function, InternalEntity {
}
@Override
- public String getId() {
- return UserFunctionExecution.ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/TimeParser.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/TimeParser.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/TimeParser.java
new file mode 100644
index 0000000..a6603fd
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/TimeParser.java
@@ -0,0 +1,47 @@
+/*
+ * 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.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+
+import org.apache.geode.management.internal.cli.commands.ExportLogsCommand;
+
+/**
+ * Extracted from {@link org.apache.geode.management.internal.cli.functions.ExportLogsFunction}.
+ */
+public class TimeParser {
+
+ public static LocalDateTime parseTime(String dateString) {
+ if (dateString == null) {
+ return null;
+ }
+
+ try {
+ SimpleDateFormat df = new SimpleDateFormat(ExportLogsCommand.FORMAT);
+ return df.parse(dateString).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ } catch (ParseException e) {
+ try {
+ SimpleDateFormat df = new SimpleDateFormat(ExportLogsCommand.ONLY_DATE_FORMAT);
+ return df.parse(dateString).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ } catch (ParseException e1) {
+ return null;
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunctionJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunctionJUnitTest.java
index 4c1f2cb..9d6ff52 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunctionJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunctionJUnitTest.java
@@ -48,7 +48,6 @@ import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.cache.server.ClientSubscriptionConfig;
import org.apache.geode.cache.wan.GatewaySender;
-import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.lang.Filter;
@@ -204,8 +203,8 @@ public class DescribeDiskStoreFunctionJUnitTest {
return cacheServerDetails;
}
- private DescribeDiskStoreFunction createDescribeDiskStoreFunction(final Cache cache) {
- return new TestDescribeDiskStoreFunction(cache);
+ private DescribeDiskStoreFunction createDescribeDiskStoreFunction() {
+ return new DescribeDiskStoreFunction();
}
private File[] createFileArray(final String... locations) {
@@ -520,6 +519,8 @@ public class DescribeDiskStoreFunctionJUnitTest {
will(returnValue(diskStoreName));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
@@ -535,7 +536,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
final Set<DiskStoreDetails.AsyncEventQueueDetails> expectedAsyncEventQueueDetails =
setupAsyncEventQueuesForTestExecute(mockCache, diskStoreName);
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.execute(mockFunctionContext);
@@ -585,32 +586,6 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
@Test
- public void testExecuteOnMemberHavingANonGemFireCache() throws Throwable {
- final Cache mockCache = mockContext.mock(Cache.class, "Cache");
-
- final FunctionContext mockFunctionContext =
- mockContext.mock(FunctionContext.class, "FunctionContext");
-
- final TestResultSender testResultSender = new TestResultSender();
-
- mockContext.checking(new Expectations() {
- {
- exactly(0).of(mockFunctionContext).getResultSender();
- will(returnValue(testResultSender));
- }
- });
-
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
-
- function.execute(mockFunctionContext);
-
- final List<?> results = testResultSender.getResults();
-
- assertNotNull(results);
- assertTrue(results.isEmpty());
- }
-
- @Test
public void testExecuteThrowingDiskStoreNotFoundException() throws Exception {
final String diskStoreName = "testDiskStore";
final String memberId = "mockMemberId";
@@ -640,10 +615,12 @@ public class DescribeDiskStoreFunctionJUnitTest {
will(returnValue(diskStoreName));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.execute(mockFunctionContext);
@@ -683,10 +660,12 @@ public class DescribeDiskStoreFunctionJUnitTest {
will(returnValue(diskStoreName));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.execute(mockFunctionContext);
@@ -740,10 +719,12 @@ public class DescribeDiskStoreFunctionJUnitTest {
will(returnValue(diskStoreName));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.execute(mockFunctionContext);
@@ -769,7 +750,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(expectedDiskStoreName, function.getDiskStoreName(mockRegion));
}
@@ -789,7 +770,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(DiskStoreDetails.DEFAULT_DISK_STORE_NAME, function.getDiskStoreName(mockRegion));
}
@@ -813,7 +794,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isOverflowToDisk(mockRegion));
}
@@ -837,7 +818,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isOverflowToDisk(mockRegion));
}
@@ -857,7 +838,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isOverflowToDisk(mockRegion));
}
@@ -877,7 +858,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isPersistent(mockRegion));
}
@@ -897,7 +878,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isPersistent(mockRegion));
}
@@ -917,7 +898,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isPersistent(mockRegion));
}
@@ -937,7 +918,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isPersistent(mockRegion));
}
@@ -957,7 +938,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isPersistent(mockRegion));
}
@@ -977,7 +958,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isPersistent(mockRegion));
}
@@ -1002,7 +983,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockRegion, mockDiskStore));
}
@@ -1029,7 +1010,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockRegion, mockDiskStore));
}
@@ -1062,7 +1043,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockRegion, mockDiskStore));
}
@@ -1087,7 +1068,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isUsingDiskStore(mockRegion, mockDiskStore));
}
@@ -1237,7 +1218,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
final DiskStoreDetails diskStoreDetails = new DiskStoreDetails(diskStoreName, "memberOne");
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.setRegionDetails(mockCache, mockDiskStore, diskStoreDetails);
@@ -1261,7 +1242,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(expectedDiskStoreName, function.getDiskStoreName(mockCacheServer));
}
@@ -1281,7 +1262,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(DiskStoreDetails.DEFAULT_DISK_STORE_NAME,
function.getDiskStoreName(mockCacheServer));
@@ -1298,7 +1279,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertNull(function.getDiskStoreName(mockCacheServer));
}
@@ -1323,7 +1304,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockCacheServer, mockDiskStore));
}
@@ -1346,7 +1327,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isUsingDiskStore(mockCacheServer, mockDiskStore));
}
@@ -1369,7 +1350,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockCacheServer, mockDiskStore));
}
@@ -1421,7 +1402,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
final DiskStoreDetails diskStoreDetails = new DiskStoreDetails(diskStoreName, "memberOne");
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.setCacheServerDetails(mockCache, mockDiskStore, diskStoreDetails);
@@ -1441,7 +1422,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(expectedDiskStoreName, function.getDiskStoreName(mockGatewaySender));
}
@@ -1457,7 +1438,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(DiskStoreDetails.DEFAULT_DISK_STORE_NAME,
function.getDiskStoreName(mockGatewaySender));
@@ -1474,7 +1455,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isPersistent(mockGatewaySender));
}
@@ -1490,7 +1471,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isPersistent(mockGatewaySender));
}
@@ -1512,7 +1493,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockGatewaySender, mockDiskStore));
}
@@ -1532,7 +1513,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isUsingDiskStore(mockGatewaySender, mockDiskStore));
}
@@ -1552,7 +1533,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockGatewaySender, mockDiskStore));
}
@@ -1578,7 +1559,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
final DiskStoreDetails diskStoreDetails = new DiskStoreDetails(diskStoreName, "memberOne");
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.setPdxSerializationDetails(mockCache, mockDiskStore, diskStoreDetails);
@@ -1604,7 +1585,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
final DiskStoreDetails diskStoreDetails = new DiskStoreDetails("testDiskStore", "memberOne");
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.setPdxSerializationDetails(mockCache, mockDiskStore, diskStoreDetails);
@@ -1626,7 +1607,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
final DiskStoreDetails diskStoreDetails = new DiskStoreDetails("testDiskStore", "memberOne");
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.setPdxSerializationDetails(mockCache, mockDiskStore, diskStoreDetails);
@@ -1646,7 +1627,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(expectedDiskStoreName, function.getDiskStoreName(mockQueue));
}
@@ -1662,7 +1643,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertEquals(DiskStoreDetails.DEFAULT_DISK_STORE_NAME, function.getDiskStoreName(mockQueue));
}
@@ -1686,7 +1667,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockQueue, mockDiskStore));
}
@@ -1708,7 +1689,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isUsingDiskStore(mockQueue, mockDiskStore));
}
@@ -1728,7 +1709,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertFalse(function.isUsingDiskStore(mockQueue, mockDiskStore));
}
@@ -1750,7 +1731,7 @@ public class DescribeDiskStoreFunctionJUnitTest {
}
});
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(null);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
assertTrue(function.isUsingDiskStore(mockQueue, mockDiskStore));
}
@@ -1793,27 +1774,13 @@ public class DescribeDiskStoreFunctionJUnitTest {
final DiskStoreDetails diskStoreDetails = new DiskStoreDetails(diskStoreName, "memberOne");
- final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction(mockCache);
+ final DescribeDiskStoreFunction function = createDescribeDiskStoreFunction();
function.setAsyncEventQueueDetails(mockCache, mockDiskStore, diskStoreDetails);
assertAsyncEventQueueDetails(expectedAsyncEventQueueDetails, diskStoreDetails);
}
- private static class TestDescribeDiskStoreFunction extends DescribeDiskStoreFunction {
-
- private final Cache cache;
-
- public TestDescribeDiskStoreFunction(final Cache cache) {
- this.cache = cache;
- }
-
- @Override
- protected Cache getCache() {
- return this.cache;
- }
- }
-
private static class TestResultSender implements ResultSender {
private final List<Object> results = new LinkedList<>();
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunctionJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunctionJUnitTest.java
index a8b9193..67c9503 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunctionJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListDiskStoresFunctionJUnitTest.java
@@ -34,11 +34,9 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
-import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.DiskStoreImpl;
import org.apache.geode.internal.cache.InternalCache;
@@ -85,8 +83,8 @@ public class ListDiskStoresFunctionJUnitTest {
return new DiskStoreDetails(id, name, memberId, memberName);
}
- private ListDiskStoresFunction createListDiskStoresFunction(final Cache cache) {
- return new TestListDiskStoresFunction(cache);
+ private ListDiskStoresFunction createListDiskStoresFunction() {
+ return new ListDiskStoresFunction();
}
@Test
@@ -144,10 +142,12 @@ public class ListDiskStoresFunctionJUnitTest {
will(returnValue("ds-persistence"));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final ListDiskStoresFunction function = createListDiskStoresFunction(mockCache);
+ final ListDiskStoresFunction function = createListDiskStoresFunction();
function.execute(mockFunctionContext);
@@ -171,13 +171,7 @@ public class ListDiskStoresFunctionJUnitTest {
final FunctionContext mockFunctionContext =
mockContext.mock(FunctionContext.class, "MockFunctionContext");
- final ListDiskStoresFunction testListDiskStoresFunction =
- new TestListDiskStoresFunction(mockContext.mock(Cache.class, "MockCache")) {
- @Override
- protected Cache getCache() {
- throw new CacheClosedException("Expected");
- }
- };
+ final ListDiskStoresFunction testListDiskStoresFunction = new ListDiskStoresFunction();
final TestResultSender testResultSender = new TestResultSender();
@@ -185,6 +179,9 @@ public class ListDiskStoresFunctionJUnitTest {
{
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+
+ allowing(mockFunctionContext).getCache();
+ will(throwException(new CacheClosedException("Expected")));
}
});
@@ -219,10 +216,12 @@ public class ListDiskStoresFunctionJUnitTest {
will(returnValue(Collections.emptyList()));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final ListDiskStoresFunction function = createListDiskStoresFunction(mockCache);
+ final ListDiskStoresFunction function = createListDiskStoresFunction();
function.execute(mockFunctionContext);
@@ -240,7 +239,7 @@ public class ListDiskStoresFunctionJUnitTest {
@Test
@SuppressWarnings("unchecked")
public void testExecuteOnMemberWithANonGemFireCache() throws Throwable {
- final Cache mockCache = mockContext.mock(Cache.class, "Cache");
+ final InternalCache mockCache = mockContext.mock(InternalCache.class, "InternalCache");
final FunctionContext mockFunctionContext =
mockContext.mock(FunctionContext.class, "FunctionContext");
@@ -251,10 +250,14 @@ public class ListDiskStoresFunctionJUnitTest {
{
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
+ allowing(mockCache).getMyId();
+ allowing(mockCache).listDiskStoresIncludingRegionOwned();
}
});
- final ListDiskStoresFunction function = createListDiskStoresFunction(mockCache);
+ final ListDiskStoresFunction function = createListDiskStoresFunction();
function.execute(mockFunctionContext);
@@ -289,10 +292,12 @@ public class ListDiskStoresFunctionJUnitTest {
will(throwException(new RuntimeException("expected")));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final ListDiskStoresFunction function = createListDiskStoresFunction(mockCache);
+ final ListDiskStoresFunction function = createListDiskStoresFunction();
function.execute(mockFunctionContext);
@@ -305,21 +310,6 @@ public class ListDiskStoresFunctionJUnitTest {
}
}
- private static class TestListDiskStoresFunction extends ListDiskStoresFunction {
-
- private final Cache cache;
-
- public TestListDiskStoresFunction(final Cache cache) {
- assert cache != null : "The Cache cannot be null!";
- this.cache = cache;
- }
-
- @Override
- protected Cache getCache() {
- return cache;
- }
- }
-
private static class TestResultSender implements ResultSender {
private final List<Object> results = new LinkedList<Object>();
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListIndexFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListIndexFunctionJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListIndexFunctionJUnitTest.java
index 583aa56..335598c 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListIndexFunctionJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ListIndexFunctionJUnitTest.java
@@ -155,8 +155,8 @@ public class ListIndexFunctionJUnitTest {
return indexStatisticsDetails;
}
- private ListIndexFunction createListIndexFunction(final Cache cache) {
- return new TestListIndexFunction(cache);
+ private ListIndexFunction createListIndexFunction() {
+ return new ListIndexFunction();
}
private Index createMockIndex(final IndexDetails indexDetails) {
@@ -297,10 +297,12 @@ public class ListIndexFunctionJUnitTest {
createMockIndex(indexDetailsThree), createMockIndex(indexDetailsFour))));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final ListIndexFunction function = createListIndexFunction(mockCache);
+ final ListIndexFunction function = createListIndexFunction();
function.execute(mockFunctionContext);
@@ -357,10 +359,12 @@ public class ListIndexFunctionJUnitTest {
will(returnValue(Collections.emptyList()));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final ListIndexFunction function = createListIndexFunction(mockCache);
+ final ListIndexFunction function = createListIndexFunction();
function.execute(mockFunctionContext);
@@ -403,10 +407,12 @@ public class ListIndexFunctionJUnitTest {
will(throwException(new RuntimeException("expected")));
oneOf(mockFunctionContext).getResultSender();
will(returnValue(testResultSender));
+ allowing(mockFunctionContext).getCache();
+ will(returnValue(mockCache));
}
});
- final ListIndexFunction function = createListIndexFunction(mockCache);
+ final ListIndexFunction function = createListIndexFunction();
function.execute(mockFunctionContext);
@@ -419,21 +425,6 @@ public class ListIndexFunctionJUnitTest {
}
}
- private static class TestListIndexFunction extends ListIndexFunction {
-
- private final Cache cache;
-
- protected TestListIndexFunction(final Cache cache) {
- assert cache != null : "The Cache cannot be null!";
- this.cache = cache;
- }
-
- @Override
- protected Cache getCache() {
- return this.cache;
- }
- }
-
private static class TestResultSender implements ResultSender {
private final List<Object> results = new LinkedList<Object>();
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
index d627da9..d9d8f1e 100755
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
@@ -248,7 +248,6 @@ org/apache/geode/internal/SystemAdmin$CombinedResources,false
org/apache/geode/internal/admin/CompoundEntrySnapshot,true,5776382582897895718,allUserAttributes:java/util/Set,allValues:java/util/Set,hitRatio:float,hitRatioSum:double,hitResponders:long,lastAccessTime:long,lastModifiedTime:long,name:java/lang/Object,numHits:long,numMisses:long
org/apache/geode/internal/admin/CompoundRegionSnapshot,true,6295026394298398004,allCacheLoaders:java/util/Set,allCacheWriters:java/util/Set,allCapControllers:java/util/Set,allConcLevels:java/util/Set,allCustomIdle:java/util/HashSet,allCustomTtl:java/util/HashSet,allDataPolicies:java/util/Set,allEntryIdleTimeout:java/util/Set,allEntryTtl:java/util/Set,allInitialCaps:java/util/Set,allKeyConstraints:java/util/Set,allListeners:java/util/Set,allLoadFactors:java/util/Set,allRegionIdleTimeout:java/util/Set,allRegionTtl:java/util/Set,allScopes:java/util/Set,allStatsEnabled:java/util/Set,allUserAttributes:java/util/Set,allValueConstraints:java/util/Set,hitRatio:float,hitRatioSum:double,hitResponders:long,lastAccessTime:long,lastModifiedTime:long,name:java/lang/String,numHits:long,numMisses:long
org/apache/geode/internal/admin/StatAlert,true,5725457607122449170,definitionId:int,time:java/util/Date,values:java/lang/Number[]
-org/apache/geode/internal/admin/remote/DistributionLocatorId,true,6587390186971937865,bindAddress:java/lang/String,host:java/net/InetAddress,hostnameForClients:java/lang/String,peerLocator:boolean,port:int,serverLocator:boolean
org/apache/geode/internal/admin/remote/EntryValueNodeImpl,false,fields:org/apache/geode/internal/admin/remote/EntryValueNodeImpl[],name:java/lang/String,primitive:boolean,primitiveVal:java/lang/Object,type:java/lang/String
org/apache/geode/internal/cache/BucketAdvisor$SetFromMap,true,2454657854757543876,m:java/util/Map
org/apache/geode/internal/cache/BucketNotFoundException,true,2898657229184289911
@@ -447,7 +446,6 @@ org/apache/geode/internal/process/PidUnavailableException,true,-1660269538268828
org/apache/geode/internal/process/signal/Signal,false,description:java/lang/String,name:java/lang/String,number:int,type:org/apache/geode/internal/process/signal/SignalType
org/apache/geode/internal/process/signal/SignalEvent,false,signal:org/apache/geode/internal/process/signal/Signal
org/apache/geode/internal/process/signal/SignalType,false,description:java/lang/String
-org/apache/geode/internal/security/SecurityServiceType,false
org/apache/geode/internal/sequencelog/GraphType,false
org/apache/geode/internal/sequencelog/model/GraphID,false,graphName:java/lang/String,type:org/apache/geode/internal/sequencelog/GraphType
org/apache/geode/internal/size/ReflectionObjectSizer,false
@@ -540,9 +538,6 @@ org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction,
org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction,true,1
org/apache/geode/management/internal/cli/functions/CreateIndexFunction,true,1
org/apache/geode/management/internal/cli/functions/DataCommandFunction,true,1,optimizeForWrite:boolean
-org/apache/geode/management/internal/cli/functions/DataCommandFunction$SelectExecStep,true,1
-org/apache/geode/management/internal/cli/functions/DataCommandFunction$SelectMoveStep,true,1
-org/apache/geode/management/internal/cli/functions/DataCommandFunction$SelectQuitStep,true,1
org/apache/geode/management/internal/cli/functions/DeployFunction,true,1
org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction,false
org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction,true,1
@@ -574,10 +569,9 @@ org/apache/geode/management/internal/cli/functions/ListDiskStoresFunction,false
org/apache/geode/management/internal/cli/functions/ListDurableCqNamesFunction,true,1
org/apache/geode/management/internal/cli/functions/ListFunctionFunction,true,1
org/apache/geode/management/internal/cli/functions/ListIndexFunction,false
-org/apache/geode/management/internal/cli/functions/MemberRegionFunction,true,1
org/apache/geode/management/internal/cli/functions/MembersForRegionFunction,true,8746830191680509335
org/apache/geode/management/internal/cli/functions/NetstatFunction,true,1
-org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionArgument,true,1,lineSeparator:java/lang/String,withlsof:boolean
+org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionArgument,true,1,lineSeparator:java/lang/String,withLsof:boolean
org/apache/geode/management/internal/cli/functions/NetstatFunction$NetstatFunctionResult,true,1,compressedBytes:org/apache/geode/management/internal/cli/CliUtil$DeflaterInflaterData,headerInfo:java/lang/String,host:java/lang/String
org/apache/geode/management/internal/cli/functions/RebalanceFunction,true,1
org/apache/geode/management/internal/cli/functions/RegionAlterFunction,true,-4846425364943216425
@@ -594,9 +588,6 @@ org/apache/geode/management/internal/cli/functions/UndeployFunction,true,1
org/apache/geode/management/internal/cli/functions/UnregisterFunction,true,1
org/apache/geode/management/internal/cli/functions/UserFunctionExecution,true,1
org/apache/geode/management/internal/cli/json/GfJsonException,true,36449998984143318
-org/apache/geode/management/internal/cli/multistep/CLIMultiStepHelper$RemoteStep,false,commandArguments:java/lang/Object[],name:java/lang/String
-org/apache/geode/management/internal/cli/multistep/CLIMultiStepHelper$StepExecutionException,true,1,message:java/lang/String
-org/apache/geode/management/internal/cli/multistep/CLIStepExecption,false,result:org/apache/geode/management/cli/Result
org/apache/geode/management/internal/cli/result/CommandResultException,true,1,result:org/apache/geode/management/cli/Result
org/apache/geode/management/internal/cli/result/ResultDataException,true,3851919811942980944
org/apache/geode/management/internal/cli/result/TableBuilder$Align,false
[43/50] [abbrv] geode git commit: GEODE-2226:
SessionReplicationIntegrationTests do not run on Windows
Posted by kl...@apache.org.
GEODE-2226: SessionReplicationIntegrationTests do not run on Windows
* Disable SessionReplicationIntegrationTests on Windows
This closes #669
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/9d59402b
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/9d59402b
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/9d59402b
Branch: refs/heads/feature/GEODE-3299
Commit: 9d59402b71beea84199c79399aa0260955a19d2c
Parents: 6f4bf30
Author: Lynn Hughes-Godfrey <lh...@pivotal.io>
Authored: Fri Jul 28 16:15:01 2017 -0700
Committer: Lynn Hughes-Godfrey <lh...@pivotal.io>
Committed: Mon Jul 31 17:14:35 2017 -0700
----------------------------------------------------------------------
.../internal/filter/SessionReplicationIntegrationJUnitTest.java | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/9d59402b/extensions/geode-modules-session/src/test/java/org/apache/geode/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
----------------------------------------------------------------------
diff --git a/extensions/geode-modules-session/src/test/java/org/apache/geode/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java b/extensions/geode-modules-session/src/test/java/org/apache/geode/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
index cc52bde..5a0add2 100644
--- a/extensions/geode-modules-session/src/test/java/org/apache/geode/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
+++ b/extensions/geode-modules-session/src/test/java/org/apache/geode/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
@@ -35,6 +35,7 @@ import org.eclipse.jetty.http.HttpTester;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.ServletHolder;
import org.junit.After;
+import org.junit.Assume;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -83,6 +84,9 @@ public class SessionReplicationIntegrationJUnitTest {
@Before
public void setUp() throws Exception {
+
+ Assume.assumeFalse(System.getProperty("os.name").toLowerCase().contains("win"));
+
File gemfireLogFile = new File(tmpdir.newFolder(), "gemfire_modules.log");
request = HttpTester.newRequest();
[44/50] [abbrv] geode git commit: GEODE-3256: Refactoring DataCommands
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java
new file mode 100644
index 0000000..2308405
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ImportDataCommand.java
@@ -0,0 +1,94 @@
+/*
+ * 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.util.List;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.CacheClosedException;
+import org.apache.geode.cache.execute.FunctionInvocationTargetException;
+import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.functions.ImportDataFunction;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+
+public class ImportDataCommand implements GfshCommand {
+ private final ImportDataFunction importDataFunction = new ImportDataFunction();
+
+ @CliCommand(value = CliStrings.IMPORT_DATA, help = CliStrings.IMPORT_DATA__HELP)
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ public Result importData(
+ @CliOption(key = CliStrings.IMPORT_DATA__REGION, optionContext = ConverterHint.REGION_PATH,
+ mandatory = true, help = CliStrings.IMPORT_DATA__REGION__HELP) String regionName,
+ @CliOption(key = CliStrings.IMPORT_DATA__FILE, mandatory = true,
+ help = CliStrings.IMPORT_DATA__FILE__HELP) String filePath,
+ @CliOption(key = CliStrings.MEMBER, mandatory = true,
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.IMPORT_DATA__MEMBER__HELP) String memberNameOrId,
+ @CliOption(key = CliStrings.IMPORT_DATA__INVOKE_CALLBACKS, unspecifiedDefaultValue = "false",
+ help = CliStrings.IMPORT_DATA__INVOKE_CALLBACKS__HELP) boolean invokeCallbacks) {
+
+ getSecurityService().authorizeRegionWrite(regionName);
+
+ Result result;
+
+ try {
+ final DistributedMember targetMember = CliUtil.getDistributedMemberByNameOrId(memberNameOrId);
+
+ if (!filePath.endsWith(CliStrings.GEODE_DATA_FILE_EXTENSION)) {
+ return ResultBuilder.createUserErrorResult(CliStrings
+ .format(CliStrings.INVALID_FILE_EXTENSION, CliStrings.GEODE_DATA_FILE_EXTENSION));
+ }
+ if (targetMember != null) {
+ final Object args[] = {regionName, filePath, invokeCallbacks};
+ ResultCollector<?, ?> rc = CliUtil.executeFunction(importDataFunction, args, targetMember);
+ List<Object> results = (List<Object>) rc.getResult();
+
+ if (results != null) {
+ Object resultObj = results.get(0);
+
+ if (resultObj instanceof String) {
+ result = ResultBuilder.createInfoResult((String) resultObj);
+ } else if (resultObj instanceof Exception) {
+ result = ResultBuilder.createGemFireErrorResult(((Exception) resultObj).getMessage());
+ } else {
+ result = ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
+ }
+ } else {
+ result = ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
+ }
+ } else {
+ result = ResultBuilder.createUserErrorResult(
+ CliStrings.format(CliStrings.IMPORT_DATA__MEMBER__NOT__FOUND, memberNameOrId));
+ }
+ } catch (CacheClosedException e) {
+ result = ResultBuilder.createGemFireErrorResult(e.getMessage());
+ } catch (FunctionInvocationTargetException e) {
+ result = ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java
new file mode 100644
index 0000000..f4caf13
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LocateEntryCommand.java
@@ -0,0 +1,91 @@
+/*
+ * 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 static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult;
+
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.domain.DataCommandRequest;
+import org.apache.geode.management.internal.cli.domain.DataCommandResult;
+import org.apache.geode.management.internal.cli.functions.DataCommandFunction;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+
+public class LocateEntryCommand implements GfshCommand {
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ @CliCommand(value = {CliStrings.LOCATE_ENTRY}, help = CliStrings.LOCATE_ENTRY__HELP)
+ public Result locateEntry(
+ @CliOption(key = {CliStrings.LOCATE_ENTRY__KEY}, mandatory = true,
+ help = CliStrings.LOCATE_ENTRY__KEY__HELP) String key,
+ @CliOption(key = {CliStrings.LOCATE_ENTRY__REGIONNAME}, mandatory = true,
+ help = CliStrings.LOCATE_ENTRY__REGIONNAME__HELP,
+ optionContext = ConverterHint.REGION_PATH) String regionPath,
+ @CliOption(key = {CliStrings.LOCATE_ENTRY__KEYCLASS},
+ help = CliStrings.LOCATE_ENTRY__KEYCLASS__HELP) String keyClass,
+ @CliOption(key = {CliStrings.LOCATE_ENTRY__VALUEKLASS},
+ help = CliStrings.LOCATE_ENTRY__VALUEKLASS__HELP) String valueClass,
+ @CliOption(key = {CliStrings.LOCATE_ENTRY__RECURSIVE},
+ help = CliStrings.LOCATE_ENTRY__RECURSIVE__HELP,
+ unspecifiedDefaultValue = "false") boolean recursive) {
+
+ getSecurityService().authorizeRegionRead(regionPath, key);
+
+ DataCommandResult dataResult;
+
+ if (StringUtils.isEmpty(regionPath)) {
+ return makePresentationResult(DataCommandResult.createLocateEntryResult(key, null, null,
+ CliStrings.LOCATE_ENTRY__MSG__REGIONNAME_EMPTY, false));
+ }
+
+ if (StringUtils.isEmpty(key)) {
+ return makePresentationResult(DataCommandResult.createLocateEntryResult(key, null, null,
+ CliStrings.LOCATE_ENTRY__MSG__KEY_EMPTY, false));
+ }
+
+ DataCommandFunction locateEntry = new DataCommandFunction();
+ Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), true);
+ if (CollectionUtils.isNotEmpty(memberList)) {
+ DataCommandRequest request = new DataCommandRequest();
+ request.setCommand(CliStrings.LOCATE_ENTRY);
+ request.setKey(key);
+ request.setKeyClass(keyClass);
+ request.setRegionName(regionPath);
+ request.setValueClass(valueClass);
+ request.setRecursive(recursive);
+ dataResult = callFunctionForRegion(request, locateEntry, memberList);
+ } else {
+ dataResult = DataCommandResult.createLocateEntryInfoResult(key, null, null, CliStrings.format(
+ CliStrings.LOCATE_ENTRY__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath), false);
+ }
+ dataResult.setKeyClass(keyClass);
+ if (valueClass != null) {
+ dataResult.setValueClass(valueClass);
+ }
+
+ return makePresentationResult(dataResult);
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java
new file mode 100644
index 0000000..3571f6d
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PutCommand.java
@@ -0,0 +1,105 @@
+/*
+ * 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 static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult;
+
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.Region;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.domain.DataCommandRequest;
+import org.apache.geode.management.internal.cli.domain.DataCommandResult;
+import org.apache.geode.management.internal.cli.functions.DataCommandFunction;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+
+public class PutCommand implements GfshCommand {
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ @CliCommand(value = {CliStrings.PUT}, help = CliStrings.PUT__HELP)
+ public Result put(
+ @CliOption(key = {CliStrings.PUT__KEY}, mandatory = true,
+ help = CliStrings.PUT__KEY__HELP) String key,
+ @CliOption(key = {CliStrings.PUT__VALUE}, mandatory = true,
+ help = CliStrings.PUT__VALUE__HELP) String value,
+ @CliOption(key = {CliStrings.PUT__REGIONNAME}, mandatory = true,
+ help = CliStrings.PUT__REGIONNAME__HELP,
+ optionContext = ConverterHint.REGION_PATH) String regionPath,
+ @CliOption(key = {CliStrings.PUT__KEYCLASS},
+ help = CliStrings.PUT__KEYCLASS__HELP) String keyClass,
+ @CliOption(key = {CliStrings.PUT__VALUEKLASS},
+ help = CliStrings.PUT__VALUEKLASS__HELP) String valueClass,
+ @CliOption(key = {CliStrings.PUT__PUTIFABSENT}, help = CliStrings.PUT__PUTIFABSENT__HELP,
+ unspecifiedDefaultValue = "false") boolean putIfAbsent) {
+
+ InternalCache cache = getCache();
+ cache.getSecurityService().authorizeRegionWrite(regionPath);
+ DataCommandResult dataResult;
+ if (StringUtils.isEmpty(regionPath)) {
+ return makePresentationResult(DataCommandResult.createPutResult(key, null, null,
+ CliStrings.PUT__MSG__REGIONNAME_EMPTY, false));
+ }
+
+ if (StringUtils.isEmpty(key)) {
+ return makePresentationResult(DataCommandResult.createPutResult(key, null, null,
+ CliStrings.PUT__MSG__KEY_EMPTY, false));
+ }
+
+ if (StringUtils.isEmpty(value)) {
+ return makePresentationResult(DataCommandResult.createPutResult(value, null, null,
+ CliStrings.PUT__MSG__VALUE_EMPTY, false));
+ }
+
+ @SuppressWarnings("rawtypes")
+ Region region = cache.getRegion(regionPath);
+ DataCommandFunction putfn = new DataCommandFunction();
+ if (region == null) {
+ Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false);
+ if (CollectionUtils.isNotEmpty(memberList)) {
+ DataCommandRequest request = new DataCommandRequest();
+ request.setCommand(CliStrings.PUT);
+ request.setValue(value);
+ request.setKey(key);
+ request.setKeyClass(keyClass);
+ request.setRegionName(regionPath);
+ request.setValueClass(valueClass);
+ request.setPutIfAbsent(putIfAbsent);
+ dataResult = callFunctionForRegion(request, putfn, memberList);
+ } else {
+ dataResult = DataCommandResult.createPutInfoResult(key, value, null,
+ CliStrings.format(CliStrings.PUT__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath),
+ false);
+ }
+ } else {
+ dataResult = putfn.put(key, value, putIfAbsent, keyClass, valueClass, regionPath);
+ }
+ dataResult.setKeyClass(keyClass);
+ if (valueClass != null) {
+ dataResult.setValueClass(valueClass);
+ }
+ return makePresentationResult(dataResult);
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java
index 513cd65..3c039b3 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueryCommand.java
@@ -18,6 +18,8 @@ package org.apache.geode.management.internal.cli.commands;
import java.io.File;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
@@ -27,6 +29,8 @@ import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.execute.FunctionService;
+import org.apache.geode.cache.execute.ResultCollector;
import org.apache.geode.cache.query.QueryInvalidException;
import org.apache.geode.cache.query.internal.CompiledValue;
import org.apache.geode.cache.query.internal.QCompiler;
@@ -71,7 +75,7 @@ public class QueryCommand implements GfshCommand {
return dataResult;
}
- Object array[] = DataCommands.replaceGfshEnvVar(query, CommandExecutionContext.getShellEnv());
+ Object array[] = replaceGfshEnvVar(query, CommandExecutionContext.getShellEnv());
query = (String) array[1];
boolean limitAdded = false;
@@ -97,7 +101,7 @@ public class QueryCommand implements GfshCommand {
regionsInQuery = Collections.unmodifiableSet(regions);
if (regionsInQuery.size() > 0) {
Set<DistributedMember> members =
- DataCommands.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false);
+ DataCommandsUtils.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false);
if (members != null && members.size() > 0) {
DataCommandFunction function = new DataCommandFunction();
DataCommandRequest request = new DataCommandRequest();
@@ -107,7 +111,7 @@ public class QueryCommand implements GfshCommand {
if (subject != null) {
request.setPrincipal(subject.getPrincipal());
}
- dataResult = DataCommands.callFunctionForRegion(request, function, members);
+ dataResult = callFunctionForRegion(request, function, members);
dataResult.setInputQuery(query);
if (limitAdded) {
dataResult.setLimit(CommandExecutionContext.getShellFetchSize());
@@ -129,4 +133,75 @@ public class QueryCommand implements GfshCommand {
CliStrings.format(CliStrings.QUERY__MSG__INVALID_QUERY, qe.getMessage()), false);
}
}
+
+ public static DataCommandResult callFunctionForRegion(DataCommandRequest request,
+ DataCommandFunction putfn, Set<DistributedMember> members) {
+
+ if (members.size() == 1) {
+ DistributedMember member = members.iterator().next();
+ ResultCollector collector =
+ FunctionService.onMember(member).setArguments(request).execute(putfn);
+ List list = (List) collector.getResult();
+ Object object = list.get(0);
+ if (object instanceof Throwable) {
+ Throwable error = (Throwable) object;
+ DataCommandResult result = new DataCommandResult();
+ result.setErorr(error);
+ result.setErrorString(error.getMessage());
+ return result;
+ }
+ DataCommandResult result = (DataCommandResult) list.get(0);
+ result.aggregate(null);
+ return result;
+ } else {
+ ResultCollector collector =
+ FunctionService.onMembers(members).setArguments(request).execute(putfn);
+ List list = (List) collector.getResult();
+ DataCommandResult result = null;
+ for (Object object : list) {
+ if (object instanceof Throwable) {
+ Throwable error = (Throwable) object;
+ result = new DataCommandResult();
+ result.setErorr(error);
+ result.setErrorString(error.getMessage());
+ return result;
+ }
+
+ if (result == null) {
+ result = (DataCommandResult) object;
+ result.aggregate(null);
+ } else {
+ result.aggregate((DataCommandResult) object);
+ }
+ }
+ return result;
+ }
+ }
+
+ private static Object[] replaceGfshEnvVar(String query, Map<String, String> gfshEnvVarMap) {
+ boolean done = false;
+ int startIndex = 0;
+ int replacedVars = 0;
+ while (!done) {
+ int index1 = query.indexOf("${", startIndex);
+ if (index1 == -1) {
+ break;
+ }
+ int index2 = query.indexOf("}", index1);
+ if (index2 == -1) {
+ break;
+ }
+ String var = query.substring(index1 + 2, index2);
+ String value = gfshEnvVarMap.get(var);
+ if (value != null) {
+ query = query.replaceAll("\\$\\{" + var + "\\}", value);
+ replacedVars++;
+ }
+ startIndex = index2 + 1;
+ if (startIndex >= query.length()) {
+ done = true;
+ }
+ }
+ return new Object[] {replacedVars, query};
+ }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java
new file mode 100644
index 0000000..85801ba
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java
@@ -0,0 +1,592 @@
+/*
+ * 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 static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.checkResultList;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.toCompositeResultData;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.tokenize;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.control.RebalanceFactory;
+import org.apache.geode.cache.control.RebalanceOperation;
+import org.apache.geode.cache.control.RebalanceResults;
+import org.apache.geode.cache.control.ResourceManager;
+import org.apache.geode.cache.execute.Function;
+import org.apache.geode.cache.partition.PartitionRebalanceInfo;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.DistributedRegionMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.MBeanJMXAdapter;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.functions.RebalanceFunction;
+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.ErrorResultData;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class RebalanceCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.REBALANCE, help = CliStrings.REBALANCE__HELP)
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ @ResourceOperation(resource = ResourcePermission.Resource.DATA,
+ operation = ResourcePermission.Operation.MANAGE)
+ public Result rebalance(
+ @CliOption(key = CliStrings.REBALANCE__INCLUDEREGION,
+ help = CliStrings.REBALANCE__INCLUDEREGION__HELP) String[] includeRegions,
+ @CliOption(key = CliStrings.REBALANCE__EXCLUDEREGION,
+ help = CliStrings.REBALANCE__EXCLUDEREGION__HELP) String[] excludeRegions,
+ @CliOption(key = CliStrings.REBALANCE__TIMEOUT, unspecifiedDefaultValue = "-1",
+ help = CliStrings.REBALANCE__TIMEOUT__HELP) long timeout,
+ @CliOption(key = CliStrings.REBALANCE__SIMULATE, specifiedDefaultValue = "true",
+ unspecifiedDefaultValue = "false",
+ help = CliStrings.REBALANCE__SIMULATE__HELP) boolean simulate) {
+
+ ExecutorService commandExecutors = Executors.newSingleThreadExecutor();
+ List<Future<Result>> commandResult = new ArrayList<>();
+ Result result;
+ try {
+ commandResult.add(commandExecutors
+ .submit(new ExecuteRebalanceWithTimeout(includeRegions, excludeRegions, simulate)));
+
+ Future<Result> fs = commandResult.get(0);
+ if (timeout > 0) {
+ result = fs.get(timeout, TimeUnit.SECONDS);
+ } else {
+ result = fs.get();
+
+ }
+ } catch (TimeoutException timeoutException) {
+ result = ResultBuilder.createInfoResult(CliStrings.REBALANCE__MSG__REBALANCE_WILL_CONTINUE);
+
+ } catch (Exception ex) {
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.format(
+ CliStrings.REBALANCE__MSG__EXCEPTION_OCCURRED_WHILE_REBALANCING_0, ex.getMessage()));
+ }
+ LogWrapper.getInstance().info("Rebalance returning result >>>" + result);
+ return result;
+ }
+
+ // TODO EY Move this to its own class
+ private class ExecuteRebalanceWithTimeout implements Callable<Result> {
+ String[] includeRegions = null;
+ String[] excludeRegions = null;
+ boolean simulate;
+ InternalCache cache = getCache();
+
+ @Override
+ public Result call() throws Exception {
+ return executeRebalanceWithTimeout(includeRegions, excludeRegions, simulate);
+ }
+
+ ExecuteRebalanceWithTimeout(String[] includedRegions, String[] excludedRegions,
+ boolean toSimulate) {
+ includeRegions = includedRegions;
+ excludeRegions = excludedRegions;
+ simulate = toSimulate;
+ }
+
+ Result executeRebalanceWithTimeout(String[] includeRegions, String[] excludeRegions,
+ boolean simulate) {
+
+ Result result = null;
+ try {
+ RebalanceOperation op;
+
+ if (ArrayUtils.isNotEmpty(includeRegions)) {
+ CompositeResultData rebalanceResultData = ResultBuilder.createCompositeResultData();
+ int index = 0;
+
+ for (String regionName : includeRegions) {
+
+ // To be removed after region Name specification with "/" is fixed
+ regionName = regionName.startsWith("/") ? regionName : ("/" + regionName);
+ Region region = cache.getRegion(regionName);
+
+ if (region == null) {
+ DistributedMember member = getAssociatedMembers(regionName, cache);
+
+ if (member == null) {
+ LogWrapper.getInstance().info(CliStrings.format(
+ CliStrings.REBALANCE__MSG__NO_ASSOCIATED_DISTRIBUTED_MEMBER, regionName));
+ continue;
+ }
+
+ Function rebalanceFunction = new RebalanceFunction();
+ Object[] functionArgs = new Object[3];
+ functionArgs[0] = simulate ? "true" : "false";
+ Set<String> setRegionName = new HashSet<>();
+ setRegionName.add(regionName);
+ functionArgs[1] = setRegionName;
+
+ Set<String> excludeRegionSet = new HashSet<>();
+ if (ArrayUtils.isNotEmpty(excludeRegions)) {
+ Collections.addAll(excludeRegionSet, excludeRegions);
+ }
+ functionArgs[2] = excludeRegionSet;
+
+ if (simulate) {
+ List resultList;
+ try {
+ resultList = (ArrayList) CliUtil
+ .executeFunction(rebalanceFunction, functionArgs, member).getResult();
+ } catch (Exception ex) {
+ LogWrapper.getInstance()
+ .info(CliStrings.format(
+ CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception_1,
+ member.getId(), ex.getMessage()), ex);
+ rebalanceResultData.addSection()
+ .addData(CliStrings.format(
+ CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception,
+ member.getId()), ex.getMessage());
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ continue;
+ }
+
+ if (checkResultList(rebalanceResultData, resultList, member)) {
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ continue;
+ }
+ List<String> rstList = tokenize((String) resultList.get(0), ",");
+
+ result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
+ (ArrayList) rstList, index, true, cache));
+ } else {
+ List resultList;
+ try {
+ resultList = (ArrayList) CliUtil
+ .executeFunction(rebalanceFunction, functionArgs, member).getResult();
+ } catch (Exception ex) {
+ LogWrapper.getInstance()
+ .info(CliStrings.format(
+ CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception_1,
+ member.getId(), ex.getMessage()), ex);
+ rebalanceResultData.addSection()
+ .addData(CliStrings.format(
+ CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception,
+ member.getId()), ex.getMessage());
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ continue;
+ }
+
+ if (checkResultList(rebalanceResultData, resultList, member)) {
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ continue;
+ }
+ List<String> rstList = tokenize((String) resultList.get(0), ",");
+
+ result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
+ (ArrayList) rstList, index, false, cache));
+ }
+
+ } else {
+
+ ResourceManager manager = cache.getResourceManager();
+ RebalanceFactory rbFactory = manager.createRebalanceFactory();
+ Set<String> excludeRegionSet = new HashSet<>();
+ if (excludeRegions != null) {
+ Collections.addAll(excludeRegionSet, excludeRegions);
+ }
+ rbFactory.excludeRegions(excludeRegionSet);
+ Set<String> includeRegionSet = new HashSet<>();
+ includeRegionSet.add(regionName);
+ rbFactory.includeRegions(includeRegionSet);
+
+ if (simulate) {
+ op = manager.createRebalanceFactory().simulate();
+ result = ResultBuilder.buildResult(buildResultForRebalance(rebalanceResultData,
+ op.getResults(), index, true, cache));
+
+ } else {
+ op = manager.createRebalanceFactory().start();
+ // Wait until the rebalance is complete and then get the results
+ result = ResultBuilder.buildResult(buildResultForRebalance(rebalanceResultData,
+ op.getResults(), index, false, cache));
+ }
+ }
+ index++;
+ }
+ LogWrapper.getInstance().info("Rebalance returning result " + result);
+ return result;
+ } else {
+ result = executeRebalanceOnDS(cache, String.valueOf(simulate), excludeRegions);
+ LogWrapper.getInstance().info("Starting Rebalance simulate false result >> " + result);
+ }
+ } catch (Exception e) {
+ result = ResultBuilder.createGemFireErrorResult(e.getMessage());
+ }
+ LogWrapper.getInstance().info("Rebalance returning result >>>" + result);
+ return result;
+ }
+ }
+
+ private DistributedMember getAssociatedMembers(String region, final InternalCache cache) {
+ DistributedRegionMXBean bean =
+ ManagementService.getManagementService(cache).getDistributedRegionMXBean(region);
+
+ DistributedMember member = null;
+
+ if (bean == null) {
+ return null;
+ }
+
+ String[] membersName = bean.getMembers();
+ Set<DistributedMember> dsMembers = CliUtil.getAllMembers(cache);
+ Iterator it = dsMembers.iterator();
+
+ boolean matchFound = false;
+
+ if (membersName.length > 1) {
+ while (it.hasNext() && !matchFound) {
+ DistributedMember dsmember = (DistributedMember) it.next();
+ for (String memberName : membersName) {
+ if (MBeanJMXAdapter.getMemberNameOrId(dsmember).equals(memberName)) {
+ member = dsmember;
+ matchFound = true;
+ break;
+ }
+ }
+ }
+ }
+ return member;
+ }
+
+ private CompositeResultData buildResultForRebalance(CompositeResultData rebalanceResultData,
+ RebalanceResults results, int index, boolean simulate, InternalCache cache) {
+ Set<PartitionRebalanceInfo> regions = results.getPartitionRebalanceDetails();
+ Iterator iterator = regions.iterator();
+
+ // add only if there are valid number of regions
+ if (regions.size() > 0
+ && StringUtils.isNotEmpty(((PartitionRebalanceInfo) iterator.next()).getRegionPath())) {
+ final TabularResultData resultData =
+ rebalanceResultData.addSection().addTable("Table" + index);
+ String newLine = System.getProperty("line.separator");
+ StringBuilder resultStr = new StringBuilder();
+ resultStr.append(newLine);
+
+ resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES);
+ resultData.accumulate("Value", results.getTotalBucketCreateBytes());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES).append(" = ")
+ .append(results.getTotalBucketCreateBytes()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM);
+ resultData.accumulate("Value", results.getTotalBucketCreateTime());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM).append(" = ")
+ .append(results.getTotalBucketCreateTime()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED);
+ resultData.accumulate("Value", results.getTotalBucketCreatesCompleted());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED).append(" = ")
+ .append(results.getTotalBucketCreatesCompleted()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES);
+ resultData.accumulate("Value", results.getTotalBucketTransferBytes());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES).append(" = ")
+ .append(results.getTotalBucketTransferBytes()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME);
+ resultData.accumulate("Value", results.getTotalBucketTransferTime());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME).append(" = ")
+ .append(results.getTotalBucketTransferTime()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED);
+ resultData.accumulate("Value", results.getTotalBucketTransfersCompleted());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED).append(" = ")
+ .append(results.getTotalBucketTransfersCompleted()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME);
+ resultData.accumulate("Value", results.getTotalPrimaryTransferTime());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME).append(" = ")
+ .append(results.getTotalPrimaryTransferTime()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED);
+ resultData.accumulate("Value", results.getTotalPrimaryTransfersCompleted());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED).append(" = ")
+ .append(results.getTotalPrimaryTransfersCompleted()).append(newLine);
+
+ resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALTIME);
+ resultData.accumulate("Value", results.getTotalTime());
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALTIME).append(" = ")
+ .append(results.getTotalTime()).append(newLine);
+
+ Iterator<PartitionRebalanceInfo> it = regions.iterator();
+
+ String headerText;
+
+ if (simulate) {
+ headerText = "Simulated partition regions ";
+ } else {
+ headerText = "Rebalanced partition regions ";
+ }
+
+ while (it.hasNext()) {
+ PartitionRebalanceInfo rgn = it.next();
+ headerText = headerText + " " + rgn.getRegionPath();
+ }
+ resultData.setHeader(resultData.getHeader() + headerText);
+
+ cache.getLogger().info(headerText + resultStr);
+ }
+ return rebalanceResultData;
+ }
+
+ private Result executeRebalanceOnDS(InternalCache cache, String simulate,
+ String[] excludeRegionsList) {
+ Result result = null;
+ int index = 1;
+ CompositeResultData rebalanceResultData = ResultBuilder.createCompositeResultData();
+ List<String> listExcludedRegion = new ArrayList<>();
+ if (excludeRegionsList != null) {
+ Collections.addAll(listExcludedRegion, excludeRegionsList);
+ }
+ List<MemberPRInfo> listMemberRegion = getMemberRegionList(cache, listExcludedRegion);
+
+ if (listMemberRegion.size() == 0) {
+ return ResultBuilder
+ .createInfoResult(CliStrings.REBALANCE__MSG__NO_REBALANCING_REGIONS_ON_DS);
+ }
+
+ Iterator<MemberPRInfo> iterator = listMemberRegion.iterator();
+ boolean flagToContinueWithRebalance = false;
+
+ // check if list has some members that can be rebalanced
+ while (iterator.hasNext()) {
+ if (iterator.next().dsMemberList.size() > 1) {
+ flagToContinueWithRebalance = true;
+ break;
+ }
+ }
+
+ if (!flagToContinueWithRebalance) {
+ return ResultBuilder
+ .createInfoResult(CliStrings.REBALANCE__MSG__NO_REBALANCING_REGIONS_ON_DS);
+ }
+
+ for (MemberPRInfo memberPR : listMemberRegion) {
+ try {
+ // check if there are more than one members associated with region for rebalancing
+ if (memberPR.dsMemberList.size() > 1) {
+ for (int i = 0; i < memberPR.dsMemberList.size(); i++) {
+ DistributedMember dsMember = memberPR.dsMemberList.get(i);
+ Function rebalanceFunction = new RebalanceFunction();
+ Object[] functionArgs = new Object[3];
+ functionArgs[0] = simulate;
+ Set<String> regionSet = new HashSet<>();
+
+ regionSet.add(memberPR.region);
+ functionArgs[1] = regionSet;
+
+ Set<String> excludeRegionSet = new HashSet<>();
+ functionArgs[2] = excludeRegionSet;
+
+ List resultList = null;
+
+ try {
+ if (checkMemberPresence(dsMember, cache)) {
+ resultList = (ArrayList) CliUtil
+ .executeFunction(rebalanceFunction, functionArgs, dsMember).getResult();
+
+ if (checkResultList(rebalanceResultData, resultList, dsMember)) {
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ continue;
+ }
+
+ List<String> rstList = tokenize((String) resultList.get(0), ",");
+ result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
+ (ArrayList) rstList, index, simulate.equals("true"), cache));
+ index++;
+
+ // Rebalancing for region is done so break and continue with other region
+ break;
+ } else {
+ if (i == memberPR.dsMemberList.size() - 1) {
+ rebalanceResultData.addSection().addData(
+ CliStrings.format(
+ CliStrings.REBALANCE__MSG__NO_EXECUTION_FOR_REGION_0_ON_MEMBERS_1,
+ memberPR.region, listOfAllMembers(memberPR.dsMemberList)),
+ CliStrings.REBALANCE__MSG__MEMBERS_MIGHT_BE_DEPARTED);
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ } else {
+ continue;
+ }
+ }
+ } catch (Exception ex) {
+ if (i == memberPR.dsMemberList.size() - 1) {
+ rebalanceResultData.addSection().addData(
+ CliStrings.format(
+ CliStrings.REBALANCE__MSG__NO_EXECUTION_FOR_REGION_0_ON_MEMBERS_1,
+ memberPR.region, listOfAllMembers(memberPR.dsMemberList)),
+ CliStrings.REBALANCE__MSG__REASON + ex.getMessage());
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ } else {
+ continue;
+ }
+ }
+
+ if (checkResultList(rebalanceResultData, resultList, dsMember)) {
+ result = ResultBuilder.buildResult(rebalanceResultData);
+ continue;
+ }
+
+ List<String> rstList = tokenize((String) resultList.get(0), ",");
+ result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
+ (ArrayList) rstList, index, simulate.equals("true"), cache));
+ index++;
+ }
+ }
+ } catch (Exception e) {
+ ErrorResultData errorResultData = ResultBuilder.createErrorResultData()
+ .setErrorCode(ResultBuilder.ERRORCODE_DEFAULT).addLine(e.getMessage());
+ return (ResultBuilder.buildResult(errorResultData));
+ }
+ }
+ return result;
+ }
+
+ private static class MemberPRInfo {
+ ArrayList<DistributedMember> dsMemberList;
+ public String region;
+
+ MemberPRInfo() {
+ region = "";
+ dsMemberList = new ArrayList<>();
+ }
+
+ @Override
+ public boolean equals(Object o2) {
+ return o2 != null && this.region.equals(((MemberPRInfo) o2).region);
+ }
+ }
+
+ private List<MemberPRInfo> getMemberRegionList(InternalCache cache,
+ List<String> listExcludedRegion) {
+ List<MemberPRInfo> listMemberPRInfo = new ArrayList<>();
+ String[] listDSRegions =
+ ManagementService.getManagementService(cache).getDistributedSystemMXBean().listRegions();
+ final Set<DistributedMember> dsMembers = CliUtil.getAllMembers(cache);
+
+ for (String regionName : listDSRegions) {
+ // check for excluded regions
+ boolean excludedRegionMatch = false;
+ for (String aListExcludedRegion : listExcludedRegion) {
+ // this is needed since region name may start with / or without it
+ // also
+ String excludedRegion = aListExcludedRegion.trim();
+ if (regionName.startsWith("/")) {
+ if (!excludedRegion.startsWith("/")) {
+ excludedRegion = "/" + excludedRegion;
+ }
+ }
+ if (excludedRegion.startsWith("/")) {
+ if (!regionName.startsWith("/")) {
+ regionName = "/" + regionName;
+ }
+ }
+
+ if (excludedRegion.equals(regionName)) {
+ excludedRegionMatch = true;
+ break;
+ }
+ }
+
+ if (excludedRegionMatch) {
+ // ignore this region
+ continue;
+ }
+
+ if (!regionName.startsWith("/")) {
+ regionName = Region.SEPARATOR + regionName;
+ }
+ // remove this prefix /
+ DistributedRegionMXBean bean =
+ ManagementService.getManagementService(cache).getDistributedRegionMXBean(regionName);
+
+ if (bean != null) {
+ if (bean.getRegionType().equals(DataPolicy.PARTITION.toString())
+ || bean.getRegionType().equals(DataPolicy.PERSISTENT_PARTITION.toString())) {
+
+ String[] memberNames = bean.getMembers();
+ for (DistributedMember dsmember : dsMembers) {
+ for (String memberName : memberNames) {
+ if (MBeanJMXAdapter.getMemberNameOrId(dsmember).equals(memberName)) {
+ MemberPRInfo memberAndItsPRRegions = new MemberPRInfo();
+ memberAndItsPRRegions.region = regionName;
+ memberAndItsPRRegions.dsMemberList.add(dsmember);
+ if (listMemberPRInfo.contains(memberAndItsPRRegions)) {
+ // add member for appropriate region
+ int index = listMemberPRInfo.indexOf(memberAndItsPRRegions);
+ MemberPRInfo listMember = listMemberPRInfo.get(index);
+ listMember.dsMemberList.add(dsmember);
+ } else {
+ listMemberPRInfo.add(memberAndItsPRRegions);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return listMemberPRInfo;
+ }
+
+ private boolean checkMemberPresence(DistributedMember dsMember, InternalCache cache) {
+ // check if member's presence just before executing function
+ // this is to avoid running a function on departed members #47248
+ Set<DistributedMember> dsMemberList = CliUtil.getAllNormalMembers(cache);
+ return dsMemberList.contains(dsMember);
+ }
+
+ private String listOfAllMembers(ArrayList<DistributedMember> dsMemberList) {
+ StringBuilder listMembersId = new StringBuilder();
+ for (int j = 0; j < dsMemberList.size() - 1; j++) {
+ listMembersId.append(dsMemberList.get(j).getId());
+ listMembersId.append(" ; ");
+ }
+ return listMembersId.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java
new file mode 100644
index 0000000..12be62e
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RemoveCommand.java
@@ -0,0 +1,98 @@
+/*
+ * 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 static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult;
+
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.Region;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.domain.DataCommandRequest;
+import org.apache.geode.management.internal.cli.domain.DataCommandResult;
+import org.apache.geode.management.internal.cli.functions.DataCommandFunction;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+
+public class RemoveCommand implements GfshCommand {
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ @CliCommand(value = {CliStrings.REMOVE}, help = CliStrings.REMOVE__HELP)
+ public Result remove(
+ @CliOption(key = {CliStrings.REMOVE__KEY}, help = CliStrings.REMOVE__KEY__HELP,
+ specifiedDefaultValue = "") String key,
+ @CliOption(key = {CliStrings.REMOVE__REGION}, mandatory = true,
+ help = CliStrings.REMOVE__REGION__HELP,
+ optionContext = ConverterHint.REGION_PATH) String regionPath,
+ @CliOption(key = CliStrings.REMOVE__ALL, help = CliStrings.REMOVE__ALL__HELP,
+ specifiedDefaultValue = "true", unspecifiedDefaultValue = "false") boolean removeAllKeys,
+ @CliOption(key = {CliStrings.REMOVE__KEYCLASS},
+ help = CliStrings.REMOVE__KEYCLASS__HELP) String keyClass) {
+ InternalCache cache = getCache();
+ DataCommandResult dataResult;
+
+ if (StringUtils.isEmpty(regionPath)) {
+ return makePresentationResult(DataCommandResult.createRemoveResult(key, null, null,
+ CliStrings.REMOVE__MSG__REGIONNAME_EMPTY, false));
+ }
+
+ if (!removeAllKeys && (key == null)) {
+ return makePresentationResult(DataCommandResult.createRemoveResult(null, null, null,
+ CliStrings.REMOVE__MSG__KEY_EMPTY, false));
+ }
+
+ if (removeAllKeys) {
+ cache.getSecurityService().authorizeRegionWrite(regionPath);
+ } else {
+ cache.getSecurityService().authorizeRegionWrite(regionPath, key);
+ }
+
+ @SuppressWarnings("rawtypes")
+ Region region = cache.getRegion(regionPath);
+ DataCommandFunction removefn = new DataCommandFunction();
+ if (region == null) {
+ Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false);
+ if (CollectionUtils.isNotEmpty(memberList)) {
+ DataCommandRequest request = new DataCommandRequest();
+ request.setCommand(CliStrings.REMOVE);
+ request.setKey(key);
+ request.setKeyClass(keyClass);
+ request.setRemoveAllKeys(removeAllKeys ? "ALL" : null);
+ request.setRegionName(regionPath);
+ dataResult = callFunctionForRegion(request, removefn, memberList);
+ } else {
+ dataResult = DataCommandResult.createRemoveInfoResult(key, null, null,
+ CliStrings.format(CliStrings.REMOVE__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath),
+ false);
+ }
+
+ } else {
+ dataResult = removefn.remove(key, keyClass, regionPath, removeAllKeys ? "ALL" : null);
+ }
+ dataResult.setKeyClass(keyClass);
+
+ return makePresentationResult(dataResult);
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/DataCommandsController.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/DataCommandsController.java b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/DataCommandsController.java
index ff100b5..ce7ebfc 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/DataCommandsController.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/DataCommandsController.java
@@ -34,7 +34,13 @@ import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
* the Gfsh Data Commands.
* <p/>
*
- * @see org.apache.geode.management.internal.cli.commands.DataCommands
+ * @see org.apache.geode.management.internal.cli.commands.ExportDataCommand
+ * @see org.apache.geode.management.internal.cli.commands.GetCommand
+ * @see org.apache.geode.management.internal.cli.commands.ImportDataCommand
+ * @see org.apache.geode.management.internal.cli.commands.LocateEntryCommand
+ * @see org.apache.geode.management.internal.cli.commands.PutCommand
+ * @see org.apache.geode.management.internal.cli.commands.RebalanceCommand
+ * @see org.apache.geode.management.internal.cli.commands.RemoveCommand
* @see org.apache.geode.management.internal.web.controllers.AbstractCommandsController
* @see org.springframework.stereotype.Controller
* @see org.springframework.web.bind.annotation.PathVariable
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/test/java/org/apache/geode/management/internal/cli/CommandRequestTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CommandRequestTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CommandRequestTest.java
index 5e60f0b..0d6e7cc 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CommandRequestTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CommandRequestTest.java
@@ -18,7 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import org.apache.geode.management.internal.cli.commands.DataCommands;
+import org.apache.geode.management.internal.cli.commands.RebalanceCommand;
import org.apache.geode.test.junit.categories.UnitTest;
import org.junit.Before;
import org.junit.Test;
@@ -42,7 +42,7 @@ public class CommandRequestTest {
this.mockParseResult = mock(GfshParseResult.class);
when(this.mockParseResult.getUserInput()).thenReturn("rebalance --simulate=true --time-out=-1");
when(this.mockParseResult.getParamValueStrings()).thenReturn(this.paramValues);
- when(this.mockParseResult.getMethod()).thenReturn(DataCommands.class.getMethod("rebalance",
+ when(this.mockParseResult.getMethod()).thenReturn(RebalanceCommand.class.getMethod("rebalance",
String[].class, String[].class, long.class, boolean.class));
this.mockEnvironment = new HashMap<>();
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
index 96aa526..9da8072 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
@@ -12,6 +12,7 @@
* 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 static org.apache.geode.distributed.ConfigurationProperties.*;
@@ -412,7 +413,7 @@ public class GemfireDataCommandsDUnitTest extends CliCommandTestBase {
getLogWriter().info("Region in query : " + regionsInQuery);
if (regionsInQuery.size() > 0) {
Set<DistributedMember> members =
- DataCommands.getQueryRegionsAssociatedMembers(regionsInQuery, cache, returnAll);
+ DataCommandsUtils.getQueryRegionsAssociatedMembers(regionsInQuery, cache, returnAll);
getLogWriter().info("Members for Region in query : " + members);
if (expectedMembers != -1) {
assertNotNull(members);
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.java
index e430215..cebb7f1 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.java
@@ -50,7 +50,7 @@ import static org.apache.geode.test.dunit.Wait.waitForCriterion;
* CacheLoader defined.
*
* @see org.apache.geode.management.internal.cli.commands.CliCommandTestBase
- * @see org.apache.geode.management.internal.cli.commands.DataCommands
+ * @see org.apache.geode.management.internal.cli.commands.GetCommand
* @since GemFire 8.0
*/
@SuppressWarnings("unused")
[48/50] [abbrv] geode git commit: Convert to use
FunctionContext.getCache()
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java
index 72d37e7..931e01c 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/MembersForRegionFunction.java
@@ -21,7 +21,6 @@ import java.util.Map;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
@@ -29,24 +28,20 @@ import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
/**
- *
* @since GemFire 8.0
*/
-
public class MembersForRegionFunction implements Function, InternalEntity {
private static final Logger logger = LogService.getLogger();
-
private static final long serialVersionUID = 8746830191680509335L;
- private static final String ID = MembersForRegionFunction.class.getName();
-
@Override
- public void execute(FunctionContext context) {
- Map<String, String> resultMap = new HashMap<String, String>();
+ public void execute(final FunctionContext context) {
+ Map<String, String> resultMap = new HashMap<>();
+
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId = cache.getDistributedSystem().getDistributedMember().getId();
- Object args = (Object) context.getArguments();
+ Object args = context.getArguments();
String regionName = ((String) args);
Region<Object, Object> region = cache.getRegion(regionName);
@@ -61,9 +56,10 @@ public class MembersForRegionFunction implements Function, InternalEntity {
resultMap.put("", "");
}
}
+
context.getResultSender().lastResult(resultMap);
+
} catch (Exception ex) {
- Cache cache = CacheFactory.getAnyInstance();
logger.info("MembersForRegionFunction exception {}", ex.getMessage(), ex);
resultMap.put("", "");
context.getResultSender().lastResult(resultMap);
@@ -71,22 +67,17 @@ public class MembersForRegionFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return MembersForRegionFunction.ID;
+ public boolean hasResult() {
+ return true;
}
@Override
- public boolean isHA() {
+ public boolean optimizeForWrite() {
return false;
}
@Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
- public boolean optimizeForWrite() {
+ public boolean isHA() {
return false;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java
index 5c1cb29..f054621 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/NetstatFunction.java
@@ -14,7 +14,12 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import static org.apache.geode.internal.lang.SystemUtils.*;
+import static org.apache.geode.internal.lang.SystemUtils.getOsArchitecture;
+import static org.apache.geode.internal.lang.SystemUtils.getOsName;
+import static org.apache.geode.internal.lang.SystemUtils.getOsVersion;
+import static org.apache.geode.internal.lang.SystemUtils.isLinux;
+import static org.apache.geode.internal.lang.SystemUtils.isMacOSX;
+import static org.apache.geode.internal.lang.SystemUtils.isSolaris;
import java.io.BufferedReader;
import java.io.IOException;
@@ -29,7 +34,6 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.internal.cli.CliUtil;
@@ -42,36 +46,26 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings;
*
* @since GemFire 7.0
*/
-@SuppressWarnings({"serial"})
public class NetstatFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
private static final long serialVersionUID = 1L;
-
- public static final NetstatFunction INSTANCE = new NetstatFunction();
-
- private static final String ID = NetstatFunction.class.getName();
+ private static final Logger logger = LogService.getLogger();
private static final String NETSTAT_COMMAND = "netstat";
private static final String LSOF_COMMAND = "lsof";
@Override
- public boolean hasResult() {
- return true;
- }
-
- @Override
public void execute(final FunctionContext context) {
- DistributedSystem ds = InternalDistributedSystem.getConnectedInstance();
+ DistributedSystem ds = context.getCache().getDistributedSystem();
if (ds == null || !ds.isConnected()) {
return;
}
String host = ds.getDistributedMember().getHost();
NetstatFunctionArgument args = (NetstatFunctionArgument) context.getArguments();
- boolean withlsof = args.isWithlsof();
+ boolean withLsof = args.isWithLsof();
String lineSeparator = args.getLineSeparator();
- String netstatOutput = executeCommand(lineSeparator, withlsof);
+ String netstatOutput = executeCommand(lineSeparator, withLsof);
StringBuilder netstatInfo = new StringBuilder();
@@ -84,6 +78,21 @@ public class NetstatFunction implements Function, InternalEntity {
context.getResultSender().lastResult(result);
}
+ @Override
+ public boolean hasResult() {
+ return true;
+ }
+
+ @Override
+ public boolean optimizeForWrite() {
+ return false;
+ }
+
+ @Override
+ public boolean isHA() {
+ return false;
+ }
+
private static void addMemberHostHeader(final StringBuilder netstatInfo, final String id,
final String host, final String lineSeparator) {
@@ -91,7 +100,7 @@ public class NetstatFunction implements Function, InternalEntity {
StringBuilder memberPlatFormInfo = new StringBuilder();
memberPlatFormInfo.append(CliStrings.format(CliStrings.NETSTAT__MSG__FOR_HOST_1_OS_2_MEMBER_0,
- new Object[] {id, host, osInfo, lineSeparator}));
+ id, host, osInfo, lineSeparator));
int nameIdLength = Math.max(Math.max(id.length(), host.length()), osInfo.length()) * 2;
@@ -126,24 +135,27 @@ public class NetstatFunction implements Function, InternalEntity {
}
ProcessBuilder processBuilder = new ProcessBuilder(cmdOptionsList);
+ Process netstat = null;
try {
- Process netstat = processBuilder.start();
-
+ netstat = processBuilder.start();
InputStream is = netstat.getInputStream();
- BufferedReader breader = new BufferedReader(new InputStreamReader(is));
+ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
String line;
- while ((line = breader.readLine()) != null) {
+ while ((line = bufferedReader.readLine()) != null) {
netstatInfo.append(line).append(lineSeparator);
}
- // TODO: move to finally-block
- netstat.destroy();
} catch (IOException e) {
// TODO: change this to keep the full stack trace
netstatInfo.append(CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1,
- new Object[] {NETSTAT_COMMAND, e.getMessage()}));
+ NETSTAT_COMMAND, e.getMessage()));
+
} finally {
+ if (netstat != null) {
+ netstat.destroy();
+ }
+
netstatInfo.append(lineSeparator); // additional new line
}
}
@@ -154,10 +166,10 @@ public class NetstatFunction implements Function, InternalEntity {
.append(" output ###################").append(lineSeparator);
if (isLinux() || isMacOSX() || isSolaris()) {
-
ProcessBuilder procBuilder = new ProcessBuilder(LSOF_COMMAND);
+ Process lsof = null;
try {
- Process lsof = procBuilder.start();
+ lsof = procBuilder.start();
InputStreamReader reader = new InputStreamReader(lsof.getInputStream());
BufferedReader breader = new BufferedReader(reader);
String line = "";
@@ -165,23 +177,27 @@ public class NetstatFunction implements Function, InternalEntity {
while ((line = breader.readLine()) != null) {
existingNetstatInfo.append(line).append(lineSeparator);
}
- // TODO: move this to finally-block
- lsof.destroy();
+
} catch (IOException e) {
// TODO: change this to keep the full stack trace
String message = e.getMessage();
if (message.contains("error=2, No such file or directory")) {
existingNetstatInfo
.append(CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1,
- new Object[] {LSOF_COMMAND, CliStrings.NETSTAT__MSG__LSOF_NOT_IN_PATH}));
+ LSOF_COMMAND, CliStrings.NETSTAT__MSG__LSOF_NOT_IN_PATH));
} else {
- existingNetstatInfo
- .append(CliStrings.format(CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1,
- new Object[] {LSOF_COMMAND, e.getMessage()}));
+ existingNetstatInfo.append(CliStrings.format(
+ CliStrings.NETSTAT__MSG__COULD_NOT_EXECUTE_0_REASON_1, LSOF_COMMAND, e.getMessage()));
}
+
} finally {
+ if (lsof != null) {
+ lsof.destroy();
+ }
+
existingNetstatInfo.append(lineSeparator); // additional new line
}
+
} else {
existingNetstatInfo.append(CliStrings.NETSTAT__MSG__NOT_AVAILABLE_FOR_WINDOWS)
.append(lineSeparator);
@@ -200,46 +216,40 @@ public class NetstatFunction implements Function, InternalEntity {
return netstatInfo.toString();
}
- @Override
- public String getId() {
- return ID;
- }
-
- @Override
- public boolean optimizeForWrite() {
- return false;
- }
-
- @Override
- public boolean isHA() {
- return false;
- }
-
+ /**
+ * Java main, probably for manual testing?
+ */
public static void main(final String[] args) {
String netstat = executeCommand(GfshParser.LINE_SEPARATOR, true);
System.out.println(netstat);
}
+ /**
+ * Argument for NetstatFunction.
+ */
public static class NetstatFunctionArgument implements Serializable {
private static final long serialVersionUID = 1L;
private final String lineSeparator;
- private final boolean withlsof;
+ private final boolean withLsof;
- public NetstatFunctionArgument(final String lineSeparator, final boolean withlsof) {
+ public NetstatFunctionArgument(final String lineSeparator, final boolean withLsof) {
this.lineSeparator = lineSeparator;
- this.withlsof = withlsof;
+ this.withLsof = withLsof;
}
public String getLineSeparator() {
return lineSeparator;
}
- public boolean isWithlsof() {
- return withlsof;
+ public boolean isWithLsof() {
+ return withLsof;
}
}
+ /**
+ * Result of executing NetstatFunction.
+ */
public static class NetstatFunctionResult implements Serializable {
private static final long serialVersionUID = 1L;
@@ -266,4 +276,5 @@ public class NetstatFunction implements Function, InternalEntity {
return compressedBytes;
}
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java
index 218f212..df83a82 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RebalanceFunction.java
@@ -14,14 +14,12 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.CancellationException;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.control.RebalanceFactory;
import org.apache.geode.cache.control.RebalanceOperation;
import org.apache.geode.cache.control.RebalanceResults;
@@ -32,23 +30,13 @@ import org.apache.geode.cache.partition.PartitionRebalanceInfo;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
-
-
public class RebalanceFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = RebalanceFunction.class.getName();
-
-
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
-
- RebalanceOperation op = null;
- String[] str = new String[0];
-
- Cache cache = CacheFactory.getAnyInstance();
+ public void execute(final FunctionContext context) {
+ Cache cache = context.getCache();
ResourceManager manager = cache.getResourceManager();
Object[] args = (Object[]) context.getArguments();
String simulate = ((String) args[0]);
@@ -59,6 +47,7 @@ public class RebalanceFunction implements Function, InternalEntity {
rbFactory.includeRegions(includeRegionNames);
RebalanceResults results = null;
+ RebalanceOperation op;
if (simulate.equals("true")) {
op = rbFactory.simulate();
} else {
@@ -68,24 +57,29 @@ public class RebalanceFunction implements Function, InternalEntity {
try {
results = op.getResults();
logger.info("Starting RebalanceFunction got results = {}", results);
- StringBuilder str1 = new StringBuilder();
- str1.append(results.getTotalBucketCreateBytes() + "," + results.getTotalBucketCreateTime()
- + "," + results.getTotalBucketCreatesCompleted() + ","
- + results.getTotalBucketTransferBytes() + "," + results.getTotalBucketTransferTime() + ","
- + results.getTotalBucketTransfersCompleted() + "," + results.getTotalPrimaryTransferTime()
- + "," + results.getTotalPrimaryTransfersCompleted() + "," + results.getTotalTime() + ",");
+ StringBuilder sb = new StringBuilder();
+ sb.append(results.getTotalBucketCreateBytes()).append(",")
+ .append(results.getTotalBucketCreateTime()).append(",")
+ .append(results.getTotalBucketCreatesCompleted()).append(",")
+ .append(results.getTotalBucketTransferBytes()).append(",")
+ .append(results.getTotalBucketTransferTime()).append(",")
+ .append(results.getTotalBucketTransfersCompleted()).append(",")
+ .append(results.getTotalPrimaryTransferTime()).append(",")
+ .append(results.getTotalPrimaryTransfersCompleted()).append(",")
+ .append(results.getTotalTime()).append(",");
Set<PartitionRebalanceInfo> regns1 = results.getPartitionRebalanceDetails();
- Iterator it = regns1.iterator();
- while (it.hasNext()) {
- PartitionRebalanceInfo rgn = (PartitionRebalanceInfo) it.next();
- str1.append(rgn.getRegionPath() + ",");
+ for (PartitionRebalanceInfo rgn : regns1) {
+ sb.append(rgn.getRegionPath()).append(",");
}
- logger.info("Starting RebalanceFunction str1={}", str1);
- context.getResultSender().lastResult(str1.toString());
+
+ logger.info("Starting RebalanceFunction with {}", sb);
+ context.getResultSender().lastResult(sb.toString());
+
} catch (CancellationException e) {
- logger.info("Starting RebalanceFunction CancellationException: ", e.getMessage(), e);
+ logger.info("Starting RebalanceFunction CancellationException: {}", e.getMessage(), e);
context.getResultSender().lastResult("CancellationException1 " + e.getMessage());
+
} catch (InterruptedException e) {
logger.info("Starting RebalanceFunction InterruptedException: {}", e.getMessage(), e);
context.getResultSender().lastResult("InterruptedException2 " + e.getMessage());
@@ -93,11 +87,6 @@ public class RebalanceFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return RebalanceFunction.ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
index 79dcbd4..ea1d27d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
@@ -21,14 +21,13 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.AttributesMutator;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.CacheListener;
import org.apache.geode.cache.CacheLoader;
import org.apache.geode.cache.CacheWriter;
import org.apache.geode.cache.ExpirationAction;
import org.apache.geode.cache.ExpirationAttributes;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.internal.ClassPathLoader;
@@ -46,21 +45,15 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
*
* @since GemFire 8.0
*/
-public class RegionAlterFunction extends FunctionAdapter implements InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
+public class RegionAlterFunction implements Function, InternalEntity {
private static final long serialVersionUID = -4846425364943216425L;
+ private static final Logger logger = LogService.getLogger();
@Override
- public boolean isHA() {
- return false;
- }
-
- @Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
ResultSender<Object> resultSender = context.getResultSender();
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
@@ -70,16 +63,12 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
XmlEntity xmlEntity = new XmlEntity(CacheXml.REGION, "name", alteredRegion.getName());
resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity,
CliStrings.format(CliStrings.ALTER_REGION__MSG__REGION_0_ALTERED_ON_1,
- new Object[] {alteredRegion.getFullPath(), memberNameOrId})));
+ alteredRegion.getFullPath(), memberNameOrId)));
- } catch (IllegalStateException e) {
+ } catch (IllegalArgumentException | IllegalStateException e) {
logger.error(e.getMessage(), e);
-
resultSender.lastResult(new CliFunctionResult(memberNameOrId, false, e.getMessage()));
- } catch (IllegalArgumentException e) {
- logger.error(e.getMessage(), e);
- resultSender.lastResult(new CliFunctionResult(memberNameOrId, false, e.getMessage()));
} catch (VirtualMachineError e) {
SystemFailure.initiateFailure(e);
throw e;
@@ -96,8 +85,14 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
}
- private <K, V> Region<?, ?> alterRegion(Cache cache, RegionFunctionArgs regionAlterArgs) {
- final String regionPathString = regionAlterArgs.getRegionPath();
+ @Override
+ public boolean isHA() {
+ return false;
+ }
+
+ private <K, V> Region<?, ?> alterRegion(final Cache cache,
+ final RegionFunctionArgs regionAlterArgs) {
+ String regionPathString = regionAlterArgs.getRegionPath();
RegionPath regionPath = new RegionPath(regionPathString);
AbstractRegion region = (AbstractRegion) cache.getRegion(regionPathString);
@@ -123,7 +118,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
// Alter expiration attributes
- final RegionFunctionArgs.ExpirationAttrs newEntryExpirationIdleTime =
+ RegionFunctionArgs.ExpirationAttrs newEntryExpirationIdleTime =
regionAlterArgs.getEntryExpirationIdleTime();
if (newEntryExpirationIdleTime != null) {
mutator.setEntryIdleTimeout(
@@ -133,7 +128,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
}
- final RegionFunctionArgs.ExpirationAttrs newEntryExpirationTTL =
+ RegionFunctionArgs.ExpirationAttrs newEntryExpirationTTL =
regionAlterArgs.getEntryExpirationTTL();
if (newEntryExpirationTTL != null) {
mutator.setEntryTimeToLive(
@@ -143,7 +138,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
}
- final RegionFunctionArgs.ExpirationAttrs newRegionExpirationIdleTime =
+ RegionFunctionArgs.ExpirationAttrs newRegionExpirationIdleTime =
regionAlterArgs.getRegionExpirationIdleTime();
if (newRegionExpirationIdleTime != null) {
mutator.setRegionIdleTimeout(
@@ -153,7 +148,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
}
- final RegionFunctionArgs.ExpirationAttrs newRegionExpirationTTL =
+ RegionFunctionArgs.ExpirationAttrs newRegionExpirationTTL =
regionAlterArgs.getRegionExpirationTTL();
if (newRegionExpirationTTL != null) {
mutator.setRegionTimeToLive(
@@ -164,7 +159,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
// Alter Gateway Sender Ids
- final Set<String> newGatewaySenderIds = regionAlterArgs.getGatewaySenderIds();
+ Set<String> newGatewaySenderIds = regionAlterArgs.getGatewaySenderIds();
if (newGatewaySenderIds != null) {
// Remove old gateway sender ids that aren't in the new list
@@ -190,7 +185,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
// Alter Async Queue Ids
- final Set<String> newAsyncEventQueueIds = regionAlterArgs.getAsyncEventQueueIds();
+ Set<String> newAsyncEventQueueIds = regionAlterArgs.getAsyncEventQueueIds();
if (newAsyncEventQueueIds != null) {
// Remove old async event queue ids that aren't in the new list
@@ -216,7 +211,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
// Alter Cache Listeners
- final Set<String> newCacheListenerNames = regionAlterArgs.getCacheListeners();
+ Set<String> newCacheListenerNames = regionAlterArgs.getCacheListeners();
if (newCacheListenerNames != null) {
// Remove old cache listeners that aren't in the new list
@@ -232,6 +227,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
if (newCacheListenerName.isEmpty()) {
continue;
}
+
boolean nameFound = false;
for (CacheListener oldCacheListener : oldCacheListeners) {
if (oldCacheListener.getClass().getName().equals(newCacheListenerName)) {
@@ -253,7 +249,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
}
- final String cacheLoader = regionAlterArgs.getCacheLoader();
+ String cacheLoader = regionAlterArgs.getCacheLoader();
if (cacheLoader != null) {
if (cacheLoader.isEmpty()) {
mutator.setCacheLoader(null);
@@ -268,7 +264,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
}
}
- final String cacheWriter = regionAlterArgs.getCacheWriter();
+ String cacheWriter = regionAlterArgs.getCacheWriter();
if (cacheWriter != null) {
if (cacheWriter.isEmpty()) {
mutator.setCacheWriter(null);
@@ -293,12 +289,12 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
* @param newExpirationAttrs Attributes supplied by the command
* @param oldExpirationAttributes Attributes currently applied to the Region.
*
- * @return A new pair of expiration attributes taken from the command if it was given or the
- * current value from the Region if it was not.
+ * @return New expiration attributes taken from the command if it was given or the current value
+ * from the Region if it was not.
*/
private ExpirationAttributes parseExpirationAttributes(
- RegionFunctionArgs.ExpirationAttrs newExpirationAttrs,
- ExpirationAttributes oldExpirationAttributes) {
+ final RegionFunctionArgs.ExpirationAttrs newExpirationAttrs,
+ final ExpirationAttributes oldExpirationAttributes) {
ExpirationAction action = oldExpirationAttributes.getAction();
int timeout = oldExpirationAttributes.getTimeout();
@@ -306,6 +302,7 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
if (newExpirationAttrs.getTime() != null) {
timeout = newExpirationAttrs.getTime();
}
+
if (newExpirationAttrs.getAction() != null) {
action = newExpirationAttrs.getAction();
}
@@ -313,20 +310,22 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
return new ExpirationAttributes(timeout, action);
}
- @SuppressWarnings("unchecked")
- private static <K> Class<K> forName(String classToLoadName, String neededFor) {
+ private static <K> Class<K> forName(final String classToLoadName, final String neededFor) {
Class<K> loadedClass = null;
+
try {
// Set Constraints
ClassPathLoader classPathLoader = ClassPathLoader.getLatest();
if (classToLoadName != null && !classToLoadName.isEmpty()) {
loadedClass = (Class<K>) classPathLoader.forName(classToLoadName);
}
+
} catch (ClassNotFoundException e) {
throw new RuntimeException(
CliStrings.format(CliStrings.ALTER_REGION__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
classToLoadName, neededFor),
e);
+
} catch (ClassCastException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.ALTER_REGION__MSG__CLASS_SPECIFIED_FOR_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
@@ -336,14 +335,17 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
return loadedClass;
}
- private static <K> K newInstance(Class<K> klass, String neededFor) {
- K instance = null;
+ private static <K> K newInstance(final Class<K> klass, final String neededFor) {
+ K instance;
+
try {
instance = klass.newInstance();
+
} catch (InstantiationException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.ALTER_REGION__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1, klass,
neededFor), e);
+
} catch (IllegalAccessException e) {
throw new RuntimeException(
CliStrings.format(CliStrings.ALTER_REGION__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1,
@@ -354,8 +356,4 @@ public class RegionAlterFunction extends FunctionAdapter implements InternalEnti
return instance;
}
- @Override
- public String getId() {
- return RegionAlterFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
index 6ae10a3..ea4f288 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
@@ -20,7 +20,6 @@ import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.CacheListener;
import org.apache.geode.cache.CacheLoader;
import org.apache.geode.cache.CacheWriter;
@@ -33,7 +32,7 @@ import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.cache.RegionExistsException;
import org.apache.geode.cache.RegionFactory;
import org.apache.geode.cache.RegionShortcut;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.compression.Compressor;
@@ -50,29 +49,17 @@ import org.apache.geode.management.internal.cli.util.RegionPath;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
/**
- *
* @since GemFire 7.0
*/
-public class RegionCreateFunction extends FunctionAdapter implements InternalEntity {
-
- private static final Logger logger = LogService.getLogger();
-
+public class RegionCreateFunction implements Function, InternalEntity {
private static final long serialVersionUID = 8746830191680509335L;
-
- private static final String ID = RegionCreateFunction.class.getName();
-
- public static RegionCreateFunction INSTANCE = new RegionCreateFunction();
-
- @Override
- public boolean isHA() {
- return false;
- }
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
ResultSender<Object> resultSender = context.getResultSender();
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
@@ -94,7 +81,8 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
XmlEntity xmlEntity = new XmlEntity(CacheXml.REGION, "name", createdRegion.getName());
resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity,
CliStrings.format(CliStrings.CREATE_REGION__MSG__REGION_0_CREATED_ON_1,
- new Object[] {createdRegion.getFullPath(), memberNameOrId})));
+ createdRegion.getFullPath(), memberNameOrId)));
+
} catch (IllegalStateException e) {
String exceptionMsg = e.getMessage();
String localizedString =
@@ -105,15 +93,16 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
String.valueOf(CreateAlterDestroyRegionCommands.PERSISTENT_OVERFLOW_SHORTCUTS)});
}
resultSender.lastResult(handleException(memberNameOrId, exceptionMsg, null/* do not log */));
- } catch (IllegalArgumentException e) {
+
+ } catch (CreateSubregionException | IllegalArgumentException e) {
resultSender.lastResult(handleException(memberNameOrId, e.getMessage(), e));
+
} catch (RegionExistsException e) {
String exceptionMsg =
CliStrings.format(CliStrings.CREATE_REGION__MSG__REGION_PATH_0_ALREADY_EXISTS_ON_1,
regionCreateArgs.getRegionPath(), memberNameOrId);
resultSender.lastResult(handleException(memberNameOrId, exceptionMsg, e));
- } catch (CreateSubregionException e) {
- resultSender.lastResult(handleException(memberNameOrId, e.getMessage(), e));
+
} catch (Exception e) {
String exceptionMsg = e.getMessage();
if (exceptionMsg == null) {
@@ -123,11 +112,17 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
}
+ @Override
+ public boolean isHA() {
+ return false;
+ }
+
private CliFunctionResult handleException(final String memberNameOrId, final String exceptionMsg,
final Exception e) {
if (e != null && logger.isDebugEnabled()) {
logger.debug(e.getMessage(), e);
}
+
if (exceptionMsg != null) {
return new CliFunctionResult(memberNameOrId, false, exceptionMsg);
}
@@ -135,17 +130,17 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
return new CliFunctionResult(memberNameOrId);
}
- public static <K, V> Region<?, ?> createRegion(Cache cache, RegionFunctionArgs regionCreateArgs) {
- Region<K, V> createdRegion = null;
-
- final String regionPath = regionCreateArgs.getRegionPath();
- final RegionShortcut regionShortcut = regionCreateArgs.getRegionShortcut();
- final String useAttributesFrom = regionCreateArgs.getUseAttributesFrom();
+ public static <K, V> Region<?, ?> createRegion(final Cache cache,
+ final RegionFunctionArgs regionCreateArgs) {
+ String regionPath = regionCreateArgs.getRegionPath();
+ RegionShortcut regionShortcut = regionCreateArgs.getRegionShortcut();
+ String useAttributesFrom = regionCreateArgs.getUseAttributesFrom();
// If a region path indicates a sub-region, check whether the parent region exists
RegionPath regionPathData = new RegionPath(regionPath);
String parentRegionPath = regionPathData.getParent();
Region<?, ?> parentRegion = null;
+
if (parentRegionPath != null && !Region.SEPARATOR.equals(parentRegionPath)) {
parentRegion = cache.getRegion(parentRegionPath);
if (parentRegion == null) {
@@ -168,9 +163,10 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
CliStrings.CREATE_REGION__MSG__ONE_OF_REGIONSHORTCUT_AND_USEATTRIBUTESFROM_IS_REQUIRED);
}
- boolean isPartitioned = false;
- RegionFactory<K, V> factory = null;
- RegionAttributes<K, V> regionAttributes = null;
+ boolean isPartitioned;
+ RegionFactory<K, V> factory;
+ RegionAttributes<K, V> regionAttributes;
+
if (regionShortcut != null) {
regionAttributes = cache.getRegionAttributes(regionShortcut.toString());
if (logger.isDebugEnabled()) {
@@ -187,6 +183,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
CliStrings.CREATE_REGION__MSG__COULD_NOT_LOAD_REGION_ATTRIBUTES_FOR_SHORTCUT_0,
regionShortcut));
}
+
} else {
if (logger.isDebugEnabled()) {
logger.debug("Using Manager's region attributes for {}", regionPath);
@@ -196,8 +193,8 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
logger.debug("Using Attributes : {}", regionAttributes);
}
}
- isPartitioned = regionAttributes.getPartitionAttributes() != null;
+ isPartitioned = regionAttributes.getPartitionAttributes() != null;
factory = cache.createRegionFactory(regionAttributes);
if (!isPartitioned && regionCreateArgs.hasPartitionAttributes()) {
@@ -219,8 +216,9 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
// Set Constraints
- final String keyConstraint = regionCreateArgs.getKeyConstraint();
- final String valueConstraint = regionCreateArgs.getValueConstraint();
+ String keyConstraint = regionCreateArgs.getKeyConstraint();
+ String valueConstraint = regionCreateArgs.getValueConstraint();
+
if (keyConstraint != null && !keyConstraint.isEmpty()) {
Class<K> keyConstraintClass =
CliUtil.forName(keyConstraint, CliStrings.CREATE_REGION__KEYCONSTRAINT);
@@ -234,32 +232,36 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
// Expiration attributes
- final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime =
+ RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime =
regionCreateArgs.getEntryExpirationIdleTime();
if (entryExpirationIdleTime != null) {
factory.setEntryIdleTimeout(entryExpirationIdleTime.convertToExpirationAttributes());
}
- final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL =
+
+ RegionFunctionArgs.ExpirationAttrs entryExpirationTTL =
regionCreateArgs.getEntryExpirationTTL();
if (entryExpirationTTL != null) {
factory.setEntryTimeToLive(entryExpirationTTL.convertToExpirationAttributes());
}
- final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime =
+
+ RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime =
regionCreateArgs.getRegionExpirationIdleTime();
if (regionExpirationIdleTime != null) {
factory.setEntryIdleTimeout(regionExpirationIdleTime.convertToExpirationAttributes());
}
- final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL =
+
+ RegionFunctionArgs.ExpirationAttrs regionExpirationTTL =
regionCreateArgs.getRegionExpirationTTL();
if (regionExpirationTTL != null) {
factory.setEntryTimeToLive(regionExpirationTTL.convertToExpirationAttributes());
}
// Associate a Disk Store
- final String diskStore = regionCreateArgs.getDiskStore();
+ String diskStore = regionCreateArgs.getDiskStore();
if (diskStore != null && !diskStore.isEmpty()) {
factory.setDiskStoreName(diskStore);
}
+
if (regionCreateArgs.isSetDiskSynchronous()) {
factory.setDiskSynchronous(regionCreateArgs.isDiskSynchronous());
}
@@ -277,12 +279,13 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
if (regionCreateArgs.isSetEnableAsyncConflation()) {
factory.setEnableAsyncConflation(regionCreateArgs.isEnableAsyncConflation());
}
+
if (regionCreateArgs.isSetEnableSubscriptionConflation()) {
factory.setEnableSubscriptionConflation(regionCreateArgs.isEnableSubscriptionConflation());
}
// Gateway Sender Ids
- final Set<String> gatewaySenderIds = regionCreateArgs.getGatewaySenderIds();
+ Set<String> gatewaySenderIds = regionCreateArgs.getGatewaySenderIds();
if (gatewaySenderIds != null && !gatewaySenderIds.isEmpty()) {
for (String gatewaySenderId : gatewaySenderIds) {
factory.addGatewaySenderId(gatewaySenderId);
@@ -290,7 +293,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
// Async Queue Ids
- final Set<String> asyncEventQueueIds = regionCreateArgs.getAsyncEventQueueIds();
+ Set<String> asyncEventQueueIds = regionCreateArgs.getAsyncEventQueueIds();
if (asyncEventQueueIds != null && !asyncEventQueueIds.isEmpty()) {
for (String asyncEventQueueId : asyncEventQueueIds) {
factory.addAsyncEventQueueId(asyncEventQueueId);
@@ -301,6 +304,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
if (regionCreateArgs.isSetConcurrencyChecksEnabled()) {
factory.setConcurrencyChecksEnabled(regionCreateArgs.isConcurrencyChecksEnabled());
}
+
if (regionCreateArgs.isSetConcurrencyLevel()) {
factory.setConcurrencyLevel(regionCreateArgs.getConcurrencyLevel());
}
@@ -316,7 +320,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
// Set plugins
- final Set<String> cacheListeners = regionCreateArgs.getCacheListeners();
+ Set<String> cacheListeners = regionCreateArgs.getCacheListeners();
if (cacheListeners != null && !cacheListeners.isEmpty()) {
for (String cacheListener : cacheListeners) {
Class<CacheListener<K, V>> cacheListenerKlass =
@@ -334,7 +338,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
CliUtil.newInstance(compressorKlass, CliStrings.CREATE_REGION__COMPRESSOR));
}
- final String cacheLoader = regionCreateArgs.getCacheLoader();
+ String cacheLoader = regionCreateArgs.getCacheLoader();
if (cacheLoader != null) {
Class<CacheLoader<K, V>> cacheLoaderKlass =
CliUtil.forName(cacheLoader, CliStrings.CREATE_REGION__CACHELOADER);
@@ -342,7 +346,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
CliUtil.newInstance(cacheLoaderKlass, CliStrings.CREATE_REGION__CACHELOADER));
}
- final String cacheWriter = regionCreateArgs.getCacheWriter();
+ String cacheWriter = regionCreateArgs.getCacheWriter();
if (cacheWriter != null) {
Class<CacheWriter<K, V>> cacheWriterKlass =
CliUtil.forName(cacheWriter, CliStrings.CREATE_REGION__CACHEWRITER);
@@ -351,7 +355,7 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
String regionName = regionPathData.getName();
-
+ Region<K, V> createdRegion;
if (parentRegion != null) {
createdRegion = factory.createSubregion(parentRegion, regionName);
} else {
@@ -361,13 +365,11 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
return createdRegion;
}
- @SuppressWarnings("unchecked")
- private static <K, V> PartitionAttributes<K, V> extractPartitionAttributes(Cache cache,
- RegionAttributes<K, V> regionAttributes, RegionFunctionArgs regionCreateArgs) {
+ private static <K, V> PartitionAttributes<K, V> extractPartitionAttributes(final Cache cache,
+ final RegionAttributes<K, V> regionAttributes, final RegionFunctionArgs regionCreateArgs) {
RegionFunctionArgs.PartitionArgs partitionArgs = regionCreateArgs.getPartitionArgs();
- PartitionAttributesFactory<K, V> prAttrFactory = null;
-
+ PartitionAttributesFactory<K, V> prAttrFactory;
PartitionAttributes<K, V> partitionAttributes = regionAttributes.getPartitionAttributes();
if (partitionAttributes != null) {
prAttrFactory = new PartitionAttributesFactory<K, V>(partitionAttributes);
@@ -389,21 +391,27 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
prAttrFactory.setColocatedWith(colocatedWith);
}
+
if (partitionArgs.isSetPRLocalMaxMemory()) {
prAttrFactory.setLocalMaxMemory(partitionArgs.getPrLocalMaxMemory());
}
+
if (partitionArgs.isSetPRTotalMaxMemory()) {
prAttrFactory.setTotalMaxMemory(partitionArgs.getPrTotalMaxMemory());
}
+
if (partitionArgs.isSetPRTotalNumBuckets()) {
prAttrFactory.setTotalNumBuckets(partitionArgs.getPrTotalNumBuckets());
}
+
if (partitionArgs.isSetPRRedundantCopies()) {
prAttrFactory.setRedundantCopies(partitionArgs.getPrRedundantCopies());
}
+
if (partitionArgs.isSetPRRecoveryDelay()) {
prAttrFactory.setRecoveryDelay(partitionArgs.getPrRecoveryDelay());
}
+
if (partitionArgs.isSetPRStartupRecoveryDelay()) {
prAttrFactory.setStartupRecoveryDelay(partitionArgs.getPrStartupRecoveryDelay());
}
@@ -415,22 +423,24 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
.setPartitionResolver((PartitionResolver<K, V>) newInstance(partitionResolverClass,
CliStrings.CREATE_REGION__PARTITION_RESOLVER));
}
+
return prAttrFactory.create();
}
-
- private static Class<PartitionResolver> forName(String className, String neededFor) {
+ private static Class<PartitionResolver> forName(final String className, final String neededFor) {
if (StringUtils.isBlank(className)) {
- throw new IllegalArgumentException(
- CliStrings.format(CliStrings.CREATE_REGION__MSG__INVALID_PARTITION_RESOLVER,
- new Object[] {className, neededFor}));
+ throw new IllegalArgumentException(CliStrings
+ .format(CliStrings.CREATE_REGION__MSG__INVALID_PARTITION_RESOLVER, className, neededFor));
}
+
try {
return (Class<PartitionResolver>) ClassPathLoader.getLatest().forName(className);
+
} catch (ClassNotFoundException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_REGION_PARTITION_RESOLVER__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
className, neededFor), e);
+
} catch (ClassCastException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_REGION__MSG__PARTITION_RESOLVER__CLASS_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
@@ -438,13 +448,16 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
}
- private static PartitionResolver newInstance(Class<PartitionResolver> klass, String neededFor) {
+ private static PartitionResolver newInstance(final Class<PartitionResolver> klass,
+ final String neededFor) {
try {
return klass.newInstance();
+
} catch (InstantiationException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_REGION__MSG__PARTITION_RESOLVER__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1,
klass, neededFor), e);
+
} catch (IllegalAccessException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_REGION__MSG__PARTITION_RESOLVER__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1,
@@ -452,8 +465,4 @@ public class RegionCreateFunction extends FunctionAdapter implements InternalEnt
}
}
- @Override
- public String getId() {
- return ID;
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java
index 5e4af3d..3a2becd 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionDestroyFunction.java
@@ -15,7 +15,6 @@
package org.apache.geode.management.internal.cli.functions;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
@@ -25,31 +24,22 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
/**
- *
* @since GemFire 7.0
*/
public class RegionDestroyFunction implements Function, InternalEntity {
private static final long serialVersionUID = 9172773671865750685L;
- public static final RegionDestroyFunction INSTANCE = new RegionDestroyFunction();
-
- private static final String ID = RegionDestroyFunction.class.getName();
-
- @Override
- public boolean hasResult() {
- return true;
- }
-
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
String regionPath = null;
+
try {
String functionId = context.getFunctionId();
if (getId().equals(functionId)) {
Object arguments = context.getArguments();
if (arguments != null) {
regionPath = (String) arguments;
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
Region<?, ?> region = cache.getRegion(regionPath);
region.destroyRegion();
String regionName =
@@ -58,22 +48,25 @@ public class RegionDestroyFunction implements Function, InternalEntity {
context.getResultSender().lastResult(new CliFunctionResult("", xmlEntity, regionPath));
}
}
+
context.getResultSender().lastResult(new CliFunctionResult("", false, "FAILURE"));
+
} catch (IllegalStateException e) {
context.getResultSender().lastResult(new CliFunctionResult("", e, null));
+
} catch (Exception ex) {
context.getResultSender()
.lastResult(new CliFunctionResult("",
new RuntimeException(CliStrings.format(
CliStrings.DESTROY_REGION__MSG__ERROR_WHILE_DESTROYING_REGION_0_REASON_1,
- new Object[] {regionPath, ex.getMessage()})),
+ regionPath, ex.getMessage())),
null));
}
}
@Override
- public String getId() {
- return ID;
+ public boolean hasResult() {
+ return true;
}
@Override
@@ -85,4 +78,5 @@ public class RegionDestroyFunction implements Function, InternalEntity {
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
index 3af79eb..96c1cf8 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
@@ -44,55 +44,130 @@ public class RegionFunctionArgs implements Serializable {
private final Boolean skipIfExists;
private final String keyConstraint;
private final String valueConstraint;
- private Boolean statisticsEnabled;
+ private final Boolean statisticsEnabled;
private final boolean isSetStatisticsEnabled;
private final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime;
private final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL;
private final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime;
private final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL;
private final String diskStore;
- private Boolean diskSynchronous;
+ private final Boolean diskSynchronous;
private final boolean isSetDiskSynchronous;
- private Boolean enableAsyncConflation;
+ private final Boolean enableAsyncConflation;
private final boolean isSetEnableAsyncConflation;
- private Boolean enableSubscriptionConflation;
+ private final Boolean enableSubscriptionConflation;
private final boolean isSetEnableSubscriptionConflation;
private final Set<String> cacheListeners;
private final String cacheLoader;
private final String cacheWriter;
private final Set<String> asyncEventQueueIds;
private final Set<String> gatewaySenderIds;
- private Boolean concurrencyChecksEnabled;
+ private final Boolean concurrencyChecksEnabled;
private final boolean isSetConcurrencyChecksEnabled;
- private Boolean cloningEnabled;
+ private final Boolean cloningEnabled;
private final boolean isSetCloningEnabled;
- private Boolean mcastEnabled;
+ private final Boolean mcastEnabled;
private final boolean isSetMcastEnabled;
- private Integer concurrencyLevel;
+ private final Integer concurrencyLevel;
private final boolean isSetConcurrencyLevel;
private final PartitionArgs partitionArgs;
private final Integer evictionMax;
- private String compressor;
+ private final String compressor;
private final boolean isSetCompressor;
- private Boolean offHeap;
+ private final Boolean offHeap;
private final boolean isSetOffHeap;
- private RegionAttributes<?, ?> regionAttributes;
private final boolean isPartitionResolver;
- private String partitionResolver;
-
- public RegionFunctionArgs(String regionPath, RegionShortcut regionShortcut,
- String useAttributesFrom, boolean skipIfExists, String keyConstraint, String valueConstraint,
- Boolean statisticsEnabled, RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime,
- RegionFunctionArgs.ExpirationAttrs entryExpirationTTL,
- RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime,
- RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, String diskStore,
- Boolean diskSynchronous, Boolean enableAsyncConflation, Boolean enableSubscriptionConflation,
- String[] cacheListeners, String cacheLoader, String cacheWriter, String[] asyncEventQueueIds,
- String[] gatewaySenderIds, Boolean concurrencyChecksEnabled, Boolean cloningEnabled,
- Integer concurrencyLevel, String prColocatedWith, Integer prLocalMaxMemory,
- Long prRecoveryDelay, Integer prRedundantCopies, Long prStartupRecoveryDelay,
- Long prTotalMaxMemory, Integer prTotalNumBuckets, Integer evictionMax, String compressor,
- Boolean offHeap, Boolean mcastEnabled, final String partitionResolver) {
+ private final String partitionResolver;
+ private final RegionAttributes<?, ?> regionAttributes;
+
+ /**
+ * Constructor with RegionShortcut instead of RegionAttributes.
+ *
+ * <p>
+ * NOTE: evictionMax and compressor used to be hardcoded to null but are now passed in.
+ * RegionAttributes is still null.
+ */
+ public RegionFunctionArgs(final String regionPath, final RegionShortcut regionShortcut,
+ final String useAttributesFrom, final boolean skipIfExists, final String keyConstraint,
+ final String valueConstraint, final Boolean statisticsEnabled,
+ final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime,
+ final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL,
+ final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime,
+ final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, final String diskStore,
+ final Boolean diskSynchronous, final Boolean enableAsyncConflation,
+ final Boolean enableSubscriptionConflation, final String[] cacheListeners,
+ final String cacheLoader, final String cacheWriter, final String[] asyncEventQueueIds,
+ final String[] gatewaySenderIds, final Boolean concurrencyChecksEnabled,
+ final Boolean cloningEnabled, final Integer concurrencyLevel, final String prColocatedWith,
+ final Integer prLocalMaxMemory, final Long prRecoveryDelay, final Integer prRedundantCopies,
+ final Long prStartupRecoveryDelay, final Long prTotalMaxMemory,
+ final Integer prTotalNumBuckets, final Integer evictionMax, final String compressor,
+ final Boolean offHeap, final Boolean mcastEnabled, final String partitionResolver) {
+
+ this(regionPath, regionShortcut, useAttributesFrom, skipIfExists, keyConstraint,
+ valueConstraint, statisticsEnabled, entryExpirationIdleTime, entryExpirationTTL,
+ regionExpirationIdleTime, regionExpirationTTL, diskStore, diskSynchronous,
+ enableAsyncConflation, enableSubscriptionConflation, cacheListeners, cacheLoader,
+ cacheWriter, asyncEventQueueIds, gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled,
+ concurrencyLevel, prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies,
+ prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, evictionMax, compressor,
+ offHeap, mcastEnabled, partitionResolver, null);
+ }
+
+ /**
+ * Constructor with RegionAttributes instead of RegionShortcut.
+ *
+ * <p>
+ * Note: regionShortcut, evictionMax and compressor are hardcoded to null.
+ */
+ public RegionFunctionArgs(final String regionPath, final String useAttributesFrom,
+ final boolean skipIfExists, final String keyConstraint, final String valueConstraint,
+ final Boolean statisticsEnabled,
+ final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime,
+ final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL,
+ final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime,
+ final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, final String diskStore,
+ final Boolean diskSynchronous, final Boolean enableAsyncConflation,
+ final Boolean enableSubscriptionConflation, final String[] cacheListeners,
+ final String cacheLoader, final String cacheWriter, final String[] asyncEventQueueIds,
+ final String[] gatewaySenderIds, final Boolean concurrencyChecksEnabled,
+ final Boolean cloningEnabled, final Integer concurrencyLevel, final String prColocatedWith,
+ final Integer prLocalMaxMemory, final Long prRecoveryDelay, final Integer prRedundantCopies,
+ final Long prStartupRecoveryDelay, final Long prTotalMaxMemory,
+ final Integer prTotalNumBuckets, final Boolean offHeap, final Boolean mcastEnabled,
+ final String partitionResolver, final RegionAttributes<?, ?> regionAttributes) {
+
+ this(regionPath, null, useAttributesFrom, skipIfExists, keyConstraint, valueConstraint,
+ statisticsEnabled, entryExpirationIdleTime, entryExpirationTTL, regionExpirationIdleTime,
+ regionExpirationTTL, diskStore, diskSynchronous, enableAsyncConflation,
+ enableSubscriptionConflation, cacheListeners, cacheLoader, cacheWriter, asyncEventQueueIds,
+ gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled, concurrencyLevel,
+ prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies,
+ prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, null, null, offHeap,
+ mcastEnabled, partitionResolver, regionAttributes);
+ }
+
+ /**
+ * Constructor with everything.
+ */
+ RegionFunctionArgs(final String regionPath, final RegionShortcut regionShortcut,
+ final String useAttributesFrom, final boolean skipIfExists, final String keyConstraint,
+ final String valueConstraint, final Boolean statisticsEnabled,
+ final RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime,
+ final RegionFunctionArgs.ExpirationAttrs entryExpirationTTL,
+ final RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime,
+ final RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, final String diskStore,
+ final Boolean diskSynchronous, final Boolean enableAsyncConflation,
+ final Boolean enableSubscriptionConflation, final String[] cacheListeners,
+ final String cacheLoader, final String cacheWriter, final String[] asyncEventQueueIds,
+ final String[] gatewaySenderIds, final Boolean concurrencyChecksEnabled,
+ final Boolean cloningEnabled, final Integer concurrencyLevel, final String prColocatedWith,
+ final Integer prLocalMaxMemory, final Long prRecoveryDelay, final Integer prRedundantCopies,
+ final Long prStartupRecoveryDelay, final Long prTotalMaxMemory,
+ final Integer prTotalNumBuckets, final Integer evictionMax, final String compressor,
+ final Boolean offHeap, final Boolean mcastEnabled, final String partitionResolver,
+ final RegionAttributes<?, ?> regionAttributes) {
+
this.regionPath = regionPath;
this.regionShortcut = regionShortcut;
this.useAttributesFrom = useAttributesFrom;
@@ -100,63 +175,93 @@ public class RegionFunctionArgs implements Serializable {
this.keyConstraint = keyConstraint;
this.valueConstraint = valueConstraint;
this.evictionMax = evictionMax;
+
this.isSetStatisticsEnabled = statisticsEnabled != null;
if (this.isSetStatisticsEnabled) {
this.statisticsEnabled = statisticsEnabled;
+ } else {
+ this.statisticsEnabled = null;
}
+
this.entryExpirationIdleTime = entryExpirationIdleTime;
this.entryExpirationTTL = entryExpirationTTL;
this.regionExpirationIdleTime = regionExpirationIdleTime;
this.regionExpirationTTL = regionExpirationTTL;
this.diskStore = diskStore;
+
this.isSetDiskSynchronous = diskSynchronous != null;
if (this.isSetDiskSynchronous) {
this.diskSynchronous = diskSynchronous;
+ } else {
+ this.diskSynchronous = null;
}
+
this.isSetEnableAsyncConflation = enableAsyncConflation != null;
if (this.isSetEnableAsyncConflation) {
this.enableAsyncConflation = enableAsyncConflation;
+ } else {
+ this.enableAsyncConflation = null;
}
+
this.isSetEnableSubscriptionConflation = enableSubscriptionConflation != null;
if (this.isSetEnableSubscriptionConflation) {
this.enableSubscriptionConflation = enableSubscriptionConflation;
+ } else {
+ this.enableSubscriptionConflation = null;
}
+
if (cacheListeners != null) {
this.cacheListeners = new LinkedHashSet<>();
this.cacheListeners.addAll(Arrays.asList(cacheListeners));
} else {
this.cacheListeners = null;
}
+
this.cacheLoader = cacheLoader;
this.cacheWriter = cacheWriter;
+
if (asyncEventQueueIds != null) {
this.asyncEventQueueIds = new LinkedHashSet<>();
this.asyncEventQueueIds.addAll(Arrays.asList(asyncEventQueueIds));
} else {
this.asyncEventQueueIds = null;
}
+
if (gatewaySenderIds != null) {
this.gatewaySenderIds = new LinkedHashSet<>();
this.gatewaySenderIds.addAll(Arrays.asList(gatewaySenderIds));
} else {
this.gatewaySenderIds = null;
}
+
this.isSetConcurrencyChecksEnabled = concurrencyChecksEnabled != null;
if (this.isSetConcurrencyChecksEnabled) {
this.concurrencyChecksEnabled = concurrencyChecksEnabled;
+ } else {
+ this.concurrencyChecksEnabled = null;
}
+
this.isSetCloningEnabled = cloningEnabled != null;
if (this.isSetCloningEnabled) {
this.cloningEnabled = cloningEnabled;
+ } else {
+ this.cloningEnabled = null;
}
+
this.isSetMcastEnabled = mcastEnabled != null;
if (isSetMcastEnabled) {
this.mcastEnabled = mcastEnabled;
+ } else {
+ this.mcastEnabled = null;
}
+
this.isSetConcurrencyLevel = concurrencyLevel != null;
if (this.isSetConcurrencyLevel) {
this.concurrencyLevel = concurrencyLevel;
+ } else {
+ this.concurrencyLevel = null;
}
+
this.partitionArgs =
new PartitionArgs(prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies,
prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, partitionResolver);
@@ -164,59 +269,35 @@ public class RegionFunctionArgs implements Serializable {
this.isSetCompressor = (compressor != null);
if (this.isSetCompressor) {
this.compressor = compressor;
+ } else {
+ this.compressor = null;
}
+
this.isSetOffHeap = (offHeap != null);
if (this.isSetOffHeap) {
this.offHeap = offHeap;
+ } else {
+ this.offHeap = null;
}
+
this.isPartitionResolver = (partitionResolver != null);
if (this.isPartitionResolver) {
this.partitionResolver = partitionResolver;
+ } else {
+ this.partitionResolver = null;
}
- }
- // Constructor to be used for supplied region attributes
- public RegionFunctionArgs(String regionPath, String useAttributesFrom, boolean skipIfExists,
- String keyConstraint, String valueConstraint, Boolean statisticsEnabled,
- RegionFunctionArgs.ExpirationAttrs entryExpirationIdleTime,
- RegionFunctionArgs.ExpirationAttrs entryExpirationTTL,
- RegionFunctionArgs.ExpirationAttrs regionExpirationIdleTime,
- RegionFunctionArgs.ExpirationAttrs regionExpirationTTL, String diskStore,
- Boolean diskSynchronous, Boolean enableAsyncConflation, Boolean enableSubscriptionConflation,
- String[] cacheListeners, String cacheLoader, String cacheWriter, String[] asyncEventQueueIds,
- String[] gatewaySenderIds, Boolean concurrencyChecksEnabled, Boolean cloningEnabled,
- Integer concurrencyLevel, String prColocatedWith, Integer prLocalMaxMemory,
- Long prRecoveryDelay, Integer prRedundantCopies, Long prStartupRecoveryDelay,
- Long prTotalMaxMemory, Integer prTotalNumBuckets, Boolean offHeap, Boolean mcastEnabled,
- RegionAttributes<?, ?> regionAttributes, final String partitionResolver) {
- this(regionPath, null, useAttributesFrom, skipIfExists, keyConstraint, valueConstraint,
- statisticsEnabled, entryExpirationIdleTime, entryExpirationTTL, regionExpirationIdleTime,
- regionExpirationTTL, diskStore, diskSynchronous, enableAsyncConflation,
- enableSubscriptionConflation, cacheListeners, cacheLoader, cacheWriter, asyncEventQueueIds,
- gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled, concurrencyLevel,
- prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies,
- prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, null, null, offHeap,
- mcastEnabled, partitionResolver);
this.regionAttributes = regionAttributes;
}
- /**
- * @return the regionPath
- */
public String getRegionPath() {
return this.regionPath;
}
- /**
- * @return the regionShortcut
- */
public RegionShortcut getRegionShortcut() {
return this.regionShortcut;
}
- /**
- * @return the useAttributesFrom
- */
public String getUseAttributesFrom() {
return this.useAttributesFrom;
}
@@ -229,86 +310,50 @@ public class RegionFunctionArgs implements Serializable {
&& this.regionAttributes != null;
}
- /**
- * @return the skipIfExists
- */
public Boolean isSkipIfExists() {
return this.skipIfExists;
}
- /**
- * @return the keyConstraint
- */
public String getKeyConstraint() {
return this.keyConstraint;
}
- /**
- * @return the valueConstraint
- */
public String getValueConstraint() {
return this.valueConstraint;
}
- /**
- * @return the statisticsEnabled
- */
public Boolean isStatisticsEnabled() {
return this.statisticsEnabled;
}
- /**
- * @return the isSetStatisticsEnabled
- */
public Boolean isSetStatisticsEnabled() {
return this.isSetStatisticsEnabled;
}
- /**
- * @return the entryExpirationIdleTime
- */
public RegionFunctionArgs.ExpirationAttrs getEntryExpirationIdleTime() {
return this.entryExpirationIdleTime;
}
- /**
- * @return the entryExpirationTTL
- */
public RegionFunctionArgs.ExpirationAttrs getEntryExpirationTTL() {
return this.entryExpirationTTL;
}
- /**
- * @return the regionExpirationIdleTime
- */
public RegionFunctionArgs.ExpirationAttrs getRegionExpirationIdleTime() {
return this.regionExpirationIdleTime;
}
- /**
- * @return the regionExpirationTTL
- */
public RegionFunctionArgs.ExpirationAttrs getRegionExpirationTTL() {
return this.regionExpirationTTL;
}
- /**
- * @return the diskStore
- */
public String getDiskStore() {
return this.diskStore;
}
- /**
- * @return the diskSynchronous
- */
public Boolean isDiskSynchronous() {
return this.diskSynchronous;
}
- /**
- * @return the isSetDiskSynchronous
- */
public Boolean isSetDiskSynchronous() {
return this.isSetDiskSynchronous;
}
@@ -321,37 +366,22 @@ public class RegionFunctionArgs implements Serializable {
return this.isSetOffHeap;
}
- /**
- * @return the enableAsyncConflation
- */
public Boolean isEnableAsyncConflation() {
return this.enableAsyncConflation;
}
- /**
- * @return the isSetEnableAsyncConflation
- */
public Boolean isSetEnableAsyncConflation() {
return this.isSetEnableAsyncConflation;
}
- /**
- * @return the enableSubscriptionConflation
- */
public Boolean isEnableSubscriptionConflation() {
return this.enableSubscriptionConflation;
}
- /**
- * @return the isSetEnableSubscriptionConflation
- */
public Boolean isSetEnableSubscriptionConflation() {
return this.isSetEnableSubscriptionConflation;
}
- /**
- * @return the cacheListeners
- */
public Set<String> getCacheListeners() {
if (this.cacheListeners == null) {
return null;
@@ -359,23 +389,14 @@ public class RegionFunctionArgs implements Serializable {
return Collections.unmodifiableSet(this.cacheListeners);
}
- /**
- * @return the cacheLoader
- */
public String getCacheLoader() {
return this.cacheLoader;
}
- /**
- * @return the cacheWriter
- */
public String getCacheWriter() {
return this.cacheWriter;
}
- /**
- * @return the asyncEventQueueIds
- */
public Set<String> getAsyncEventQueueIds() {
if (this.asyncEventQueueIds == null) {
return null;
@@ -383,9 +404,6 @@ public class RegionFunctionArgs implements Serializable {
return Collections.unmodifiableSet(this.asyncEventQueueIds);
}
- /**
- * @return the gatewaySenderIds
- */
public Set<String> getGatewaySenderIds() {
if (this.gatewaySenderIds == null) {
return null;
@@ -393,72 +411,42 @@ public class RegionFunctionArgs implements Serializable {
return Collections.unmodifiableSet(this.gatewaySenderIds);
}
- /**
- * @return the PartitionResolver
- */
public String getPartitionResolver() {
return this.partitionResolver;
}
- /**
- * @return True if Partition Resolver is set otherwise False
- */
public Boolean isPartitionResolverSet() {
return this.isPartitionResolver;
}
- /**
- * @return the concurrencyChecksEnabled
- */
public Boolean isConcurrencyChecksEnabled() {
return this.concurrencyChecksEnabled;
}
- /**
- * @return the isSetConcurrencyChecksEnabled
- */
public Boolean isSetConcurrencyChecksEnabled() {
return this.isSetConcurrencyChecksEnabled;
}
- /**
- * @return the cloningEnabled
- */
public Boolean isCloningEnabled() {
return this.cloningEnabled;
}
- /**
- * @return the isSetCloningEnabled
- */
public Boolean isSetCloningEnabled() {
return this.isSetCloningEnabled;
}
- /**
- * @return the mcastEnabled setting
- */
public Boolean isMcastEnabled() {
return this.mcastEnabled;
}
- /**
- * @return the isSetCloningEnabled
- */
public Boolean isSetMcastEnabled() {
return this.isSetMcastEnabled;
}
- /**
- * @return the concurrencyLevel
- */
public Integer getConcurrencyLevel() {
return this.concurrencyLevel;
}
- /**
- * @return the isSetConcurrencyLevel
- */
public Boolean isSetConcurrencyLevel() {
return this.isSetConcurrencyLevel;
}
@@ -468,45 +456,26 @@ public class RegionFunctionArgs implements Serializable {
|| (this.regionShortcut != null && this.regionShortcut.name().startsWith("PARTITION"));
}
- /**
- * @return the partitionArgs
- */
public boolean hasPartitionAttributes() {
return this.partitionArgs != null && this.partitionArgs.hasPartitionAttributes();
}
- /**
- * @return the partitionArgs
- */
public PartitionArgs getPartitionArgs() {
return this.partitionArgs;
}
- /**
- * @return the evictionMax
- */
public Integer getEvictionMax() {
return this.evictionMax;
}
- /**
- * @return the compressor.
- */
public String getCompressor() {
return this.compressor;
}
- /**
- * @return the isSetCompressor.
- */
public boolean isSetCompressor() {
return this.isSetCompressor;
}
- /**
- * @return the regionAttributes
- */
- @SuppressWarnings("unchecked")
public <K, V> RegionAttributes<K, V> getRegionAttributes() {
return (RegionAttributes<K, V>) this.regionAttributes;
}
@@ -514,14 +483,16 @@ public class RegionFunctionArgs implements Serializable {
public static class ExpirationAttrs implements Serializable {
private static final long serialVersionUID = 1474255033398008062L;
- private ExpirationFor type;
- private Integer time;
- private ExpirationAction action;
+ private final ExpirationFor type;
+ private final Integer time;
+ private final ExpirationAction action;
- public ExpirationAttrs(ExpirationFor type, Integer time, String action) {
+ public ExpirationAttrs(final ExpirationFor type, final Integer time, final String action) {
this.type = type;
this.time = time;
- if (action != null) {
+ if (action == null) {
+ this.action = null;
+ } else {
this.action = getExpirationAction(action);
}
}
@@ -536,23 +507,14 @@ public class RegionFunctionArgs implements Serializable {
return expirationAttr;
}
- /**
- * @return the type
- */
public ExpirationFor getType() {
return type;
}
- /**
- * @return the time
- */
public Integer getTime() {
return time;
}
- /**
- * @return the action
- */
public ExpirationAction getAction() {
return action;
}
@@ -595,6 +557,7 @@ public class RegionFunctionArgs implements Serializable {
}
}
+ // TODO: make PartitionArgs immutable
public static class PartitionArgs implements Serializable {
private static final long serialVersionUID = 5907052187323280919L;
@@ -617,9 +580,10 @@ public class RegionFunctionArgs implements Serializable {
private boolean hasPartitionAttributes;
private final Set<String> userSpecifiedPartitionAttributes = new HashSet<>();
- public PartitionArgs(String prColocatedWith, Integer prLocalMaxMemory, Long prRecoveryDelay,
- Integer prRedundantCopies, Long prStartupRecoveryDelay, Long prTotalMaxMemory,
- Integer prTotalNumBuckets, String partitionResolver) {
+ public PartitionArgs(final String prColocatedWith, final Integer prLocalMaxMemory,
+ final Long prRecoveryDelay, final Integer prRedundantCopies,
+ final Long prStartupRecoveryDelay, final Long prTotalMaxMemory,
+ final Integer prTotalNumBuckets, final String partitionResolver) {
this.prColocatedWith = prColocatedWith;
if (this.prColocatedWith != null) {
this.hasPartitionAttributes = true;
@@ -667,112 +631,67 @@ public class RegionFunctionArgs implements Serializable {
this.hasPartitionAttributes = true;
userSpecifiedPartitionAttributes.add(CliStrings.CREATE_REGION__PARTITION_RESOLVER);
}
-
}
- /**
- * @return the hasPartitionAttributes
- */
public Boolean hasPartitionAttributes() {
return hasPartitionAttributes;
}
- /**
- * @return the userSpecifiedPartitionAttributes
- */
public String getUserSpecifiedPartitionAttributes() {
return CliUtil.collectionToString(userSpecifiedPartitionAttributes, -1);
}
- /**
- * @return the prColocatedWith
- */
public String getPrColocatedWith() {
return prColocatedWith;
}
- /**
- * @return the prLocalMaxMemory
- */
public Integer getPrLocalMaxMemory() {
return prLocalMaxMemory;
}
- /**
- * @return the isSetPRLocalMaxMemory
- */
public Boolean isSetPRLocalMaxMemory() {
return isSetPRLocalMaxMemory;
}
- /**
- * @return the prRecoveryDelay
- */
public Long getPrRecoveryDelay() {
return prRecoveryDelay;
}
- /**
- * @return the isSetPRRecoveryDelay
- */
public Boolean isSetPRRecoveryDelay() {
return isSetPRRecoveryDelay;
}
- /**
- * @return the prRedundantCopies
- */
public Integer getPrRedundantCopies() {
return prRedundantCopies;
}
- /**
- * @return the isSetPRRedundantCopies
- */
public Boolean isSetPRRedundantCopies() {
return isSetPRRedundantCopies;
}
- /**
- * @return the prStartupRecoveryDelay
- */
public Long getPrStartupRecoveryDelay() {
return prStartupRecoveryDelay;
}
- /**
- * @return the isSetPRStartupRecoveryDelay
- */
public Boolean isSetPRStartupRecoveryDelay() {
return isSetPRStartupRecoveryDelay;
}
- /**
- * @return the prTotalMaxMemory
- */
public Long getPrTotalMaxMemory() {
return prTotalMaxMemory;
}
- /**
- * @return the isSetPRTotalMaxMemory
- */
public Boolean isSetPRTotalMaxMemory() {
return isSetPRTotalMaxMemory;
}
- /**
- * @return the prTotalNumBuckets
- */
public Integer getPrTotalNumBuckets() {
return prTotalNumBuckets;
}
- /**
- * @return the isSetPRTotalNumBuckets
- */
public Boolean isSetPRTotalNumBuckets() {
return isSetPRTotalNumBuckets;
}
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
index 2a1b746..bbc5609 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShowMissingDiskStoresFunction.java
@@ -19,11 +19,10 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.InternalEntity;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.PartitionedRegion;
import org.apache.geode.internal.cache.partitioned.ColocatedRegionDetails;
@@ -31,21 +30,22 @@ import org.apache.geode.internal.cache.persistence.PersistentMemberID;
import org.apache.geode.internal.cache.persistence.PersistentMemberManager;
import org.apache.geode.internal.cache.persistence.PersistentMemberPattern;
-public class ShowMissingDiskStoresFunction extends FunctionAdapter implements InternalEntity {
+public class ShowMissingDiskStoresFunction implements Function, InternalEntity {
@Override
- public void execute(FunctionContext context) {
- final Set<PersistentMemberPattern> memberMissingIDs = new HashSet<PersistentMemberPattern>();
- Set<ColocatedRegionDetails> missingColocatedRegions = new HashSet<ColocatedRegionDetails>();
-
+ public void execute(final FunctionContext context) {
if (context == null) {
throw new RuntimeException();
}
+
+ Set<PersistentMemberPattern> memberMissingIDs = new HashSet<>();
+ Set<ColocatedRegionDetails> missingColocatedRegions = new HashSet<>();
+
try {
- final InternalCache cache = (InternalCache) context.getCache();
+ InternalCache cache = (InternalCache) context.getCache();
if (cache != null && !cache.isClosed()) {
- final DistributedMember member = cache.getMyId();
+ DistributedMember member = cache.getMyId();
// Missing DiskStores
PersistentMemberManager mm = cache.getPersistentMemberManager();
@@ -55,6 +55,7 @@ public class ShowMissingDiskStoresFunction extends FunctionAdapter implements In
memberMissingIDs.add(new PersistentMemberPattern(id));
}
}
+
// Missing colocated regions
Set<PartitionedRegion> prs = cache.getPartitionedRegions();
for (PartitionedRegion pr : prs) {
@@ -80,13 +81,10 @@ public class ShowMissingDiskStoresFunction extends FunctionAdapter implements In
context.getResultSender().lastResult(missingColocatedRegions);
}
}
+
} catch (Exception e) {
context.getResultSender().sendException(e);
}
}
- @Override
- public String getId() {
- return getClass().getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java
index 83d694f..d07c8a8 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ShutDownFunction.java
@@ -14,62 +14,57 @@
*/
package org.apache.geode.management.internal.cli.functions;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import org.apache.logging.log4j.Logger;
+
+import org.apache.geode.cache.Cache;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.distributed.DistributedSystem;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.tcp.ConnectionTable;
-import org.apache.logging.log4j.Logger;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
/**
- *
* Class for Shutdown function
- *
- *
- *
*/
public class ShutDownFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = ShutDownFunction.class.getName();
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
try {
- final InternalDistributedSystem system = InternalDistributedSystem.getConnectedInstance();
- if (system == null) {
- return;
- }
- String memberName = system.getDistributedMember().getId();
+ Cache cache = context.getCache();
+ String memberName = cache.getDistributedSystem().getDistributedMember().getId();
+
logger.info("Received GFSH shutdown. Shutting down member " + memberName);
- disconnectInNonDaemonThread(system);
+ disconnectInNonDaemonThread(cache.getDistributedSystem());
context.getResultSender().lastResult("SUCCESS: succeeded in shutting down " + memberName);
+
} catch (Exception ex) {
logger.warn("Error during shutdown", ex);
context.getResultSender().lastResult("FAILURE: failed in shutting down " + ex.getMessage());
}
}
- /*
+ /**
* The shutdown is performed in a separate, non-daemon thread so that the JVM does not shut down
* prematurely before the full process has completed.
*/
- private void disconnectInNonDaemonThread(final InternalDistributedSystem ids)
+ private void disconnectInNonDaemonThread(final DistributedSystem system)
throws InterruptedException, ExecutionException {
ExecutorService exec = Executors.newSingleThreadExecutor();
Future future = exec.submit(() -> {
ConnectionTable.threadWantsSharedResources();
- if (ids.isConnected()) {
- ids.disconnect();
+ if (system.isConnected()) {
+ system.disconnect();
}
});
try {
@@ -80,12 +75,6 @@ public class ShutDownFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ShutDownFunction.ID;
-
- }
-
- @Override
public boolean hasResult() {
return true;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
index fbb60a0..5c54744 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
@@ -17,9 +17,6 @@ package org.apache.geode.management.internal.cli.functions;
import java.io.File;
import java.io.IOException;
-import org.apache.geode.management.ManagementException;
-import org.apache.geode.management.internal.cli.util.BytesToString;
-import org.apache.geode.management.internal.cli.util.LogExporter;
import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.execute.Function;
@@ -27,14 +24,16 @@ import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.InternalEntity;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.management.ManagementException;
+import org.apache.geode.management.internal.cli.util.BytesToString;
+import org.apache.geode.management.internal.cli.util.LogExporter;
import org.apache.geode.management.internal.cli.util.LogFilter;
public class SizeExportLogsFunction extends ExportLogsFunction implements Function, InternalEntity {
- private static final Logger LOGGER = LogService.getLogger();
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LogService.getLogger();
@Override
public void execute(final FunctionContext context) {
@@ -58,20 +57,19 @@ public class SizeExportLogsFunction extends ExportLogsFunction implements Functi
}
} catch (Exception e) {
- e.printStackTrace();
- LOGGER.error(e.getMessage());
+ logger.error(e);
context.getResultSender().sendException(e);
}
}
- long getDiskAvailable(DistributionConfig config) {
+ long getDiskAvailable(final DistributionConfig config) {
return config.getLogFile().getUsableSpace();
}
long estimateLogFileSize(final DistributedMember member, final File logFile,
final File statArchive, final Args args) throws IOException {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("SizeExportLogsFunction started for member {}", member);
+ if (logger.isDebugEnabled()) {
+ logger.debug("SizeExportLogsFunction started for member {}", member);
}
File baseLogFile = null;
@@ -90,8 +88,9 @@ public class SizeExportLogsFunction extends ExportLogsFunction implements Functi
long estimatedSize =
new LogExporter(logFilter, baseLogFile, baseStatsFile).estimateFilteredSize();
- LOGGER.info("Estimated log file size: " + estimatedSize);
+ logger.info("Estimated log file size: " + estimatedSize);
return estimatedSize;
}
+
}
[50/50] [abbrv] geode git commit: Convert to use
FunctionContext.getCache()
Posted by kl...@apache.org.
Convert to use FunctionContext.getCache()
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/75b06ac0
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/75b06ac0
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/75b06ac0
Branch: refs/heads/feature/GEODE-3299
Commit: 75b06ac092a3af5e0894a1af2da5d74dc085a7bc
Parents: b218ca3
Author: Kirk Lund <kl...@apache.org>
Authored: Mon Jul 24 12:44:37 2017 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Tue Aug 1 14:02:40 2017 -0700
----------------------------------------------------------------------
.../geode/cache/execute/FunctionContext.java | 17 +-
.../CreateAlterDestroyRegionCommands.java | 20 +-
.../cli/commands/ExportLogsInterceptor.java | 8 +-
.../cli/commands/MiscellaneousCommands.java | 2 +-
.../functions/AlterRuntimeConfigFunction.java | 32 +-
.../functions/AsyncEventQueueFunctionArgs.java | 48 +--
.../cli/functions/ChangeLogLevelFunction.java | 42 +-
.../cli/functions/CliFunctionResult.java | 41 +-
.../functions/CloseDurableClientFunction.java | 22 +-
.../cli/functions/CloseDurableCqFunction.java | 24 +-
.../cli/functions/ContinuousQueryFunction.java | 43 ++-
.../CreateAsyncEventQueueFunction.java | 27 +-
.../functions/CreateDefinedIndexesFunction.java | 35 +-
.../cli/functions/CreateDiskStoreFunction.java | 38 +-
.../cli/functions/CreateIndexFunction.java | 35 +-
.../internal/cli/functions/DeployFunction.java | 27 +-
.../functions/DescribeDiskStoreFunction.java | 150 +++-----
.../cli/functions/DestroyDiskStoreFunction.java | 24 +-
.../cli/functions/DestroyIndexFunction.java | 26 +-
.../cli/functions/ExportConfigFunction.java | 22 +-
.../cli/functions/ExportDataFunction.java | 29 +-
.../cli/functions/ExportLogsFunction.java | 72 ++--
.../FetchRegionAttributesFunction.java | 60 +--
.../FetchSharedConfigurationStatusFunction.java | 19 +-
.../functions/GarbageCollectionFunction.java | 19 +-
.../GatewayReceiverCreateFunction.java | 55 ++-
.../functions/GatewayReceiverFunctionArgs.java | 13 +-
.../functions/GatewaySenderCreateFunction.java | 49 +--
.../functions/GatewaySenderDestroyFunction.java | 25 +-
.../GatewaySenderDestroyFunctionArgs.java | 6 +-
.../functions/GatewaySenderFunctionArgs.java | 18 +-
.../GetMemberConfigInformationFunction.java | 99 ++---
.../functions/GetMemberInformationFunction.java | 100 ++---
.../functions/GetRegionDescriptionFunction.java | 21 +-
.../cli/functions/GetRegionsFunction.java | 11 +-
.../cli/functions/GetStackTracesFunction.java | 17 +-
.../GetSubscriptionQueueSizeFunction.java | 21 +-
.../cli/functions/ImportDataFunction.java | 30 +-
.../functions/ListAsyncEventQueuesFunction.java | 24 +-
.../cli/functions/ListDeployedFunction.java | 33 +-
.../cli/functions/ListDiskStoresFunction.java | 40 +-
.../functions/ListDurableCqNamesFunction.java | 26 +-
.../cli/functions/ListFunctionFunction.java | 25 +-
.../cli/functions/ListIndexFunction.java | 25 +-
.../cli/functions/MemberRegionFunction.java | 83 ----
.../cli/functions/MembersForRegionFunction.java | 31 +-
.../internal/cli/functions/NetstatFunction.java | 115 +++---
.../cli/functions/RebalanceFunction.java | 55 ++-
.../cli/functions/RegionAlterFunction.java | 80 ++--
.../cli/functions/RegionCreateFunction.java | 129 ++++---
.../cli/functions/RegionDestroyFunction.java | 26 +-
.../cli/functions/RegionFunctionArgs.java | 385 ++++++++-----------
.../ShowMissingDiskStoresFunction.java | 24 +-
.../cli/functions/ShutDownFunction.java | 51 +--
.../cli/functions/SizeExportLogsFunction.java | 21 +-
.../cli/functions/UndeployFunction.java | 39 +-
.../cli/functions/UnregisterFunction.java | 23 +-
.../cli/functions/UserFunctionExecution.java | 17 +-
.../internal/cli/util/TimeParser.java | 47 +++
.../DescribeDiskStoreFunctionJUnitTest.java | 141 +++----
.../ListDiskStoresFunctionJUnitTest.java | 52 +--
.../functions/ListIndexFunctionJUnitTest.java | 31 +-
.../codeAnalysis/sanctionedSerializables.txt | 11 +-
63 files changed, 1174 insertions(+), 1707 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/cache/execute/FunctionContext.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/execute/FunctionContext.java b/geode-core/src/main/java/org/apache/geode/cache/execute/FunctionContext.java
index 0b4e7f9..00c877b 100755
--- a/geode-core/src/main/java/org/apache/geode/cache/execute/FunctionContext.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/execute/FunctionContext.java
@@ -19,20 +19,21 @@ import org.apache.geode.cache.Cache;
/**
* Defines the execution context of a {@link Function}. It is required by the
* {@link Function#execute(FunctionContext)} to execute a {@link Function} on a particular member.
+ *
* <p>
* A context can be data dependent or data independent. For data dependent functions refer to
* {@link RegionFunctionContext}
- * </p>
+ *
* <p>
* This interface is implemented by GemFire. Instances of it will be passed in to
* {@link Function#execute(FunctionContext)}.
- *
- * @param T1 object type of Arguments
+ *
+ * <p>
+ * T1 object type of Arguments
*
* @since GemFire 6.0
*
* @see RegionFunctionContext
- *
*/
public interface FunctionContext<T1> {
/**
@@ -64,7 +65,6 @@ public interface FunctionContext<T1> {
* @return ResultSender
* @since GemFire 6.0
*/
-
public <T2> ResultSender<T2> getResultSender();
/**
@@ -78,5 +78,12 @@ public interface FunctionContext<T1> {
*/
public boolean isPossibleDuplicate();
+ /**
+ * Returns a reference to the Cache.
+ *
+ * @return a reference to the Cache
+ *
+ * @since Geode 1.2
+ */
public Cache getCache();
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
index 2c61b73..4d6e0c7 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
@@ -259,6 +259,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
String cacheWriterClass =
cacheWriter != null ? cacheWriter : regionAttributesResult.getCacheWriterClass();
+ // use constructor with RegionAttributes (NOTE: evictionMax and compressor are null)
regionFunctionArgs = new RegionFunctionArgs(regionPath, useAttributesFrom, skipIfExists,
keyConstraint, valueConstraint, statisticsEnabled, entryIdle, entryTTL, regionIdle,
regionTTL, diskStore, diskSynchronous, enableAsyncConflation,
@@ -266,7 +267,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
asyncEventQueueIds, gatewaySenderIds, concurrencyChecksEnabled, cloningEnabled,
concurrencyLevel, prColocatedWith, prLocalMaxMemory, prRecoveryDelay, prRedundantCopies,
prStartupRecoveryDelay, prTotalMaxMemory, prTotalNumBuckets, offHeap, mcastEnabled,
- regionAttributes, partitionResolver);
+ partitionResolver, regionAttributes);
if (regionAttributes.getPartitionAttributes() == null
&& regionFunctionArgs.hasPartitionAttributes()) {
@@ -277,6 +278,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
useAttributesFrom));
}
} else {
+ // use constructor with RegionShortcut (NOTE: evictionMax is null)
regionFunctionArgs = new RegionFunctionArgs(regionPath, regionShortcut, useAttributesFrom,
skipIfExists, keyConstraint, valueConstraint, statisticsEnabled, entryIdle, entryTTL,
regionIdle, regionTTL, diskStore, diskSynchronous, enableAsyncConflation,
@@ -318,7 +320,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
return ResultBuilder.createUserErrorResult(CliStrings.NO_CACHING_MEMBERS_FOUND_MESSAGE);
}
- ResultCollector<?, ?> resultCollector = CliUtil.executeFunction(RegionCreateFunction.INSTANCE,
+ ResultCollector<?, ?> resultCollector = CliUtil.executeFunction(new RegionCreateFunction(),
regionFunctionArgs, membersToCreateRegionOn);
@SuppressWarnings("unchecked")
List<CliFunctionResult> regionCreateResults =
@@ -559,7 +561,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
return result;
}
- private static boolean regionExists(InternalCache cache, String regionPath) {
+ private boolean regionExists(InternalCache cache, String regionPath) {
boolean regionFound = false;
if (regionPath != null && !Region.SEPARATOR.equals(regionPath)) {
ManagementService managementService = ManagementService.getExistingManagementService(cache);
@@ -866,8 +868,8 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
return false;
}
- private static <K, V> FetchRegionAttributesFunctionResult<K, V> getRegionAttributes(
- InternalCache cache, String regionPath) {
+ private <K, V> FetchRegionAttributesFunctionResult<K, V> getRegionAttributes(InternalCache cache,
+ String regionPath) {
if (!isClusterWideSameConfig(cache, regionPath)) {
throw new IllegalStateException(CliStrings.format(
CliStrings.CREATE_REGION__MSG__USE_ATTRIBUTES_FORM_REGIONS_EXISTS_BUT_DIFFERENT_SCOPE_OR_DATAPOLICY_USE_DESCRIBE_REGION_FOR_0,
@@ -878,7 +880,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
// First check whether the region exists on a this manager, if yes then no
// need to use FetchRegionAttributesFunction to fetch RegionAttributes
try {
- attributes = FetchRegionAttributesFunction.getRegionAttributes(regionPath);
+ attributes = FetchRegionAttributesFunction.getRegionAttributes(cache, regionPath);
} catch (IllegalArgumentException e) {
/* region doesn't exist on the manager */
}
@@ -890,7 +892,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
if (regionAssociatedMembers != null && !regionAssociatedMembers.isEmpty()) {
DistributedMember distributedMember = regionAssociatedMembers.iterator().next();
ResultCollector<?, ?> resultCollector = CliUtil
- .executeFunction(FetchRegionAttributesFunction.INSTANCE, regionPath, distributedMember);
+ .executeFunction(new FetchRegionAttributesFunction(), regionPath, distributedMember);
List<?> resultsList = (List<?>) resultCollector.getResult();
if (resultsList != null && !resultsList.isEmpty()) {
@@ -920,7 +922,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
return attributes;
}
- private static boolean isClusterWideSameConfig(InternalCache cache, String regionPath) {
+ private boolean isClusterWideSameConfig(InternalCache cache, String regionPath) {
ManagementService managementService = ManagementService.getExistingManagementService(cache);
DistributedSystemMXBean dsMXBean = managementService.getDistributedSystemMXBean();
@@ -1002,7 +1004,7 @@ public class CreateAlterDestroyRegionCommands implements GfshCommand {
CliFunctionResult destroyRegionResult;
ResultCollector<?, ?> resultCollector =
- CliUtil.executeFunction(RegionDestroyFunction.INSTANCE, regionPath, regionMembersList);
+ CliUtil.executeFunction(new RegionDestroyFunction(), regionPath, regionMembersList);
List<CliFunctionResult> resultsList = (List<CliFunctionResult>) resultCollector.getResult();
String message =
CliStrings.format(CliStrings.DESTROY_REGION__MSG__REGION_0_1_DESTROYED, regionPath, "");
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsInterceptor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsInterceptor.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsInterceptor.java
index 5f21848..c5ac227 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsInterceptor.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportLogsInterceptor.java
@@ -21,9 +21,9 @@ import org.apache.geode.internal.logging.log4j.LogLevel;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.AbstractCliAroundInterceptor;
import org.apache.geode.management.internal.cli.GfshParseResult;
-import org.apache.geode.management.internal.cli.functions.ExportLogsFunction;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.logging.log4j.Level;
+import org.apache.geode.management.internal.cli.util.TimeParser;
+
import org.apache.logging.log4j.Logger;
import java.io.File;
@@ -61,8 +61,8 @@ public class ExportLogsInterceptor extends AbstractCliAroundInterceptor {
String end = arguments.get("end-time");
if (start != null && end != null) {
// need to make sure end is later than start
- LocalDateTime startTime = ExportLogsFunction.parseTime(start);
- LocalDateTime endTime = ExportLogsFunction.parseTime(end);
+ LocalDateTime startTime = TimeParser.parseTime(start);
+ LocalDateTime endTime = TimeParser.parseTime(end);
if (startTime.isAfter(endTime)) {
return ResultBuilder.createUserErrorResult("start-time has to be earlier than end-time.");
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
index 1415bc6..f7e65b4 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
@@ -456,7 +456,7 @@ public class MiscellaneousCommands implements GfshCommand {
if (!hostMemberMap.isEmpty()) {
Set<DistributedMember> membersToExecuteOn = new HashSet<>(hostMemberMap.values());
ResultCollector<?, ?> netstatResult =
- CliUtil.executeFunction(NetstatFunction.INSTANCE, nfa, membersToExecuteOn);
+ CliUtil.executeFunction(new NetstatFunction(), nfa, membersToExecuteOn);
List<?> resultList = (List<?>) netstatResult.getResult();
for (Object aResultList : resultList) {
NetstatFunctionResult netstatFunctionResult = (NetstatFunctionResult) aResultList;
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
index 53d3ab7..2505516 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
@@ -14,9 +14,14 @@
*/
package org.apache.geode.management.internal.cli.functions;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.logging.log4j.Logger;
+
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.ConfigSource;
@@ -25,29 +30,18 @@ import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-public class AlterRuntimeConfigFunction extends FunctionAdapter implements InternalEntity {
+public class AlterRuntimeConfigFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
-
private static Logger logger = LogService.getLogger();
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
-
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
String memberId = "";
try {
Object arg = context.getArguments();
- InternalCache cache = getCache();
+ InternalCache cache = (InternalCache) context.getCache();
DistributionConfig config = cache.getInternalDistributedSystem().getConfig();
memberId = cache.getDistributedSystem().getDistributedMember().getId();
@@ -82,15 +76,11 @@ public class AlterRuntimeConfigFunction extends FunctionAdapter implements Inter
context.getResultSender().lastResult(result);
} catch (Exception e) {
- logger.error("Exception happened on : " + memberId, e);
+ logger.error("Exception happened on : {}", memberId, e);
CliFunctionResult cliFuncResult =
new CliFunctionResult(memberId, e, CliUtil.stackTraceAsString(e));
context.getResultSender().lastResult(cliFuncResult);
}
}
- @Override
- public String getId() {
- return AlterRuntimeConfigFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs.java
index 2e297bf..aaeb9ed 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs.java
@@ -21,31 +21,32 @@ import java.util.Properties;
* This class stores the arguments provided for create async event queue command.
*/
public class AsyncEventQueueFunctionArgs implements Serializable {
-
private static final long serialVersionUID = -6524494645663740872L;
- private String asyncEventQueueId;
- private boolean isParallel;
- private boolean enableBatchConflation;
- private int batchSize;
- private int batchTimeInterval;
- private boolean persistent;
- private String diskStoreName;
- private boolean diskSynchronous;
- private int maxQueueMemory;
- private int dispatcherThreads;
- private String orderPolicy;
- private String[] gatewayEventFilters;
- private String gatewaySubstitutionFilter;
- private String listenerClassName;
- private Properties listenerProperties;
- private boolean forwardExpirationDestroy;
-
- public AsyncEventQueueFunctionArgs(String asyncEventQueueId, boolean isParallel,
- boolean enableBatchConflation, int batchSize, int batchTimeInterval, boolean persistent,
- String diskStoreName, boolean diskSynchronous, int maxQueueMemory, int dispatcherThreads,
- String orderPolicy, String[] gatewayEventFilters, String gatewaySubstitutionFilter,
- String listenerClassName, Properties listenerProperties, boolean forwardExpirationDestroy) {
+ private final String asyncEventQueueId;
+ private final boolean isParallel;
+ private final boolean enableBatchConflation;
+ private final int batchSize;
+ private final int batchTimeInterval;
+ private final boolean persistent;
+ private final String diskStoreName;
+ private final boolean diskSynchronous;
+ private final int maxQueueMemory;
+ private final int dispatcherThreads;
+ private final String orderPolicy;
+ private final String[] gatewayEventFilters;
+ private final String gatewaySubstitutionFilter;
+ private final String listenerClassName;
+ private final Properties listenerProperties;
+ private final boolean forwardExpirationDestroy;
+
+ public AsyncEventQueueFunctionArgs(final String asyncEventQueueId, final boolean isParallel,
+ final boolean enableBatchConflation, final int batchSize, final int batchTimeInterval,
+ final boolean persistent, final String diskStoreName, final boolean diskSynchronous,
+ final int maxQueueMemory, final int dispatcherThreads, final String orderPolicy,
+ final String[] gatewayEventFilters, final String gatewaySubstitutionFilter,
+ final String listenerClassName, final Properties listenerProperties,
+ final boolean forwardExpirationDestroy) {
this.asyncEventQueueId = asyncEventQueueId;
this.isParallel = isParallel;
this.enableBatchConflation = enableBatchConflation;
@@ -127,4 +128,5 @@ public class AsyncEventQueueFunctionArgs implements Serializable {
public boolean isForwardExpirationDestroy() {
return forwardExpirationDestroy;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction.java
index 91aabe4..fe9a515 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction.java
@@ -14,47 +14,42 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.log4j.LogLevel;
import org.apache.geode.internal.logging.log4j.LogMarker;
import org.apache.geode.internal.logging.log4j.LogWriterLogger;
-import org.apache.geode.internal.logging.log4j.LogLevel;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-
-import java.util.HashMap;
-import java.util.Map;
-
/**
- *
* Class for change log level function
*
- * since 8.0
- *
+ * @since GemFire 8.0
*/
-
public class ChangeLogLevelFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = ChangeLogLevelFunction.class.getName();
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
- Cache cache = CacheFactory.getAnyInstance();
- Map<String, String> result = new HashMap<String, String>();
+ public void execute(final FunctionContext context) {
+ Cache cache = context.getCache();
+ Map<String, String> result = new HashMap<>();
+
try {
LogWriterLogger logwriterLogger = (LogWriterLogger) cache.getLogger();
Object[] args = (Object[]) context.getArguments();
- final String logLevel = (String) args[0];
+ String logLevel = (String) args[0];
Level log4jLevel = LogLevel.getLevel(logLevel);
logwriterLogger.setLevel(log4jLevel);
System.setProperty(DistributionConfig.GEMFIRE_PREFIX + LOG_LEVEL, logLevel);
@@ -63,6 +58,7 @@ public class ChangeLogLevelFunction implements Function, InternalEntity {
result.put(cache.getDistributedSystem().getDistributedMember().getId(),
"New log level is " + log4jLevel);
context.getResultSender().lastResult(result);
+
} catch (Exception ex) {
// LOG:CONFIG:
logger.info(LogMarker.CONFIG, "GFSH Changing log level exception {}", ex.getMessage(), ex);
@@ -73,12 +69,6 @@ public class ChangeLogLevelFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ChangeLogLevelFunction.ID;
-
- }
-
- @Override
public boolean hasResult() {
return true;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CliFunctionResult.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CliFunctionResult.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CliFunctionResult.java
index 401c1a8..914f092 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CliFunctionResult.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CliFunctionResult.java
@@ -14,11 +14,6 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import org.apache.geode.DataSerializer;
-import org.apache.geode.internal.DataSerializableFixedID;
-import org.apache.geode.internal.Version;
-import org.apache.geode.management.internal.configuration.domain.XmlEntity;
-
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@@ -28,7 +23,14 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import org.apache.geode.DataSerializer;
+import org.apache.geode.internal.DataSerializableFixedID;
+import org.apache.geode.internal.Version;
+import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+
+// TODO: make CliFunctionResult immutable
public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSerializableFixedID {
+
private String memberIdOrName;
private Serializable[] serializables = new String[0];
private Throwable throwable;
@@ -36,7 +38,9 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
private XmlEntity xmlEntity;
private byte[] byteData = new byte[0];
- public CliFunctionResult() {}
+ public CliFunctionResult() {
+ // nothing
+ }
public CliFunctionResult(final String memberIdOrName) {
this.memberIdOrName = memberIdOrName;
@@ -65,7 +69,6 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
this.successful = true;
}
-
public CliFunctionResult(final String memberIdOrName, final XmlEntity xmlEntity,
final Serializable[] serializables) {
this.memberIdOrName = memberIdOrName;
@@ -131,7 +134,7 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
}
@Override
- public void toData(DataOutput out) throws IOException {
+ public void toData(final DataOutput out) throws IOException {
DataSerializer.writeString(this.memberIdOrName, out);
DataSerializer.writePrimitiveBoolean(this.successful, out);
DataSerializer.writeObject(this.xmlEntity, out);
@@ -140,14 +143,14 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
DataSerializer.writeByteArray(this.byteData, out);
}
- public void toDataPre_GFE_8_0_0_0(DataOutput out) throws IOException {
+ public void toDataPre_GFE_8_0_0_0(final DataOutput out) throws IOException {
DataSerializer.writeString(this.memberIdOrName, out);
DataSerializer.writeObjectArray(this.serializables, out);
DataSerializer.writeObject(this.throwable, out);
}
@Override
- public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+ public void fromData(final DataInput in) throws IOException, ClassNotFoundException {
this.memberIdOrName = DataSerializer.readString(in);
this.successful = DataSerializer.readPrimitiveBoolean(in);
this.xmlEntity = DataSerializer.readObject(in);
@@ -156,7 +159,8 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
this.byteData = DataSerializer.readByteArray(in);
}
- public void fromDataPre_GFE_8_0_0_0(DataInput in) throws IOException, ClassNotFoundException {
+ public void fromDataPre_GFE_8_0_0_0(final DataInput in)
+ throws IOException, ClassNotFoundException {
this.memberIdOrName = DataSerializer.readString(in);
this.throwable = DataSerializer.readObject(in);
this.serializables = (Serializable[]) DataSerializer.readObjectArray(in);
@@ -170,12 +174,8 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
return this.xmlEntity;
}
- public byte[] getByteData() {
- return this.byteData;
- }
-
@Override
- public int compareTo(CliFunctionResult o) {
+ public int compareTo(final CliFunctionResult o) {
if (this.memberIdOrName == null && o.memberIdOrName == null) {
return 0;
}
@@ -190,14 +190,14 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
@Override
public int hashCode() {
- final int prime = 31;
+ int prime = 31;
int result = 1;
result = prime * result + ((this.memberIdOrName == null) ? 0 : this.memberIdOrName.hashCode());
return result;
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(final Object obj) {
if (this == obj)
return true;
if (obj == null)
@@ -227,8 +227,8 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
* @param results The results to clean.
* @return The cleaned results.
*/
- public static List<CliFunctionResult> cleanResults(List<?> results) {
- List<CliFunctionResult> returnResults = new ArrayList<CliFunctionResult>(results.size());
+ public static List<CliFunctionResult> cleanResults(final List<?> results) {
+ List<CliFunctionResult> returnResults = new ArrayList<>(results.size());
for (Object result : results) {
if (result instanceof CliFunctionResult) {
returnResults.add((CliFunctionResult) result);
@@ -243,4 +243,5 @@ public class CliFunctionResult implements Comparable<CliFunctionResult>, DataSer
public Version[] getSerializationVersions() {
return new Version[] {Version.GFE_80};
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction.java
index 73761c4..3decf83 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction.java
@@ -15,9 +15,8 @@
package org.apache.geode.management.internal.cli.functions;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier;
import org.apache.geode.internal.cache.tier.sockets.CacheClientProxy;
@@ -25,19 +24,17 @@ import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.domain.MemberResult;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-/***
+/**
* Function to close a durable client
- *
*/
-public class CloseDurableClientFunction extends FunctionAdapter implements InternalEntity {
-
+public class CloseDurableClientFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
String durableClientId = (String) context.getArguments();
- final Cache cache = CliUtil.getCacheIfExists();
- final String memberNameOrId =
+ Cache cache = context.getCache();
+ String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
MemberResult memberResult = new MemberResult(memberNameOrId);
@@ -62,16 +59,13 @@ public class CloseDurableClientFunction extends FunctionAdapter implements Inter
} else {
memberResult.setErrorMessage(CliStrings.NO_CLIENT_FOUND);
}
+
} catch (Exception e) {
memberResult.setExceptionMessage(e.getMessage());
+
} finally {
context.getResultSender().lastResult(memberResult);
}
}
- @Override
- public String getId() {
- return CloseDurableClientFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction.java
index e526409..c9d7728 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CloseDurableCqFunction.java
@@ -15,29 +15,25 @@
package org.apache.geode.management.internal.cli.functions;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier;
import org.apache.geode.internal.cache.tier.sockets.CacheClientProxy;
-import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.domain.MemberResult;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-/***
+/**
* Function to close a durable cq
- *
*/
-public class CloseDurableCqFunction extends FunctionAdapter implements InternalEntity {
-
+public class CloseDurableCqFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
-
- final Cache cache = CliUtil.getCacheIfExists();
- final String memberNameOrId =
+ public void execute(final FunctionContext context) {
+ Cache cache = context.getCache();
+ String memberNameOrId =
CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
CacheClientNotifier cacheClientNotifier = CacheClientNotifier.getInstance();
String[] args = (String[]) context.getArguments();
@@ -45,6 +41,7 @@ public class CloseDurableCqFunction extends FunctionAdapter implements InternalE
String cqName = args[1];
MemberResult memberResult = new MemberResult(memberNameOrId);
+
try {
if (cacheClientNotifier != null) {
CacheClientProxy cacheClientProxy = cacheClientNotifier.getClientProxy(durableClientId);
@@ -64,16 +61,13 @@ public class CloseDurableCqFunction extends FunctionAdapter implements InternalE
} else {
memberResult.setErrorMessage(CliStrings.NO_CLIENT_FOUND);
}
+
} catch (Exception e) {
memberResult.setExceptionMessage(e.getMessage());
+
} finally {
context.getResultSender().lastResult(memberResult);
}
}
- @Override
- public String getId() {
- return CloseDurableCqFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction.java
index 1f06a41..15ba98b 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ContinuousQueryFunction.java
@@ -17,12 +17,12 @@ package org.apache.geode.management.internal.cli.functions;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
-import org.apache.geode.cache.CacheFactory;
+
+import org.apache.geode.cache.Cache;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.internal.cache.CacheServerImpl;
-import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.tier.sockets.AcceptorImpl;
import org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier;
import org.apache.geode.internal.cache.tier.sockets.CacheClientProxy;
@@ -35,31 +35,29 @@ import org.apache.geode.internal.cache.tier.sockets.ServerConnection;
public class ContinuousQueryFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
- public static final String ID = ContinuousQueryFunction.class.getName();
-
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
-
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
try {
String clientID = (String) context.getArguments();
- InternalCache cache = getCache();
+ Cache cache = context.getCache();
+
if (cache.getCacheServers().size() > 0) {
CacheServerImpl server = (CacheServerImpl) cache.getCacheServers().iterator().next();
+
if (server != null) {
AcceptorImpl acceptorImpl = server.getAcceptor();
+
if (acceptorImpl != null) {
CacheClientNotifier cacheClientNotifier = acceptorImpl.getCacheClientNotifier();
+
if (cacheClientNotifier != null) {
Collection<CacheClientProxy> cacheClientProxySet =
cacheClientNotifier.getClientProxies();
ClientInfo clientInfo = null;
boolean foundClientinCCP = false;
+
Iterator<CacheClientProxy> it = cacheClientProxySet.iterator();
while (it.hasNext()) {
-
CacheClientProxy ccp = it.next();
if (ccp != null) {
String clientIdFromProxy = ccp.getProxyID().getDSMembership();
@@ -100,16 +98,13 @@ public class ContinuousQueryFunction implements Function, InternalEntity {
}
}
}
+
} catch (Exception e) {
context.getResultSender()
.lastResult("Exception in ContinuousQueryFunction =" + e.getMessage());
}
- context.getResultSender().lastResult(null);
- }
- @Override
- public String getId() {
- return ContinuousQueryFunction.ID;
+ context.getResultSender().lastResult(null);
}
@Override
@@ -127,14 +122,19 @@ public class ContinuousQueryFunction implements Function, InternalEntity {
return false;
}
+ /**
+ * Info details about cache client.
+ */
public class ClientInfo implements Serializable {
private static final long serialVersionUID = 1L;
- public String isDurable;
- public String primaryServer;
- public String secondaryServer;
- public ClientInfo(String IsClientDurable, String primaryServerId, String secondaryServerId) {
- isDurable = IsClientDurable;
+ public final String isDurable;
+ public final String primaryServer;
+ public final String secondaryServer;
+
+ public ClientInfo(final String isClientDurable, final String primaryServerId,
+ final String secondaryServerId) {
+ isDurable = isClientDurable;
primaryServer = primaryServerId;
secondaryServer = secondaryServerId;
}
@@ -145,4 +145,5 @@ public class ContinuousQueryFunction implements Function, InternalEntity {
+ ", secondaryServer=" + secondaryServer + "]";
}
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction.java
index 5696696..9f35538 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateAsyncEventQueueFunction.java
@@ -23,11 +23,10 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Declarable;
import org.apache.geode.cache.asyncqueue.AsyncEventListener;
import org.apache.geode.cache.asyncqueue.AsyncEventQueueFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.wan.GatewayEventFilter;
import org.apache.geode.cache.wan.GatewayEventSubstitutionFilter;
@@ -48,25 +47,19 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
*
* @since GemFire 8.0
*/
-public class CreateAsyncEventQueueFunction extends FunctionAdapter implements InternalEntity {
+public class CreateAsyncEventQueueFunction implements Function, InternalEntity {
private static final Logger logger = LogService.getLogger();
-
private static final long serialVersionUID = 1L;
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
-
- @SuppressWarnings("deprecation")
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
AsyncEventQueueFunctionArgs aeqArgs = (AsyncEventQueueFunctionArgs) context.getArguments();
- InternalCache cache = getCache();
+ InternalCache cache = (InternalCache) context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -147,17 +140,19 @@ public class CreateAsyncEventQueueFunction extends FunctionAdapter implements In
}
}
- private Class<?> forName(String className, String neededFor) {
+ private Class<?> forName(final String className, final String neededFor) {
if (Strings.isNullOrEmpty(className)) {
return null;
}
try {
return ClassPathLoader.getLatest().forName(className);
+
} catch (ClassNotFoundException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_ASYNC_EVENT_QUEUE__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
className, neededFor), e);
+
} catch (ClassCastException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_ASYNC_EVENT_QUEUE__MSG__CLASS_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
@@ -165,13 +160,15 @@ public class CreateAsyncEventQueueFunction extends FunctionAdapter implements In
}
}
- private static Object newInstance(Class<?> klass, String neededFor) {
+ private static Object newInstance(final Class<?> klass, final String neededFor) {
try {
return klass.newInstance();
+
} catch (InstantiationException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_ASYNC_EVENT_QUEUE__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1,
klass, neededFor), e);
+
} catch (IllegalAccessException e) {
throw new RuntimeException(CliStrings.format(
CliStrings.CREATE_ASYNC_EVENT_QUEUE__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1, klass,
@@ -179,8 +176,4 @@ public class CreateAsyncEventQueueFunction extends FunctionAdapter implements In
}
}
- @Override
- public String getId() {
- return CreateDiskStoreFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction.java
index 742840c..18eb0b9 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDefinedIndexesFunction.java
@@ -14,35 +14,30 @@
*/
package org.apache.geode.management.internal.cli.functions;
-import java.util.Arrays;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
-import org.apache.geode.cache.query.Index;
import org.apache.geode.cache.query.MultiIndexCreationException;
import org.apache.geode.cache.query.QueryService;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.management.internal.cli.domain.IndexInfo;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-public class CreateDefinedIndexesFunction extends FunctionAdapter implements InternalEntity {
-
+public class CreateDefinedIndexesFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
String memberId = null;
- List<Index> indexes = null;
- Cache cache = null;
+
try {
- cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
memberId = cache.getDistributedSystem().getDistributedMember().getId();
QueryService queryService = cache.getQueryService();
+
Set<IndexInfo> indexDefinitions = (Set<IndexInfo>) context.getArguments();
for (IndexInfo indexDefinition : indexDefinitions) {
String indexName = indexDefinition.getIndexName();
@@ -56,16 +51,20 @@ public class CreateDefinedIndexesFunction extends FunctionAdapter implements Int
queryService.defineIndex(indexName, indexedExpression, regionPath);
}
}
- indexes = queryService.createDefinedIndexes();
+
+ queryService.createDefinedIndexes();
+
context.getResultSender().lastResult(new CliFunctionResult(memberId));
+
} catch (MultiIndexCreationException e) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append("Index creation failed for indexes: ").append("\n");
for (Map.Entry<String, Exception> failedIndex : e.getExceptionsMap().entrySet()) {
sb.append(failedIndex.getKey()).append(" : ").append(failedIndex.getValue().getMessage())
.append("\n");
}
context.getResultSender().lastResult(new CliFunctionResult(memberId, e, sb.toString()));
+
} catch (Exception e) {
String exceptionMessage = CliStrings.format(CliStrings.EXCEPTION_CLASS_AND_MESSAGE,
e.getClass().getName(), e.getMessage());
@@ -73,14 +72,4 @@ public class CreateDefinedIndexesFunction extends FunctionAdapter implements Int
}
}
- public void createCommandObject(IndexInfo info) {
- Cache cache = CacheFactory.getAnyInstance();
- QueryService queryService = cache.getQueryService();
- }
-
- @Override
- public String getId() {
- return CreateDefinedIndexesFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
index 3b4679c..6ccd67d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
@@ -14,19 +14,12 @@
*/
package org.apache.geode.management.internal.cli.functions;
-/**
- * Function used by the 'create disk-store' gfsh command to create a disk store on each member.
- *
- * @since GemFire 8.0
- */
-
import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.DiskStoreFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.InternalEntity;
@@ -36,25 +29,26 @@ import org.apache.geode.internal.cache.xmlcache.CacheXml;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
-public class CreateDiskStoreFunction extends FunctionAdapter implements InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
+/**
+ * Function used by the 'create disk-store' gfsh command to create a disk store on each member.
+ *
+ * @since GemFire 8.0
+ */
+public class CreateDiskStoreFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
-
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
+
try {
- final Object[] args = (Object[]) context.getArguments();
- final String diskStoreName = (String) args[0];
- final DiskStoreAttributes diskStoreAttrs = (DiskStoreAttributes) args[01];
+ Object[] args = (Object[]) context.getArguments();
+ String diskStoreName = (String) args[0];
+ DiskStoreAttributes diskStoreAttrs = (DiskStoreAttributes) args[01];
- InternalCache cache = getCache();
+ InternalCache cache = (InternalCache) context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -84,8 +78,4 @@ public class CreateDiskStoreFunction extends FunctionAdapter implements Internal
}
}
- @Override
- public String getId() {
- return CreateDiskStoreFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateIndexFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateIndexFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateIndexFunction.java
index 8a65f7a..1c332ee 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateIndexFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateIndexFunction.java
@@ -15,8 +15,7 @@
package org.apache.geode.management.internal.cli.functions;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.query.IndexExistsException;
import org.apache.geode.cache.query.IndexInvalidException;
@@ -29,28 +28,28 @@ import org.apache.geode.management.internal.cli.domain.IndexInfo;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
-/***
+/**
* Function to create index in a member, based on different arguments passed to it
- *
*/
-public class CreateIndexFunction extends FunctionAdapter implements InternalEntity {
-
-
+public class CreateIndexFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
- final IndexInfo indexInfo = (IndexInfo) context.getArguments();
+ public void execute(final FunctionContext context) {
+ IndexInfo indexInfo = (IndexInfo) context.getArguments();
String memberId = null;
+
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
memberId = cache.getDistributedSystem().getDistributedMember().getId();
QueryService queryService = cache.getQueryService();
String indexName = indexInfo.getIndexName();
String indexedExpression = indexInfo.getIndexedExpression();
String fromClause = indexInfo.getRegionPath();
+
// Check to see if the region path contains an alias e.g "/region1 r1"
// Then the first string will be the regionPath
+
String[] regionPathTokens = fromClause.trim().split(" ");
String regionPath = regionPathTokens[0];
@@ -70,20 +69,25 @@ public class CreateIndexFunction extends FunctionAdapter implements InternalEnti
regionPath = getValidRegionName(cache, regionPath);
setResultInSender(context, indexInfo, memberId, cache, regionPath);
+
} catch (IndexExistsException e) {
String message =
CliStrings.format(CliStrings.CREATE_INDEX__INDEX__EXISTS, indexInfo.getIndexName());
context.getResultSender().lastResult(new CliFunctionResult(memberId, false, message));
+
} catch (IndexNameConflictException e) {
String message =
CliStrings.format(CliStrings.CREATE_INDEX__NAME__CONFLICT, indexInfo.getIndexName());
context.getResultSender().lastResult(new CliFunctionResult(memberId, false, message));
+
} catch (RegionNotFoundException e) {
String message = CliStrings.format(CliStrings.CREATE_INDEX__INVALID__REGIONPATH,
indexInfo.getRegionPath());
context.getResultSender().lastResult(new CliFunctionResult(memberId, false, message));
+
} catch (IndexInvalidException e) {
context.getResultSender().lastResult(new CliFunctionResult(memberId, e, e.getMessage()));
+
} catch (Exception e) {
String exceptionMessage = CliStrings.format(CliStrings.EXCEPTION_CLASS_AND_MESSAGE,
e.getClass().getName(), e.getMessage());
@@ -91,12 +95,13 @@ public class CreateIndexFunction extends FunctionAdapter implements InternalEnti
}
}
- private void setResultInSender(FunctionContext context, IndexInfo indexInfo, String memberId,
- Cache cache, String regionPath) {
+ private void setResultInSender(final FunctionContext context, final IndexInfo indexInfo,
+ final String memberId, final Cache cache, final String regionPath) {
if (regionPath == null) {
String message = CliStrings.format(CliStrings.CREATE_INDEX__INVALID__REGIONPATH,
indexInfo.getRegionPath());
context.getResultSender().lastResult(new CliFunctionResult(memberId, false, message));
+
} else {
XmlEntity xmlEntity =
new XmlEntity(CacheXml.REGION, "name", cache.getRegion(regionPath).getName());
@@ -104,7 +109,7 @@ public class CreateIndexFunction extends FunctionAdapter implements InternalEnti
}
}
- private String getValidRegionName(Cache cache, String regionPath) {
+ private String getValidRegionName(final Cache cache, String regionPath) {
while (regionPath != null && cache.getRegion(regionPath) == null) {
int dotPosition;
if (regionPath.contains(".") && ((dotPosition = regionPath.lastIndexOf('.')) != -1)) {
@@ -116,8 +121,4 @@ public class CreateIndexFunction extends FunctionAdapter implements InternalEnti
return regionPath;
}
- @Override
- public String getId() {
- return CreateIndexFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
index 401a368..e283ace 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
@@ -21,38 +21,29 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.ClassPathLoader;
import org.apache.geode.internal.DeployedJar;
import org.apache.geode.internal.InternalEntity;
-import org.apache.geode.internal.JarDeployer;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.logging.LogService;
public class DeployFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = DeployFunction.class.getName();
-
private static final long serialVersionUID = 1L;
-
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
- final Object[] args = (Object[]) context.getArguments();
- final String[] jarFilenames = (String[]) args[0];
- final byte[][] jarBytes = (byte[][]) args[1];
- InternalCache cache = getCache();
+ Object[] args = (Object[]) context.getArguments();
+ String[] jarFilenames = (String[]) args[0];
+ byte[][] jarBytes = (byte[][]) args[1];
+ InternalCache cache = (InternalCache) context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -96,11 +87,6 @@ public class DeployFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
@@ -114,4 +100,5 @@ public class DeployFunction implements Function, InternalEntity {
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction.java
index 68cc2e0..3b26ed9 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DescribeDiskStoreFunction.java
@@ -12,18 +12,18 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-
package org.apache.geode.management.internal.cli.functions;
+import java.io.File;
+
import org.apache.commons.lang.StringUtils;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.DataPolicy;
+import org.apache.logging.log4j.Logger;
+
import org.apache.geode.cache.DiskStore;
import org.apache.geode.cache.EvictionAction;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.asyncqueue.AsyncEventQueue;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.cache.wan.GatewaySender;
@@ -35,12 +35,6 @@ import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.util.ArrayUtils;
import org.apache.geode.management.internal.cli.domain.DiskStoreDetails;
import org.apache.geode.management.internal.cli.util.DiskStoreNotFoundException;
-import org.apache.logging.log4j.Logger;
-
-import java.io.File;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
/**
* The DescribeDiskStoreFunction class is an implementation of a GemFire Function used to collect
@@ -53,82 +47,54 @@ import java.util.Set;
* @see org.apache.geode.cache.execute.FunctionContext
* @see org.apache.geode.internal.InternalEntity
* @see org.apache.geode.management.internal.cli.domain.DiskStoreDetails
+ *
* @since GemFire 7.0
*/
-public class DescribeDiskStoreFunction extends FunctionAdapter implements InternalEntity {
-
+public class DescribeDiskStoreFunction implements Function, InternalEntity {
private static final Logger logger = LogService.getLogger();
- private static final Set<DataPolicy> PERSISTENT_DATA_POLICIES = new HashSet<>(2);
-
- static {
- PERSISTENT_DATA_POLICIES.add(DataPolicy.PERSISTENT_PARTITION);
- PERSISTENT_DATA_POLICIES.add(DataPolicy.PERSISTENT_REPLICATE);
- }
-
- protected static void assertState(final boolean condition, final String message,
- final Object... args) {
- if (!condition) {
- throw new IllegalStateException(String.format(message, args));
- }
- }
-
- protected Cache getCache() {
- return CacheFactory.getAnyInstance();
- }
-
- public String getId() {
- return getClass().getName();
- }
-
- @SuppressWarnings("unused")
- public void init(final Properties props) {}
-
public void execute(final FunctionContext context) {
- Cache cache = getCache();
+ InternalCache cache = (InternalCache) context.getCache();
try {
- if (cache instanceof InternalCache) {
- InternalCache gemfireCache = (InternalCache) cache;
-
- DistributedMember member = gemfireCache.getMyId();
-
- String diskStoreName = (String) context.getArguments();
- String memberId = member.getId();
- String memberName = member.getName();
-
- DiskStore diskStore = gemfireCache.findDiskStore(diskStoreName);
-
- if (diskStore != null) {
- DiskStoreDetails diskStoreDetails = new DiskStoreDetails(diskStore.getDiskStoreUUID(),
- diskStore.getName(), memberId, memberName);
-
- diskStoreDetails.setAllowForceCompaction(diskStore.getAllowForceCompaction());
- diskStoreDetails.setAutoCompact(diskStore.getAutoCompact());
- diskStoreDetails.setCompactionThreshold(diskStore.getCompactionThreshold());
- diskStoreDetails.setMaxOplogSize(diskStore.getMaxOplogSize());
- diskStoreDetails.setQueueSize(diskStore.getQueueSize());
- diskStoreDetails.setTimeInterval(diskStore.getTimeInterval());
- diskStoreDetails.setWriteBufferSize(diskStore.getWriteBufferSize());
- diskStoreDetails.setDiskUsageWarningPercentage(diskStore.getDiskUsageWarningPercentage());
- diskStoreDetails
- .setDiskUsageCriticalPercentage(diskStore.getDiskUsageCriticalPercentage());
-
- setDiskDirDetails(diskStore, diskStoreDetails);
- setRegionDetails(gemfireCache, diskStore, diskStoreDetails);
- setCacheServerDetails(gemfireCache, diskStore, diskStoreDetails);
- setGatewayDetails(gemfireCache, diskStore, diskStoreDetails);
- setPdxSerializationDetails(gemfireCache, diskStore, diskStoreDetails);
- setAsyncEventQueueDetails(gemfireCache, diskStore, diskStoreDetails);
-
- context.getResultSender().lastResult(diskStoreDetails);
- } else {
- context.getResultSender()
- .sendException(new DiskStoreNotFoundException(
- String.format("A disk store with name (%1$s) was not found on member (%2$s).",
- diskStoreName, memberName)));
- }
+ DistributedMember member = cache.getMyId();
+
+ String diskStoreName = (String) context.getArguments();
+ String memberId = member.getId();
+ String memberName = member.getName();
+
+ DiskStore diskStore = cache.findDiskStore(diskStoreName);
+
+ if (diskStore != null) {
+ DiskStoreDetails diskStoreDetails = new DiskStoreDetails(diskStore.getDiskStoreUUID(),
+ diskStore.getName(), memberId, memberName);
+
+ diskStoreDetails.setAllowForceCompaction(diskStore.getAllowForceCompaction());
+ diskStoreDetails.setAutoCompact(diskStore.getAutoCompact());
+ diskStoreDetails.setCompactionThreshold(diskStore.getCompactionThreshold());
+ diskStoreDetails.setMaxOplogSize(diskStore.getMaxOplogSize());
+ diskStoreDetails.setQueueSize(diskStore.getQueueSize());
+ diskStoreDetails.setTimeInterval(diskStore.getTimeInterval());
+ diskStoreDetails.setWriteBufferSize(diskStore.getWriteBufferSize());
+ diskStoreDetails.setDiskUsageWarningPercentage(diskStore.getDiskUsageWarningPercentage());
+ diskStoreDetails.setDiskUsageCriticalPercentage(diskStore.getDiskUsageCriticalPercentage());
+
+ setDiskDirDetails(diskStore, diskStoreDetails);
+ setRegionDetails(cache, diskStore, diskStoreDetails);
+ setCacheServerDetails(cache, diskStore, diskStoreDetails);
+ setGatewayDetails(cache, diskStore, diskStoreDetails);
+ setPdxSerializationDetails(cache, diskStore, diskStoreDetails);
+ setAsyncEventQueueDetails(cache, diskStore, diskStoreDetails);
+
+ context.getResultSender().lastResult(diskStoreDetails);
+
+ } else {
+ context.getResultSender()
+ .sendException(new DiskStoreNotFoundException(
+ String.format("A disk store with name (%1$s) was not found on member (%2$s).",
+ diskStoreName, memberName)));
}
+
} catch (Exception e) {
logger.error("Error occurred while executing 'describe disk-store': {}!", e.getMessage(), e);
context.getResultSender().sendException(e);
@@ -165,12 +131,12 @@ public class DescribeDiskStoreFunction extends FunctionAdapter implements Intern
return region.getAttributes().getDataPolicy().withPersistence();
}
- protected boolean isUsingDiskStore(final Region region, final DiskStore diskStore) {
+ boolean isUsingDiskStore(final Region region, final DiskStore diskStore) {
return ((isPersistent(region) || isOverflowToDisk(region))
&& ObjectUtils.equals(getDiskStoreName(region), diskStore.getName()));
}
- protected void setRegionDetails(final InternalCache cache, final DiskStore diskStore,
+ void setRegionDetails(final InternalCache cache, final DiskStore diskStore,
final DiskStoreDetails diskStoreDetails) {
for (Region<?, ?> region : cache.rootRegions()) {
setRegionDetails(region, diskStore, diskStoreDetails);
@@ -199,11 +165,11 @@ public class DescribeDiskStoreFunction extends FunctionAdapter implements Intern
DiskStoreDetails.DEFAULT_DISK_STORE_NAME));
}
- protected boolean isUsingDiskStore(final CacheServer cacheServer, final DiskStore diskStore) {
+ boolean isUsingDiskStore(final CacheServer cacheServer, final DiskStore diskStore) {
return ObjectUtils.equals(getDiskStoreName(cacheServer), diskStore.getName());
}
- protected void setCacheServerDetails(final InternalCache cache, final DiskStore diskStore,
+ void setCacheServerDetails(final InternalCache cache, final DiskStore diskStore,
final DiskStoreDetails diskStoreDetails) {
for (CacheServer cacheServer : cache.getCacheServers()) {
if (isUsingDiskStore(cacheServer, diskStore)) {
@@ -225,11 +191,11 @@ public class DescribeDiskStoreFunction extends FunctionAdapter implements Intern
return gateway.isPersistenceEnabled();
}
- protected boolean isUsingDiskStore(final GatewaySender gateway, final DiskStore diskStore) {
+ boolean isUsingDiskStore(final GatewaySender gateway, final DiskStore diskStore) {
return ObjectUtils.equals(getDiskStoreName(gateway), diskStore.getName());
}
- protected void setGatewayDetails(final InternalCache cache, final DiskStore diskStore,
+ private void setGatewayDetails(final InternalCache cache, final DiskStore diskStore,
final DiskStoreDetails diskStoreDetails) {
for (GatewaySender gatewaySender : cache.getGatewaySenders()) {
if (isUsingDiskStore(gatewaySender, diskStore)) {
@@ -241,7 +207,7 @@ public class DescribeDiskStoreFunction extends FunctionAdapter implements Intern
}
}
- protected void setPdxSerializationDetails(final InternalCache cache, final DiskStore diskStore,
+ void setPdxSerializationDetails(final InternalCache cache, final DiskStore diskStore,
final DiskStoreDetails diskStoreDetails) {
if (cache.getPdxPersistent()) {
String diskStoreName = StringUtils.defaultIfBlank(cache.getPdxDiskStore(),
@@ -256,12 +222,12 @@ public class DescribeDiskStoreFunction extends FunctionAdapter implements Intern
DiskStoreDetails.DEFAULT_DISK_STORE_NAME);
}
- protected boolean isUsingDiskStore(final AsyncEventQueue queue, final DiskStore diskStore) {
+ boolean isUsingDiskStore(final AsyncEventQueue queue, final DiskStore diskStore) {
return (queue.isPersistent()
&& ObjectUtils.equals(getDiskStoreName(queue), diskStore.getName()));
}
- protected void setAsyncEventQueueDetails(final InternalCache cache, final DiskStore diskStore,
+ void setAsyncEventQueueDetails(final InternalCache cache, final DiskStore diskStore,
final DiskStoreDetails diskStoreDetails) {
for (AsyncEventQueue queue : cache.getAsyncEventQueues()) {
if (isUsingDiskStore(queue, diskStore)) {
@@ -270,4 +236,12 @@ public class DescribeDiskStoreFunction extends FunctionAdapter implements Intern
}
}
+ // TODO: delete assertState
+ protected static void assertState(final boolean condition, final String message,
+ final Object... args) {
+ if (!condition) {
+ throw new IllegalStateException(String.format(message, args));
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction.java
index c25a534..baaf973 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction.java
@@ -18,9 +18,8 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.DiskStore;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.InternalEntity;
@@ -34,25 +33,20 @@ import org.apache.geode.management.internal.configuration.domain.XmlEntity;
*
* @since GemFire 8.0
*/
-public class DestroyDiskStoreFunction extends FunctionAdapter implements InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
+public class DestroyDiskStoreFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
-
- private InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
- final Object[] args = (Object[]) context.getArguments();
- final String diskStoreName = (String) args[0];
+ Object[] args = (Object[]) context.getArguments();
+ String diskStoreName = (String) args[0];
- InternalCache cache = getCache();
+ InternalCache cache = (InternalCache) context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
@@ -95,8 +89,4 @@ public class DestroyDiskStoreFunction extends FunctionAdapter implements Interna
}
}
- @Override
- public String getId() {
- return CreateDiskStoreFunction.class.getName();
- }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyIndexFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyIndexFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyIndexFunction.java
index 24322bc..915cb60 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyIndexFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DestroyIndexFunction.java
@@ -18,9 +18,8 @@ import java.util.List;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.query.Index;
import org.apache.geode.cache.query.QueryService;
@@ -30,19 +29,16 @@ import org.apache.geode.management.internal.cli.domain.IndexInfo;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
-
-
-public class DestroyIndexFunction extends FunctionAdapter implements InternalEntity {
-
+public class DestroyIndexFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
IndexInfo indexInfo = (IndexInfo) context.getArguments();
String memberId = null;
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
memberId = cache.getDistributedSystem().getDistributedMember().getId();
QueryService queryService = cache.getQueryService();
String indexName = indexInfo.getIndexName();
@@ -87,20 +83,19 @@ public class DestroyIndexFunction extends FunctionAdapter implements InternalEnt
}
}
}
+
} catch (CacheClosedException e) {
context.getResultSender().lastResult(new CliFunctionResult(memberId, e, e.getMessage()));
+
} catch (Exception e) {
context.getResultSender().lastResult(new CliFunctionResult(memberId, e, e.getMessage()));
}
}
- /***
- *
- * @param name
- * @param queryService
+ /**
* @return true if the index was found and removed/false if the index was not found.
*/
- private boolean removeIndexByName(String name, QueryService queryService) {
+ private boolean removeIndexByName(final String name, final QueryService queryService) {
List<Index> indexes = (List<Index>) queryService.getIndexes();
boolean removed = false;
@@ -115,9 +110,4 @@ public class DestroyIndexFunction extends FunctionAdapter implements InternalEnt
return removed;
}
- @Override
- public String getId() {
- return DestroyIndexFunction.class.getName();
- }
-
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportConfigFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportConfigFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportConfigFunction.java
index 49e27b0..1086ec1 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportConfigFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportConfigFunction.java
@@ -23,7 +23,6 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.SystemFailure;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.distributed.DistributedMember;
@@ -35,19 +34,16 @@ import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
import org.apache.geode.internal.logging.LogService;
public class ExportConfigFunction implements Function, InternalEntity {
- private static final Logger logger = LogService.getLogger();
-
- public static final String ID = ExportConfigFunction.class.getName();
-
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LogService.getLogger();
@Override
- public void execute(FunctionContext context) {
+ public void execute(final FunctionContext context) {
// Declared here so that it's available when returning a Throwable
String memberId = "";
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
DistributedMember member = cache.getDistributedSystem().getDistributedMember();
memberId = member.getId();
@@ -66,26 +62,30 @@ public class ExportConfigFunction implements Function, InternalEntity {
DistributionConfigImpl config =
(DistributionConfigImpl) ((InternalDistributedSystem) cache.getDistributedSystem())
.getConfig();
- StringBuffer propStringBuf = new StringBuffer();
+ StringBuilder propStringBuf = new StringBuilder();
String lineSeparator = System.getProperty("line.separator");
+
for (Map.Entry entry : config.getConfigPropsFromSource(ConfigSource.runtime()).entrySet()) {
if (entry.getValue() != null && !entry.getValue().equals("")) {
propStringBuf.append(entry.getKey()).append("=").append(entry.getValue())
.append(lineSeparator);
}
}
+
for (Map.Entry entry : config.getConfigPropsFromSource(ConfigSource.api()).entrySet()) {
if (entry.getValue() != null && !entry.getValue().equals("")) {
propStringBuf.append(entry.getKey()).append("=").append(entry.getValue())
.append(lineSeparator);
}
}
+
for (Map.Entry entry : config.getConfigPropsDefinedUsingFiles().entrySet()) {
if (entry.getValue() != null && !entry.getValue().equals("")) {
propStringBuf.append(entry.getKey()).append("=").append(entry.getValue())
.append(lineSeparator);
}
}
+
// fix for bug 46653
for (Map.Entry entry : config.getConfigPropsFromSource(ConfigSource.launcher()).entrySet()) {
if (entry.getValue() != null && !entry.getValue().equals("")) {
@@ -116,11 +116,6 @@ public class ExportConfigFunction implements Function, InternalEntity {
}
@Override
- public String getId() {
- return ID;
- }
-
- @Override
public boolean hasResult() {
return true;
}
@@ -134,4 +129,5 @@ public class ExportConfigFunction implements Function, InternalEntity {
public boolean isHA() {
return false;
}
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/75b06ac0/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportDataFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportDataFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportDataFunction.java
index 537678f..e0876d5 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportDataFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportDataFunction.java
@@ -17,37 +17,31 @@ package org.apache.geode.management.internal.cli.functions;
import java.io.File;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
-import org.apache.geode.cache.execute.FunctionAdapter;
+import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.snapshot.RegionSnapshotService;
import org.apache.geode.cache.snapshot.SnapshotOptions.SnapshotFormat;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-/***
+/**
* Function which carries out the export of a region to a file on a member. Uses the
* RegionSnapshotService to export the data
- *
- *
*/
-public class ExportDataFunction extends FunctionAdapter implements InternalEntity {
-
- /**
- *
- */
+public class ExportDataFunction implements Function, InternalEntity {
private static final long serialVersionUID = 1L;
- public void execute(FunctionContext context) {
- final String[] args = (String[]) context.getArguments();
- final String regionName = args[0];
- final String fileName = args[1];
+ public void execute(final FunctionContext context) {
+ String[] args = (String[]) context.getArguments();
+ String regionName = args[0];
+ String fileName = args[1];
try {
- Cache cache = CacheFactory.getAnyInstance();
+ Cache cache = context.getCache();
Region<?, ?> region = cache.getRegion(regionName);
String hostName = cache.getDistributedSystem().getDistributedMember().getHost();
+
if (region != null) {
RegionSnapshotService<?, ?> snapshotService = region.getSnapshotService();
final File exportFile = new File(fileName);
@@ -55,6 +49,7 @@ public class ExportDataFunction extends FunctionAdapter implements InternalEntit
String successMessage = CliStrings.format(CliStrings.EXPORT_DATA__SUCCESS__MESSAGE,
regionName, exportFile.getCanonicalPath(), hostName);
context.getResultSender().lastResult(successMessage);
+
} else {
throw new IllegalArgumentException(
CliStrings.format(CliStrings.REGION_NOT_FOUND, regionName));
@@ -65,8 +60,4 @@ public class ExportDataFunction extends FunctionAdapter implements InternalEntit
}
}
- public String getId() {
- return ExportDataFunction.class.getName();
- }
-
}
[13/50] [abbrv] geode git commit: GEODE-3286: incorporating review
feedback
Posted by kl...@apache.org.
GEODE-3286: incorporating review feedback
Signed-off-by: Brian Rowe <br...@pivotal.io>
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/4ee96cf7
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/4ee96cf7
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/4ee96cf7
Branch: refs/heads/feature/GEODE-3299
Commit: 4ee96cf7f2a4678c019aaf36cac2fb9c832699f2
Parents: 8aed268
Author: Hitesh Khamesra <hi...@yahoo.com>
Authored: Wed Jul 26 13:20:55 2017 -0700
Committer: Brian Rowe <br...@pivotal.io>
Committed: Wed Jul 26 13:20:55 2017 -0700
----------------------------------------------------------------------
.../src/main/java/org/apache/geode/internal/tcp/Connection.java | 4 ++--
.../main/java/org/apache/geode/internal/tcp/ConnectionTable.java | 2 +-
.../org/apache/geode/internal/tcp/PeerConnectionFactory.java | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/4ee96cf7/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
index 9b1a10a..c3ad596 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
@@ -568,7 +568,7 @@ public class Connection implements Runnable {
}
}
- protected void initRecevier() {
+ protected void initReceiver() {
this.startReader(owner);
this.waitForHandshake();
this.finishedConnecting = true;
@@ -1328,7 +1328,7 @@ public class Connection implements Runnable {
this.batchFlusher.start();
}
- public void onIdleCancel() {
+ public void cleanUpOnIdleTaskCancel() {
// Make sure receivers are removed from the connection table, this should always be a noop, but
// is done here as a failsafe.
if (isReceiver) {
http://git-wip-us.apache.org/repos/asf/geode/blob/4ee96cf7/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
index affe5cd..0be5f28 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
@@ -1315,7 +1315,7 @@ public class ConnectionTable {
public boolean cancel() {
Connection con = this.c;
if (con != null) {
- con.onIdleCancel();
+ con.cleanUpOnIdleTaskCancel();
}
this.c = null;
return super.cancel();
http://git-wip-us.apache.org/repos/asf/geode/blob/4ee96cf7/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
index 7bf9638..148c27a 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/PeerConnectionFactory.java
@@ -26,7 +26,7 @@ public class PeerConnectionFactory {
public Connection createReceiver(ConnectionTable table, Socket socket)
throws IOException, ConnectionException {
Connection connection = new Connection(table, socket);
- connection.initRecevier();
+ connection.initReceiver();
return connection;
}
}
[16/50] [abbrv] geode git commit: GEODE-3253: Refactoring
ClientCommands and related tests
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsDUnitTest.java b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsDUnitTest.java
deleted file mode 100644
index 7c80abf..0000000
--- a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsDUnitTest.java
+++ /dev/null
@@ -1,1178 +0,0 @@
-/*
- * 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 static org.apache.geode.distributed.ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION;
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_ARCHIVE_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.assertNotNull;
-import static org.apache.geode.test.dunit.Assert.assertTrue;
-import static org.apache.geode.test.dunit.DistributedTestUtils.getDUnitLocatorPort;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.NetworkUtils.getServerHostName;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-import javax.management.ObjectName;
-
-import org.awaitility.Awaitility;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.AttributesFactory;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.DataPolicy;
-import org.apache.geode.cache.PartitionAttributesFactory;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.Scope;
-import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
-import org.apache.geode.cache.client.ClientRegionFactory;
-import org.apache.geode.cache.client.ClientRegionShortcut;
-import org.apache.geode.cache.client.PoolManager;
-import org.apache.geode.cache.client.internal.PoolImpl;
-import org.apache.geode.cache.query.CqAttributesFactory;
-import org.apache.geode.cache.query.QueryService;
-import org.apache.geode.cache.server.CacheServer;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.OSProcess;
-import org.apache.geode.internal.cache.DistributedRegion;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.internal.cache.PartitionedRegion;
-import org.apache.geode.internal.cache.tier.sockets.CacheServerTestUtil;
-import org.apache.geode.management.CacheServerMXBean;
-import org.apache.geode.management.ClientHealthStatus;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.cli.Result.Status;
-import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.LogWrapper;
-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.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.CompositeResultData.SectionResultData;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.SerializableCallable;
-import org.apache.geode.test.dunit.SerializableRunnableIF;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-
-/**
- * Dunit class for testing gemfire Client commands : list client , describe client
- *
- * @since GemFire 8.0
- */
-@Category(DistributedTest.class)
-public class ClientCommandsDUnitTest extends CliCommandTestBase {
-
- private static final long serialVersionUID = 1L;
- final String regionName = "stocks";
- final String cq1 = "cq1";
- final String cq2 = "cq2";
- final String cq3 = "cq3";
- String clientId = "";
- int port0 = 0;
- int port1 = 0;
-
- public void waitForListClientMbean() {
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
-
- final DistributedMember serverMember = getMember(server1);
-
- assertNotNull(serverMember);
-
- manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
- .pollDelay(2, TimeUnit.SECONDS).until(() -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- if (service == null) {
- getLogWriter().info("waitForListClientMbean Still probing for service");
- return false;
- } else {
- final ObjectName cacheServerMBeanName =
- service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean =
- service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- try {
- if (bean != null) {
- if (bean.getClientIds().length > 1) {
- return true;
- }
- }
- return false;
-
- } catch (Exception e) {
- LogWrapper.getInstance()
- .warning("waitForListClientMbean Exception in waitForListClientMbean ::: "
- + CliUtil.stackTraceAsString(e));
- }
- return false;
- }
- }));
- }
-
- public void waitForMbean() {
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
-
- final DistributedMember serverMember = getMember(server1);
-
- assertNotNull(serverMember);
-
- manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
- .pollDelay(2, TimeUnit.SECONDS).until(() -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- if (service == null) {
- getLogWriter().info("waitForMbean Still probing for service");
- return false;
- } else {
- final ObjectName cacheServerMBeanName =
- service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean =
- service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- try {
- ClientHealthStatus stats = bean.showClientStats(bean.getClientIds()[0]);
- Map<String, String> poolStats = stats.getPoolStats();
- if (poolStats.size() > 0) {
- for (Entry<String, String> entry : poolStats.entrySet()) {
- String poolStatsStr = entry.getValue();
- String str[] = poolStatsStr.split(";");
- int numCqs = Integer.parseInt(str[3].substring(str[3].indexOf("=") + 1));
- if (numCqs == 3) {
- return true;
- }
- }
- }
- return false;
-
- } catch (Exception e) {
- LogWrapper.getInstance().warning(
- "waitForMbean Exception in waitForMbean ::: " + CliUtil.stackTraceAsString(e));
- }
- return false;
-
- }
- }));
- }
-
- public void waitForListClientMbean3() {
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final VM server2 = Host.getHost(0).getVM(3);
-
- final DistributedMember serverMember1 = getMember(server1);
- final DistributedMember serverMember2 = getMember(server2);
-
- assertNotNull(serverMember1);
-
- manager.invoke(() -> Awaitility.waitAtMost(2 * 60, TimeUnit.SECONDS)
- .pollDelay(2, TimeUnit.SECONDS).until(() -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- if (service == null) {
- getLogWriter().info("waitForListClientMbean3 Still probing for service");
- return false;
- } else {
- final ObjectName cacheServerMBeanName1 =
- service.getCacheServerMBeanName(port0, serverMember1);
- final ObjectName cacheServerMBeanName2 =
- service.getCacheServerMBeanName(port1, serverMember2);
- CacheServerMXBean bean1 =
- service.getMBeanProxy(cacheServerMBeanName1, CacheServerMXBean.class);
- CacheServerMXBean bean2 =
- service.getMBeanProxy(cacheServerMBeanName2, CacheServerMXBean.class);
- try {
- if (bean1 != null && bean2 != null) {
- if (bean1.getClientIds().length > 0 && bean2.getClientIds().length > 0) {
- return true;
- }
- }
- return false;
-
- } catch (Exception e) {
- LogWrapper.getInstance()
- .warning("waitForListClientMbean3 Exception in waitForListClientMbean ::: "
- + CliUtil.stackTraceAsString(e));
- }
- return false;
- }
- }));
- }
-
- @Ignore("disabled for unknown reason")
- @Test
- public void testDescribeClientWithServers3() throws Exception {
- setupSystem3();
- String commandString;
- final VM server1 = Host.getHost(0).getVM(1);
- final VM server2 = Host.getHost(0).getVM(3);
- final VM manager = Host.getHost(0).getVM(0);
- String serverName1 = server1.invoke("get DistributedMemberID ", this::getDistributedMemberId);
-
- String serverName2 = server2.invoke("get DistributedMemberID ", this::getDistributedMemberId);
-
- final DistributedMember serverMember1 = getMember(server1);
-
- String[] clientIds = manager.invoke("get Client Ids", () -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
-
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember1);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
-
- return bean.getClientIds();
- });
-
- String clientId1 = "";
-
- for (String str : clientIds) {
- clientId1 = str;
- getLogWriter().info("testDescribeClientWithServers clientIds for server1 =" + str);
- }
-
- final DistributedMember serverMember2 = getMember(server2);
-
- String[] clientIds2 = manager.invoke("get Client Ids", () -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
-
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port1, serverMember2);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
-
- return bean.getClientIds();
- });
-
- String clientId2 = "";
-
- for (String str : clientIds2) {
- clientId2 = str;
- getLogWriter().info("testDescribeClientWithServers clientIds for server2 =" + str);
- }
-
- commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID + "=\""
- + clientId1 + "\"";
-
- getLogWriter().info("testDescribeClientWithServers commandStr clientId1 =" + commandString);
-
- CommandResult commandResultForClient1 = executeCommand(commandString);
- getLogWriter()
- .info("testDescribeClientWithServers commandStr clientId1=" + commandResultForClient1);
-
- String resultAsString = commandResultToString(commandResultForClient1);
- getLogWriter().info("testDescribeClientWithServers commandStr clientId1 =" + resultAsString);
- assertTrue(Status.OK.equals(commandResultForClient1.getStatus()));
-
- verifyClientStats(commandResultForClient1, serverName1);
-
- commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID + "=\""
- + clientId2 + "\"";
-
- getLogWriter().info("testDescribeClientWithServers commandStr1=" + commandString);
-
- CommandResult commandResultForClient2 = executeCommand(commandString);
- getLogWriter().info("testDescribeClientWithServers commandResult1=" + commandResultForClient2);
-
- resultAsString = commandResultToString(commandResultForClient2);
- getLogWriter().info("testDescribeClientWithServers resultAsString1=" + resultAsString);
- assertTrue(Status.OK.equals(commandResultForClient2.getStatus()));
-
- verifyClientStats(commandResultForClient2, serverName2);
-
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeCacheServer(Host.getHost(0).getVM(3));
- closeCacheServer(Host.getHost(0).getVM(1));
-
- }
-
- public void verifyClientStats(CommandResult commandResultForClient, String serverName) {
- CompositeResultData resultData = (CompositeResultData) commandResultForClient.getResultData();
- SectionResultData section = resultData.retrieveSection("InfoSection");
- assertNotNull(section);
- for (int i = 0; i < 1; i++) {
- TabularResultData tableResultData = section.retrieveTableByIndex(i);
- getLogWriter().info("testDescribeClientWithServers getHeader=" + tableResultData.getHeader());
- assertNotNull(tableResultData);
-
- List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
- List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
- List<String> redundancy =
- tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
- List<String> numCqs = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_CQs);
-
- getLogWriter().info("testDescribeClientWithServers getHeader numCqs =" + numCqs);
-
- assertTrue(minConn.contains("1"));
- assertTrue(maxConn.contains("-1"));
- assertTrue(redundancy.contains("1"));
- assertTrue(numCqs.contains("3"));
- String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
- assertTrue(puts.equals("2"));
- String queue = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE);
- assertTrue(queue.equals("1"));
- String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
- assertTrue(calls.equals("1"));
- String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
- assertTrue(primServer.equals(serverName));
- String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
- assertTrue(durable.equals("No"));
- String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
- assertTrue(Integer.parseInt(threads) > 0);
- String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
- assertTrue(Integer.parseInt(cpu) > 0);
- String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
- assertTrue(Integer.parseInt(upTime) >= 0);
- String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
- assertTrue(Long.parseLong(prcTime) > 0);
-
- }
- }
-
- @Ignore("disabled for unknown reason")
- @Test
- public void testDescribeClient() throws Exception {
- setupSystem();
-
- getLogWriter().info("testDescribeClient clientId=" + clientId);
- assertNotNull(clientId);
-
- String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
- + "=\"" + clientId + "\"";
- getLogWriter().info("testDescribeClient commandStr=" + commandString);
-
- final VM server1 = Host.getHost(0).getVM(1);
- String serverName = server1.invoke("get distributed member Id", this::getDistributedMemberId);
-
- CommandResult commandResult = executeCommand(commandString);
- getLogWriter().info("testDescribeClient commandResult=" + commandResult);
-
- String resultAsString = commandResultToString(commandResult);
- getLogWriter().info("testDescribeClient resultAsString=" + resultAsString);
- assertTrue(Status.OK.equals(commandResult.getStatus()));
-
- CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
- SectionResultData section = resultData.retrieveSection("InfoSection");
- assertNotNull(section);
- TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
- assertNotNull(tableResultData);
-
- List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
- List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
- List<String> redundancy =
- tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
- List<String> numCqs = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_CQs);
-
- assertTrue(minConn.contains("1"));
- assertTrue(maxConn.contains("-1"));
- assertTrue(redundancy.contains("1"));
- assertTrue(numCqs.contains("3"));
- String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
- assertTrue(puts.equals("2"));
- String queue = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE);
- assertTrue(queue.equals("1"));
- String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
- assertTrue(calls.equals("1"));
- String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
- assertTrue(primServer.equals(serverName));
- String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
- assertTrue(durable.equals("No"));
- String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
- assertTrue(Integer.parseInt(threads) > 0);
- String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
- assertTrue(Integer.parseInt(cpu) > 0);
- String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
- assertTrue(Integer.parseInt(upTime) >= 0);
- String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
- assertTrue(Long.parseLong(prcTime) > 0);
-
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeCacheServer(Host.getHost(0).getVM(1));
- closeCacheServer(Host.getHost(0).getVM(3));
-
- }
-
- @Test
- public void testDescribeClientWithServers() throws Exception {
- setupSystem2();
-
- String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
- + "=\"" + clientId + "\"";
- getLogWriter().info("testDescribeClientWithServers commandStr=" + commandString);
-
- final VM server1 = Host.getHost(0).getVM(1);
- String serverName = server1.invoke("get Distributed Member Id", this::getDistributedMemberId);
-
- CommandResult commandResult = executeCommand(commandString);
- getLogWriter().info("testDescribeClientWithServers commandResult=" + commandResult);
-
- String resultAsString = commandResultToString(commandResult);
- getLogWriter().info("testDescribeClientWithServers resultAsString=" + resultAsString);
- assertTrue(Status.OK.equals(commandResult.getStatus()));
-
- CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
- SectionResultData section = resultData.retrieveSection("InfoSection");
- assertNotNull(section);
- TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
- assertNotNull(tableResultData);
-
- List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
- List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
- List<String> redundancy =
- tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
- List<String> numCqs = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_CQs);
-
- assertTrue(minConn.contains("1"));
- assertTrue(maxConn.contains("-1"));
- assertTrue(redundancy.contains("1"));
- assertTrue(numCqs.contains("3"));
- String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
- assertTrue(puts.equals("2"));
- String queue = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE);
- assertTrue(queue.equals("1"));
- String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
- assertTrue(calls.equals("1"));
- String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
- assertTrue(primServer.equals(serverName));
- String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
- assertTrue(durable.equals("No"));
- String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
- assertTrue(Integer.parseInt(threads) > 0);
- String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
- assertTrue(Integer.parseInt(cpu) > 0);
- String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
- assertTrue(Integer.parseInt(upTime) >= 0);
- String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
- assertTrue(Long.parseLong(prcTime) > 0);
-
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeNonDurableClient(Host.getHost(0).getVM(3));
- closeCacheServer(Host.getHost(0).getVM(1));
-
- }
-
- @Category(FlakyTest.class) // GEODE-908: random ports, BindException, time sensitive, HeadlessGfsh
- @Test
- public void testListClient() throws Exception {
- setupSystemForListClient();
-
- final VM manager = Host.getHost(0).getVM(0);
-
- String commandString = CliStrings.LIST_CLIENTS;
- getLogWriter().info("testListClient commandStr=" + commandString);
-
- waitForListClientMbean();
-
- final VM server1 = Host.getHost(0).getVM(1);
-
- final DistributedMember serverMember = getMember(server1);
-
- String[] clientIds = manager.invoke("get client Ids", () -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds();
- });
-
- String serverName = server1.invoke("get distributed member Id", this::getDistributedMemberId);
-
- CommandResult commandResult = executeCommand(commandString);
- getLogWriter().info("testListClient commandResult=" + commandResult);
-
- String resultAsString = commandResultToString(commandResult);
- getLogWriter().info("testListClient resultAsString=" + resultAsString);
- assertTrue(Status.OK.equals(commandResult.getStatus()));
-
- CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
- SectionResultData section = resultData.retrieveSection("section1");
- assertNotNull(section);
- TabularResultData tableResultData = section.retrieveTable("TableForClientList");
- assertNotNull(tableResultData);
-
- List<String> serverNames =
- tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_SERVERS);
- List<String> clientNames =
- tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_Clients);
-
- getLogWriter().info("testListClients serverNames : " + serverNames);
- getLogWriter().info("testListClients clientNames : " + clientNames);
- assertEquals(2, serverNames.size());
- assertEquals(2, clientNames.size());
- assertTrue(clientNames.contains(clientIds[0]));
- assertTrue(clientNames.contains(clientIds[1]));
- serverName = serverName.replace(":", "-");
- getLogWriter().info("testListClients serverName : " + serverName);
- for (String str : serverNames) {
- assertTrue(str.contains(serverName));
- }
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeCacheServer(Host.getHost(0).getVM(1));
- closeCacheServer(Host.getHost(0).getVM(3));
-
- }
-
- @Test
- public void testListClientForServers() throws Exception {
- setupSystem3();
-
- final VM manager = Host.getHost(0).getVM(0);
-
- String commandString = CliStrings.LIST_CLIENTS;
- System.out.println("testListClientForServers commandStr=" + commandString);
-
- final VM server1 = Host.getHost(0).getVM(1);
- final VM server2 = Host.getHost(0).getVM(3);
-
- final DistributedMember serverMember = getMember(server1);
-
- String[] clientIds = manager.invoke("get client Ids", () -> {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds();
- });
-
- String serverName1 = server1.invoke("get distributed member Id", this::getDistributedMemberId);
-
- String serverName2 = server2.invoke("get distributed member Id", this::getDistributedMemberId);
-
- CommandResult commandResult = executeCommand(commandString);
- System.out.println("testListClientForServers commandResult=" + commandResult);
-
- String resultAsString = commandResultToString(commandResult);
- System.out.println("testListClientForServers resultAsString=" + resultAsString);
- assertTrue(Status.OK.equals(commandResult.getStatus()));
-
- CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
- SectionResultData section = resultData.retrieveSection("section1");
- assertNotNull(section);
- TabularResultData tableResultData = section.retrieveTable("TableForClientList");
- assertNotNull(tableResultData);
-
- List<String> serverNames =
- tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_SERVERS);
- List<String> clientNames =
- tableResultData.retrieveAllValues(CliStrings.LIST_CLIENT_COLUMN_Clients);
-
- serverName1 = serverName1.replace(":", "-");
- serverName2 = serverName2.replace(":", "-");
-
- System.out.println("testListClientForServers serverNames : " + serverNames);
- System.out.println("testListClientForServers serverName1 : " + serverName1);
- System.out.println("testListClientForServers serverName2 : " + serverName2);
- System.out.println("testListClientForServers clientNames : " + clientNames);
-
- for (String client : clientIds) {
- assertTrue(clientNames.contains(client));
- }
-
- for (String server : serverNames) {
- assertTrue(server.contains(serverName1) || server.contains(serverName2));
- }
-
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeCacheServer(Host.getHost(0).getVM(1));
- closeCacheServer(Host.getHost(0).getVM(3));
-
- }
-
- private String getDistributedMemberId() {
- return GemFireCacheImpl.getInstance().getDistributedSystem().getDistributedMember().getId();
- }
-
- public DistributedMember getMember(final VM vm) {
- return vm.invoke("Get Member",
- () -> GemFireCacheImpl.getInstance().getDistributedSystem().getDistributedMember());
- }
-
- private void setupSystemForListClient() throws Exception {
- disconnectAllFromDS();
- setUpJmxManagerOnVm0ThenConnect(getServerProperties());
-
- final VM server1 = Host.getHost(0).getVM(1);
- final VM client1 = Host.getHost(0).getVM(2);
- final VM client2 = Host.getHost(0).getVM(3);
-
- port0 = startCacheServer(server1, 0, false, regionName);
- startNonDurableClient(client1, server1, port0);
- startNonDurableClient(client2, server1, port0);
- }
-
- private void setupSystem() throws Exception {
- disconnectAllFromDS();
- setUpJmxManagerOnVm0ThenConnect(getServerProperties());
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final VM client1 = Host.getHost(0).getVM(2);
- final VM server2 = Host.getHost(0).getVM(3);
-
- port0 = startCacheServer(server1, 0, false, regionName);
- startCacheServer(server2, 0, false, regionName);
-
- startNonDurableClient(client1, server1, port0);
- setupCqsOnVM(client1);
- waitForMbean();
-
- clientId = manager.invoke("get client Id", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
- DistributedMember serverMember = getMember(server1);
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds()[0];
- });
- }
-
- private void setupSystem2() throws Exception {
- disconnectAllFromDS();
- setUpJmxManagerOnVm0ThenConnect(getServerProperties());
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final VM client1 = Host.getHost(0).getVM(2);
- final VM client2 = Host.getHost(0).getVM(3);
-
- port0 = startCacheServer(server1, 0, false, regionName);
- startNonDurableClient(client1, server1, port0);
- startNonDurableClient(client2, server1, port0);
-
- setupCqsOnVM(client1);
- setupCqsOnVM(client2);
-
- waitForMbean();
-
- clientId = manager.invoke("get client Id", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
- DistributedMember serverMember = getMember(server1);
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds()[0];
- });
- }
-
- private void setupSystem3() throws Exception {
- disconnectAllFromDS();
- setUpJmxManagerOnVm0ThenConnect(getServerProperties());
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final VM client1 = Host.getHost(0).getVM(2);
- final VM server2 = Host.getHost(0).getVM(3);
-
- port0 = startCacheServer(server1, 0, false, regionName);
- port1 = startCacheServer(server2, 0, false, regionName);
- startNonDurableClient(client1, server1, port0);
- startNonDurableClient(client1, server2, port1);
-
- setupCqsOnVM(client1);
- waitForListClientMbean3();
-
- clientId = manager.invoke("get client Id", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
- DistributedMember serverMember = getMember(server1);
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds()[0];
- });
-
- }
-
- private void setupCqsOnVM(VM vm) {
- vm.invoke("setup CQs", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- QueryService qs = cache.getQueryService();
- CqAttributesFactory cqAf = new CqAttributesFactory();
- try {
- qs.newCq(cq1, "select * from /" + regionName, cqAf.create(), true).execute();
- qs.newCq(cq2, "select * from /" + regionName + " where id = 1", cqAf.create(), true)
- .execute();
- qs.newCq(cq3, "select * from /" + regionName + " where id > 2", cqAf.create(), true)
- .execute();
- cache.getLogger()
- .info("setupCqs on vm created cqs = " + cache.getQueryService().getCqs().length);
- } catch (Exception e) {
- cache.getLogger().info("setupCqs on vm Exception " + CliUtil.stackTraceAsString(e));
- }
- return true;
- });
- }
-
- private int startCacheServer(VM server, final int port, final boolean createPR,
- final String regionName) {
-
- return server.invoke("setup CacheServer", () -> {
- getSystem(getServerProperties());
-
- GemFireCacheImpl cache = (GemFireCacheImpl) getCache();
- AttributesFactory factory = new AttributesFactory();
- if (createPR) {
- PartitionAttributesFactory paf = new PartitionAttributesFactory();
- paf.setRedundantCopies(1);
- paf.setTotalNumBuckets(11);
- factory.setPartitionAttributes(paf.create());
- } else {
- factory.setScope(Scope.DISTRIBUTED_ACK);
- factory.setDataPolicy(DataPolicy.REPLICATE);
- }
- Region region = createRootRegion(regionName, factory.create());
- if (createPR) {
- assertTrue(region instanceof PartitionedRegion);
- } else {
- assertTrue(region instanceof DistributedRegion);
- }
- CacheServer cacheServer = cache.addCacheServer();
- cacheServer.setPort(port);
- cacheServer.start();
- return cacheServer.getPort();
- });
- }
-
- private void startNonDurableClient(VM client, final VM server, final int port) {
- client.invoke("start non-durable client", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- if (cache == null) {
-
- Properties props = getNonDurableClientProps();
- props.setProperty(LOG_FILE, "client_" + OSProcess.getId() + ".log");
- props.setProperty(LOG_LEVEL, "fine");
- props.setProperty(STATISTIC_ARCHIVE_FILE, "client_" + OSProcess.getId() + ".gfs");
- props.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
-
- getSystem(props);
-
- final ClientCacheFactory ccf = new ClientCacheFactory(props);
- ccf.addPoolServer(getServerHostName(server.getHost()), port);
- ccf.setPoolSubscriptionEnabled(true);
- ccf.setPoolPingInterval(1);
- ccf.setPoolStatisticInterval(1);
- ccf.setPoolSubscriptionRedundancy(1);
- ccf.setPoolMinConnections(1);
-
- ClientCache clientCache = getClientCache(ccf);
- // Create region
- if (clientCache.getRegion(Region.SEPARATOR + regionName) == null
- && clientCache.getRegion(regionName) == null) {
- ClientRegionFactory regionFactory =
- clientCache.createClientRegionFactory(ClientRegionShortcut.LOCAL)
- .setPoolName(clientCache.getDefaultPool().getName());
- Region dataRegion = regionFactory.create(regionName);
- assertNotNull(dataRegion);
- dataRegion.put("k1", "v1");
- dataRegion.put("k2", "v2");
-
- }
- } else {
- String poolName = "new_pool_" + System.currentTimeMillis();
- try {
- PoolImpl p = (PoolImpl) PoolManager.createFactory()
- .addServer(getServerHostName(server.getHost()), port).setThreadLocalConnections(true)
- .setMinConnections(1).setSubscriptionEnabled(true).setPingInterval(1)
- .setStatisticInterval(1).setMinConnections(1).setSubscriptionRedundancy(1)
- .create(poolName);
- System.out.println("Created new pool pool " + poolName);
- assertNotNull(p);
- } catch (Exception eee) {
- System.err.println("Exception in creating pool " + poolName + " Exception =="
- + CliUtil.stackTraceAsString(eee));
- }
- }
- });
- }
-
- // Closes the non-durable-client from the client side.
- private void closeNonDurableClient(final VM vm) {
- vm.invoke("Stop client", () -> ClientCacheFactory.getAnyInstance().close(true));
- }
-
- private void closeCacheServer(final VM vm) {
- vm.invoke("Stop client", () -> {
- for (CacheServer cacheServer : CacheFactory.getAnyInstance().getCacheServers()) {
- cacheServer.stop();
- }
- });
- }
-
- protected Properties getNonDurableClientProps() {
- Properties p = new Properties();
- p.setProperty(MCAST_PORT, "0");
- p.setProperty(LOCATORS, "");
- return p;
- }
-
- protected Properties getServerProperties() {
- Properties p = new Properties();
- p.setProperty(LOCATORS, "localhost[" + getDUnitLocatorPort() + "]");
- p.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "false");
- return p;
- }
-
- public void waitForNonSubCliMBean() {
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final DistributedMember serverMember = getMember(server1);
- assertNotNull(serverMember);
-
- manager.invoke(() -> Awaitility.waitAtMost(5 * 60, TimeUnit.SECONDS)
- .pollDelay(2, TimeUnit.SECONDS).until(() -> {
- try {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- if (service == null) {
- getLogWriter().info("waitForNonSubScribedClientMBean Still probing for service");
- return false;
- } else {
- getLogWriter().info("waitForNonSubScribedClientMBean 1");
- final ObjectName cacheServerMBeanName =
- service.getCacheServerMBeanName(port0, serverMember);
- getLogWriter().info(
- "waitForNonSubScribedClientMBean 2 cacheServerMBeanName " + cacheServerMBeanName);
- CacheServerMXBean bean =
- service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- getLogWriter().info("waitForNonSubScribedClientMBean 2 bean " + bean);
- if (bean.getClientIds().length > 0) {
- return true;
- }
- }
- } catch (Exception e) {
- LogWrapper.getInstance()
- .warning("waitForNonSubScribedClientMBean Exception in waitForMbean ::: "
- + CliUtil.stackTraceAsString(e));
- }
- return false;
- }));
- }
-
- public void waitForMixedClients() {
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
-
- final DistributedMember serverMember = getMember(server1);
-
- assertNotNull(serverMember);
-
- manager.invoke(() -> Awaitility.waitAtMost(5 * 60, TimeUnit.SECONDS)
- .pollDelay(2, TimeUnit.SECONDS).until(() -> {
- try {
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getManagementService(getCache());
- if (service == null) {
- getLogWriter().info("waitForMixedClients Still probing for service");
- return false;
- } else {
- getLogWriter().info("waitForMixedClients 1");
- final ObjectName cacheServerMBeanName =
- service.getCacheServerMBeanName(port0, serverMember);
- getLogWriter()
- .info("waitForMixedClients 2 cacheServerMBeanName " + cacheServerMBeanName);
- CacheServerMXBean bean =
- service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- getLogWriter().info("waitForMixedClients 2 bean " + bean);
- if (bean.getClientIds().length > 1) {
- return true;
- }
- }
- } catch (Exception e) {
- LogWrapper.getInstance().warning("waitForMixedClients Exception in waitForMbean ::: "
- + CliUtil.stackTraceAsString(e));
- }
- return false;
- }));
- }
-
- @Category(FlakyTest.class) // GEODE-910: random ports, HeadlessGfsh
- @Test
- public void testDescribeClientForNonSubscribedClient() throws Exception {
- setUpNonSubscribedClient();
-
- getLogWriter().info("testDescribeClientForNonSubscribedClient clientId=" + clientId);
- assertNotNull(clientId);
-
- String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
- + "=\"" + clientId + "\"";
- getLogWriter().info("testDescribeClientForNonSubscribedClient commandStr=" + commandString);
-
- CommandResult commandResult = executeCommand(commandString);
- getLogWriter().info("testDescribeClientForNonSubscribedClient commandResult=" + commandResult);
-
- String resultAsString = commandResultToString(commandResult);
- getLogWriter()
- .info("testDescribeClientForNonSubscribedClient resultAsString=" + resultAsString);
- assertTrue(Status.OK.equals(commandResult.getStatus()));
-
- CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
- SectionResultData section = resultData.retrieveSection("InfoSection");
- assertNotNull(section);
- TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
- assertNotNull(tableResultData);
-
- List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
- List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
- List<String> redundancy =
- tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
-
- assertTrue(minConn.contains("1"));
- assertTrue(maxConn.contains("-1"));
- assertTrue(redundancy.contains("1"));
-
- String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
- assertTrue(puts.equals("2"));
-
- String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
- assertTrue(calls.equals("1"));
-
- String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
- assertTrue(primServer.equals("N.A."));
-
- String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
- assertTrue(durable.equals("No"));
-
- String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
- assertTrue(Integer.parseInt(threads) > 0);
-
- String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
- assertTrue(Integer.parseInt(cpu) > 0);
-
- String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
- assertTrue(Integer.parseInt(upTime) == 0);
-
- String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
- assertTrue(Long.parseLong(prcTime) > 0);
-
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeCacheServer(Host.getHost(0).getVM(1));
- closeCacheServer(Host.getHost(0).getVM(3));
-
- }
-
- @Test
- public void testDescribeMixClientWithServers() throws Exception {
- String[] clientIds = setupSystemWithSubAndNonSubClient();
-
- final VM server1 = Host.getHost(0).getVM(1);
- String serverName = server1.invoke("Get DistributedMember Id", this::getDistributedMemberId);
-
- String commandString = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
- + "=\"" + clientIds[0] + "\"";
- getLogWriter().info("testDescribeMixClientWithServers commandStr=" + commandString);
-
- executeAndVerifyResultsForMixedClients(commandString, serverName);
-
- String commandString2 = CliStrings.DESCRIBE_CLIENT + " --" + CliStrings.DESCRIBE_CLIENT__ID
- + "=\"" + clientIds[1] + "\"";
- getLogWriter().info("testDescribeMixClientWithServers commandString2=" + commandString2);
-
- executeAndVerifyResultsForMixedClients(commandString2, serverName);
-
- closeNonDurableClient(Host.getHost(0).getVM(2));
- closeNonDurableClient(Host.getHost(0).getVM(3));
- closeCacheServer(Host.getHost(0).getVM(1));
-
- }
-
- void executeAndVerifyResultsForMixedClients(String commandString, String serverName) {
- CommandResult commandResult = executeCommand(commandString);
- getLogWriter().info("testDescribeMixClientWithServers commandResult=" + commandResult);
-
- String resultAsString = commandResultToString(commandResult);
- getLogWriter().info("testDescribeMixClientWithServers resultAsString=" + resultAsString);
-
- assertTrue(Status.OK.equals(commandResult.getStatus()));
-
- CompositeResultData resultData = (CompositeResultData) commandResult.getResultData();
- SectionResultData section = resultData.retrieveSection("InfoSection");
- assertNotNull(section);
- TabularResultData tableResultData = section.retrieveTable("Pool Stats For Pool Name = DEFAULT");
- assertNotNull(tableResultData);
-
- List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
- List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
- List<String> redundancy =
- tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
-
- assertTrue(minConn.contains("1"));
- assertTrue(maxConn.contains("-1"));
- assertTrue(redundancy.contains("1"));
-
- String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
- assertTrue(puts.equals("2"));
-
- String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
- assertTrue(calls.equals("1"));
-
- String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
- assertTrue(primServer.equals(serverName) || primServer.equals("N.A."));
-
- String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
- assertTrue(durable.equals("No"));
-
- String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
- assertTrue(Integer.parseInt(threads) > 0);
-
- String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
- assertTrue(Integer.parseInt(cpu) > 0);
-
- String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
- assertTrue(Integer.parseInt(upTime) >= 0);
-
- String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
- assertTrue(Long.parseLong(prcTime) > 0);
-
- }
-
- private void setUpNonSubscribedClient() throws Exception {
- disconnectAllFromDS();
- setUpJmxManagerOnVm0ThenConnect(getServerProperties());
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final VM client1 = Host.getHost(0).getVM(2);
- final VM server2 = Host.getHost(0).getVM(3);
-
- port0 = startCacheServer(server1, 0, false, regionName);
- startCacheServer(server2, 0, false, regionName);
-
- startNonSubscribedClient(client1, server1, port0);
- setupCqsOnVM(client1);
- waitForNonSubCliMBean();
-
- clientId = (String) manager.invoke(new SerializableCallable() {
- @Override
- public Object call() throws Exception {
- Cache cache = GemFireCacheImpl.getInstance();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
- DistributedMember serverMember = getMember(server1);
- final ObjectName cacheServerMBeanName =
- service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean =
- service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds()[0];
- }
- });
- }
-
- private String[] setupSystemWithSubAndNonSubClient() throws Exception {
- disconnectAllFromDS();
- setUpJmxManagerOnVm0ThenConnect(getServerProperties());
-
- final VM manager = Host.getHost(0).getVM(0);
- final VM server1 = Host.getHost(0).getVM(1);
- final VM client1 = Host.getHost(0).getVM(2);
- final VM client2 = Host.getHost(0).getVM(3);
-
- port0 = startCacheServer(server1, 0, false, regionName);
- startNonDurableClient(client1, server1, port0);
- startNonSubscribedClient(client2, server1, port0);
-
- waitForMixedClients();
-
- String[] clientIds = manager.invoke("get client Ids", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
- DistributedMember serverMember = getMember(server1);
- final ObjectName cacheServerMBeanName = service.getCacheServerMBeanName(port0, serverMember);
- CacheServerMXBean bean = service.getMBeanProxy(cacheServerMBeanName, CacheServerMXBean.class);
- return bean.getClientIds();
- });
-
- return clientIds;
- }
-
- private void startNonSubscribedClient(VM client, final VM server, final int port) {
- client.invoke("Start client", () -> {
- Cache cache = GemFireCacheImpl.getInstance();
- if (cache == null) {
-
- Properties props = getNonDurableClientProps();
- props.setProperty(LOG_FILE, "client_" + OSProcess.getId() + ".log");
- props.setProperty(LOG_LEVEL, "fine");
- props.setProperty(STATISTIC_ARCHIVE_FILE, "client_" + OSProcess.getId() + ".gfs");
- props.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
-
- getSystem(props);
-
- final ClientCacheFactory ccf = new ClientCacheFactory(props);
- ccf.addPoolServer(getServerHostName(server.getHost()), port);
- ccf.setPoolSubscriptionEnabled(false);
- ccf.setPoolPingInterval(1);
- ccf.setPoolStatisticInterval(1);
- ccf.setPoolSubscriptionRedundancy(1);
- ccf.setPoolMinConnections(1);
-
- ClientCache clientCache = getClientCache(ccf);
- // Create region
- if (clientCache.getRegion(Region.SEPARATOR + regionName) == null
- && clientCache.getRegion(regionName) == null) {
- ClientRegionFactory regionFactory =
- clientCache.createClientRegionFactory(ClientRegionShortcut.LOCAL)
- .setPoolName(clientCache.getDefaultPool().getName());
- Region dataRegion = regionFactory.create(regionName);
- assertNotNull(dataRegion);
- dataRegion.put("k1", "v1");
- dataRegion.put("k2", "v2");
-
- }
- } else {
- String poolName = "new_pool_" + System.currentTimeMillis();
- try {
- PoolImpl p = (PoolImpl) PoolManager.createFactory()
- .addServer(getServerHostName(server.getHost()), port).setThreadLocalConnections(true)
- .setMinConnections(1).setSubscriptionEnabled(false).setPingInterval(1)
- .setStatisticInterval(1).setMinConnections(1).setSubscriptionRedundancy(1)
- .create(poolName);
- cache.getLogger().info("Created new pool pool " + poolName);
- assertNotNull(p);
- } catch (Exception eee) {
- cache.getLogger().info("Exception in creating pool " + poolName + " Exception =="
- + CliUtil.stackTraceAsString(eee));
- }
- }
- });
- }
-
- @Override
- public final void postTearDownCacheTestCase() throws Exception {
- Host.getHost(0).getVM(0).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
- Host.getHost(0).getVM(1).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
- Host.getHost(0).getVM(2).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
- Host.getHost(0).getVM(3).invoke((SerializableRunnableIF) CacheServerTestUtil::closeCache);
- }
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
new file mode 100644
index 0000000..bf29918
--- /dev/null
+++ b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
@@ -0,0 +1,140 @@
+/*
+ * 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 static org.apache.geode.distributed.ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.test.dunit.DistributedTestUtils.getDUnitLocatorPort;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.cache.query.CqAttributesFactory;
+import org.apache.geode.cache.query.QueryService;
+import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.management.internal.cli.CliUtil;
+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.CompositeResultData;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.test.dunit.VM;
+
+class ClientCommandsTestUtils extends CliCommandTestBase {
+ static Properties getServerProperties() {
+ Properties p = new Properties();
+ p.setProperty(LOCATORS, "localhost[" + getDUnitLocatorPort() + "]");
+ p.setProperty(ENABLE_NETWORK_PARTITION_DETECTION, "false");
+ return p;
+ }
+
+ static String getDistributedMemberId() {
+ return GemFireCacheImpl.getInstance().getDistributedSystem().getDistributedMember().getId();
+ }
+
+ static DistributedMember getMember(final VM vm) {
+ return vm.invoke("Get Member",
+ () -> GemFireCacheImpl.getInstance().getDistributedSystem().getDistributedMember());
+ }
+
+ static void closeNonDurableClient(final VM vm) {
+ vm.invoke("Stop client", () -> ClientCacheFactory.getAnyInstance().close(true));
+ }
+
+ static void closeCacheServer(final VM vm) {
+ vm.invoke("Stop client", () -> {
+ for (CacheServer cacheServer : CacheFactory.getAnyInstance().getCacheServers()) {
+ cacheServer.stop();
+ }
+ });
+ }
+
+ static Properties getNonDurableClientProps() {
+ Properties p = new Properties();
+ p.setProperty(MCAST_PORT, "0");
+ p.setProperty(LOCATORS, "");
+ return p;
+ }
+
+ static void setupCqsOnVM(String cq1, String cq2, String cq3, String regionName, VM vm) {
+ vm.invoke("setup CQs", () -> {
+ Cache cache = GemFireCacheImpl.getInstance();
+ QueryService qs = cache.getQueryService();
+ CqAttributesFactory cqAf = new CqAttributesFactory();
+ try {
+ qs.newCq(cq1, "select * from /" + regionName, cqAf.create(), true).execute();
+ qs.newCq(cq2, "select * from /" + regionName + " where id = 1", cqAf.create(), true)
+ .execute();
+ qs.newCq(cq3, "select * from /" + regionName + " where id > 2", cqAf.create(), true)
+ .execute();
+ cache.getLogger()
+ .info("setupCqs on vm created cqs = " + cache.getQueryService().getCqs().length);
+ } catch (Exception e) {
+ cache.getLogger().info("setupCqs on vm Exception " + CliUtil.stackTraceAsString(e));
+ }
+ return true;
+ });
+ }
+
+ static void verifyClientStats(CommandResult commandResultForClient, String serverName) {
+ CompositeResultData resultData = (CompositeResultData) commandResultForClient.getResultData();
+ CompositeResultData.SectionResultData section = resultData.retrieveSection("InfoSection");
+ assertNotNull(section);
+
+ for (int i = 0; i < 1; i++) {
+ TabularResultData tableResultData = section.retrieveTableByIndex(i);
+ getLogWriter().info("testDescribeClientWithServers getHeader=" + tableResultData.getHeader());
+ assertNotNull(tableResultData);
+ List<String> minConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MIN_CONN);
+ List<String> maxConn = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_MAX_CONN);
+ List<String> redundancy =
+ tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_REDUNDANCY);
+ List<String> numCqs = tableResultData.retrieveAllValues(CliStrings.DESCRIBE_CLIENT_CQs);
+ getLogWriter().info("testDescribeClientWithServers getHeader numCqs =" + numCqs);
+
+ assertTrue(minConn.contains("1"));
+ assertTrue(maxConn.contains("-1"));
+ assertTrue(redundancy.contains("1"));
+ assertTrue(numCqs.contains("3"));
+ String puts = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS);
+ assertTrue(puts.equals("2"));
+ String queue = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE);
+ assertTrue(queue.equals("1"));
+ String calls = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS);
+ assertTrue(calls.equals("1"));
+ String primServer = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS);
+ assertTrue(primServer.equals(serverName));
+ String durable = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE);
+ assertTrue(durable.equals("No"));
+ String threads = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS);
+ assertTrue(Integer.parseInt(threads) > 0);
+ String cpu = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU);
+ assertTrue(Integer.parseInt(cpu) > 0);
+ String upTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME);
+ assertTrue(Integer.parseInt(upTime) >= 0);
+ String prcTime = section.retrieveString(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME);
+ assertTrue(Long.parseLong(prcTime) > 0);
+ }
+ }
+}
[05/50] [abbrv] geode git commit: Empty commit, this closes #29
Posted by kl...@apache.org.
Empty commit, this closes #29
Closing this PR due to lack of activity. The PR as it stands is failing
some tests, no response from the contributor.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/33cb7a59
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/33cb7a59
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/33cb7a59
Branch: refs/heads/feature/GEODE-3299
Commit: 33cb7a59a0977b4ac3ecd096aea9660c1587eca3
Parents: 82894a6
Author: Dan Smith <up...@apache.org>
Authored: Tue Jul 25 15:32:16 2017 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Tue Jul 25 16:10:14 2017 -0700
----------------------------------------------------------------------
----------------------------------------------------------------------
[22/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStopDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStopDUnitTest.java
deleted file mode 100644
index 2cfc5db..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewayReceiverStopDUnitTest.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-
-@Category(DistributedTest.class)
-public class WanCommandGatewayReceiverStopDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Test wan commands for error in input 1> start gateway-sender command needs only one of member
- * or group.
- */
- @Test
- public void testStopGatewayReceiver_ErrorConditions() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createReceiver(punePort));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
- + vm1Member.getId() + " --" + CliStrings.GROUP + "=RG1";
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testStopGatewayReceiver_ErrorConditions stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.ERROR, cmdResult.getStatus());
- assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
- } else {
- fail("testStopGatewayReceiver_ErrorConditions failed as did not get CommandResult");
- }
- }
-
- @Category(FlakyTest.class) // GEODE-1418
- @Test
- public void testStopGatewayReceiver() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createAndStartReceiver(punePort));
- vm4.invoke(() -> createAndStartReceiver(punePort));
- vm5.invoke(() -> createAndStartReceiver(punePort));
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
-
- pause(10000);
- String command = CliStrings.STOP_GATEWAYRECEIVER;
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewayReceiver stringResult : " + strCmdResult + ">>>>");
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertTrue(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStopGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a member
- */
- @Test
- public void testStopGatewayReceiver_onMember() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createAndStartReceiver(punePort));
- vm4.invoke(() -> createAndStartReceiver(punePort));
- vm5.invoke(() -> createAndStartReceiver(punePort));
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
- pause(10000);
- String command =
- CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm1Member.getId();
-
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testStopGatewayReceiver_onMember stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- assertTrue(strCmdResult.contains("stopped on member"));
- } else {
- fail("testStopGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a group of members
- */
- @Test
- public void testStopGatewayReceiver_Group() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
-
- pause(10000);
- String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStopGatewayReceiver_Group failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
- }
-
- /**
- * Test to validate the scenario gateway sender is started when one or more sender members belongs
- * to multiple groups
- *
- */
- @Test
- public void testStopGatewayReceiver_MultipleGroup() {
-
- VM puneLocator = Host.getLocator();
- int punePort = puneLocator.invoke(() -> getLocatorPort());
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm4.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm5.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
- vm6.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1, RG2"));
- vm7.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG3"));
-
- vm3.invoke(() -> verifyReceiverState(true));
- vm4.invoke(() -> verifyReceiverState(true));
- vm5.invoke(() -> verifyReceiverState(true));
- vm6.invoke(() -> verifyReceiverState(true));
- vm7.invoke(() -> verifyReceiverState(true));
-
- pause(10000);
- String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1,RG2";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStopGatewayReceiver failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifyReceiverState(false));
- vm4.invoke(() -> verifyReceiverState(false));
- vm5.invoke(() -> verifyReceiverState(false));
- vm6.invoke(() -> verifyReceiverState(false));
- vm7.invoke(() -> verifyReceiverState(true));
- }
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStartDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStartDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStartDUnitTest.java
deleted file mode 100644
index a77c499..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStartDUnitTest.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-
-@Category(DistributedTest.class)
-public class WanCommandGatewaySenderStartDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Test wan commands for error in input 1> start gateway-sender command needs only one of member
- * or group.
- */
- @Test
- public void testStartGatewaySender_ErrorConditions() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
- + "=SenserGroup1";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.ERROR, cmdResult.getStatus());
- assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
- } else {
- fail("testStartGatewaySender failed as did not get CommandResult");
- }
- }
-
- private CommandResult executeCommandWithIgnoredExceptions(String command) {
- final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
- try {
- CommandResult commandResult = executeCommand(command);
- return commandResult;
- } finally {
- exln.remove();
- }
- }
-
- @Test
- public void testStartGatewaySender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- pause(10000);
- String command =
- CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID + "=ln";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(5, status.size());
- assertTrue(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStartGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a member
- */
- @Test
- public void testStartGatewaySender_onMember() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
- pause(10000);
- String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- assertTrue(strCmdResult.contains("is started on member"));
- } else {
- fail("testStartGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a group of members
- */
- @Test
- public void testStartGatewaySender_Group() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- pause(10000);
- String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStartGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- }
-
- /**
- * Test to validate the scenario gateway sender is started when one or more sender members belongs
- * to multiple groups
- */
- @Test
- public void testStartGatewaySender_MultipleGroup() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
- vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
- vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
- vm6.invoke(() -> verifySenderState("ln", false, false));
- vm7.invoke(() -> verifySenderState("ln", false, false));
-
- pause(10000);
- String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStartGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- vm6.invoke(() -> verifySenderState("ln", true, false));
- vm7.invoke(() -> verifySenderState("ln", false, false));
- }
-
- /**
- * Test to validate the test scenario when one of the member ion group does not have the sender.
- */
- @Test
- public void testStartGatewaySender_Group_MissingSenderFromGroup() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
-
- pause(10000);
- String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- assertTrue(strCmdResult.contains("Error"));
- assertTrue(strCmdResult.contains("is not available"));
- getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertTrue(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStartGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStopDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStopDUnitTest.java
deleted file mode 100644
index 1a4fa07..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandGatewaySenderStopDUnitTest.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-
-@Category(DistributedTest.class)
-public class WanCommandGatewaySenderStopDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- private CommandResult executeCommandWithIgnoredExceptions(String command) {
- final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
- CommandResult commandResult = executeCommand(command);
- exln.remove();
- return commandResult;
- }
-
- @Test
- public void testStopGatewaySender_ErrorConditions() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
- + "=SenderGroup1";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.ERROR, cmdResult.getStatus());
- assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
- } else {
- fail("testStopGatewaySender failed as did not get CommandResult");
- }
- }
-
- @Test
- public void testStopGatewaySender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- pause(10000);
- String command =
- CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID + "=ln";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(5, status.size());
- assertTrue(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStopGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a member
- */
- @Test
- public void testStopGatewaySender_onMember() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
- pause(10000);
- String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- assertTrue(strCmdResult.contains("is stopped on member"));
- } else {
- fail("testStopGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a group of members
- */
- @Test
- public void testStopGatewaySender_Group() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- pause(10000);
- String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStopGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
- }
-
- /**
- * Test to validate the scenario gateway sender is started when one or more sender members belongs
- * to multiple groups
- */
- @Test
- public void testStopGatewaySender_MultipleGroup() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
- vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
- vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
- vm6.invoke(() -> startSender("ln"));
- vm7.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- vm6.invoke(() -> verifySenderState("ln", true, false));
- vm7.invoke(() -> verifySenderState("ln", true, false));
-
- pause(10000);
- String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
- CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testStopGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testStopGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", false, false));
- vm4.invoke(() -> verifySenderState("ln", false, false));
- vm5.invoke(() -> verifySenderState("ln", false, false));
- vm6.invoke(() -> verifySenderState("ln", false, false));
- vm7.invoke(() -> verifySenderState("ln", true, false));
- }
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandPauseResumeDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandPauseResumeDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandPauseResumeDUnitTest.java
deleted file mode 100644
index bae0553..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/WanCommandPauseResumeDUnitTest.java
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- * 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.internal.cache.wan.wancommand;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.management.cli.Result;
-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.TabularResultData;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.List;
-import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Assert.*;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.apache.geode.test.dunit.Wait.pause;
-
-@Category(DistributedTest.class)
-public class WanCommandPauseResumeDUnitTest extends WANCommandTestBase {
-
- private static final long serialVersionUID = 1L;
-
- @Test
- public void testPauseGatewaySender_ErrorConditions() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
- + "=SenderGroup1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.ERROR, cmdResult.getStatus());
- assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
- } else {
- fail("testPauseGatewaySender failed as did not get CommandResult");
- }
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a member
- */
- @Test
- public void testPauseGatewaySender_onMember() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
- pause(10000);
- String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- assertTrue(strCmdResult.contains("is paused on member"));
- } else {
- fail("testPauseGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- }
-
- @Test
- public void testPauseGatewaySender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- pause(10000);
- String command =
- CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID + "=ln";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testPauseGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(5, status.size());
- assertTrue(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testPauseGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- vm4.invoke(() -> verifySenderState("ln", true, true));
- vm5.invoke(() -> verifySenderState("ln", true, true));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a group of members
- */
- @Test
- public void testPauseGatewaySender_Group() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- pause(10000);
- String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testPauseGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testPauseGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- vm4.invoke(() -> verifySenderState("ln", true, true));
- vm5.invoke(() -> verifySenderState("ln", true, true));
- }
-
- /**
- * Test to validate the scenario gateway sender is started when one or more sender members belongs
- * to multiple groups
- */
- @Test
- public void testPauseGatewaySender_MultipleGroup() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
- vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
- vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
- vm6.invoke(() -> startSender("ln"));
- vm7.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- vm6.invoke(() -> verifySenderState("ln", true, false));
- vm7.invoke(() -> verifySenderState("ln", true, false));
-
- pause(10000);
- String command = CliStrings.PAUSE_GATEWAYSENDER + " --" + CliStrings.PAUSE_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testPauseGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testPauseGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- vm4.invoke(() -> verifySenderState("ln", true, true));
- vm5.invoke(() -> verifySenderState("ln", true, true));
- vm6.invoke(() -> verifySenderState("ln", true, true));
- vm7.invoke(() -> verifySenderState("ln", true, false));
- }
-
- @Test
- public void testResumeGatewaySender_ErrorConditions() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
-
- String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
- + "=SenderGroup1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter()
- .info("testResumeGatewaySender_ErrorConditions stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.ERROR, cmdResult.getStatus());
- assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
- } else {
- fail("testPauseGatewaySender failed as did not get CommandResult");
- }
- }
-
- @Test
- public void testResumeGatewaySender() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCache(punePort));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCache(punePort));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- vm3.invoke(() -> pauseSender("ln"));
- vm4.invoke(() -> pauseSender("ln"));
- vm5.invoke(() -> pauseSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- vm4.invoke(() -> verifySenderState("ln", true, true));
- vm5.invoke(() -> verifySenderState("ln", true, true));
-
- pause(10000);
- String command =
- CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID + "=ln";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(5, status.size());
- assertTrue(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testResumeGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a member
- */
- @Test
- public void testResumeGatewaySender_onMember() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCache(punePort));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
-
- vm3.invoke(() -> pauseSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
-
- final DistributedMember vm1Member = vm3.invoke(() -> getMember());
- pause(10000);
- String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- assertTrue(strCmdResult.contains("is resumed on member"));
- } else {
- fail("testResumeGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- }
-
- /**
- * test to validate that the start gateway sender starts the gateway sender on a group of members
- */
- @Test
- public void testResumeGatewaySender_Group() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
-
- vm3.invoke(() -> pauseSender("ln"));
- vm4.invoke(() -> pauseSender("ln"));
- vm5.invoke(() -> pauseSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- vm4.invoke(() -> verifySenderState("ln", true, true));
- vm5.invoke(() -> verifySenderState("ln", true, true));
-
- pause(10000);
- String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
-
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(3, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testResumeGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- }
-
- /**
- * Test to validate the scenario gateway sender is started when one or more sender members belongs
- * to multiple groups
- */
- @Test
- public void testResumeGatewaySender_MultipleGroup() {
-
- Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
-
- Properties props = getDistributedSystemProperties();
- props.setProperty(MCAST_PORT, "0");
- props.setProperty(DISTRIBUTED_SYSTEM_ID, "1");
- props.setProperty(LOCATORS, "localhost[" + punePort + "]");
- setUpJmxManagerOnVm0ThenConnect(props);
-
- Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
-
- vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
- vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
- vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
- vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
- vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
- vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
-
- vm3.invoke(() -> startSender("ln"));
- vm4.invoke(() -> startSender("ln"));
- vm5.invoke(() -> startSender("ln"));
- vm6.invoke(() -> startSender("ln"));
- vm7.invoke(() -> startSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- vm6.invoke(() -> verifySenderState("ln", true, false));
- vm7.invoke(() -> verifySenderState("ln", true, false));
-
- vm3.invoke(() -> pauseSender("ln"));
- vm4.invoke(() -> pauseSender("ln"));
- vm5.invoke(() -> pauseSender("ln"));
- vm6.invoke(() -> pauseSender("ln"));
- vm7.invoke(() -> pauseSender("ln"));
-
- vm3.invoke(() -> verifySenderState("ln", true, true));
- vm4.invoke(() -> verifySenderState("ln", true, true));
- vm5.invoke(() -> verifySenderState("ln", true, true));
- vm6.invoke(() -> verifySenderState("ln", true, true));
- vm7.invoke(() -> verifySenderState("ln", true, true));
-
- pause(10000);
- String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
- + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
- CommandResult cmdResult = executeCommand(command);
- if (cmdResult != null) {
- String strCmdResult = commandResultToString(cmdResult);
- getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
- assertEquals(Result.Status.OK, cmdResult.getStatus());
- TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
- List<String> status = resultData.retrieveAllValues("Result");
- assertEquals(4, status.size());
- assertFalse(status.contains("Error"));
- assertTrue(status.contains("OK"));
- } else {
- fail("testResumeGatewaySender failed as did not get CommandResult");
- }
-
- vm3.invoke(() -> verifySenderState("ln", true, false));
- vm4.invoke(() -> verifySenderState("ln", true, false));
- vm5.invoke(() -> verifySenderState("ln", true, false));
- vm6.invoke(() -> verifySenderState("ln", true, false));
- vm7.invoke(() -> verifySenderState("ln", true, true));
- }
-}
[14/50] [abbrv] geode git commit: GEODE-3291: newly added
lucene-analyzers-phonetic will automatically add its dependency
commons-codec. Need to let junit to expect this new jar.
Posted by kl...@apache.org.
GEODE-3291: newly added lucene-analyzers-phonetic will automatically add its
dependency commons-codec. Need to let junit to expect this new jar.
geode-lucene does not need to explicitly include commons-codec in its test.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/e0aa1b0c
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/e0aa1b0c
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/e0aa1b0c
Branch: refs/heads/feature/GEODE-3299
Commit: e0aa1b0c469eac4d0259e90a3901070d67963cfb
Parents: f1326be
Author: zhouxh <gz...@pivotal.io>
Authored: Wed Jul 26 13:56:00 2017 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Wed Jul 26 13:57:55 2017 -0700
----------------------------------------------------------------------
geode-assembly/src/test/resources/expected_jars.txt | 1 +
geode-lucene/build.gradle | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/e0aa1b0c/geode-assembly/src/test/resources/expected_jars.txt
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/resources/expected_jars.txt b/geode-assembly/src/test/resources/expected_jars.txt
index a082539..bc49bce 100644
--- a/geode-assembly/src/test/resources/expected_jars.txt
+++ b/geode-assembly/src/test/resources/expected_jars.txt
@@ -10,6 +10,7 @@ commons-io
commons-lang
commons-logging
commons-modeler
+commons-codec
fast-classpath-scanner
fastutil
findbugs-annotations
http://git-wip-us.apache.org/repos/asf/geode/blob/e0aa1b0c/geode-lucene/build.gradle
----------------------------------------------------------------------
diff --git a/geode-lucene/build.gradle b/geode-lucene/build.gradle
index 66061aa..60dc244 100644
--- a/geode-lucene/build.gradle
+++ b/geode-lucene/build.gradle
@@ -34,7 +34,6 @@ dependencies {
testCompile 'org.apache.lucene:lucene-codecs:' + project.'lucene.version'
testCompile 'com.pholser:junit-quickcheck-core:' + project.'junit-quickcheck.version'
testCompile 'org.apache.lucene:lucene-analyzers-phonetic:' + project.'lucene.version'
- testCompile 'commons-codec:commons-codec:' + project.'codec.version'
testCompile 'com.pholser:junit-quickcheck-generators:' + project.'junit-quickcheck.version'
testCompile files(project(':geode-core').sourceSets.test.output)
}
[04/50] [abbrv] geode git commit: Empty commit,
this closes #130 - UDA functionality
Posted by kl...@apache.org.
Empty commit, this closes #130 - UDA functionality
This PR has failing tests, needs some review and code cleanup. No
activity for over a year.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/09dd45f6
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/09dd45f6
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/09dd45f6
Branch: refs/heads/feature/GEODE-3299
Commit: 09dd45f6ea93d17f77d5f653dd7edfb50a702152
Parents: 33cb7a5
Author: Dan Smith <up...@apache.org>
Authored: Tue Jul 25 15:57:35 2017 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Tue Jul 25 16:10:14 2017 -0700
----------------------------------------------------------------------
----------------------------------------------------------------------
[09/50] [abbrv] geode git commit: GEODE-3312 Update doc gfsh list
members output
Posted by kl...@apache.org.
GEODE-3312 Update doc gfsh list members output
IP address is output, not host name.
This closes #656
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/b9ba1d4f
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/b9ba1d4f
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/b9ba1d4f
Branch: refs/heads/feature/GEODE-3299
Commit: b9ba1d4fc5a2cabe952d27a0a1c955a9511d713c
Parents: b889112
Author: Karen Miller <km...@pivotal.io>
Authored: Tue Jul 25 15:27:31 2017 -0700
Committer: Karen Miller <km...@pivotal.io>
Committed: Wed Jul 26 09:40:01 2017 -0700
----------------------------------------------------------------------
.../getting_started/15_minute_quickstart_gfsh.html.md.erb | 6 +++---
geode-docs/tools_modules/gfsh/command-pages/list.html.md.erb | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/b9ba1d4f/geode-docs/getting_started/15_minute_quickstart_gfsh.html.md.erb
----------------------------------------------------------------------
diff --git a/geode-docs/getting_started/15_minute_quickstart_gfsh.html.md.erb b/geode-docs/getting_started/15_minute_quickstart_gfsh.html.md.erb
index a4970d8..6e5e23e 100644
--- a/geode-docs/getting_started/15_minute_quickstart_gfsh.html.md.erb
+++ b/geode-docs/getting_started/15_minute_quickstart_gfsh.html.md.erb
@@ -126,14 +126,14 @@ In this step you create a region with the `gfsh` command line utility. Regions a
regionA
```
-3. List the members of your cluster. The locator and cache servers you started appear in the list:
+3. List the members of your cluster. The locator and cache server you started appear in the list:
``` pre
gfsh>list members
Name | Id
-------- | ---------------------------------------
- locator1 | ubuntu(locator1:3529:locator)<v0>:59926
- server1 | ubuntu(server1:3883)<v1>:65390
+ locator1 | 192.0.2.0(locator1:3529:locator)<v0>:59926
+ server1 | 192.0.2.0(server1:3883)<v1>:65390
```
4. To view specifics about a region, type the following:
http://git-wip-us.apache.org/repos/asf/geode/blob/b9ba1d4f/geode-docs/tools_modules/gfsh/command-pages/list.html.md.erb
----------------------------------------------------------------------
diff --git a/geode-docs/tools_modules/gfsh/command-pages/list.html.md.erb b/geode-docs/tools_modules/gfsh/command-pages/list.html.md.erb
index 6851b0a..f7601b2 100644
--- a/geode-docs/tools_modules/gfsh/command-pages/list.html.md.erb
+++ b/geode-docs/tools_modules/gfsh/command-pages/list.html.md.erb
@@ -472,9 +472,9 @@ list members --group=Group1
gfsh>list members
Name | Id
-------- | -------------------------------------
-server1 | GemFireStymon(server1:888)<v7>:10839
-server2 | GemFireStymon(server2:3260)<v8>:16721
-locator1 | localhost(locator1:216:locator):33368
+server1 | 192.0.2.0(server1:888)<v7>:10839
+server2 | 192.0.2.0(server2:3260)<v8>:16721
+locator1 | 192.0.2.0(locator1:216:locator):33368
```
## <a id="topic_F0ECEFF26086474498598035DD83C588" class="no-quick-link"></a>list regions
[03/50] [abbrv] geode git commit: GEODE-2986: Remove redundant log
message
Posted by kl...@apache.org.
GEODE-2986: Remove redundant log message
Just log message if "notExecutedMembers" is not null and not empty.
This closes #535
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/82894a67
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/82894a67
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/82894a67
Branch: refs/heads/feature/GEODE-3299
Commit: 82894a67ba5e875ff9e6a187d5102d91ca8ab738
Parents: 6267efe
Author: Akihiro Kitada <ak...@akitada-mcbk13.local>
Authored: Thu May 25 11:16:08 2017 +0900
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Tue Jul 25 16:02:45 2017 -0700
----------------------------------------------------------------------
.../internal/cli/commands/DiskStoreCommands.java | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/82894a67/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
index 96aa95e..84326c0 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
@@ -475,10 +475,12 @@ public class DiskStoreCommands implements GfshCommand {
memberCompactInfo.clear();
}
String notExecutedMembers = CompactRequest.getNotExecutedMembers();
- LogWrapper.getInstance()
- .info("compact disk-store \"" + diskStoreName
- + "\" message was scheduled to be sent to but was not send to "
- + notExecutedMembers);
+ if (notExecutedMembers != null && !notExecutedMembers.isEmpty()) {
+ LogWrapper.getInstance()
+ .info("compact disk-store \"" + diskStoreName
+ + "\" message was scheduled to be sent to but was not send to "
+ + notExecutedMembers);
+ }
}
// If compaction happened at all, then prepare the summary
[37/50] [abbrv] geode git commit: GEODE-3286: Improving closed
connection check
Posted by kl...@apache.org.
GEODE-3286: Improving closed connection check
Signed-off-by: Hitesh Khamesra <hi...@yahoo.com>
Signed-off-by: Brian Rowe <br...@pivotal.io>
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/7e06476d
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/7e06476d
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/7e06476d
Branch: refs/heads/feature/GEODE-3299
Commit: 7e06476d0eb9e879668956c112f44a4cabdb2837
Parents: 4ee96cf
Author: Brian Rowe <br...@pivotal.io>
Authored: Thu Jul 27 14:09:24 2017 -0700
Committer: Brian Rowe <br...@pivotal.io>
Committed: Fri Jul 28 17:15:37 2017 -0700
----------------------------------------------------------------------
.../main/java/org/apache/geode/internal/tcp/ConnectionTable.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/7e06476d/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
index 0be5f28..69fb7a2 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
@@ -296,7 +296,9 @@ public class ConnectionTable {
.toLocalizedString(), connection);
return;
}
- if (!connection.isSocketClosed()) {
+ // If connection.stopped is false, any connection cleanup thread will not yet have acquired
+ // the receiver synchronization to remove the receiver. Therefore we can safely add it here.
+ if (!connection.isSocketClosed() || connection.stopped) {
this.receivers.add(connection);
}
}
[42/50] [abbrv] geode git commit: GEODE-3324 Document finer-grained
security permissions
Posted by kl...@apache.org.
GEODE-3324 Document finer-grained security permissions
This closes #667
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/6f4bf30e
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/6f4bf30e
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/6f4bf30e
Branch: refs/heads/feature/GEODE-3299
Commit: 6f4bf30e86ad03e230e74bb2416301d44216bc7c
Parents: ab0543b
Author: Karen Miller <km...@pivotal.io>
Authored: Fri Jul 28 15:59:55 2017 -0700
Committer: Karen Miller <km...@pivotal.io>
Committed: Mon Jul 31 17:07:14 2017 -0700
----------------------------------------------------------------------
.../implementing_authorization.html.md.erb | 125 +++++++++----------
1 file changed, 59 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/6f4bf30e/geode-docs/managing/security/implementing_authorization.html.md.erb
----------------------------------------------------------------------
diff --git a/geode-docs/managing/security/implementing_authorization.html.md.erb b/geode-docs/managing/security/implementing_authorization.html.md.erb
index 9fb55d3..8f91825 100644
--- a/geode-docs/managing/security/implementing_authorization.html.md.erb
+++ b/geode-docs/managing/security/implementing_authorization.html.md.erb
@@ -93,16 +93,14 @@ a Client-Server interaction.
| Region.registerInterest(regex) | DATA:READ:RegionName |
| Region.unregisterInterest(key) | DATA:READ:RegionName:Key |
| Region.unregisterInterest(regex) | DATA:READ:RegionName |
-| execute function | DATA:WRITE |
+| execute function | determined by the function API |
| clear region | DATA:WRITE:RegionName |
| Region.putAll | DATA:WRITE:RegionName |
| Region.clear | DATA:WRITE:RegionName |
| Region.removeAll | DATA:WRITE:RegionName |
| Region.destroy(key) | DATA:WRITE:RegionName:Key |
| Region.invalidate(key) | DATA:WRITE:RegionName:Key |
-| invalidate key (DIFFERENT?) | DATA:WRITE:RegionName:Key |
| Region.destroy(key) | DATA:WRITE:RegionName:Key |
-| destroy key (DIFFERENT?) | DATA:WRITE:RegionName:Key |
| Region.put(key) | DATA:WRITE:RegionName:Key |
| Region.replace | DATA:WRITE:RegionName:Key |
@@ -111,43 +109,39 @@ This table classifies the permissions assigned for `gfsh` operations.
| `gfsh` Command | Assigned `ResourcePermission`
|----------------------------------------|----------------------------------|
-| alter disk-store | DATA:MANAGE |
+| alter disk-store | CLUSTER:MANAGE:DISK |
| alter region | DATA:MANAGE:RegionName |
| alter runtime | CLUSTER:MANAGE |
-| backup disk-store | DATA:READ |
+| backup disk-store | DATA:READ and CLUSTER:WRITE:DISK |
| change loglevel | CLUSTER:WRITE |
-| clear defined indexes | DATA:MANAGE |
-| close durable-client | DATA:MANAGE |
-| close durable-cq | DATA:MANAGE |
-| compact disk-store | DATA:MANAGE |
-| compact offline-disk-store | DATA:MANAGE |
+| clear defined indexes | CLUSTER:MANAGE:QUERY |
+| close durable-client | CLUSTER:MANAGE:QUERY |
+| close durable-cq | CLUSTER:MANAGE:QUERY |
+| compact disk-store | CLUSTER:MANAGE:DISK |
| configure pdx | CLUSTER:MANAGE |
-| create async-event-queue | DATA:MANAGE |
-| create defined indexes | DATA:MANAGE |
-| create disk-store | DATA:MANAGE |
-| create gateway-receiver | DATA:MANAGE |
-| create gateway-sender | DATA:MANAGE |
-| create index | DATA:MANAGE:RegionName |
-| create lucene index | DATA:MANAGE:RegionName |
-| create region | DATA:MANAGE |
-| define index | DATA:MANAGE:RegionName |
-| deploy | DATA:MANAGE, DATA:WRITE, CLUSTER:MANAGE, and CLUSTER:WRITE |
+| create async-event-queue | CLUSTER:MANAGE:JAR, plus CLUSTER:WRITE:DISK if the associated region is persistent |
+| create defined indexes | CLUSTER:MANAGE:QUERY |
+| create disk-store | CLUSTER:MANAGE:DISK |
+| create gateway-receiver | CLUSTER:MANAGE:GATEWAY |
+| create gateway-sender | CLUSTER:MANAGE:GATEWAY |
+| create index | CLUSTER:MANAGE:QUERY |
+| create lucene index | CLUSTER:MANAGE:LUCENE |
+| create region | DATA:MANAGE, plus CLUSTER:WRITE:DISK if the associated region is persistent |
+| define index | CLUSTER:MANAGE:QUERY |
+| deploy | CLUSTER:MANAGE:JAR |
| describe client | CLUSTER:READ |
| describe config | CLUSTER:READ |
| describe disk-store | CLUSTER:READ |
-| describe lucene index | CLUSTER:READ |
+| describe lucene index | CLUSTER:READ:LUCENE |
| describe member | CLUSTER:READ |
| describe offline-disk-store | CLUSTER:READ |
| describe region | CLUSTER:READ |
-| destroy disk-store | DATA:MANAGE |
-| destroy function | DATA:MANAGE |
-| destroy index | DATA:MANAGE or DATA:MANAGE:RegionName |
-| destroy lucene index | DATA:MANAGE:RegionName |
+| destroy disk-store | CLUSTER:MANAGE:DISK |
+| destroy function | CLUSTER:MANAGE:JAR |
+| destroy index | CLUSTER:MANAGE:QUERY |
+| destroy lucene index | CLUSTER:MANAGE:LUCENE |
| destroy region | DATA:MANAGE |
-| disconnect | DATA:MANAGE |
-| echo | DATA:MANAGE |
-| encrypt password | DATA:MANAGE |
-| execute function | DATA:WRITE |
+| execute function | determined by the function API |
| export cluster-configuration | CLUSTER:READ |
| export config | CLUSTER:READ |
| export data | CLUSTER:READ |
@@ -165,46 +159,45 @@ This table classifies the permissions assigned for `gfsh` operations.
| list durable-cqs | CLUSTER:READ |
| list functions | CLUSTER:READ |
| list gateways | CLUSTER:READ |
-| list indexes | CLUSTER:READ |
-| list lucene indexes | CLUSTER:READ |
+| list indexes | CLUSTER:READ:QUERY |
+| list lucene indexes | CLUSTER:READ:LUCENE |
| list members | CLUSTER:READ |
| list regions | CLUSTER:READ |
-| load-balance gateway-sender | DATA:MANAGE |
+| load-balance gateway-sender | CLUSTER:MANAGE:GATEWAY |
| locate entry | DATA:READ:RegionName:Key |
| netstat | CLUSTER:READ |
-| pause gateway-sender | DATA:MANAGE |
-| pdx rename | DATA:MANAGE |
+| pause gateway-sender | CLUSTER:MANAGE:GATEWAY |
| put --key=key1 --region=region1 | DATA:WRITE:RegionName:Key |
-| query | DATA:READ |
+| query | DATA:READ
| rebalance | DATA:MANAGE |
| remove | DATA:WRITE:RegionName or DATA:WRITE:RegionName:Key |
-| resume gateway-sender | DATA:MANAGE |
-| revoke mising-disk-store | DATA:MANAGE |
-| search lucene | DATA:WRITE |
+| resume gateway-sender | CLUSTER:MANAGE:GATEWAY |
+| revoke mising-disk-store | CLUSTER:MANAGE:DISK |
+| search lucene | DATA:READ:RegionName |
| show dead-locks | CLUSTER:READ |
| show log | CLUSTER:READ |
| show metrics | CLUSTER:READ |
| show missing-disk-stores | CLUSTER:READ |
| show subscription-queue-size | CLUSTER:READ |
| shutdown | CLUSTER:MANAGE |
-| start gateway-receiver | DATA:MANAGE |
-| start gateway-sender | DATA:MANAGE |
+| start gateway-receiver | CLUSTER:MANAGE:GATEWAY |
+| start gateway-sender | CLUSTER:MANAGE:GATEWAY |
| start server | CLUSTER:MANAGE |
| status cluster-config-service | CLUSTER:READ |
| status gateway-receiver | CLUSTER:READ |
| status gateway-sender | CLUSTER:READ |
| status locator | CLUSTER:READ |
| status server | CLUSTER:READ |
-| stop gateway-receiver | DATA:MANAGE |
-| stop gateway-receiver | DATA:MANAGE |
+| stop gateway-receiver | CLUSTER:MANAGE:GATEWAY |
+| stop gateway-receiver | CLUSTER:MANAGE:GATEWAY |
| stop locator | CLUSTER:MANAGE |
| stop server | CLUSTER:MANAGE |
-| undeploy | DATA:MANAGE |
+| undeploy | CLUSTER:MANAGE:JAR |
The `gfsh connect` does not have a permission,
as it is the operation that invokes authentication.
These `gfsh` commands do not have permission defined,
-as they do not interact with the distributed system.
+as they do not interact with the distributed system:
- `gfsh describe connection`, which describes the `gfsh` end of the connection
- `gfsh debug`, which toggles the mode within `gfsh`
@@ -234,32 +227,32 @@ This table classifies the permissions assigned for JMX operations.
| DistributedSystemMXBean.changerAlertLevel | CLUSTER:WRITE |
| ManagerMXBean.setPulseURL | CLUSTER:WRITE |
| ManagerMXBean.setStatusMessage | CLUSTER:WRITE |
-| CacheServerMXBean.closeAllContinuousQuery | DATA:MANAGE |
-| CacheServerMXBean.closeContinuousQuery | DATA:MANAGE |
+| CacheServerMXBean.closeAllContinuousQuery | CLUSTER:MANAGE:QUERY |
+| CacheServerMXBean.closeContinuousQuery | CLUSTER:MANAGE:QUERY |
| CacheServerMXBean.executeContinuousQuery | DATA:READ |
-| DiskStoreMXBean.flush | DATA:MANAGE |
-| DiskStoreMXBean.forceCompaction | DATA:MANAGE |
-| DiskStoreMXBean.forceRoll | DATA:MANAGE |
-| DiskStoreMXBean.setDiskUsageCriticalPercentage | DATA:MANAGE |
-| DiskStoreMXBean.setDiskUsageWarningPercentage | DATA:MANAGE |
-| DistributedSystemMXBean.revokeMissingDiskStores| DATA:MANAGE |
-| DistributedSystemMXBean.setQueryCollectionsDepth| DATA:MANAGE |
-| DistributedSystemMXBean.setQueryResultSetLimit | DATA:MANAGE |
-| DistributedSystemMXBean.backupAllMembers | DATA:READ |
+| DiskStoreMXBean.flush | CLUSTER:MANAGE:DISK |
+| DiskStoreMXBean.forceCompaction | CLUSTER:MANAGE:DISK |
+| DiskStoreMXBean.forceRoll | CLUSTER:MANAGE:DISK |
+| DiskStoreMXBean.setDiskUsageCriticalPercentage | CLUSTER:MANAGE:DISK |
+| DiskStoreMXBean.setDiskUsageWarningPercentage | CLUSTER:MANAGE:DISK |
+| DistributedSystemMXBean.revokeMissingDiskStores| CLUSTER:MANAGE:DISK |
+| DistributedSystemMXBean.setQueryCollectionsDepth| CLUSTER:MANAGE:QUERY |
+| DistributedSystemMXBean.setQueryResultSetLimit | CLUSTER:MANAGE:QUERY |
+| DistributedSystemMXBean.backupAllMembers | DATA:READ and CLUSTER:WRITE:DISK |
| DistributedSystemMXBean.queryData | DATA:READ |
| DistributedSystemMXBean.queryDataForCompressedResult | DATA:READ |
-| GatewayReceiverMXBean.pause | DATA:MANAGE |
-| GatewayReceiverMXBean.rebalance | DATA:MANAGE |
-| GatewayReceiverMXBean.resume | DATA:MANAGE |
-| GatewayReceiverMXBean.start | DATA:MANAGE |
-| GatewayReceiverMXBean.stop | DATA:MANAGE |
-| GatewaySenderMXBean.pause | DATA:MANAGE |
-| GatewaySenderMXBean.rebalance | DATA:MANAGE |
-| GatewaySenderMXBean.resume | DATA:MANAGE |
-| GatewaySenderMXBean.start | DATA:MANAGE |
-| GatewaySenderMXBean.stop | DATA:MANAGE |
+| GatewayReceiverMXBean.pause | CLUSTER:MANAGE:GATEWAY |
+| GatewayReceiverMXBean.rebalance | CLUSTER:MANAGE:GATEWAY |
+| GatewayReceiverMXBean.resume | CLUSTER:MANAGE:GATEWAY |
+| GatewayReceiverMXBean.start | CLUSTER:MANAGE:GATEWAY |
+| GatewayReceiverMXBean.stop | CLUSTER:MANAGE:GATEWAY |
+| GatewaySenderMXBean.pause | CLUSTER:MANAGE:GATEWAY |
+| GatewaySenderMXBean.rebalance | CLUSTER:MANAGE:GATEWAY |
+| GatewaySenderMXBean.resume | CLUSTER:MANAGE:GATEWAY |
+| GatewaySenderMXBean.start | CLUSTER:MANAGE:GATEWAY |
+| GatewaySenderMXBean.stop | CLUSTER:MANAGE:GATEWAY |
| LockServiceMXBean.becomeLockGrantor | CLUSTER:MANAGE |
-| MemberMXBean.compactAllDiskStores | DATA:MANAGE |
+| MemberMXBean.compactAllDiskStores | CLUSTER:MANAGE:DISK |
## Implement Authorization
[18/50] [abbrv] geode git commit: GEODE-3290: Removed
effectively-dead classes FilterChain, LocalFilterChain, and RemoteFilterChain.
Posted by kl...@apache.org.
GEODE-3290: Removed effectively-dead classes FilterChain, LocalFilterChain, and RemoteFilterChain.
* this closes #653
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/62678090
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/62678090
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/62678090
Branch: refs/heads/feature/GEODE-3299
Commit: 6267809086a0ccd8d04263ea95c52bafed156965
Parents: 7ae9996
Author: Patrick Rhomberg <pr...@pivotal.io>
Authored: Mon Jul 24 14:00:43 2017 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Wed Jul 26 15:19:03 2017 -0700
----------------------------------------------------------------------
.../management/internal/FederatingManager.java | 76 ++++----------
.../geode/management/internal/FilterChain.java | 54 ----------
.../management/internal/LocalFilterChain.java | 61 -----------
.../management/internal/MBeanProxyFactory.java | 92 +++--------------
.../management/internal/RemoteFilterChain.java | 101 -------------------
.../internal/SystemManagementService.java | 61 +++--------
6 files changed, 46 insertions(+), 399 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/62678090/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
index b6ffa41..4300482 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/FederatingManager.java
@@ -75,11 +75,6 @@ public class FederatingManager extends Manager {
*/
protected MBeanProxyFactory proxyFactory;
- /**
- * Remote Filter chain for local MBean filters
- */
- private RemoteFilterChain remoteFilterChain;
-
private MBeanJMXAdapter jmxAdapter;
private MemberMessenger messenger;
@@ -87,7 +82,7 @@ public class FederatingManager extends Manager {
private SystemManagementService service;
/**
- * @param jmxAdapter JMX Adpater
+ * @param jmxAdapter JMX Adapter
* @param repo Management resource repo
* @param system Internal Distributed System
* @param service SystemManagement Service
@@ -95,9 +90,8 @@ public class FederatingManager extends Manager {
public FederatingManager(MBeanJMXAdapter jmxAdapter, ManagementResourceRepo repo,
InternalDistributedSystem system, SystemManagementService service, InternalCache cache) {
super(repo, system, cache);
- this.remoteFilterChain = new RemoteFilterChain();
this.service = service;
- this.proxyFactory = new MBeanProxyFactory(remoteFilterChain, jmxAdapter, service);
+ this.proxyFactory = new MBeanProxyFactory(jmxAdapter, service);
this.jmxAdapter = jmxAdapter;
this.messenger = new MemberMessenger(jmxAdapter, repo, system);
}
@@ -121,9 +115,6 @@ public class FederatingManager extends Manager {
messenger.broadcastManagerInfo();
- } catch (InterruptedException e) {
- running = false;
- throw new ManagementException(e);
} catch (Exception e) {
running = false;
throw new ManagementException(e);
@@ -131,7 +122,7 @@ public class FederatingManager extends Manager {
}
public synchronized void stopManager() {
- // remove hidden mgmt regions and federatedMBeans
+ // remove hidden management regions and federatedMBeans
if (!running) {
return;
}
@@ -149,10 +140,9 @@ public class FederatingManager extends Manager {
private void stopManagingActivity() {
try {
this.pooledMembershipExecutor.shutdownNow();
- Iterator<DistributedMember> it = repo.getMonitoringRegionMap().keySet().iterator();
- while (it.hasNext()) {
- removeMemberArtifacts(it.next(), false);
+ for (DistributedMember distributedMember : repo.getMonitoringRegionMap().keySet()) {
+ removeMemberArtifacts(distributedMember, false);
}
} catch (Exception e) {
@@ -334,7 +324,7 @@ public class FederatingManager extends Manager {
/**
* Actual task of doing the GII
*
- * It will perform the GII request which might originate from TranstionListener or Membership
+ * It will perform the GII request which might originate from TransitionListener or Membership
* Listener.
*
* Managing Node side resources are created per member which is visible to this node
@@ -358,9 +348,8 @@ public class FederatingManager extends Manager {
}
public DistributedMember call() {
- Region<String, Object> proxyMonitoringRegion = null;
- Region<NotificationKey, Notification> proxyNotificationgRegion = null;
- boolean proxyCreatedForMember = false;
+ Region<String, Object> proxyMonitoringRegion;
+ Region<NotificationKey, Notification> proxyNotificationRegion;
try {
// GII wont start at all if its interrupted
@@ -380,8 +369,7 @@ public class FederatingManager extends Manager {
internalArgs.setCachePerfStatsHolder(monitoringRegionStats);
// Monitoring region for member is created
- AttributesFactory<String, Object> monitorAttrFactory =
- new AttributesFactory<String, Object>();
+ AttributesFactory<String, Object> monitorAttrFactory = new AttributesFactory<>();
monitorAttrFactory.setScope(Scope.DISTRIBUTED_NO_ACK);
monitorAttrFactory.setDataPolicy(DataPolicy.REPLICATE);
monitorAttrFactory.setConcurrencyChecksEnabled(false);
@@ -392,7 +380,7 @@ public class FederatingManager extends Manager {
// Notification region for member is created
AttributesFactory<NotificationKey, Notification> notifAttrFactory =
- new AttributesFactory<NotificationKey, Notification>();
+ new AttributesFactory<>();
notifAttrFactory.setScope(Scope.DISTRIBUTED_NO_ACK);
notifAttrFactory.setDataPolicy(DataPolicy.REPLICATE);
notifAttrFactory.setConcurrencyChecksEnabled(false);
@@ -421,23 +409,8 @@ public class FederatingManager extends Manager {
monitoringRegionAttrs, internalArgs);
proxyMonitoringRegionCreated = true;
- } catch (TimeoutException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
- }
- throw new ManagementException(e);
- } catch (RegionExistsException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
- }
- throw new ManagementException(e);
- } catch (IOException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
- }
-
- throw new ManagementException(e);
- } catch (ClassNotFoundException e) {
+ } catch (TimeoutException | RegionExistsException | IOException
+ | ClassNotFoundException e) {
if (logger.isDebugEnabled()) {
logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
}
@@ -448,26 +421,12 @@ public class FederatingManager extends Manager {
if (!running) {
return null;
}
- proxyNotificationgRegion =
+ proxyNotificationRegion =
cache.createVMRegion(ManagementConstants.NOTIFICATION_REGION + "_" + appender,
notifRegionAttrs, internalArgs);
proxyNotifRegionCreated = true;
- } catch (TimeoutException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
- }
- throw new ManagementException(e);
- } catch (RegionExistsException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
- }
- throw new ManagementException(e);
- } catch (IOException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
- }
- throw new ManagementException(e);
- } catch (ClassNotFoundException e) {
+ } catch (TimeoutException | RegionExistsException | IOException
+ | ClassNotFoundException e) {
if (logger.isDebugEnabled()) {
logger.debug("Error During Internal Region creation {}", e.getMessage(), e);
}
@@ -484,19 +443,18 @@ public class FederatingManager extends Manager {
logger.debug("Management Region created with Name : {}",
proxyMonitoringRegion.getName());
logger.debug("Notification Region created with Name : {}",
- proxyNotificationgRegion.getName());
+ proxyNotificationRegion.getName());
}
// Only the exception case would have destroyed the proxy
// regions. We can safely proceed here.
repo.putEntryInMonitoringRegionMap(member, proxyMonitoringRegion);
- repo.putEntryInNotifRegionMap(member, proxyNotificationgRegion);
+ repo.putEntryInNotifRegionMap(member, proxyNotificationRegion);
try {
if (!running) {
return null;
}
proxyFactory.createAllProxies(member, proxyMonitoringRegion);
- proxyCreatedForMember = true;
mgmtCacheListener.markReady();
notifListener.markReady();
http://git-wip-us.apache.org/repos/asf/geode/blob/62678090/geode-core/src/main/java/org/apache/geode/management/internal/FilterChain.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/FilterChain.java b/geode-core/src/main/java/org/apache/geode/management/internal/FilterChain.java
deleted file mode 100644
index 0a7919f..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/FilterChain.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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;
-
-
-/**
- * Abstract class containing methods which will be accesed by both Local and Remote filter chains
- *
- *
- */
-public abstract class FilterChain {
-
- protected boolean isFiltered(boolean included, boolean excluded) {
-
- if (excluded && included) {
- return true;
- }
- if (!excluded && included) {
- return false;
- }
- if (excluded && !included) {
- return true;
- }
- if (!excluded && !included) {
- return false;
- }
- return false;
- }
-
- /**
- * This method splits the specified filters to array of string objects
- */
- protected FilterParam createFilterParam(String inclusionList, String exclusionList) {
-
- String[] inclusionListArray = inclusionList.split(";");
- String[] exclusionListArray = exclusionList.split(";");
- return new FilterParam(inclusionListArray, exclusionListArray);
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/62678090/geode-core/src/main/java/org/apache/geode/management/internal/LocalFilterChain.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/LocalFilterChain.java b/geode-core/src/main/java/org/apache/geode/management/internal/LocalFilterChain.java
deleted file mode 100644
index b215145..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/LocalFilterChain.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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;
-
-import javax.management.ObjectName;
-
-import org.apache.geode.management.ManagementException;
-
-
-
-/**
- * This chain currently has only one filter. Have made it a chain to support future filters which
- * should be evaluated locally before registering an MBean
- *
- */
-
-public class LocalFilterChain extends FilterChain {
-
- private StringBasedFilter localMBeanFilter;
-
- public LocalFilterChain() {
- /*
- * String excludeFilter = managementConfig.getLocalMBeanExcludeFilter(); String includeFilter =
- * managementConfig.getLocalMBeanIncludeFilter(); FilterParam param =
- * createFilterParam(includeFilter, excludeFilter); localMBeanFilter = new
- * StringBasedFilter(param);
- */
-
- }
-
-
-
- public boolean isFiltered(ObjectName objectName) {
-
- return false;
-
- // For future use of filters
-
- /*
- * boolean isExcluded = localMBeanFilter.isExcluded(objectName.getCanonicalName()); boolean
- * isIncluded = localMBeanFilter.isIncluded(objectName.getCanonicalName());
- *
- * return isFiltered(isIncluded, isExcluded);
- */
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/62678090/geode-core/src/main/java/org/apache/geode/management/internal/MBeanProxyFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/MBeanProxyFactory.java b/geode-core/src/main/java/org/apache/geode/management/internal/MBeanProxyFactory.java
index 62aa43f..0cce0be 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/MBeanProxyFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/MBeanProxyFactory.java
@@ -49,10 +49,6 @@ public class MBeanProxyFactory {
*/
private MBeanProxyInfoRepository proxyRepo;
- /**
- * For Future release
- */
- private RemoteFilterChain remoteFilterChain;
/**
* Interface between GemFire federation layer and Java JMX layer
@@ -62,15 +58,11 @@ public class MBeanProxyFactory {
private SystemManagementService service;
/**
- *
- * @param remoteFilterChain remote chain to filter out remote members
* @param jmxAdapter adapter to interface between JMX and GemFire
* @param service management service
*/
- public MBeanProxyFactory(RemoteFilterChain remoteFilterChain, MBeanJMXAdapter jmxAdapter,
- SystemManagementService service) {
+ public MBeanProxyFactory(MBeanJMXAdapter jmxAdapter, SystemManagementService service) {
- this.remoteFilterChain = remoteFilterChain;
this.jmxAdapter = jmxAdapter;
this.proxyRepo = new MBeanProxyInfoRepository();
this.service = service;
@@ -83,25 +75,12 @@ public class MBeanProxyFactory {
* @param member {@link org.apache.geode.distributed.DistributedMember}
* @param objectName {@link javax.management.ObjectName} of the Bean
* @param monitoringRegion monitoring region containing the proxies
- * @throws ManagementException
*/
public void createProxy(DistributedMember member, ObjectName objectName,
Region<String, Object> monitoringRegion, Object newVal) {
try {
- /*
- * Check the complete filter chain to evaluate the applicability of the MBean
- */
-
- if (remoteFilterChain.isFiltered(objectName, member, "")) {
- if (logger.isTraceEnabled()) {
- logger.trace("Returning from filter");
- }
-
- return;
- }
-
Class interfaceClass = ClassLoadUtil
.classFromName(((FederationComponent) monitoringRegion.get(objectName.toString()))
.getMBeanInterfaceClass());
@@ -124,12 +103,8 @@ public class MBeanProxyFactory {
logger.debug("Proxy Created for : {}", objectName);
}
- } catch (ClassNotFoundException e) {
- throw new ManagementException(e);
- } catch (IntrospectionException e) {
+ } catch (ClassNotFoundException | IntrospectionException e) {
throw new ManagementException(e);
- } catch (ManagementException e) {
- throw e;
}
}
@@ -148,57 +123,22 @@ public class MBeanProxyFactory {
if (logger.isDebugEnabled()) {
logger.debug("Creating proxy for: {}", member.getId());
}
- /*
- * Check for member and server group filters if the member is filtered no need to proceed
- * further
- */
-
- if (remoteFilterChain.isServerGroupFiltered("")) {
- if (logger.isTraceEnabled()) {
- logger.trace("Returning from server group filter");
- }
- return;
-
- }
- if (remoteFilterChain.isManagedNodeFiltered(member)) {
- if (logger.isTraceEnabled()) {
- logger.trace("returning from managed node filter");
- }
- return;
- }
Set<String> mbeanNames = monitoringRegion.keySet();
- Iterator<String> it = mbeanNames.iterator();
-
- while (it.hasNext()) {
+ for (String mbeanName : mbeanNames) {
ObjectName objectName = null;
- /*
- * This is for MBean filter check. If filtered MBean wont be registered
- */
-
- if (remoteFilterChain.isRemoteMBeanFiltered(objectName)) {
- if (logger.isTraceEnabled()) {
- logger.trace("continue from remote MBEan node filter");
- }
-
- continue;
- }
try {
- objectName = ObjectName.getInstance(it.next());
+ objectName = ObjectName.getInstance(mbeanName);
if (logger.isDebugEnabled()) {
logger.debug("Creating proxy for ObjectName: " + objectName.toString());
}
createProxy(member, objectName, monitoringRegion,
monitoringRegion.get(objectName.toString()));
- } catch (ManagementException e) {
- logger.warn("Create Proxy failed for {} with exception {}", objectName, e.getMessage(), e);
- continue;
} catch (Exception e) {
logger.warn("Create Proxy failed for {} with exception {}", objectName, e.getMessage(), e);
- continue;
}
}
@@ -221,7 +161,7 @@ public class MBeanProxyFactory {
while (entriesIt.hasNext()) {
String key = null;
- Object val = null;
+ Object val;
try {
Entry<String, Object> entry = entriesIt.next();
key = entry.getKey();// MBean Name in String format.
@@ -232,7 +172,6 @@ public class MBeanProxyFactory {
if (!(e.getCause() instanceof InstanceNotFoundException)) {
logger.warn("Remove Proxy failed for {} due to {}", key, e.getMessage(), e);
}
- continue;
}
}
}
@@ -250,18 +189,17 @@ public class MBeanProxyFactory {
logger.debug("Removing proxy for ObjectName: {}", objectName);
}
- if (!remoteFilterChain.isRemoteMBeanFiltered(objectName)) {
- ProxyInfo proxyInfo = proxyRepo.findProxyInfo(objectName);
- proxyRepo.removeProxy(member, objectName);
- if (proxyInfo != null) {
- service.afterRemoveProxy(objectName, proxyInfo.getProxyInterface(),
- proxyInfo.getProxyInstance(), (FederationComponent) oldVal);
- }
- jmxAdapter.unregisterMBean(objectName);
- if (logger.isDebugEnabled()) {
- logger.debug("Removed proxy for ObjectName: {}", objectName);
- }
+ ProxyInfo proxyInfo = proxyRepo.findProxyInfo(objectName);
+ proxyRepo.removeProxy(member, objectName);
+ if (proxyInfo != null) {
+ service.afterRemoveProxy(objectName, proxyInfo.getProxyInterface(),
+ proxyInfo.getProxyInstance(), (FederationComponent) oldVal);
+ }
+ jmxAdapter.unregisterMBean(objectName);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Removed proxy for ObjectName: {}", objectName);
}
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/geode/blob/62678090/geode-core/src/main/java/org/apache/geode/management/internal/RemoteFilterChain.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/RemoteFilterChain.java b/geode-core/src/main/java/org/apache/geode/management/internal/RemoteFilterChain.java
deleted file mode 100644
index c187dc8..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/RemoteFilterChain.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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;
-
-import javax.management.ObjectName;
-
-import org.apache.geode.distributed.DistributedMember;
-
-public class RemoteFilterChain extends FilterChain {
-
- private StringBasedFilter serverGroupFilter;
- private StringBasedFilter remoteMBeanFilter;
- private StringBasedFilter managedMemberFilter;
-
- public RemoteFilterChain() {
-
-
- /*
- * String remoteMBeanExcludeFilter = managementConfig.getRemoteMBeanExcludeFilter(); String
- * remoteMBeanIncludeFilter = managementConfig.getRemoteMBeanIncludeFilter();
- *
- * FilterParam remoteMBeanParam = createFilterParam(remoteMBeanIncludeFilter,
- * remoteMBeanExcludeFilter); remoteMBeanFilter = new StringBasedFilter(remoteMBeanParam);
- *
- * String memberNodeExcludeFilter = managementConfig.getMemberNodeExcludeFilter(); String
- * memberNodeIncludeFilter = managementConfig.getMemberNodeIncludeFilter();
- *
- * FilterParam memberNodeParam = createFilterParam(memberNodeIncludeFilter,
- * memberNodeExcludeFilter); managedMemberFilter = new StringBasedFilter(memberNodeParam);
- *
- * String serverGroupExcludeFilter = managementConfig.getServerGroupExcludeFilter(); String
- * serverGroupIncludeFilter = managementConfig.getServerGroupIncludeFilter();
- *
- * FilterParam serverGroupParam = createFilterParam(serverGroupIncludeFilter,
- * serverGroupExcludeFilter); serverGroupFilter = new StringBasedFilter(serverGroupParam);
- */
-
- }
-
- public boolean isFiltered(ObjectName name, DistributedMember member, String serverGroup) {
- return false;
- // <For future use>
- /*
- * isRemoteMBeanFiltered(name); isManagedNodeFiltered(member);
- * isServerGroupFiltered(serverGroup);
- */
-
-
- }
-
- public boolean isRemoteMBeanFiltered(ObjectName objectName) {
-
- return false;
- // <For future use>
- /*
- * boolean isExcluded = remoteMBeanFilter.isExcluded(objectName.getCanonicalName()); boolean
- * isIncluded = remoteMBeanFilter.isIncluded(objectName.getCanonicalName());
- *
- * return isFiltered(isIncluded, isExcluded);
- */
-
- }
-
- public boolean isManagedNodeFiltered(DistributedMember member) {
- return false;
- // <For future use>
- /*
- * boolean isExcluded = managedMemberFilter.isExcluded(member.getId()); boolean isIncluded =
- * managedMemberFilter.isIncluded(member.getId());
- *
- * return isFiltered(isIncluded, isExcluded);
- */
-
- }
-
-
- public boolean isServerGroupFiltered(String serverGroup) {
- return false;
- // <For future use>
- /*
- * boolean isExcluded = serverGroupFilter.isExcluded(serverGroup); boolean isIncluded =
- * serverGroupFilter.isIncluded(serverGroup);
- *
- * return isFiltered(isIncluded, isExcluded);
- */
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/62678090/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java b/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
index 11402f1..c770f89 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
@@ -79,11 +79,6 @@ public class SystemManagementService extends BaseManagementService {
private NotificationHub notificationHub;
/**
- * Local Filter chain for local MBean filters
- */
- private LocalFilterChain localFilterChain;
-
- /**
* whether the service is closed or not if cache is closed automatically this service will be
* closed
*/
@@ -137,7 +132,6 @@ public class SystemManagementService extends BaseManagementService {
LocalizedStrings.InternalDistributedSystem_THIS_CONNECTION_TO_A_DISTRIBUTED_SYSTEM_HAS_BEEN_DISCONNECTED
.toLocalizedString());
}
- this.localFilterChain = new LocalFilterChain();
this.jmxAdapter = new MBeanJMXAdapter();
this.repo = new ManagementResourceRepo();
@@ -150,7 +144,7 @@ public class SystemManagementService extends BaseManagementService {
}
ManagementFunction function = new ManagementFunction(notificationHub);
FunctionService.registerFunction(function);
- this.proxyListeners = new CopyOnWriteArrayList<ProxyListener>();
+ this.proxyListeners = new CopyOnWriteArrayList<>();
}
/**
@@ -201,16 +195,7 @@ public class SystemManagementService extends BaseManagementService {
}
public boolean isStartedAndOpen() {
- if (!isStarted) {
- return false;
- }
- if (closed) {
- return false;
- }
- if (!system.isConnected()) {
- return false;
- }
- return true;
+ return isStarted && !closed && system.isConnected();
}
private void verifyManagementService() {
@@ -300,8 +285,7 @@ public class SystemManagementService extends BaseManagementService {
@Override
public CacheServerMXBean getLocalCacheServerMXBean(int serverPort) {
- CacheServerMXBean bean = jmxAdapter.getClientServiceMXBean(serverPort);
- return bean;
+ return jmxAdapter.getClientServiceMXBean(serverPort);
}
@Override
@@ -323,20 +307,17 @@ public class SystemManagementService extends BaseManagementService {
@Override
public DiskStoreMXBean getLocalDiskStoreMBean(String diskStoreName) {
- DiskStoreMXBean bean = jmxAdapter.getLocalDiskStoreMXBean(diskStoreName);
- return bean;
+ return jmxAdapter.getLocalDiskStoreMXBean(diskStoreName);
}
@Override
- public LockServiceMXBean getLocalLockServiceMBean(String lockSreviceName) {
- LockServiceMXBean bean = jmxAdapter.getLocalLockServiceMXBean(lockSreviceName);
- return bean;
+ public LockServiceMXBean getLocalLockServiceMBean(String lockServiceName) {
+ return jmxAdapter.getLocalLockServiceMXBean(lockServiceName);
}
@Override
public RegionMXBean getLocalRegionMBean(String regionPath) {
- RegionMXBean bean = jmxAdapter.getLocalRegionMXBean(regionPath);
- return bean;
+ return jmxAdapter.getLocalRegionMXBean(regionPath);
}
public <T> T getMBeanProxy(ObjectName objectName, Class<T> interfaceClass) { // TODO: this is too
@@ -380,17 +361,11 @@ public class SystemManagementService extends BaseManagementService {
@Override
public ObjectName registerMBean(Object object, ObjectName objectName) {
verifyManagementService();
- if (localFilterChain.isFiltered(objectName)) {
- return null;
- }
return jmxAdapter.registerMBean(object, objectName, false);
}
public ObjectName registerInternalMBean(Object object, ObjectName objectName) {
verifyManagementService();
- if (localFilterChain.isFiltered(objectName)) {
- return null;
- }
return jmxAdapter.registerMBean(object, objectName, true);
}
@@ -420,10 +395,7 @@ public class SystemManagementService extends BaseManagementService {
}
public boolean isManagerCreated() {
- if (!isStartedAndOpen()) {
- return false;
- }
- return federatingManager != null;
+ return isStartedAndOpen() && federatingManager != null;
}
@Override
@@ -457,10 +429,7 @@ public class SystemManagementService extends BaseManagementService {
}
getInternalCache().getJmxManagerAdvisor().broadcastChange();
started = true;
- } catch (RuntimeException e) {
- logger.error("Jmx manager could not be started because {}", e.getMessage(), e);
- throw e;
- } catch (Error e) {
+ } catch (RuntimeException | Error e) {
logger.error("Jmx manager could not be started because {}", e.getMessage(), e);
throw e;
} finally {
@@ -581,8 +550,8 @@ public class SystemManagementService extends BaseManagementService {
}
@Override
- public ObjectName getGatewaySenderMBeanName(DistributedMember member, String gatwaySenderId) {
- return MBeanJMXAdapter.getGatewaySenderMBeanName(member, gatwaySenderId);
+ public ObjectName getGatewaySenderMBeanName(DistributedMember member, String gatewaySenderId) {
+ return MBeanJMXAdapter.getGatewaySenderMBeanName(member, gatewaySenderId);
}
@Override
@@ -716,8 +685,7 @@ public class SystemManagementService extends BaseManagementService {
public static class UniversalListenerContainer {
- private List<MembershipListener> membershipListeners =
- new CopyOnWriteArrayList<MembershipListener>();
+ private List<MembershipListener> membershipListeners = new CopyOnWriteArrayList<>();
public void memberJoined(InternalDistributedMember id) {
MembershipEvent event = createEvent(id);
@@ -757,7 +725,8 @@ public class SystemManagementService extends BaseManagementService {
private MembershipEvent createEvent(InternalDistributedMember id) {
final String memberId = id.getId();
final DistributedMember member = id;
- MembershipEvent event = new MembershipEvent() {
+
+ return new MembershipEvent() {
@Override
public String getMemberId() {
@@ -769,8 +738,6 @@ public class SystemManagementService extends BaseManagementService {
return member;
}
};
-
- return event;
}
/**
[40/50] [abbrv] geode git commit: GEODE-2971: Introduce ExitCode to
resolve inconsistency of shell exit values.
Posted by kl...@apache.org.
GEODE-2971: Introduce ExitCode to resolve inconsistency of shell exit values.
* this closes #652
* Corrected inconsistency of error handling and subsequent exit status in member status commands
* 'gfsh help' now returns 0 exit code as base behavior (previously returned 1).
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/9db5c8e5
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/9db5c8e5
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/9db5c8e5
Branch: refs/heads/feature/GEODE-3299
Commit: 9db5c8e58ac6c53ce21a6c0dca3f8c64555f6cfc
Parents: 3acb47e
Author: Patrick Rhomberg <pr...@pivotal.io>
Authored: Thu Jul 20 12:36:36 2017 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Mon Jul 31 11:23:04 2017 -0700
----------------------------------------------------------------------
.../modules/session/installer/Installer.java | 31 +-
.../shell/GfshExitCodeStatusCommandsTest.java | 391 +++++++++++++++++++
.../geode/test/dunit/rules/gfsh/GfshRule.java | 35 +-
.../geode/test/dunit/rules/gfsh/GfshScript.java | 15 +
.../java/org/apache/geode/SystemFailure.java | 225 ++---------
.../geode/admin/jmx/internal/AgentImpl.java | 6 +-
.../geode/admin/jmx/internal/AgentLauncher.java | 26 +-
.../admin/jmx/internal/GenerateMBeanHTML.java | 23 +-
.../internal/deadlock/DeadlockDetector.java | 4 +-
.../apache/geode/internal/AvailablePort.java | 24 +-
.../geode/internal/DistributionLocator.java | 27 +-
.../org/apache/geode/internal/ExitCode.java | 49 +++
.../apache/geode/internal/MigrationClient.java | 7 +-
.../apache/geode/internal/MigrationServer.java | 7 +-
.../org/apache/geode/internal/SystemAdmin.java | 12 +-
.../internal/cache/CacheServerLauncher.java | 28 +-
.../cache/persistence/DiskInitFileParser.java | 3 +-
.../internal/cache/snapshot/GFSnapshot.java | 3 +-
.../geode/internal/logging/LogFileParser.java | 16 +-
.../geode/internal/logging/MergeLogFiles.java | 13 +-
.../geode/internal/logging/SortLogFile.java | 23 +-
.../sequencelog/io/GemfireLogConverter.java | 4 +-
.../internal/statistics/ArchiveSplitter.java | 24 +-
.../internal/statistics/StatArchiveReader.java | 203 ++--------
.../geode/management/internal/cli/Launcher.java | 4 +-
.../lifecycle/StatusLocatorCommand.java | 18 +-
.../commands/lifecycle/StatusServerCommand.java | 11 +-
.../com/main/WANBootStrapping_Site1_Add.java | 15 +-
.../com/main/WANBootStrapping_Site1_Remove.java | 14 +-
.../com/main/WANBootStrapping_Site2_Add.java | 14 +-
.../com/main/WANBootStrapping_Site2_Remove.java | 12 +-
.../codeAnalysis/decode/CompiledClass.java | 25 +-
.../DistributedSystemConnectPerf.java | 10 +-
.../LocatorLauncherRemoteIntegrationTest.java | 31 +-
.../ServerLauncherRemoteIntegrationTest.java | 23 +-
.../jta/functional/TestXACacheLoader.java | 20 +-
.../geode/sequence/GemfireSequenceDisplay.java | 40 +-
.../geode/test/dunit/standalone/ChildVM.java | 8 +-
.../geode/codeAnalysis/excludedClasses.txt | 1 +
39 files changed, 900 insertions(+), 545 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/extensions/geode-modules-session/src/main/java/org/apache/geode/modules/session/installer/Installer.java
----------------------------------------------------------------------
diff --git a/extensions/geode-modules-session/src/main/java/org/apache/geode/modules/session/installer/Installer.java b/extensions/geode-modules-session/src/main/java/org/apache/geode/modules/session/installer/Installer.java
index b2d0bd0..151ebb3 100644
--- a/extensions/geode-modules-session/src/main/java/org/apache/geode/modules/session/installer/Installer.java
+++ b/extensions/geode-modules-session/src/main/java/org/apache/geode/modules/session/installer/Installer.java
@@ -15,15 +15,10 @@
package org.apache.geode.modules.session.installer;
-import org.apache.geode.modules.session.installer.args.Argument;
-import org.apache.geode.modules.session.installer.args.ArgumentProcessor;
-import org.apache.geode.modules.session.installer.args.ArgumentValues;
-import org.apache.geode.modules.session.installer.args.UnknownArgumentHandler;
-import org.apache.geode.modules.session.installer.args.UsageException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -32,10 +27,18 @@ import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.modules.session.installer.args.Argument;
+import org.apache.geode.modules.session.installer.args.ArgumentProcessor;
+import org.apache.geode.modules.session.installer.args.ArgumentValues;
+import org.apache.geode.modules.session.installer.args.UnknownArgumentHandler;
+import org.apache.geode.modules.session.installer.args.UsageException;
/**
*
@@ -116,7 +119,7 @@ public class Installer {
error.append(ux.getUsage());
}
log(error.toString());
- System.exit(2);
+ ExitCode.INSTALL_FAILURE.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/shell/GfshExitCodeStatusCommandsTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/shell/GfshExitCodeStatusCommandsTest.java b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/shell/GfshExitCodeStatusCommandsTest.java
new file mode 100755
index 0000000..bc309dd
--- /dev/null
+++ b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/shell/GfshExitCodeStatusCommandsTest.java
@@ -0,0 +1,391 @@
+/*
+ * 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.shell;
+
+import static java.util.concurrent.TimeUnit.MINUTES;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+
+import org.apache.geode.internal.AvailablePort;
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.internal.process.PidFile;
+import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
+import org.apache.geode.management.internal.cli.util.ThreePhraseGenerator;
+import org.apache.geode.test.dunit.rules.gfsh.GfshExecution;
+import org.apache.geode.test.dunit.rules.gfsh.GfshRule;
+import org.apache.geode.test.dunit.rules.gfsh.GfshScript;
+import org.apache.geode.test.junit.categories.AcceptanceTest;
+
+// Originally created in response to GEODE-2971
+
+@Category(AcceptanceTest.class)
+@RunWith(JUnitParamsRunner.class)
+public class GfshExitCodeStatusCommandsTest {
+ private static File toolsJar;
+ private static final ThreePhraseGenerator nameGenerator = new ThreePhraseGenerator();
+ private static final String memberControllerName = "member-controller";
+
+ @Rule
+ public GfshRule gfsh = new GfshRule();
+ private String locatorName;
+ private String serverName;
+
+ private int locatorPort;
+
+ // Some test configuration shorthands
+ private static final TestConfiguration LOCATOR_ONLINE_BUT_NOT_CONNECTED =
+ new TestConfiguration(true, false, false);
+ private static final TestConfiguration LOCATOR_ONLINE_AND_CONNECTED =
+ new TestConfiguration(true, false, true);
+ private static final TestConfiguration BOTH_ONLINE_BUT_NOT_CONNECTED =
+ new TestConfiguration(true, true, false);
+ private static final TestConfiguration BOTH_ONLINE_AND_CONNECTED =
+ new TestConfiguration(true, true, true);
+
+ @BeforeClass
+ public static void classSetup() {
+ File javaHome = new File(System.getProperty("java.home"));
+ String toolsPath =
+ javaHome.getName().equalsIgnoreCase("jre") ? "../lib/tools.jar" : "lib/tools.jar";
+ toolsJar = new File(javaHome, toolsPath);
+ }
+
+ @Before
+ public void setup() {
+ locatorName = "locator-" + nameGenerator.generate('-');
+ serverName = "server-" + nameGenerator.generate('-');
+ locatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+ }
+
+ @Test
+ @Parameters(
+ value = {"status locator --port=-10", "status locator --pid=-1", "status server --pid=-1"})
+ public void statusCommandWithInvalidOptionValueShouldFail(String cmd) {
+ GfshScript.of(cmd).withName("test-frame").awaitAtMost(1, MINUTES)
+ .expectExitCode(ExitCode.FATAL.getValue()).execute(gfsh);
+ }
+
+
+ @Test
+ @Parameters(value = {"status locator --host=somehostname", "status locator --port=10334",
+ "status locator --dir=.", "status server --dir=.", "status locator --name=some-locator-name",
+ "status server --name=some-server-name", "status locator --pid=100",
+ "status server --pid=100"})
+ public void statusCommandWithValidOptionValueShouldFailWithNoMembers(String cmd) {
+ GfshScript.of(cmd).withName("test-frame").awaitAtMost(1, MINUTES)
+ .expectExitCode(ExitCode.FATAL.getValue()).execute(gfsh);
+ }
+
+
+ @Test
+ public void onlineStatusCommandShouldFailWhenNotConnected_locator_name() {
+ TestConfiguration config = LOCATOR_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByName();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.FATAL);
+ }
+
+
+ @Test
+ public void onlineStatusCommandShouldFailWhenNotConnected_server_name() {
+ TestConfiguration config = BOTH_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusServerCommandByName();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.FATAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedWhenNotConnected_locator_port() {
+ // --host defaults to localhost, so `status locator --port=xxx` should still succeed.
+ TestConfiguration config = LOCATOR_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByPort();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedWhenNotConnected_locator_host_and_port() {
+ // Since this is still local to the testing VM's machine, `status locator --host=localhost
+ // --port=xxx` should succeed
+ TestConfiguration config = LOCATOR_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByHostAndPort();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+
+
+ @Test
+ public void onlineStatusCommandShouldSucceedWhenConnected_locator_name() {
+ TestConfiguration config = LOCATOR_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByName();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+
+ @Test
+ public void onlineStatusCommandShouldSucceedWhenConnected_server_name() {
+ TestConfiguration config = BOTH_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusServerCommandByName();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void onlineStatusCommandShouldSucceedWhenConnected_locator_port() {
+ TestConfiguration config = LOCATOR_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByPort();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port() {
+ TestConfiguration config = LOCATOR_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByHostAndPort();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+
+
+ @Test
+ public void offlineStatusCommandShouldSucceedWhenConnected_locator_dir() {
+ TestConfiguration config = LOCATOR_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByDir();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedWhenConnected_server_dir() {
+ TestConfiguration config = BOTH_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusServerCommandByDir();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedWhenConnected_locator_pid() throws IOException {
+ Assume.assumeTrue(toolsJar.exists());
+ TestConfiguration config = LOCATOR_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByPid();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedWhenConnected_server_pid() throws IOException {
+ Assume.assumeTrue(toolsJar.exists());
+ TestConfiguration config = BOTH_ONLINE_AND_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusServerCommandByPid();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+
+
+ @Test
+ public void offlineStatusCommandShouldSucceedEvenWhenNotConnected_locator_dir() {
+ TestConfiguration config = LOCATOR_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByDir();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedEvenWhenNotConnected_server_dir() {
+ TestConfiguration config = BOTH_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusServerCommandByDir();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedEvenWhenNotConnected_locator_pid()
+ throws IOException {
+ Assume.assumeTrue(toolsJar.exists());
+ TestConfiguration config = LOCATOR_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusLocatorCommandByPid();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+ @Test
+ public void offlineStatusCommandShouldSucceedEvenWhenNotConnected_server_pid()
+ throws IOException {
+ Assume.assumeTrue(toolsJar.exists());
+ TestConfiguration config = BOTH_ONLINE_BUT_NOT_CONNECTED;
+ config.startNecessaryMembers(startLocatorCommand(), startServerCommand(), gfsh);
+
+ String statusCommand = statusServerCommandByPid();
+ executeScriptWithExpectedExitCode(statusCommand, config, ExitCode.NORMAL);
+ }
+
+
+
+ private String startLocatorCommand() {
+ return new CommandStringBuilder("start locator").addOption("name", locatorName)
+ .addOption("port", String.valueOf(locatorPort)).toString();
+ }
+
+
+ private String startServerCommand() {
+ return new CommandStringBuilder("start server").addOption("name", serverName).toString();
+ }
+
+
+ private String connectCommand() {
+ return new CommandStringBuilder("connect")
+ .addOption("locator", String.format("localhost[%d]", locatorPort)).toString();
+ }
+
+
+ private String statusServerCommandByName() {
+ return new CommandStringBuilder("status server").addOption("name", serverName).toString();
+ }
+
+ private String statusServerCommandByDir() {
+ String serverDir = gfsh.getTemporaryFolder().getRoot().toPath().resolve(memberControllerName)
+ .resolve(serverName).toAbsolutePath().toString();
+ return new CommandStringBuilder("status server").addOption("dir", serverDir).toString();
+ }
+
+
+ private String statusServerCommandByPid() throws IOException {
+ int serverPid = snoopMemberFile(serverName, "server.pid");
+ return new CommandStringBuilder("status server").addOption("pid", String.valueOf(serverPid))
+ .toString();
+ }
+
+ private String statusLocatorCommandByName() {
+ return new CommandStringBuilder("status locator").addOption("name", locatorName).toString();
+ }
+
+ private String statusLocatorCommandByPort() {
+ return new CommandStringBuilder("status locator").addOption("port", String.valueOf(locatorPort))
+ .toString();
+ }
+
+ private String statusLocatorCommandByHostAndPort() {
+ return new CommandStringBuilder("status locator").addOption("host", "localhost")
+ .addOption("port", String.valueOf(locatorPort)).toString();
+ }
+
+ private String statusLocatorCommandByDir() {
+ String locatorDir = gfsh.getTemporaryFolder().getRoot().toPath().resolve(memberControllerName)
+ .resolve(locatorName).toAbsolutePath().toString();
+ return new CommandStringBuilder("status locator").addOption("dir", locatorDir).toString();
+ }
+
+
+ private String statusLocatorCommandByPid() throws IOException {
+ int locatorPid = snoopMemberFile(locatorName, "locator.pid");
+ return new CommandStringBuilder("status locator").addOption("pid", String.valueOf(locatorPid))
+ .toString();
+ }
+
+ private int snoopMemberFile(String memberName, String pidFileEndsWith) throws IOException {
+ File directory = gfsh.getTemporaryFolder().getRoot().toPath().resolve(memberControllerName)
+ .resolve(memberName).toFile();
+ File[] files = directory.listFiles();
+ if (files == null) {
+ throw new RuntimeException(String.format(
+ "Expected directory ('%s') for member '%s' either does not denote a directory, or an I/O error occurred.",
+ directory.toString(), memberName));
+ }
+ File pidFile = Arrays.stream(files).filter(file -> file.getName().endsWith(pidFileEndsWith))
+ .findFirst().orElseThrow(() -> new RuntimeException(String
+ .format("Expected member '%s' to have pid file but could not find it.", memberName)));
+ return new PidFile(pidFile).readPid();
+ }
+
+ private void executeScriptWithExpectedExitCode(String statusCommand, TestConfiguration config,
+ ExitCode expectedExit) {
+
+ String[] gfshScriptCommands = config.connectedToLocator
+ ? new String[] {connectCommand(), statusCommand} : new String[] {statusCommand};
+ GfshScript gfshScript = GfshScript.of(gfshScriptCommands).withName("test-frame")
+ .awaitAtMost(1, MINUTES).expectExitCode(expectedExit.getValue());
+ if (toolsJar.exists()) {
+ gfshScript.addToClasspath(toolsJar.getAbsolutePath());
+ }
+ gfshScript.execute(gfsh);
+ }
+
+
+ private static class TestConfiguration {
+ TestConfiguration(boolean locatorStarted, boolean serverStarted, boolean connectedToLocator) {
+ this.locatorStarted = locatorStarted;
+ this.serverStarted = serverStarted;
+ this.connectedToLocator = connectedToLocator;
+ }
+
+ private boolean locatorStarted;
+ private boolean serverStarted;
+ private boolean connectedToLocator;
+
+ void startNecessaryMembers(String startLocator, String startServer, GfshRule gfsh) {
+ if (!locatorStarted && !serverStarted) {
+ return;
+ }
+
+ List<String> commands = new ArrayList<>();
+ if (locatorStarted) {
+ commands.add(startLocator);
+ }
+ if (serverStarted) {
+ commands.add(startServer);
+ }
+
+ GfshExecution exec = GfshScript.of(commands.toArray(new String[] {}))
+ .withName(memberControllerName).awaitAtMost(1, MINUTES).execute(gfsh);
+ if (exec.getProcess().exitValue() != 0) {
+ throw new RuntimeException(
+ "The locator and server launcher exited with non-zero exit code. This failure is beyond the scope of this test.");
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshRule.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshRule.java b/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshRule.java
index 23445bd..fa25f14 100644
--- a/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshRule.java
+++ b/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshRule.java
@@ -14,6 +14,7 @@
*/
package org.apache.geode.test.dunit.rules.gfsh;
+import static org.apache.commons.lang.SystemUtils.PATH_SEPARATOR;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.File;
@@ -22,6 +23,7 @@ import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -29,6 +31,7 @@ import java.util.stream.Collectors;
import org.junit.rules.ExternalResource;
import org.junit.rules.TemporaryFolder;
+import org.apache.geode.internal.lang.SystemUtils;
import org.apache.geode.management.internal.cli.commands.StatusLocatorRealGfshTest;
import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
import org.apache.geode.test.dunit.rules.RequiresGeodeHome;
@@ -40,6 +43,10 @@ import org.apache.geode.test.dunit.rules.RequiresGeodeHome;
* {@link GfshRule#after()} method will attempt to clean up all forked JVMs.
*/
public class GfshRule extends ExternalResource {
+ public TemporaryFolder getTemporaryFolder() {
+ return temporaryFolder;
+ }
+
private TemporaryFolder temporaryFolder = new TemporaryFolder();
private List<GfshExecution> gfshExecutions;
private Path gfsh;
@@ -102,11 +109,25 @@ public class GfshRule extends ExternalResource {
commandsToExecute.add("-e " + command);
}
- return new ProcessBuilder(commandsToExecute).directory(workingDir);
+ ProcessBuilder processBuilder = new ProcessBuilder(commandsToExecute);
+ processBuilder.directory(workingDir);
+
+ List<String> extendedClasspath = gfshScript.getExtendedClasspath();
+ if (!extendedClasspath.isEmpty()) {
+ Map<String, String> environmentMap = processBuilder.environment();
+ String classpathKey = "CLASSPATH";
+ String existingJavaArgs = environmentMap.get(classpathKey);
+ String specified = String.join(PATH_SEPARATOR, extendedClasspath);
+ String newValue =
+ String.format("%s%s", existingJavaArgs == null ? "" : existingJavaArgs + ":", specified);
+ environmentMap.put(classpathKey, newValue);
+ }
+
+ return processBuilder;
}
private void stopMembersQuietly(File parentDirectory) {
- File[] potentalMemberDirectories = parentDirectory.listFiles(File::isDirectory);
+ File[] potentialMemberDirectories = parentDirectory.listFiles(File::isDirectory);
Predicate<File> isServerDir = (File directory) -> Arrays.stream(directory.list())
.anyMatch(filename -> filename.endsWith("server.pid"));
@@ -114,15 +135,16 @@ public class GfshRule extends ExternalResource {
Predicate<File> isLocatorDir = (File directory) -> Arrays.stream(directory.list())
.anyMatch(filename -> filename.endsWith("locator.pid"));
- Arrays.stream(potentalMemberDirectories).filter(isServerDir).forEach(this::stopServerInDir);
- Arrays.stream(potentalMemberDirectories).filter(isLocatorDir).forEach(this::stopLocatorInDir);
+ Arrays.stream(potentialMemberDirectories).filter(isServerDir).forEach(this::stopServerInDir);
+ Arrays.stream(potentialMemberDirectories).filter(isLocatorDir).forEach(this::stopLocatorInDir);
}
private void stopServerInDir(File dir) {
String stopServerCommand =
new CommandStringBuilder("stop server").addOption("dir", dir).toString();
- GfshScript stopServerScript = new GfshScript(stopServerCommand).awaitQuietly();
+ GfshScript stopServerScript =
+ new GfshScript(stopServerCommand).withName("stop-server-teardown").awaitQuietly();
execute(stopServerScript);
}
@@ -130,7 +152,8 @@ public class GfshRule extends ExternalResource {
String stopLocatorCommand =
new CommandStringBuilder("stop locator").addOption("dir", dir).toString();
- GfshScript stopServerScript = new GfshScript(stopLocatorCommand).awaitQuietly();
+ GfshScript stopServerScript =
+ new GfshScript(stopLocatorCommand).withName("stop-locator-teardown").awaitQuietly();
execute(stopServerScript);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshScript.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshScript.java b/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshScript.java
index 30c7140..52ef0d3 100644
--- a/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshScript.java
+++ b/geode-assembly/src/test/java/org/apache/geode/test/dunit/rules/gfsh/GfshScript.java
@@ -16,6 +16,9 @@ package org.apache.geode.test.dunit.rules.gfsh;
import static org.assertj.core.api.Assertions.assertThat;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.geode.management.internal.cli.util.ThreePhraseGenerator;
@@ -27,6 +30,7 @@ public class GfshScript {
private int timeout = 1;
private boolean awaitQuietly = false;
private int expectedExitValue = 0;
+ private List<String> extendedClasspath = new ArrayList<>();
public GfshScript(String... commands) {
this.commands = commands;
@@ -41,6 +45,7 @@ public class GfshScript {
public GfshScript withName(String name) {
this.name = name;
+
return this;
}
@@ -69,6 +74,16 @@ public class GfshScript {
return this;
}
+ public List<String> getExtendedClasspath() {
+ return extendedClasspath;
+ }
+
+ public GfshScript addToClasspath(String classpath) {
+ extendedClasspath.add(classpath);
+
+ return this;
+ }
+
/**
* Will cause the thread that executes {@link GfshScript#awaitIfNecessary} to wait, if necessary,
* until the subprocess executing this Gfsh script has terminated, or the specified waiting time
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/SystemFailure.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/SystemFailure.java b/geode-core/src/main/java/org/apache/geode/SystemFailure.java
index 99b0671..13c8f60 100644
--- a/geode-core/src/main/java/org/apache/geode/SystemFailure.java
+++ b/geode-core/src/main/java/org/apache/geode/SystemFailure.java
@@ -12,12 +12,10 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-/**
- *
- */
package org.apache.geode;
import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.SystemFailureTestHook;
import org.apache.geode.internal.admin.remote.RemoteGfManagerAgent;
import org.apache.geode.internal.cache.GemFireCacheImpl;
@@ -204,11 +202,9 @@ public final class SystemFailure {
*
* @see #setFailureAction(Runnable)
*/
- private static volatile Runnable failureAction = new Runnable() {
- public void run() {
- System.err.println(JVM_CORRUPTION);
- failure.printStackTrace();
- }
+ private static volatile Runnable failureAction = () -> {
+ System.err.println(JVM_CORRUPTION);
+ failure.printStackTrace();
};
/**
@@ -241,15 +237,11 @@ public final class SystemFailure {
return result;
}
- // merge42180: Added this method while merging 42180. It should have already be here through
- // different merges or will come later
/**
* Returns true if the given Error is a fatal to the JVM and it should be shut down. Code should
* call {@link #initiateFailure(Error)} or {@link #setFailure(Error)} if this returns true.
*/
public static boolean isJVMFailureError(Error err) {
- // all VirtualMachineErrors are not fatal to the JVM, in particular
- // StackOverflowError is not
return err instanceof OutOfMemoryError || err instanceof UnknownError;
}
@@ -289,13 +281,8 @@ public final class SystemFailure {
private final static ThreadGroup tg;
static {
tg = new ThreadGroup("SystemFailure Watchdog Threads") {
- // If the watchdog is correctly written, this will never get executed.
- // However, there's no reason for us not to eat our own dog food
- // (har, har) -- see the javadoc above.
@Override
public void uncaughtException(Thread t, Throwable e) {
- // Uhhh...if the watchdog is running, we *know* there's some
- // sort of serious error, no need to check for it here.
System.err.println("Internal error in SystemFailure watchdog:" + e);
e.printStackTrace();
}
@@ -350,18 +337,13 @@ public final class SystemFailure {
*/
private static void startWatchDog() {
if (failureActionCompleted) {
- // Our work is done, don't restart
return;
}
synchronized (failureSync) {
if (watchDog != null && watchDog.isAlive()) {
return;
}
- watchDog = new Thread(tg, new Runnable() {
- public void run() {
- runWatchDog();
- }
- }, "SystemFailure WatchDog");
+ watchDog = new Thread(tg, SystemFailure::runWatchDog, "SystemFailure WatchDog");
watchDog.setDaemon(true);
watchDog.start();
}
@@ -402,13 +384,13 @@ public final class SystemFailure {
try {
basicLoadEmergencyClasses();
} catch (ExceptionInInitializerError e) {
- // Uhhh...are we shutting down?
+ // Determine if we're shutting down...
boolean noSurprise = false;
Throwable cause = e.getCause();
if (cause != null) {
if (cause instanceof IllegalStateException) {
String msg = cause.getMessage();
- if (msg.indexOf("Shutdown in progress") >= 0) {
+ if (msg.contains("Shutdown in progress")) {
noSurprise = true;
}
}
@@ -416,7 +398,6 @@ public final class SystemFailure {
if (!noSurprise) {
logWarning(WATCHDOG_NAME, "Unable to load GemFire classes: ", e);
}
- // In any event, we're toast
return;
} catch (CancelException e) {
// ignore this because we are shutting down anyway
@@ -447,31 +428,27 @@ public final class SystemFailure {
return;
}
}
- // Poke nose in the air, take a sniff...
+
+ // Perform watchdog sentinel duties.
if (failureActionCompleted) {
- // early out, for testing
logInfo(WATCHDOG_NAME, "all actions completed; exiting");
}
if (failure == null) {
- // Tail wag. Go back to sleep.
logFine(WATCHDOG_NAME, "no failure detected");
continue;
}
- // BOW WOW WOW WOW WOW! Corrupted system.
if (!warned) {
warned = logWarning(WATCHDOG_NAME, "failure detected", failure);
}
- // If any of the following fail, we will go back to sleep and
- // retry.
if (!gemfireCloseCompleted) {
logInfo(WATCHDOG_NAME, "closing GemFire");
try {
emergencyClose();
} catch (Throwable t) {
logWarning(WATCHDOG_NAME, "trouble closing GemFire", t);
- continue; // go back to sleep
+ continue;
}
gemfireCloseCompleted = true;
}
@@ -485,7 +462,7 @@ public final class SystemFailure {
r.run();
} catch (Throwable t) {
logWarning(WATCHDOG_NAME, "trouble running user's runnable", t);
- continue; // go back to sleep
+ continue;
}
}
failureActionCompleted = true;
@@ -495,32 +472,26 @@ public final class SystemFailure {
stopProctor();
if (exitOK) {
- logWarning(WATCHDOG_NAME,
- // No "+" in this long message, we're out of memory!
- CALLING_SYSTEM_EXIT, exitExcuse);
+ logWarning(WATCHDOG_NAME, CALLING_SYSTEM_EXIT, exitExcuse);
// ATTENTION: there are VERY FEW places in GemFire where it is
// acceptable to call System.exit. This is one of those
// places...
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
- // Our job here is done
logInfo(WATCHDOG_NAME, "exiting");
return;
} catch (Throwable t) {
- // We *never* give up. NEVER EVER!
logWarning(WATCHDOG_NAME, "thread encountered a problem: " + t, t);
}
- } // for
+ }
}
/**
* Spies on system statistics looking for low memory threshold
*
- * Well, if you're gonna have a watchdog, why not a watch CAT????
- *
* @guarded.By {@link #failureSync}
* @see #minimumMemoryThreshold
*/
@@ -542,9 +513,8 @@ public final class SystemFailure {
* @see #setFailureMemoryThreshold(long)
* @guarded.By {@link #memorySync}
*/
- static long minimumMemoryThreshold =
- Long.getLong(DistributionConfig.GEMFIRE_PREFIX + "SystemFailure.chronic_memory_threshold",
- 1048576).longValue();
+ static long minimumMemoryThreshold = Long.getLong(
+ DistributionConfig.GEMFIRE_PREFIX + "SystemFailure.chronic_memory_threshold", 1048576);
/**
* This is the interval, in seconds, that the proctor thread will awaken and poll system free
@@ -556,8 +526,7 @@ public final class SystemFailure {
* @see #setFailureMemoryThreshold(long)
*/
static final public long MEMORY_POLL_INTERVAL =
- Long.getLong(DistributionConfig.GEMFIRE_PREFIX + "SystemFailure.MEMORY_POLL_INTERVAL", 1)
- .longValue();
+ Long.getLong(DistributionConfig.GEMFIRE_PREFIX + "SystemFailure.MEMORY_POLL_INTERVAL", 1);
/**
* This is the maximum amount of time, in seconds, that the proctor thread will tolerate seeing
@@ -569,8 +538,8 @@ public final class SystemFailure {
*
* @see #setFailureMemoryThreshold(long)
*/
- static final public long MEMORY_MAX_WAIT = Long
- .getLong(DistributionConfig.GEMFIRE_PREFIX + "SystemFailure.MEMORY_MAX_WAIT", 15).longValue();
+ static final public long MEMORY_MAX_WAIT =
+ Long.getLong(DistributionConfig.GEMFIRE_PREFIX + "SystemFailure.MEMORY_MAX_WAIT", 15);
/**
* Flag that determines whether or not we monitor memory on our own. If this flag is set, we will
@@ -592,7 +561,6 @@ public final class SystemFailure {
*/
private static void startProctor() {
if (failure != null) {
- // no point!
notifyWatchDog();
return;
}
@@ -600,18 +568,14 @@ public final class SystemFailure {
if (proctor != null && proctor.isAlive()) {
return;
}
- proctor = new Thread(tg, new Runnable() {
- public void run() {
- runProctor();
- }
- }, "SystemFailure Proctor");
+ proctor = new Thread(tg, SystemFailure::runProctor, "SystemFailure Proctor");
proctor.setDaemon(true);
proctor.start();
}
}
private static void stopProctor() {
- Thread proctorSnapshot = null;
+ Thread proctorSnapshot;
synchronized (failureSync) {
stopping = true;
proctorSnapshot = proctor;
@@ -644,21 +608,18 @@ public final class SystemFailure {
static private long lastTotalMemory = 0;
/**
- * This is the run loop for the proctor thread (formally known as the "watchcat" (grin)
+ * This is the run loop for the proctor thread
*/
static protected void runProctor() {
// Note that the javadocs say this can return Long.MAX_VALUE.
- // If it does, the proctor will never do its job...
final long maxMemory = Runtime.getRuntime().maxMemory();
- // Allocate this error in advance, since it's too late once
- // it's been detected!
+ // Allocate this error in advance, since it's too late once it's been detected!
final OutOfMemoryError oome = new OutOfMemoryError(
LocalizedStrings.SystemFailure_0_MEMORY_HAS_REMAINED_CHRONICALLY_BELOW_1_BYTES_OUT_OF_A_MAXIMUM_OF_2_FOR_3_SEC
.toLocalizedString(new Object[] {PROCTOR_NAME, Long.valueOf(minimumMemoryThreshold),
Long.valueOf(maxMemory), Integer.valueOf(WATCHDOG_WAIT)}));
- // Catenation, but should be OK when starting up
logFine(PROCTOR_NAME,
"Starting, threshold = " + minimumMemoryThreshold + "; max = " + maxMemory);
for (;;) {
@@ -670,7 +631,6 @@ public final class SystemFailure {
}
try {
- // *** catnap...
try {
Thread.sleep(MEMORY_POLL_INTERVAL * 1000);
} catch (InterruptedException e) {
@@ -681,13 +641,11 @@ public final class SystemFailure {
return;
}
- // *** Twitch ear, take a bath...
if (failureActionCompleted) {
- // it's all over, we're late
return;
}
if (failure != null) {
- notifyWatchDog(); // wake the dog, just in case
+ notifyWatchDog();
logFine(PROCTOR_NAME, "Failure has been reported, exiting");
return;
}
@@ -696,13 +654,9 @@ public final class SystemFailure {
continue;
}
- // *** Sit up, stretch...
long totalMemory = Runtime.getRuntime().totalMemory();
if (totalMemory < maxMemory) {
- // We haven't finished growing the heap, so no worries...yet
if (DEBUG) {
- // This message has catenation, we don't want this in
- // production code :-)
logFine(PROCTOR_NAME,
"totalMemory (" + totalMemory + ") < maxMemory (" + maxMemory + ")");
}
@@ -710,24 +664,17 @@ public final class SystemFailure {
continue;
}
if (lastTotalMemory < totalMemory) {
- // Don't get too impatient if the heap just now grew
- lastTotalMemory = totalMemory; // now we're maxed
- firstStarveTime = NEVER_STARVED; // reset the clock
+ lastTotalMemory = totalMemory;
+ firstStarveTime = NEVER_STARVED;
continue;
}
- lastTotalMemory = totalMemory; // make a note of this
+ lastTotalMemory = totalMemory;
- // *** Hey, is that the food bowl?
-
- // At this point, freeMemory really indicates how much
- // trouble we're in.
long freeMemory = Runtime.getRuntime().freeMemory();
if (freeMemory == 0) {
- /*
- * This is to workaround X bug #41821 in JRockit. Often, Jrockit returns 0 from
- * Runtime.getRuntime().freeMemory() Allocating this one object and calling again seems to
- * workaround the problem.
- */
+ // This is to workaround X bug #41821 in JRockit. Often, Jrockit returns 0 from
+ // Runtime.getRuntime().freeMemory() Allocating this one object and calling again seems to
+ // workaround the problem.
new Object();
freeMemory = Runtime.getRuntime().freeMemory();
}
@@ -740,12 +687,9 @@ public final class SystemFailure {
lastStarveTime = firstStarveTime;
}
- if (freeMemory >= curThreshold /* enough memory */
- || curThreshold == 0 /* disabled */) {
+ if (freeMemory >= curThreshold || curThreshold == 0) {
// Memory is FINE, reset everything
if (DEBUG) {
- // This message has catenation, we don't want this in
- // production code :-)
logFine(PROCTOR_NAME, "Current free memory is: " + freeMemory);
}
@@ -757,14 +701,11 @@ public final class SystemFailure {
}
continue;
}
- // Memory is low
- // *** Leap to feet, nose down, tail switching...
+ // Memory is low
long now = System.currentTimeMillis();
if (lastStarveTime == NEVER_STARVED) {
- // first sighting
if (DEBUG) {
- // Catenation in this message, don't put in production
logFine(PROCTOR_NAME,
"Noting current memory " + freeMemory + " is less than threshold " + curThreshold);
} else {
@@ -776,15 +717,12 @@ public final class SystemFailure {
synchronized (memorySync) {
firstStarveTime = now;
}
- System.gc(); // at least TRY...
+ System.gc(); // Attempt to free memory and avoid overflow
continue;
}
- // *** squirm, wait for the right moment...wait...wait...
if (now - lastStarveTime < MEMORY_MAX_WAIT * 1000) {
- // Very recent; problem may correct itself.
if (DEBUG) {
- // catenation
logFine(PROCTOR_NAME, "...memory is still below threshold: " + freeMemory);
} else {
logWarning(PROCTOR_NAME,
@@ -795,18 +733,14 @@ public final class SystemFailure {
continue;
}
- // *** Meow! Meow! MEOWWWW!!!!!
-
- // Like any smart cat, let the Dog do all the work.
logWarning(PROCTOR_NAME, "Memory is chronically low; setting failure!", null);
SystemFailure.setFailure(oome);
notifyWatchDog();
- return; // we're done!
+ return;
} catch (Throwable t) {
logWarning(PROCTOR_NAME, "thread encountered a problem", t);
- // We *never* give up. NEVER EVER!
}
- } // for
+ }
}
/**
@@ -837,10 +771,6 @@ public final class SystemFailure {
* Just make sure to do it while you still have memory to succeed!
*/
public static void loadEmergencyClasses() {
- // This method was called to basically load this class
- // and invoke its static initializers. Now that we don't
- // use statics to start the threads all we need to do is
- // call startThreads. The watchdog thread will call basicLoadEmergencyClasses.
startThreads();
}
@@ -870,22 +800,18 @@ public final class SystemFailure {
* system.
*/
public static void emergencyClose() {
- // Make the cache (more) useless and inaccessible...
if (TRACE_CLOSE) {
System.err.println("SystemFailure: closing GemFireCache");
}
GemFireCacheImpl.emergencyClose();
- // Arcane strange DS's exist in this class:
if (TRACE_CLOSE) {
System.err.println("SystemFailure: closing admins");
}
RemoteGfManagerAgent.emergencyClose();
- // If memory was the problem, make an explicit attempt at
- // this point to clean up.
-
- System.gc(); // This will fail if we're out of memory?/
+ // If memory was the problem, make an explicit attempt at this point to clean up.
+ System.gc();
if (TRACE_CLOSE) {
System.err.println("SystemFailure: end of emergencyClose");
@@ -904,7 +830,6 @@ public final class SystemFailure {
* @throws Error
*/
static private void throwFailure() throws InternalGemFireError, Error {
- // Do not return normally...
if (failure != null)
throw failure;
}
@@ -913,7 +838,7 @@ public final class SystemFailure {
* Notifies the watchdog thread (assumes that {@link #failure} has been set)
*/
private static void notifyWatchDog() {
- startWatchDog(); // just in case
+ startWatchDog();
synchronized (failureSync) {
failureSync.notifyAll();
}
@@ -968,10 +893,6 @@ public final class SystemFailure {
if (SystemFailureTestHook.errorIsExpected(failure)) {
return;
}
- // created (OutOfMemoryError), and no stack frames are created
- // (StackOverflowError). There is a slight chance that the
- // very first error may get overwritten, but this avoids the
- // potential of object creation via a fat lock
SystemFailure.failure = failure;
notifyWatchDog();
}
@@ -1038,47 +959,13 @@ public final class SystemFailure {
synchronized (memorySync) {
result = minimumMemoryThreshold;
minimumMemoryThreshold = newVal;
- firstStarveTime = NEVER_STARVED; // reset
+ firstStarveTime = NEVER_STARVED;
}
- startProctor(); // just in case
+ startProctor();
return result;
}
- // /**
- // * For use by GemStone Quality Assurance Only
- // *
- // * @deprecated TODO remove this
- // */
- // public static void reset() {
- // System.gc();
- // logWarning("DJP", "do not commit SystemFailure#reset", null);
- // failure = null;
- // failureAction = new Runnable() {
- // public void run() {
- // System.err.println("(SystemFailure) JVM corruption has been detected!");
- // failure.printStackTrace();
- // }
- // };
- // gemfireCloseCompleted = false;
- // failureActionCompleted = false;
- // synchronized (failureSync) {
- // if (watchDog != null) {
- // watchDog.interrupt();
- // }
- // watchDog = null;
- // if (watchCat != null) {
- // watchCat.interrupt();
- // }
- // watchCat = null;
- // }
- //
- // startWatchDog();
- // startWatchCat();
- // }
-
static private boolean logStdErr(String kind, String name, String s, Throwable t) {
- // As far as I can tell, this code path doesn't allocate
- // any objects!!!!
try {
System.err.print(name);
System.err.print(": [");
@@ -1105,16 +992,6 @@ public final class SystemFailure {
*/
static protected boolean logWarning(String name, String s, Throwable t) {
return logStdErr("warning", name, s, t);
- // if (PREFER_STDERR) {
- // return logStdErr("warning", name, s, t);
- // }
- // try {
- // log.warning(name + ": " + s, t);
- // return true;
- // }
- // catch (Throwable t2) {
- // return logStdErr("warning", name, s, t);
- // }
}
/**
@@ -1125,16 +1002,6 @@ public final class SystemFailure {
*/
static protected void logInfo(String name, String s) {
logStdErr("info", name, s, null);
- // if (PREFER_STDERR) {
- // logStdErr("info", name, s, null);
- // return;
- // }
- // try {
- // log.info(name + ": " + s);
- // }
- // catch (Throwable t) {
- // logStdErr("info", name, s, t);
- // }
}
/**
@@ -1147,18 +1014,6 @@ public final class SystemFailure {
if (DEBUG) {
logStdErr("fine", name, s, null);
}
- // if (DEBUG && PREFER_STDERR) {
- // logStdErr("fine", name, s, null);
- // return;
- // }
- // try {
- // log.fine(name + ": " + s);
- // }
- // catch (Throwable t) {
- // if (DEBUG) {
- // logStdErr("fine", name, s, null);
- // }
- // }
}
private static volatile boolean stopping;
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
index e55c3f1..9eb741f 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentImpl.java
@@ -43,7 +43,6 @@ import javax.management.remote.rmi.RMIConnectorServer;
import javax.rmi.ssl.SslRMIClientSocketFactory;
import mx4j.tools.adaptor.http.HttpAdaptor;
-
import org.apache.logging.log4j.Logger;
import org.apache.geode.GemFireException;
@@ -58,6 +57,7 @@ import org.apache.geode.admin.jmx.AgentFactory;
import org.apache.geode.distributed.internal.DistributionManager;
import org.apache.geode.i18n.StringId;
import org.apache.geode.internal.Banner;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.internal.admin.remote.TailLogResponse;
import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -1054,7 +1054,7 @@ public class AgentImpl implements org.apache.geode.admin.jmx.Agent,
} catch (RuntimeException ex) {
System.err
.println(LocalizedStrings.AgentImpl_FAILED_READING_CONFIGURATION_0.toLocalizedString(ex));
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
return;
}
@@ -1075,7 +1075,7 @@ public class AgentImpl implements org.apache.geode.admin.jmx.Agent,
// is still usable:
SystemFailure.checkFailure();
t.printStackTrace();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
index 6a1bd63..7731293 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/AgentLauncher.java
@@ -44,11 +44,12 @@ import org.apache.geode.admin.jmx.Agent;
import org.apache.geode.admin.jmx.AgentConfig;
import org.apache.geode.admin.jmx.AgentFactory;
import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.OSProcess;
import org.apache.geode.internal.PureJavaMode;
-import org.apache.geode.internal.net.SocketCreator;
import org.apache.geode.internal.i18n.LocalizedStrings;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.net.SocketCreator;
import org.apache.geode.internal.util.IOUtils;
import org.apache.geode.internal.util.JavaCommandBuilder;
@@ -176,7 +177,7 @@ public class AgentLauncher {
}
out.println("");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
/**
@@ -263,7 +264,7 @@ public class AgentLauncher {
// the status file was not successfully written to
pollAgentUntilRunning();
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
private void verifyAndClearStatus() throws Exception {
@@ -448,7 +449,7 @@ public class AgentLauncher {
OSProcess.getId(), message, cause));
} catch (Exception e) {
logger.fatal(e.getMessage(), e);
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
@@ -459,9 +460,10 @@ public class AgentLauncher {
if (isStatus(SHUTDOWN_PENDING, SHUTDOWN_PENDING_AFTER_FAILED_STARTUP)) {
agent.stop();
- final int exitCode = (isStatus(SHUTDOWN_PENDING_AFTER_FAILED_STARTUP) ? 1 : 0);
+ final ExitCode exitCode =
+ (isStatus(SHUTDOWN_PENDING_AFTER_FAILED_STARTUP) ? ExitCode.FATAL : ExitCode.NORMAL);
writeStatus(createStatus(this.status, SHUTDOWN));
- System.exit(exitCode);
+ exitCode.doSystemExit();
}
}
}
@@ -497,7 +499,7 @@ public class AgentLauncher {
workingDirectory = IOUtils.tryGetCanonicalFileElseGetAbsoluteFile((File) options.get(DIR));
- int exitStatus = 1;
+ ExitCode exitCode = ExitCode.FATAL;
if (new File(workingDirectory, statusFileName).exists()) {
spinReadStatus();
@@ -512,7 +514,7 @@ public class AgentLauncher {
System.out
.println(LocalizedStrings.AgentLauncher_0_HAS_STOPPED.toLocalizedString(this.basename));
deleteStatus();
- exitStatus = 0;
+ exitCode = ExitCode.NORMAL;
} else {
System.out
.println(LocalizedStrings.AgentLauncher_TIMEOUT_WAITING_FOR_0_TO_SHUTDOWN_STATUS_IS_1
@@ -524,7 +526,7 @@ public class AgentLauncher {
.toLocalizedString(workingDirectory));
}
- System.exit(exitStatus);
+ exitCode.doSystemExit();
}
private void pollAgentForShutdown() throws InterruptedException {
@@ -545,7 +547,7 @@ public class AgentLauncher {
this.workingDirectory =
IOUtils.tryGetCanonicalFileElseGetAbsoluteFile((File) getStopOptions(args).get(DIR));
System.out.println(getStatus());
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
/**
@@ -779,7 +781,7 @@ public class AgentLauncher {
out.println("\t" + LocalizedStrings.AgentLauncher_DIR.toLocalizedString());
out.println();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
/**
@@ -833,7 +835,7 @@ public class AgentLauncher {
t.printStackTrace();
System.err.println(
LocalizedStrings.AgentLauncher_ERROR_0.toLocalizedString(t.getLocalizedMessage()));
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/GenerateMBeanHTML.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/GenerateMBeanHTML.java b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/GenerateMBeanHTML.java
index 5375a19..2c33215 100644
--- a/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/GenerateMBeanHTML.java
+++ b/geode-core/src/main/java/org/apache/geode/admin/jmx/internal/GenerateMBeanHTML.java
@@ -14,14 +14,27 @@
*/
package org.apache.geode.admin.jmx.internal;
-import org.apache.geode.internal.ClassPathLoader;
-import org.apache.geode.internal.i18n.LocalizedStrings;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
-import org.xml.sax.*;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
-import java.io.*;
+
+import org.apache.geode.internal.ClassPathLoader;
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.internal.i18n.LocalizedStrings;
// import java.util.*;
/**
@@ -464,7 +477,7 @@ public class GenerateMBeanHTML extends DefaultHandler {
err.println("");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
public static void main(String[] args) throws Exception {
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
index 6806288..385065e 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/deadlock/DeadlockDetector.java
@@ -35,6 +35,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.geode.internal.ExitCode;
+
/**
* A class used for detecting deadlocks. The static method
* {@link #collectAllDependencies(Serializable)} will find all dependencies between threads and
@@ -304,7 +306,7 @@ public class DeadlockDetector {
File file = new File(filename);
if (!file.exists()) {
System.err.println("unable to find " + filename);
- System.exit(-1);
+ ExitCode.DEPENDENCY_GRAPH_FAILURE.doSystemExit();
}
ObjectInputStream ois =
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/AvailablePort.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/AvailablePort.java b/geode-core/src/main/java/org/apache/geode/internal/AvailablePort.java
index f22872f..b0c401e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/AvailablePort.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/AvailablePort.java
@@ -14,17 +14,27 @@
*/
package org.apache.geode.internal;
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.internal.i18n.LocalizedStrings;
-import org.apache.geode.internal.net.SocketCreator;
-
import java.io.IOException;
import java.io.PrintStream;
import java.io.Serializable;
-import java.net.*;
+import java.net.DatagramPacket;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.MulticastSocket;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.net.SocketAddress;
+import java.net.SocketException;
+import java.net.SocketTimeoutException;
+import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.Random;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.net.SocketCreator;
+
/**
* This class determines whether or not a given port is available and can also provide a randomly
* selected available port.
@@ -493,7 +503,7 @@ public class AvailablePort {
LocalizedStrings.AvailablePort_THIS_PROGRAM_EITHER_PRINTS_WHETHER_OR_NOT_A_PORT_IS_AVAILABLE_FOR_A_GIVEN_PROTOCOL_OR_IT_PRINTS_OUT_AN_AVAILABLE_PORT_FOR_A_GIVEN_PROTOCOL
.toLocalizedString());
err.println("");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
public static void main(String[] args) {
@@ -538,7 +548,7 @@ public class AvailablePort {
addr = InetAddress.getByName(addrString);
} catch (Exception e) {
e.printStackTrace();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java b/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java
index e190d0b..a81932b 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/DistributionLocator.java
@@ -14,21 +14,22 @@
*/
package org.apache.geode.internal;
+import java.io.File;
+import java.io.IOException;
+import java.net.ConnectException;
+import java.net.InetAddress;
+import java.util.Properties;
+
+import org.apache.logging.log4j.Logger;
+
import org.apache.geode.SystemFailure;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.distributed.internal.tcpserver.*;
+import org.apache.geode.distributed.internal.tcpserver.TcpClient;
import org.apache.geode.internal.i18n.LocalizedStrings;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.internal.logging.log4j.LocalizedMessage;
-import org.apache.logging.log4j.Logger;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.util.Properties;
/**
* This class is used to work with a managed VM that hosts a
@@ -114,7 +115,7 @@ public class DistributionLocator {
System.err.println(
LocalizedStrings.DistributionLocator_A_ZEROLENGTH_HOSTNAMEFORCLIENTS_WILL_DEFAULT_TO_BINDADDRESS
.toLocalizedString());
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
} else {
shutdown = false;
}
@@ -132,7 +133,7 @@ public class DistributionLocator {
System.err.println(
LocalizedStrings.DistributionLocator__0_IS_NOT_A_VALID_IP_ADDRESS_FOR_THIS_MACHINE
.toLocalizedString(args[1]));
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
address = InetAddress.getByName(args[1]);
} else {
@@ -183,14 +184,14 @@ public class DistributionLocator {
} catch (java.net.BindException ex) {
logger.fatal(LocalizedMessage.create(
LocalizedStrings.DistributionLocator_COULD_NOT_BIND_LOCATOR_TO__0__1,
- new Object[] {address, Integer.valueOf(port)}));
- System.exit(1);
+ new Object[] {address, port}));
+ ExitCode.FATAL.doSystemExit();
} catch (Exception ex) {
logger.fatal(
LocalizedMessage.create(LocalizedStrings.DistributionLocator_COULD_NOT_START_LOCATOR),
ex);
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/ExitCode.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/ExitCode.java b/geode-core/src/main/java/org/apache/geode/internal/ExitCode.java
new file mode 100644
index 0000000..a7d7d07
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/internal/ExitCode.java
@@ -0,0 +1,49 @@
+/*
+ * 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.internal;
+
+import java.util.Arrays;
+
+import org.springframework.shell.core.ExitShellRequest;
+
+
+public enum ExitCode {
+
+ // JVM_TERMINATED_EXIT(99) exists for coverage of Spring's ExitShellRequest values in fromSpring.
+ DEPENDENCY_GRAPH_FAILURE(-1), NORMAL(0), FATAL(1), INSTALL_FAILURE(2), JVM_TERMINATED_EXIT(99);
+
+ private final int shellReturnValue;
+
+ ExitCode(final int shellReturnValue) {
+ this.shellReturnValue = shellReturnValue;
+ }
+
+ public int getValue() {
+ return shellReturnValue;
+ }
+
+ public void doSystemExit() {
+ System.exit(this.shellReturnValue);
+ }
+
+ public static ExitCode fromValue(int i) {
+ return Arrays.stream(ExitCode.values()).filter(c -> c.getValue() == i).findFirst().orElseThrow(
+ () -> new IllegalArgumentException("No ExitCode exists with shell exit value: " + i));
+ }
+
+ public static ExitCode fromSpring(ExitShellRequest s) {
+ return fromValue(s.getExitCode());
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/MigrationClient.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/MigrationClient.java b/geode-core/src/main/java/org/apache/geode/internal/MigrationClient.java
index 1f3ef2a..d7f6b44 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/MigrationClient.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/MigrationClient.java
@@ -14,7 +14,10 @@
*/
package org.apache.geode.internal;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -97,7 +100,7 @@ public class MigrationClient {
instance = new MigrationClient(cacheXmlFileName, bindAddressName, serverPort);
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage());
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
instance.createDistributedSystem();
instance.createCache();
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java b/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
index 1252eb0..7266c89 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/MigrationServer.java
@@ -14,7 +14,10 @@
*/
package org.apache.geode.internal;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -147,7 +150,7 @@ public class MigrationServer {
instance = new MigrationServer(cacheXmlFileName, bindAddressName, listenPort);
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage());
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
instance.createDistributedSystem();
instance.createCache();
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
index ccc64e3..e431012 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/SystemAdmin.java
@@ -1416,7 +1416,7 @@ public class SystemAdmin {
protected void usage(String cmd) {
System.err.println(
LocalizedStrings.SystemAdmin_USAGE.toLocalizedString() + " " + getUsageString(cmd));
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
private final static String[] validCommands = new String[] {"version", "stats", START_LOCATOR,
@@ -2006,7 +2006,7 @@ public class SystemAdmin {
if (debug) {
ex.printStackTrace(System.err);
}
- System.exit(1); // fix for bug 28351
+ ExitCode.FATAL.doSystemExit(); // fix for bug 28351
}
if (cmdLine.size() == 0) {
if (help) {
@@ -2041,7 +2041,7 @@ public class SystemAdmin {
if (debug) {
ex.printStackTrace(System.err);
}
- System.exit(1); // fix for bug 28351
+ ExitCode.FATAL.doSystemExit(); // fix for bug 28351
}
if (needsSysDir(cmd) && !help) {
if (sysDirName != null && sysDirName.length() > 0) {
@@ -2237,7 +2237,7 @@ public class SystemAdmin {
if (debug) {
ex.printStackTrace(System.err);
}
- System.exit(1); // fix for bug 28351
+ ExitCode.FATAL.doSystemExit(); // fix for bug 28351
} catch (IllegalArgumentException ex) {
System.err.println(LocalizedStrings.SystemAdmin_ERROR_OPERATION_0_FAILED_BECAUSE_1
.toLocalizedString(new Object[] {cmd, getExceptionMessage(ex)}));
@@ -2245,14 +2245,14 @@ public class SystemAdmin {
if (debug) {
ex.printStackTrace(System.err);
}
- System.exit(1); // fix for bug 28351
+ ExitCode.FATAL.doSystemExit(); // fix for bug 28351
} catch (Exception ex) {
System.err.println(LocalizedStrings.SystemAdmin_ERROR_OPERATION_0_FAILED_BECAUSE_1
.toLocalizedString(new Object[] {cmd, getExceptionMessage(ex)}));
if (debug) {
ex.printStackTrace(System.err);
}
- System.exit(1); // fix for bug 28351
+ ExitCode.FATAL.doSystemExit(); // fix for bug 28351
}
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/cache/CacheServerLauncher.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/CacheServerLauncher.java b/geode-core/src/main/java/org/apache/geode/internal/cache/CacheServerLauncher.java
index ab53ca4..5faa72b 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/CacheServerLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/CacheServerLauncher.java
@@ -15,7 +15,8 @@
package org.apache.geode.internal.cache;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.SERVER_BIND_ADDRESS;
import java.io.File;
import java.io.FileInputStream;
@@ -46,6 +47,7 @@ import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.DistributionConfigImpl;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
import org.apache.geode.i18n.LogWriterI18n;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.OSProcess;
import org.apache.geode.internal.PureJavaMode;
import org.apache.geode.internal.cache.tier.sockets.CacheServerHelper;
@@ -175,7 +177,7 @@ public class CacheServerLauncher {
protected void status(final String[] args) throws Exception {
workingDir = (File) getStopOptions(args).get(DIR);
System.out.println(getStatus());
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
/**
@@ -216,11 +218,11 @@ public class CacheServerLauncher {
launcher.status(args);
} else {
launcher.usage();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
} else {
launcher.usage();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
throw new Exception(LocalizedStrings.CacheServerLauncher_INTERNAL_ERROR_SHOULDNT_REACH_HERE
@@ -251,7 +253,7 @@ public class CacheServerLauncher {
System.out.println(
LocalizedStrings.CacheServerLauncher_ERROR_0.toLocalizedString(t.getMessage()));
}
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
@@ -500,7 +502,7 @@ public class CacheServerLauncher {
return;
}
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
private void verifyAndClearStatus() throws Exception {
@@ -765,7 +767,7 @@ public class CacheServerLauncher {
}
if (!reconnected) {
// shutdown-all disconnected the DS
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
}
}
@@ -902,7 +904,7 @@ public class CacheServerLauncher {
// determine the current state of the Cache Server process...
final File statusFile = new File(this.workingDir, this.statusName);
- int exitStatus = 1;
+ ExitCode exitCode = ExitCode.FATAL;
if (statusFile.exists()) {
this.status = spinReadStatus();
@@ -925,7 +927,7 @@ public class CacheServerLauncher {
System.out.println(
LocalizedStrings.CacheServerLauncher_0_STOPPED.toLocalizedString(this.baseName));
deleteStatus();
- exitStatus = 0;
+ exitCode = ExitCode.NORMAL;
} else {
System.out.println(
LocalizedStrings.CacheServerLauncher_TIMEOUT_WAITING_FOR_0_TO_SHUTDOWN_STATUS_IS_1
@@ -941,7 +943,7 @@ public class CacheServerLauncher {
return;
}
- System.exit(exitStatus);
+ exitCode.doSystemExit();
}
private void pollCacheServerForShutdown() throws InterruptedException {
@@ -1037,7 +1039,7 @@ public class CacheServerLauncher {
} else {
e.printStackTrace();
}
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
}
@@ -1178,7 +1180,7 @@ public class CacheServerLauncher {
}
if (status.state == SHUTDOWN) {
System.out.println(status);
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
break;
default:
@@ -1203,7 +1205,7 @@ public class CacheServerLauncher {
} catch (IOException io) {
// throw new GemFireIOException("Failed reading " + url, io);
System.out.println("Failed reading " + url);
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
final String logFile = gfprops.getProperty(LOG_FILE);
if (logFile == null || logFile.length() == 0) {
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskInitFileParser.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskInitFileParser.java b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskInitFileParser.java
index e97e882..ed0cec4 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskInitFileParser.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskInitFileParser.java
@@ -33,6 +33,7 @@ import org.apache.logging.log4j.Logger;
import org.apache.geode.DataSerializer;
import org.apache.geode.cache.DiskAccessException;
import org.apache.geode.cache.UnsupportedVersionException;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.internal.Version;
import org.apache.geode.internal.cache.CountingDataInputStream;
@@ -583,7 +584,7 @@ public class DiskInitFileParser {
public static void main(String[] args) throws IOException, ClassNotFoundException {
if (args.length != 1) {
System.err.println("Usage: parse filename");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
dump(new File(args[0]));
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
index 5ba8800..aa72bd9 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/snapshot/GFSnapshot.java
@@ -31,6 +31,7 @@ import java.util.NoSuchElementException;
import org.apache.geode.DataSerializer;
import org.apache.geode.cache.CacheClosedException;
import org.apache.geode.cache.snapshot.SnapshotIterator;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.InternalDataSerializer;
import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.InternalCache;
@@ -75,7 +76,7 @@ public class GFSnapshot {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.println("Usage: GFSnapshot <file>");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
GFSnapshotImporter imp = new GFSnapshotImporter(new File(args[0]));
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/logging/LogFileParser.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/logging/LogFileParser.java b/geode-core/src/main/java/org/apache/geode/internal/logging/LogFileParser.java
index af8baeb..665d967 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/logging/LogFileParser.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/LogFileParser.java
@@ -14,12 +14,18 @@
*/
package org.apache.geode.internal.logging;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Date;
+
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.i18n.LocalizedStrings;
-import java.io.*;
-import java.text.*;
-import java.util.*;
-
/**
* Parses a log file written by a {@link org.apache.geode.i18n.LogWriterI18n} into
* {@link LogFileParser.LogEntry}s. It behaves sort of like an {@link java.util.StringTokenizer}.
@@ -381,7 +387,7 @@ public class LogFileParser {
public static void main(String[] args) throws Throwable {
if (args.length < 1) {
System.err.println(LocalizedStrings.LogFileParser_MISSING_LOG_FILE_NAME.toLocalizedString());
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
String logFileName = args[0];
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/logging/MergeLogFiles.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/logging/MergeLogFiles.java b/geode-core/src/main/java/org/apache/geode/internal/logging/MergeLogFiles.java
index 27f2116..0c1306e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/logging/MergeLogFiles.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/MergeLogFiles.java
@@ -14,10 +14,6 @@
*/
package org.apache.geode.internal.logging;
-import org.apache.geode.SystemFailure;
-import org.apache.geode.internal.Assert;
-import org.apache.geode.internal.i18n.LocalizedStrings;
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -41,6 +37,11 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
+import org.apache.geode.SystemFailure;
+import org.apache.geode.internal.Assert;
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+
/**
* This program merges entries from multiple GemFire log files (those written using a
* {@link org.apache.geode.i18n.LogWriterI18n} together, sorting them by their timestamp. Note that
@@ -178,7 +179,7 @@ public class MergeLogFiles {
LocalizedStrings.MergeLogFiles_IF_A_DIRECTORY_IS_SPECIFIED_ALL_LOG_FILES_IN_THAT_DIRECTORY_ARE_MERGED
.toLocalizedString());
err.println("");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
/**
@@ -340,7 +341,7 @@ public class MergeLogFiles {
mergeLogFiles(logFiles, logFileNames, mergedFile, tabOut, suppressBlanks, multithreaded,
patterns);
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
////////////////////// Inner Classes //////////////////////
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/logging/SortLogFile.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/logging/SortLogFile.java b/geode-core/src/main/java/org/apache/geode/internal/logging/SortLogFile.java
index af7010c..bc70bab 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/logging/SortLogFile.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/SortLogFile.java
@@ -14,10 +14,23 @@
*/
package org.apache.geode.internal.logging;
-import org.apache.geode.internal.i18n.LocalizedStrings;
-import java.io.*;
-import java.util.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.geode.internal.ExitCode;
+import org.apache.geode.internal.i18n.LocalizedStrings;
/**
* This program sorts the entries in a GemFire log file (one written using a
@@ -88,7 +101,7 @@ public class SortLogFile {
LocalizedStrings.SortLogFile_SORTS_A_GEMFIRE_LOG_FILE_BY_TIMESTAMP_THE_MERGED_LOG_FILE_IS_WRITTEN_TO_SYSTEM_OUT_OR_A_FILE
.toLocalizedString());
err.println("");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
public static void main(String[] args) throws IOException {
@@ -135,7 +148,7 @@ public class SortLogFile {
sortLogFile(logFileStream, pw);
- System.exit(0);
+ ExitCode.NORMAL.doSystemExit();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/sequencelog/io/GemfireLogConverter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/sequencelog/io/GemfireLogConverter.java b/geode-core/src/main/java/org/apache/geode/internal/sequencelog/io/GemfireLogConverter.java
index 8a2f3a9..b4a8d66 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/sequencelog/io/GemfireLogConverter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/sequencelog/io/GemfireLogConverter.java
@@ -23,12 +23,12 @@ import java.io.IOException;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.logging.DateFormatter;
import org.apache.geode.internal.sequencelog.GraphType;
import org.apache.geode.internal.sequencelog.Transition;
@@ -79,7 +79,7 @@ public class GemfireLogConverter {
if (args.length == 0) {
usage();
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
File outputFile = new File(args[0]);
http://git-wip-us.apache.org/repos/asf/geode/blob/9db5c8e5/geode-core/src/main/java/org/apache/geode/internal/statistics/ArchiveSplitter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/statistics/ArchiveSplitter.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/ArchiveSplitter.java
index 4d1d597..2336608 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/statistics/ArchiveSplitter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/statistics/ArchiveSplitter.java
@@ -14,13 +14,25 @@
*/
package org.apache.geode.internal.statistics;
-import org.apache.geode.*;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.geode.GemFireIOException;
+import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.i18n.LocalizedStrings;
-import java.io.*;
-// import java.text.*;
-// import java.util.*;
-import java.util.zip.*;
/**
* ArchiveSplitter provides APIs to read statistic snapshots from an archive file.
@@ -535,7 +547,7 @@ public class ArchiveSplitter implements StatArchiveFormat {
if (args.length != 1) {
System.err.println(LocalizedStrings.ArchiveSplitter_USAGE.toLocalizedString()
+ ": org.apache.geode.internal.statistics.ArchiveSplitter <archive.gfs>");
- System.exit(1);
+ ExitCode.FATAL.doSystemExit();
}
ArchiveSplitter as = new ArchiveSplitter(new File(args[0]));
as.split();
[17/50] [abbrv] geode git commit: GEODE-3253: Refactoring
ClientCommands and related tests
Posted by kl...@apache.org.
GEODE-3253: Refactoring ClientCommands and related tests
This closes #650
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/7ae99960
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/7ae99960
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/7ae99960
Branch: refs/heads/feature/GEODE-3299
Commit: 7ae99960fd7b8ea4848d1bc381cc0b8ac4b8c964
Parents: e0aa1b0
Author: YehEmily <em...@gmail.com>
Authored: Thu Jul 20 16:54:22 2017 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Wed Jul 26 15:14:31 2017 -0700
----------------------------------------------------------------------
.../internal/cli/commands/ClientCommands.java | 336 -----
.../cli/commands/DescribeClientCommand.java | 245 ++++
.../cli/commands/ListClientCommand.java | 128 ++
.../controllers/ClientCommandsController.java | 9 +-
.../internal/security/TestCommand.java | 2 +-
.../internal/JUnit4DistributedTestCase.java | 31 +-
.../cli/commands/ClientCommandsDUnitTest.java | 1178 ------------------
.../cli/commands/ClientCommandsTestUtils.java | 140 +++
.../DescribeClientCommandDUnitTest.java | 783 ++++++++++++
.../commands/ListClientCommandDUnitTest.java | 402 ++++++
10 files changed, 1720 insertions(+), 1534 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
deleted file mode 100644
index 83d1728..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * 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.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import javax.management.ObjectName;
-
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
-
-import org.apache.geode.cache.execute.FunctionService;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.CacheServerMXBean;
-import org.apache.geode.management.ClientHealthStatus;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.LogWrapper;
-import org.apache.geode.management.internal.cli.functions.ContinuousQueryFunction;
-import org.apache.geode.management.internal.cli.functions.ContinuousQueryFunction.ClientInfo;
-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.CompositeResultData.SectionResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
-import org.apache.geode.management.internal.security.ResourceOperation;
-import org.apache.geode.security.ResourcePermission.Operation;
-import org.apache.geode.security.ResourcePermission.Resource;
-
-/**
- * @since GemFire 8.0
- */
-public class ClientCommands implements GfshCommand {
-
- @CliCommand(value = CliStrings.LIST_CLIENTS, help = CliStrings.LIST_CLIENT__HELP)
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_CLIENT})
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
- public Result listClient() {
- Result result;
-
- try {
- CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData();
- SectionResultData section = compositeResultData.addSection("section1");
-
- TabularResultData resultTable = section.addTable("TableForClientList");
- String headerText = "ClientList";
- resultTable = resultTable.setHeader(headerText);
-
- InternalCache cache = getCache();
- ManagementService service = ManagementService.getExistingManagementService(cache);
- ObjectName[] cacheServers = service.getDistributedSystemMXBean().listCacheServerObjectNames();
-
- if (cacheServers.length == 0) {
- return ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.LIST_CLIENT_COULD_NOT_RETRIEVE_SERVER_LIST));
- }
-
- Map<String, List<String>> clientServerMap = new HashMap<>();
-
- for (ObjectName objName : cacheServers) {
- CacheServerMXBean serverMbean = service.getMBeanInstance(objName, CacheServerMXBean.class);
- String[] listOfClient = serverMbean.getClientIds();
-
- if (listOfClient == null || listOfClient.length == 0) {
- continue;
- }
-
-
- for (String clientName : listOfClient) {
- String serverDetails = "member=" + objName.getKeyProperty("member") + ",port="
- + objName.getKeyProperty("port");
- if (clientServerMap.containsKey(clientName)) {
- List<String> listServers = clientServerMap.get(clientName);
- listServers.add(serverDetails);
- } else {
- List<String> listServer = new ArrayList<>();
- listServer.add(serverDetails);
- clientServerMap.put(clientName, listServer);
- }
- }
- }
-
- if (clientServerMap.size() == 0) {
- return ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.LIST_COULD_NOT_RETRIEVE_CLIENT_LIST));
- }
-
- String memberSeparator = "; ";
-
- for (Entry<String, List<String>> pairs : clientServerMap.entrySet()) {
- String client = pairs.getKey();
- List<String> servers = pairs.getValue();
- StringBuilder serverListForClient = new StringBuilder();
- int serversSize = servers.size();
- int i = 0;
- for (String server : servers) {
- serverListForClient.append(server);
- if (i < serversSize - 1) {
- serverListForClient.append(memberSeparator);
- }
- i++;
- }
- resultTable.accumulate(CliStrings.LIST_CLIENT_COLUMN_Clients, client);
- resultTable.accumulate(CliStrings.LIST_CLIENT_COLUMN_SERVERS,
- serverListForClient.toString());
- }
- result = ResultBuilder.buildResult(compositeResultData);
-
- } catch (Exception e) {
- LogWrapper.getInstance()
- .warning("Error in list clients. stack trace" + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings
- .format(CliStrings.LIST_CLIENT_COULD_NOT_RETRIEVE_CLIENT_LIST_0, e.getMessage()));
- }
-
- LogWrapper.getInstance().info("list client result " + result);
-
- return result;
- }
-
- @CliCommand(value = CliStrings.DESCRIBE_CLIENT, help = CliStrings.DESCRIBE_CLIENT__HELP)
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_CLIENT})
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
- public Result describeClient(@CliOption(key = CliStrings.DESCRIBE_CLIENT__ID, mandatory = true,
- help = CliStrings.DESCRIBE_CLIENT__ID__HELP) String clientId) {
- Result result;
-
- if (clientId.startsWith("\"")) {
- clientId = clientId.substring(1);
- }
-
- if (clientId.endsWith("\"")) {
- clientId = clientId.substring(0, clientId.length() - 2);
- }
-
- if (clientId.endsWith("\";")) {
- clientId = clientId.substring(0, clientId.length() - 2);
- }
-
- try {
- CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData();
- SectionResultData sectionResult = compositeResultData.addSection("InfoSection");
- InternalCache cache = getCache();
-
- ManagementService service = ManagementService.getExistingManagementService(cache);
- ObjectName[] cacheServers = service.getDistributedSystemMXBean().listCacheServerObjectNames();
- if (cacheServers.length == 0) {
- return ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_SERVER_LIST));
- }
-
- ClientHealthStatus clientHealthStatus = null;
-
- for (ObjectName objName : cacheServers) {
- CacheServerMXBean serverMbean = service.getMBeanInstance(objName, CacheServerMXBean.class);
- List<String> listOfClient =
- new ArrayList<>(Arrays.asList((String[]) serverMbean.getClientIds()));
- if (listOfClient.contains(clientId)) {
- if (clientHealthStatus == null) {
- try {
- clientHealthStatus = serverMbean.showClientStats(clientId);
- if (clientHealthStatus == null) {
- return ResultBuilder.createGemFireErrorResult(CliStrings.format(
- CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_STATS_FOR_CLIENT_0, clientId));
- }
- } catch (Exception eee) {
- return ResultBuilder.createGemFireErrorResult(CliStrings.format(
- CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_STATS_FOR_CLIENT_0_REASON_1,
- clientId, eee.getMessage()));
- }
- }
- }
- }
-
- if (clientHealthStatus == null) {
- return ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.DESCRIBE_CLIENT__CLIENT__ID__NOT__FOUND__0, clientId));
- }
-
- Set<DistributedMember> dsMembers = CliUtil.getAllMembers(cache);
- String isDurable = null;
- List<String> primaryServers = new ArrayList<>();
- List<String> secondaryServers = new ArrayList<>();
-
- if (dsMembers.size() > 0) {
- ContinuousQueryFunction continuousQueryFunction = new ContinuousQueryFunction();
- FunctionService.registerFunction(continuousQueryFunction);
- List<?> resultList = (List<?>) CliUtil
- .executeFunction(continuousQueryFunction, clientId, dsMembers).getResult();
- for (Object aResultList : resultList) {
- try {
- Object object = aResultList;
- if (object instanceof Throwable) {
- LogWrapper.getInstance().warning(
- "Exception in Describe Client " + ((Throwable) object).getMessage(),
- ((Throwable) object));
- continue;
- }
-
- if (object != null) {
- ClientInfo objectResult = (ClientInfo) object;
- isDurable = objectResult.isDurable;
-
- if (objectResult.primaryServer != null && objectResult.primaryServer.length() > 0) {
- if (primaryServers.size() == 0) {
- primaryServers.add(objectResult.primaryServer);
- } else {
- primaryServers.add(" ,");
- primaryServers.add(objectResult.primaryServer);
- }
- }
-
- if (objectResult.secondaryServer != null
- && objectResult.secondaryServer.length() > 0) {
- if (secondaryServers.size() == 0) {
- secondaryServers.add(objectResult.secondaryServer);
- } else {
- secondaryServers.add(" ,");
- secondaryServers.add(objectResult.secondaryServer);
- }
- }
- }
- } catch (Exception e) {
- LogWrapper.getInstance().info(CliStrings.DESCRIBE_CLIENT_ERROR_FETCHING_STATS_0 + " :: "
- + CliUtil.stackTraceAsString(e));
- return ResultBuilder.createGemFireErrorResult(CliStrings
- .format(CliStrings.DESCRIBE_CLIENT_ERROR_FETCHING_STATS_0, e.getMessage()));
- }
- }
-
- buildTableResult(sectionResult, clientHealthStatus, isDurable, primaryServers,
- secondaryServers);
- result = ResultBuilder.buildResult(compositeResultData);
- } else {
- return ResultBuilder.createGemFireErrorResult(CliStrings.DESCRIBE_CLIENT_NO_MEMBERS);
- }
- } catch (Exception e) {
- LogWrapper.getInstance()
- .info("Error in describe clients. stack trace" + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings
- .format(CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_CLIENT_0, e.getMessage()));
- }
- LogWrapper.getInstance().info("describe client result " + result);
- return result;
- }
-
- private void buildTableResult(SectionResultData sectionResult,
- ClientHealthStatus clientHealthStatus, String isDurable, List<String> primaryServers,
- List<String> secondaryServers) {
-
- StringBuilder primServers = new StringBuilder();
- for (String primaryServer : primaryServers) {
- primServers.append(primaryServer);
- }
-
- StringBuilder secondServers = new StringBuilder();
- for (String secondServer : secondaryServers) {
- secondServers.append(secondServer);
- }
- if (clientHealthStatus != null) {
- sectionResult.addSeparator('-');
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS, primServers);
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_SECONDARY_SERVERS, secondServers);
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU, clientHealthStatus.getCpus());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS,
- clientHealthStatus.getNumOfCacheListenerCalls());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_GETS,
- clientHealthStatus.getNumOfGets());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_MISSES,
- clientHealthStatus.getNumOfMisses());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS,
- clientHealthStatus.getNumOfPuts());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS,
- clientHealthStatus.getNumOfThreads());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME,
- clientHealthStatus.getProcessCpuTime());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE,
- clientHealthStatus.getQueueSize());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME,
- clientHealthStatus.getUpTime());
- sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE, isDurable);
- sectionResult.addSeparator('-');
-
- Map<String, String> poolStats = clientHealthStatus.getPoolStats();
-
- if (poolStats.size() > 0) {
- for (Entry<String, String> entry : poolStats.entrySet()) {
- TabularResultData poolStatsResultTable =
- sectionResult.addTable("Pool Stats For Pool Name = " + entry.getKey());
- poolStatsResultTable.setHeader("Pool Stats For Pool Name = " + entry.getKey());
- String poolStatsStr = entry.getValue();
- String str[] = poolStatsStr.split(";");
-
- LogWrapper.getInstance().info("describe client clientHealthStatus min conn="
- + str[0].substring(str[0].indexOf("=") + 1));
- LogWrapper.getInstance().info("describe client clientHealthStatus max conn ="
- + str[1].substring(str[1].indexOf("=") + 1));
- LogWrapper.getInstance().info("describe client clientHealthStatus redundancy ="
- + str[2].substring(str[2].indexOf("=") + 1));
- LogWrapper.getInstance().info("describe client clientHealthStatus CQs ="
- + str[3].substring(str[3].indexOf("=") + 1));
-
- poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_MIN_CONN,
- str[0].substring(str[0].indexOf("=") + 1));
- poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_MAX_CONN,
- str[1].substring(str[1].indexOf("=") + 1));
- poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_REDUNDANCY,
- str[2].substring(str[2].indexOf("=") + 1));
- poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_CQs,
- str[3].substring(str[3].indexOf("=") + 1));
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommand.java
new file mode 100644
index 0000000..9b37f12
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommand.java
@@ -0,0 +1,245 @@
+/*
+ * 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.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.execute.FunctionService;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.CacheServerMXBean;
+import org.apache.geode.management.ClientHealthStatus;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.functions.ContinuousQueryFunction;
+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.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class DescribeClientCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.DESCRIBE_CLIENT, help = CliStrings.DESCRIBE_CLIENT__HELP)
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_CLIENT})
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.READ)
+ public Result describeClient(@CliOption(key = CliStrings.DESCRIBE_CLIENT__ID, mandatory = true,
+ help = CliStrings.DESCRIBE_CLIENT__ID__HELP) String clientId) {
+ Result result;
+
+ if (clientId.startsWith("\"")) {
+ clientId = clientId.substring(1);
+ }
+
+ if (clientId.endsWith("\"")) {
+ clientId = clientId.substring(0, clientId.length() - 2);
+ }
+
+ if (clientId.endsWith("\";")) {
+ clientId = clientId.substring(0, clientId.length() - 2);
+ }
+
+ try {
+ CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData();
+ CompositeResultData.SectionResultData sectionResult =
+ compositeResultData.addSection("InfoSection");
+ InternalCache cache = getCache();
+
+ ManagementService service = ManagementService.getExistingManagementService(cache);
+ ObjectName[] cacheServers = service.getDistributedSystemMXBean().listCacheServerObjectNames();
+ if (cacheServers.length == 0) {
+ return ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_SERVER_LIST));
+ }
+
+ ClientHealthStatus clientHealthStatus = null;
+
+ for (ObjectName objName : cacheServers) {
+ CacheServerMXBean serverMbean = service.getMBeanInstance(objName, CacheServerMXBean.class);
+ List<String> listOfClient =
+ new ArrayList<>(Arrays.asList((String[]) serverMbean.getClientIds()));
+ if (listOfClient.contains(clientId)) {
+ if (clientHealthStatus == null) {
+ try {
+ clientHealthStatus = serverMbean.showClientStats(clientId);
+ if (clientHealthStatus == null) {
+ return ResultBuilder.createGemFireErrorResult(CliStrings.format(
+ CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_STATS_FOR_CLIENT_0, clientId));
+ }
+ } catch (Exception eee) {
+ return ResultBuilder.createGemFireErrorResult(CliStrings.format(
+ CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_STATS_FOR_CLIENT_0_REASON_1,
+ clientId, eee.getMessage()));
+ }
+ }
+ }
+ }
+
+ if (clientHealthStatus == null) {
+ return ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.DESCRIBE_CLIENT__CLIENT__ID__NOT__FOUND__0, clientId));
+ }
+
+ Set<DistributedMember> dsMembers = CliUtil.getAllMembers(cache);
+ String isDurable = null;
+ List<String> primaryServers = new ArrayList<>();
+ List<String> secondaryServers = new ArrayList<>();
+
+ if (dsMembers.size() > 0) {
+ ContinuousQueryFunction continuousQueryFunction = new ContinuousQueryFunction();
+ FunctionService.registerFunction(continuousQueryFunction);
+ List<?> resultList = (List<?>) CliUtil
+ .executeFunction(continuousQueryFunction, clientId, dsMembers).getResult();
+ for (Object aResultList : resultList) {
+ try {
+ Object object = aResultList;
+ if (object instanceof Throwable) {
+ LogWrapper.getInstance().warning(
+ "Exception in Describe Client " + ((Throwable) object).getMessage(),
+ ((Throwable) object));
+ continue;
+ }
+
+ if (object != null) {
+ ContinuousQueryFunction.ClientInfo objectResult =
+ (ContinuousQueryFunction.ClientInfo) object;
+ isDurable = objectResult.isDurable;
+
+ if (objectResult.primaryServer != null && objectResult.primaryServer.length() > 0) {
+ if (primaryServers.size() == 0) {
+ primaryServers.add(objectResult.primaryServer);
+ } else {
+ primaryServers.add(" ,");
+ primaryServers.add(objectResult.primaryServer);
+ }
+ }
+
+ if (objectResult.secondaryServer != null
+ && objectResult.secondaryServer.length() > 0) {
+ if (secondaryServers.size() == 0) {
+ secondaryServers.add(objectResult.secondaryServer);
+ } else {
+ secondaryServers.add(" ,");
+ secondaryServers.add(objectResult.secondaryServer);
+ }
+ }
+ }
+ } catch (Exception e) {
+ LogWrapper.getInstance().info(CliStrings.DESCRIBE_CLIENT_ERROR_FETCHING_STATS_0 + " :: "
+ + CliUtil.stackTraceAsString(e));
+ return ResultBuilder.createGemFireErrorResult(CliStrings
+ .format(CliStrings.DESCRIBE_CLIENT_ERROR_FETCHING_STATS_0, e.getMessage()));
+ }
+ }
+
+ buildTableResult(sectionResult, clientHealthStatus, isDurable, primaryServers,
+ secondaryServers);
+ result = ResultBuilder.buildResult(compositeResultData);
+ } else {
+ return ResultBuilder.createGemFireErrorResult(CliStrings.DESCRIBE_CLIENT_NO_MEMBERS);
+ }
+ } catch (Exception e) {
+ LogWrapper.getInstance()
+ .info("Error in describe clients. stack trace" + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings
+ .format(CliStrings.DESCRIBE_CLIENT_COULD_NOT_RETRIEVE_CLIENT_0, e.getMessage()));
+ }
+ LogWrapper.getInstance().info("describe client result " + result);
+ return result;
+ }
+
+ private void buildTableResult(CompositeResultData.SectionResultData sectionResult,
+ ClientHealthStatus clientHealthStatus, String isDurable, List<String> primaryServers,
+ List<String> secondaryServers) {
+
+ StringBuilder primServers = new StringBuilder();
+ for (String primaryServer : primaryServers) {
+ primServers.append(primaryServer);
+ }
+
+ StringBuilder secondServers = new StringBuilder();
+ for (String secondServer : secondaryServers) {
+ secondServers.append(secondServer);
+ }
+ if (clientHealthStatus != null) {
+ sectionResult.addSeparator('-');
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_PRIMARY_SERVERS, primServers);
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_SECONDARY_SERVERS, secondServers);
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_CPU, clientHealthStatus.getCpus());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_LISTENER_CALLS,
+ clientHealthStatus.getNumOfCacheListenerCalls());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_GETS,
+ clientHealthStatus.getNumOfGets());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_MISSES,
+ clientHealthStatus.getNumOfMisses());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_PUTS,
+ clientHealthStatus.getNumOfPuts());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_THREADS,
+ clientHealthStatus.getNumOfThreads());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_PROCESS_CPU_TIME,
+ clientHealthStatus.getProcessCpuTime());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_QUEUE_SIZE,
+ clientHealthStatus.getQueueSize());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_UP_TIME,
+ clientHealthStatus.getUpTime());
+ sectionResult.addData(CliStrings.DESCRIBE_CLIENT_COLUMN_DURABLE, isDurable);
+ sectionResult.addSeparator('-');
+
+ Map<String, String> poolStats = clientHealthStatus.getPoolStats();
+
+ if (poolStats.size() > 0) {
+ for (Map.Entry<String, String> entry : poolStats.entrySet()) {
+ TabularResultData poolStatsResultTable =
+ sectionResult.addTable("Pool Stats For Pool Name = " + entry.getKey());
+ poolStatsResultTable.setHeader("Pool Stats For Pool Name = " + entry.getKey());
+ String poolStatsStr = entry.getValue();
+ String str[] = poolStatsStr.split(";");
+
+ LogWrapper.getInstance().info("describe client clientHealthStatus min conn="
+ + str[0].substring(str[0].indexOf("=") + 1));
+ LogWrapper.getInstance().info("describe client clientHealthStatus max conn ="
+ + str[1].substring(str[1].indexOf("=") + 1));
+ LogWrapper.getInstance().info("describe client clientHealthStatus redundancy ="
+ + str[2].substring(str[2].indexOf("=") + 1));
+ LogWrapper.getInstance().info("describe client clientHealthStatus CQs ="
+ + str[3].substring(str[3].indexOf("=") + 1));
+
+ poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_MIN_CONN,
+ str[0].substring(str[0].indexOf("=") + 1));
+ poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_MAX_CONN,
+ str[1].substring(str[1].indexOf("=") + 1));
+ poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_REDUNDANCY,
+ str[2].substring(str[2].indexOf("=") + 1));
+ poolStatsResultTable.accumulate(CliStrings.DESCRIBE_CLIENT_CQs,
+ str[3].substring(str[3].indexOf("=") + 1));
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListClientCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListClientCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListClientCommand.java
new file mode 100644
index 0000000..c2b6425
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListClientCommand.java
@@ -0,0 +1,128 @@
+/*
+ * 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.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.CacheServerMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+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.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class ListClientCommand implements GfshCommand {
+ @CliCommand(value = CliStrings.LIST_CLIENTS, help = CliStrings.LIST_CLIENT__HELP)
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_CLIENT})
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.READ)
+ public Result listClient() {
+ Result result;
+
+ try {
+ CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData();
+ CompositeResultData.SectionResultData section = compositeResultData.addSection("section1");
+
+ TabularResultData resultTable = section.addTable("TableForClientList");
+ String headerText = "ClientList";
+ resultTable = resultTable.setHeader(headerText);
+
+ InternalCache cache = getCache();
+ ManagementService service = ManagementService.getExistingManagementService(cache);
+ ObjectName[] cacheServers = service.getDistributedSystemMXBean().listCacheServerObjectNames();
+
+ if (cacheServers.length == 0) {
+ return ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.LIST_CLIENT_COULD_NOT_RETRIEVE_SERVER_LIST));
+ }
+
+ Map<String, List<String>> clientServerMap = new HashMap<>();
+
+ for (ObjectName objName : cacheServers) {
+ CacheServerMXBean serverMbean = service.getMBeanInstance(objName, CacheServerMXBean.class);
+ String[] listOfClient = serverMbean.getClientIds();
+
+ if (listOfClient == null || listOfClient.length == 0) {
+ continue;
+ }
+
+
+ for (String clientName : listOfClient) {
+ String serverDetails = "member=" + objName.getKeyProperty("member") + ",port="
+ + objName.getKeyProperty("port");
+ if (clientServerMap.containsKey(clientName)) {
+ List<String> listServers = clientServerMap.get(clientName);
+ listServers.add(serverDetails);
+ } else {
+ List<String> listServer = new ArrayList<>();
+ listServer.add(serverDetails);
+ clientServerMap.put(clientName, listServer);
+ }
+ }
+ }
+
+ if (clientServerMap.size() == 0) {
+ return ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.LIST_COULD_NOT_RETRIEVE_CLIENT_LIST));
+ }
+
+ String memberSeparator = "; ";
+
+ for (Map.Entry<String, List<String>> pairs : clientServerMap.entrySet()) {
+ String client = pairs.getKey();
+ List<String> servers = pairs.getValue();
+ StringBuilder serverListForClient = new StringBuilder();
+ int serversSize = servers.size();
+ int i = 0;
+ for (String server : servers) {
+ serverListForClient.append(server);
+ if (i < serversSize - 1) {
+ serverListForClient.append(memberSeparator);
+ }
+ i++;
+ }
+ resultTable.accumulate(CliStrings.LIST_CLIENT_COLUMN_Clients, client);
+ resultTable.accumulate(CliStrings.LIST_CLIENT_COLUMN_SERVERS,
+ serverListForClient.toString());
+ }
+ result = ResultBuilder.buildResult(compositeResultData);
+
+ } catch (Exception e) {
+ LogWrapper.getInstance()
+ .warning("Error in list clients. stack trace" + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings
+ .format(CliStrings.LIST_CLIENT_COULD_NOT_RETRIEVE_CLIENT_LIST_0, e.getMessage()));
+ }
+
+ LogWrapper.getInstance().info("list client result " + result);
+
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ClientCommandsController.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ClientCommandsController.java b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ClientCommandsController.java
index d07ea9a..e8df505 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ClientCommandsController.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ClientCommandsController.java
@@ -14,20 +14,21 @@
*/
package org.apache.geode.management.internal.web.controllers;
-import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
-
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
+
/**
* The ShellCommandsController class implements GemFire REST API calls for Gfsh Shell Commands.
* <p/>
*
- * @see org.apache.geode.management.internal.cli.commands.ClientCommands
+ * @see org.apache.geode.management.internal.cli.commands.ListClientCommand
+ * @see org.apache.geode.management.internal.cli.commands.DescribeClientCommand
* @see org.apache.geode.management.internal.web.controllers.AbstractCommandsController
* @see org.springframework.stereotype.Controller
* @see org.springframework.web.bind.annotation.RequestMapping
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-core/src/test/java/org/apache/geode/management/internal/security/TestCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/TestCommand.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/TestCommand.java
index d2fdace..f380d88 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/TestCommand.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/TestCommand.java
@@ -119,7 +119,7 @@ public class TestCommand {
}
private static void init() {
- // ClientCommands
+ // ListClientCommand, DescribeClientCommand
createTestCommand("list clients", clusterRead);
createTestCommand("describe client --clientID=172.16.196.144", clusterRead);
http://git-wip-us.apache.org/repos/asf/geode/blob/7ae99960/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java b/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
index 110d649..9f13dfb 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
@@ -20,6 +20,20 @@ import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import static org.apache.geode.distributed.ConfigurationProperties.STATISTIC_ARCHIVE_FILE;
import static org.junit.Assert.assertNotNull;
+import java.io.Serializable;
+import java.text.DecimalFormat;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.logging.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+
import org.apache.geode.admin.internal.AdminDistributedSystemImpl;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
@@ -57,19 +71,6 @@ import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.LogWriterUtils;
import org.apache.geode.test.dunit.standalone.DUnitLauncher;
import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-
-import java.io.Serializable;
-import java.text.DecimalFormat;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
/**
* This class is the base class for all distributed tests using JUnit 4.
@@ -210,8 +211,8 @@ public abstract class JUnit4DistributedTestCase implements DistributedTestFixtur
}
} else {
Properties activeProps = system.getProperties();
- for (Iterator iter = props.entrySet().iterator(); iter.hasNext();) {
- Map.Entry entry = (Map.Entry) iter.next();
+ for (Map.Entry<Object, Object> objectObjectEntry : props.entrySet()) {
+ Map.Entry entry = objectObjectEntry;
String key = (String) entry.getKey();
String value = (String) entry.getValue();
if (!value.equals(activeProps.getProperty(key))) {
[24/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..61d512f
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/ResumeGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,263 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class ResumeGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+ @Test
+ public void testResumeGatewaySender_ErrorConditions() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
+ + "=SenderGroup1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testResumeGatewaySender_ErrorConditions stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.ERROR, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
+ } else {
+ fail("testPauseGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ @Test
+ public void testResumeGatewaySender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ vm3.invoke(() -> pauseSender("ln"));
+ vm4.invoke(() -> pauseSender("ln"));
+ vm5.invoke(() -> pauseSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ vm4.invoke(() -> verifySenderState("ln", true, true));
+ vm5.invoke(() -> verifySenderState("ln", true, true));
+
+ pause(10000);
+ String command =
+ CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID + "=ln";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(5, status.size());
+ assertTrue(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testResumeGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a member
+ */
+ @Test
+ public void testResumeGatewaySender_onMember() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm3.invoke(() -> pauseSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains("is resumed on member"));
+ } else {
+ fail("testResumeGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a group of members
+ */
+ @Test
+ public void testResumeGatewaySender_Group() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+
+ vm3.invoke(() -> pauseSender("ln"));
+ vm4.invoke(() -> pauseSender("ln"));
+ vm5.invoke(() -> pauseSender("ln"));
+
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ vm4.invoke(() -> verifySenderState("ln", true, true));
+ vm5.invoke(() -> verifySenderState("ln", true, true));
+
+ pause(10000);
+ String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testResumeGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ /**
+ * Test to validate the scenario gateway sender is started when one or more sender members belongs
+ * to multiple groups
+ */
+ @Test
+ public void testResumeGatewaySender_MultipleGroup() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm6.invoke(() -> startSender("ln"));
+ vm7.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ vm6.invoke(() -> verifySenderState("ln", true, false));
+ vm7.invoke(() -> verifySenderState("ln", true, false));
+ vm3.invoke(() -> pauseSender("ln"));
+ vm4.invoke(() -> pauseSender("ln"));
+ vm5.invoke(() -> pauseSender("ln"));
+ vm6.invoke(() -> pauseSender("ln"));
+ vm7.invoke(() -> pauseSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, true));
+ vm4.invoke(() -> verifySenderState("ln", true, true));
+ vm5.invoke(() -> verifySenderState("ln", true, true));
+ vm6.invoke(() -> verifySenderState("ln", true, true));
+ vm7.invoke(() -> verifySenderState("ln", true, true));
+
+ pause(10000);
+ String command = CliStrings.RESUME_GATEWAYSENDER + " --" + CliStrings.RESUME_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testResumeGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testResumeGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ vm6.invoke(() -> verifySenderState("ln", true, false));
+ vm7.invoke(() -> verifySenderState("ln", true, true));
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
new file mode 100644
index 0000000..e84b8e3
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewayReceiverCommandDUnitTest.java
@@ -0,0 +1,224 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
+
+@Category(DistributedTest.class)
+public class StartGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
+ /**
+ * Test wan commands for error in input 1> start gateway-sender command needs only one of member
+ * or group.
+ */
+ @Test
+ public void testStartGatewayReceiver_ErrorConditions() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createReceiver(punePort));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
+ + vm1Member.getId() + " --" + CliStrings.GROUP + "=RG1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testStartGatewayReceiver_ErrorConditions stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.ERROR, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
+ } else {
+ fail("testStartGatewayReceiver_ErrorConditions failed as did not get CommandResult");
+ }
+ }
+
+ @Category(FlakyTest.class) // GEODE-1448
+ @Test
+ public void testStartGatewayReceiver() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createReceiver(punePort));
+ vm4.invoke(() -> createReceiver(punePort));
+ vm5.invoke(() -> createReceiver(punePort));
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+
+ pause(10000);
+ String command = CliStrings.START_GATEWAYRECEIVER;
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertTrue(status.contains("Error"));
+ } else {
+ fail("testStartGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a member
+ */
+ @Test
+ public void testStartGatewayReceiver_onMember() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createReceiver(punePort));
+ vm4.invoke(() -> createReceiver(punePort));
+ vm5.invoke(() -> createReceiver(punePort));
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+
+ final DistributedMember vm1Member = vm3.invoke(() -> getMember());
+ pause(10000);
+ String command =
+ CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testStartGatewayReceiver_onMember stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains("is started on member"));
+ } else {
+ fail("testStartGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a group of members
+ */
+ @Test
+ public void testStartGatewayReceiver_Group() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
+ vm4.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
+ vm5.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+
+ pause(10000);
+ String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStartGatewayReceiver_Group failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+ }
+
+ /**
+ * Test to validate the scenario gateway sender is started when one or more sender members belongs
+ * to multiple groups
+ *
+ */
+ @Test
+ public void testStartGatewayReceiver_MultipleGroup() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
+ vm4.invoke(() -> createReceiverWithGroup(punePort, "RG1"));
+ vm5.invoke(() -> createReceiverWithGroup(punePort, "RG1, RG2"));
+ vm6.invoke(() -> createReceiverWithGroup(punePort, "RG1, RG2"));
+ vm7.invoke(() -> createReceiverWithGroup(punePort, "RG3"));
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+ vm6.invoke(() -> verifyReceiverState(false));
+ vm7.invoke(() -> verifyReceiverState(false));
+
+ pause(10000);
+ String command = CliStrings.START_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1,RG2";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStartGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+ vm6.invoke(() -> verifyReceiverState(true));
+ vm7.invoke(() -> verifyReceiverState(false));
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..57b3072
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StartGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,275 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class StartGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+ /**
+ * Test wan commands for error in input 1> start gateway-sender command needs only one of member
+ * or group.
+ */
+ @Test
+ public void testStartGatewaySender_ErrorConditions() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
+ + "=SenserGroup1";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.ERROR, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
+ } else {
+ fail("testStartGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ @Test
+ public void testStartGatewaySender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+
+ pause(10000);
+ String command =
+ CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID + "=ln";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(5, status.size());
+ assertTrue(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStartGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a member
+ */
+ @Test
+ public void testStartGatewaySender_onMember() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains("is started on member"));
+ } else {
+ fail("testStartGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a group of members
+ */
+ @Test
+ public void testStartGatewaySender_Group() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+
+ pause(10000);
+ String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStartGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ /**
+ * Test to validate the scenario gateway sender is started when one or more sender members belongs
+ * to multiple groups
+ */
+ @Test
+ public void testStartGatewaySender_MultipleGroup() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ vm6.invoke(() -> verifySenderState("ln", false, false));
+ vm7.invoke(() -> verifySenderState("ln", false, false));
+
+ pause(10000);
+ String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStartGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ vm6.invoke(() -> verifySenderState("ln", true, false));
+ vm7.invoke(() -> verifySenderState("ln", false, false));
+ }
+
+ /**
+ * Test to validate the test scenario when one of the member ion group does not have the sender.
+ */
+ @Test
+ public void testStartGatewaySender_Group_MissingSenderFromGroup() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+
+ pause(10000);
+ String command = CliStrings.START_GATEWAYSENDER + " --" + CliStrings.START_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ assertTrue(strCmdResult.contains("Error"));
+ assertTrue(strCmdResult.contains("is not available"));
+ getLogWriter().info("testStartGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertTrue(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStartGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ private CommandResult executeCommandWithIgnoredExceptions(String command) {
+ final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
+ try {
+ return executeCommand(command);
+ } finally {
+ exln.remove();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java
new file mode 100644
index 0000000..32206c5
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewayReceiverCommandDUnitTest.java
@@ -0,0 +1,206 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.CompositeResultData;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
+
+@Category(DistributedTest.class)
+public class StatusGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
+ @Test
+ public void testGatewayReceiverStatus() {
+ Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(lnPort);
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
+
+ vm6.invoke(() -> createAndStartReceiver(nyPort));
+ vm3.invoke(() -> createAndStartReceiver(lnPort));
+ vm4.invoke(() -> createAndStartReceiver(lnPort));
+ vm5.invoke(() -> createAndStartReceiver(lnPort));
+
+ pause(10000);
+ String command = CliStrings.STATUS_GATEWAYRECEIVER;
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(3, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
+ tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+ assertEquals(2, result_hosts.size());
+ } else {
+ fail("testGatewayReceiverStatus failed as did not get CommandResult");
+ }
+ vm3.invoke(this::stopReceiver);
+ vm4.invoke(this::stopReceiver);
+ vm5.invoke(this::stopReceiver);
+ pause(10000);
+ command = CliStrings.STATUS_GATEWAYRECEIVER;
+ cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(3, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
+ tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+ assertEquals(2, result_hosts.size());
+ } else {
+ fail("testGatewayReceiverStatus failed as did not get CommandResult");
+ }
+ }
+
+ @Category(FlakyTest.class) // GEODE-1395
+ @Test
+ public void testGatewayReceiverStatus_OnMember() {
+ Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(lnPort);
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
+
+ vm6.invoke(() -> createAndStartReceiver(nyPort));
+ vm3.invoke(() -> createAndStartReceiver(lnPort));
+ vm4.invoke(() -> createAndStartReceiver(lnPort));
+ vm5.invoke(() -> createAndStartReceiver(lnPort));
+
+ final DistributedMember vm3Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command =
+ CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm3Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(1, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
+ } else {
+ fail("testGatewayReceiverStatus failed as did not get CommandResult");
+ }
+ vm3.invoke(this::stopReceiver);
+ vm4.invoke(this::stopReceiver);
+ vm5.invoke(this::stopReceiver);
+
+ pause(10000);
+ command =
+ CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm3Member.getId();
+ cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(1, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
+ } else {
+ fail("testGatewayReceiverStatus failed as did not get CommandResult");
+ }
+ }
+
+ @Test
+ public void testGatewayReceiverStatus_OnGroups() {
+ Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(lnPort);
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
+
+ vm7.invoke(() -> createAndStartReceiver(nyPort));
+ vm3.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG1, RG2"));
+ vm4.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG1, RG2"));
+ vm5.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG1"));
+ vm6.invoke(() -> createAndStartReceiverWithGroup(lnPort, "RG2"));
+
+ pause(10000);
+ String command = CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewayReceiverStatus : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(3, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
+ } else {
+ fail("testGatewayReceiverStatus failed as did not get CommandResult");
+ }
+ vm3.invoke(this::stopReceiver);
+ vm4.invoke(this::stopReceiver);
+ vm5.invoke(this::stopReceiver);
+
+ pause(10000);
+ command = CliStrings.STATUS_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
+ cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewayReceiverStatus_OnGroups : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_RECEIVER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(3, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
+ } else {
+ fail("testGatewayReceiverStatus failed as did not get CommandResult");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..064bfe7
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StatusGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,251 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.CompositeResultData;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class StatusGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+ @Test
+ public void testGatewaySenderStatus() {
+ Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(lnPort);
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
+
+ vm6.invoke(() -> createAndStartReceiver(nyPort));
+ vm3.invoke(() -> createCache(lnPort));
+ vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCache(lnPort));
+ vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCache(lnPort));
+ vm5.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+
+ pause(10000);
+ String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(3, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
+ tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+ assertEquals(2, result_hosts.size());
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> startSender("ln_Serial"));
+ vm3.invoke(() -> startSender("ln_Parallel"));
+ vm4.invoke(() -> startSender("ln_Serial"));
+ vm4.invoke(() -> startSender("ln_Parallel"));
+ vm5.invoke(() -> startSender("ln_Serial"));
+ vm5.invoke(() -> startSender("ln_Parallel"));
+
+ pause(10000);
+ command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial";
+ cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(3, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
+ tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+ assertEquals(2, result_hosts.size());
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ @Test
+ public void testGatewaySenderStatus_OnMember() {
+ Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(lnPort);
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
+
+ vm6.invoke(() -> createAndStartReceiver(nyPort));
+ vm3.invoke(() -> createCache(lnPort));
+ vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCache(lnPort));
+ vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCache(lnPort));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(1, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> startSender("ln_Serial"));
+ vm3.invoke(() -> startSender("ln_Parallel"));
+ vm4.invoke(() -> startSender("ln_Serial"));
+ vm4.invoke(() -> startSender("ln_Parallel"));
+
+ pause(10000);
+ command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(1, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ final DistributedMember vm5Member = vm5.invoke(this::getMember);
+ command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial --" + CliStrings.MEMBER + "=" + vm5Member.getId();
+ cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus_OnMember : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ @Test
+ public void testGatewaySenderStatus_OnGroups() {
+ Integer lnPort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(lnPort);
+ Integer nyPort = vm2.invoke(() -> createFirstRemoteLocator(2, lnPort));
+
+ vm7.invoke(() -> createAndStartReceiver(nyPort));
+ vm3.invoke(() -> createCacheWithGroups(lnPort, "Serial_Sender, Parallel_Sender"));
+ vm3.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(lnPort, "Serial_Sender, Parallel_Sender"));
+ vm4.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(lnPort, "Parallel_Sender"));
+ vm5.invoke(() -> createSender("ln_Serial", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createSender("ln_Parallel", 2, true, 100, 400, false, false, null, true));
+ vm6.invoke(() -> createCacheWithGroups(lnPort, "Serial_Sender"));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial --" + CliStrings.GROUP + "=Serial_Sender";
+ CommandResult cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(2, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_RUNNING));
+ tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+ assertEquals(1, result_hosts.size());
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus_OnGroups : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> startSender("ln_Serial"));
+ vm3.invoke(() -> startSender("ln_Parallel"));
+ vm4.invoke(() -> startSender("ln_Serial"));
+ vm4.invoke(() -> startSender("ln_Parallel"));
+
+ pause(10000);
+ command = CliStrings.STATUS_GATEWAYSENDER + " --" + CliStrings.STATUS_GATEWAYSENDER__ID
+ + "=ln_Serial --" + CliStrings.GROUP + "=Serial_Sender";
+ cmdResult = executeCommand(command);
+
+ if (cmdResult != null) {
+ TabularResultData tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_Status = tableResultData.retrieveAllValues(CliStrings.RESULT_STATUS);
+ assertEquals(2, result_Status.size());
+ assertFalse(result_Status.contains(CliStrings.GATEWAY_NOT_RUNNING));
+ tableResultData = ((CompositeResultData) cmdResult.getResultData())
+ .retrieveSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
+ .retrieveTable(CliStrings.TABLE_GATEWAY_SENDER);
+ List<String> result_hosts = tableResultData.retrieveAllValues(CliStrings.RESULT_HOST_MEMBER);
+ assertEquals(1, result_hosts.size());
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testGatewaySenderStatus_OnGroups : " + strCmdResult + ">>>>> ");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ } else {
+ fail("testListGatewaySender failed as did not get CommandResult");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
new file mode 100644
index 0000000..70b94be
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewayReceiverCommandDUnitTest.java
@@ -0,0 +1,221 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.categories.FlakyTest;
+
+@Category(DistributedTest.class)
+public class StopGatewayReceiverCommandDUnitTest extends WANCommandTestBase {
+ /**
+ * Test wan commands for error in input 1> start gateway-sender command needs only one of member
+ * or group.
+ */
+ @Test
+ public void testStopGatewayReceiver_ErrorConditions() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createReceiver(punePort));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "="
+ + vm1Member.getId() + " --" + CliStrings.GROUP + "=RG1";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testStopGatewayReceiver_ErrorConditions stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.ERROR, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
+ } else {
+ fail("testStopGatewayReceiver_ErrorConditions failed as did not get CommandResult");
+ }
+ }
+
+ @Category(FlakyTest.class) // GEODE-1418
+ @Test
+ public void testStopGatewayReceiver() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createAndStartReceiver(punePort));
+ vm4.invoke(() -> createAndStartReceiver(punePort));
+ vm5.invoke(() -> createAndStartReceiver(punePort));
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+
+ pause(10000);
+ String command = CliStrings.STOP_GATEWAYRECEIVER;
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewayReceiver stringResult : " + strCmdResult + ">>>>");
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertTrue(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStopGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a member
+ */
+ @Test
+ public void testStopGatewayReceiver_onMember() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createAndStartReceiver(punePort));
+ vm4.invoke(() -> createAndStartReceiver(punePort));
+ vm5.invoke(() -> createAndStartReceiver(punePort));
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command =
+ CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter()
+ .info("testStopGatewayReceiver_onMember stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains("stopped on member"));
+ } else {
+ fail("testStopGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a group of members
+ */
+ @Test
+ public void testStopGatewayReceiver_Group() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm4.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm5.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+
+ pause(10000);
+ String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStopGatewayReceiver_Group failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+ }
+
+ /**
+ * Test to validate the scenario gateway sender is started when one or more sender members belongs
+ * to multiple groups
+ *
+ */
+ @Test
+ public void testStopGatewayReceiver_MultipleGroup() {
+ VM puneLocator = Host.getLocator();
+ int punePort = puneLocator.invoke(this::getLocatorPort);
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm4.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm5.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1"));
+ vm6.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG1, RG2"));
+ vm7.invoke(() -> createAndStartReceiverWithGroup(punePort, "RG3"));
+ vm3.invoke(() -> verifyReceiverState(true));
+ vm4.invoke(() -> verifyReceiverState(true));
+ vm5.invoke(() -> verifyReceiverState(true));
+ vm6.invoke(() -> verifyReceiverState(true));
+ vm7.invoke(() -> verifyReceiverState(true));
+
+ pause(10000);
+ String command = CliStrings.STOP_GATEWAYRECEIVER + " --" + CliStrings.GROUP + "=RG1,RG2";
+ CommandResult cmdResult = executeCommand(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewayReceiver_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStopGatewayReceiver failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifyReceiverState(false));
+ vm4.invoke(() -> verifyReceiverState(false));
+ vm5.invoke(() -> verifyReceiverState(false));
+ vm6.invoke(() -> verifyReceiverState(false));
+ vm7.invoke(() -> verifyReceiverState(true));
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
new file mode 100644
index 0000000..53dd6cf
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/wancommand/StopGatewaySenderCommandDUnitTest.java
@@ -0,0 +1,236 @@
+/*
+ * 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.internal.cache.wan.wancommand;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
+import static org.apache.geode.test.dunit.Wait.pause;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.Result;
+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.TabularResultData;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class StopGatewaySenderCommandDUnitTest extends WANCommandTestBase {
+ @Test
+ public void testStopGatewaySender_ErrorConditions() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId() + " --" + CliStrings.GROUP
+ + "=SenderGroup1";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.ERROR, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains(CliStrings.PROVIDE_EITHER_MEMBER_OR_GROUP_MESSAGE));
+ } else {
+ fail("testStopGatewaySender failed as did not get CommandResult");
+ }
+ }
+
+ @Test
+ public void testStopGatewaySender() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCache(punePort));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCache(punePort));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+
+ pause(10000);
+ String command =
+ CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID + "=ln";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(5, status.size());
+ assertTrue(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStopGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a member
+ */
+ @Test
+ public void testStopGatewaySender_onMember() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCache(punePort));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+
+ final DistributedMember vm1Member = vm3.invoke(this::getMember);
+ pause(10000);
+ String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.MEMBER + "=" + vm1Member.getId();
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewaySender stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ assertTrue(strCmdResult.contains("is stopped on member"));
+ } else {
+ fail("testStopGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ }
+
+ /**
+ * test to validate that the start gateway sender starts the gateway sender on a group of members
+ */
+ @Test
+ public void testStopGatewaySender_Group() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+
+ pause(10000);
+ String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(3, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStopGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ }
+
+ /**
+ * Test to validate the scenario gateway sender is started when one or more sender members belongs
+ * to multiple groups
+ */
+ @Test
+ public void testStopGatewaySender_MultipleGroup() {
+ Integer punePort = vm1.invoke(() -> createFirstLocatorWithDSId(1));
+ propsSetUp(punePort);
+
+ vm2.invoke(() -> createFirstRemoteLocator(2, punePort));
+ vm3.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm3.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm4.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1"));
+ vm4.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm5.invoke(() -> createCacheWithGroups(punePort, "SenderGroup1, SenderGroup2"));
+ vm5.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm6.invoke(() -> createCacheWithGroups(punePort, "SenderGroup2"));
+ vm6.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm7.invoke(() -> createCacheWithGroups(punePort, "SenderGroup3"));
+ vm7.invoke(() -> createSender("ln", 2, false, 100, 400, false, false, null, true));
+ vm3.invoke(() -> startSender("ln"));
+ vm4.invoke(() -> startSender("ln"));
+ vm5.invoke(() -> startSender("ln"));
+ vm6.invoke(() -> startSender("ln"));
+ vm7.invoke(() -> startSender("ln"));
+ vm3.invoke(() -> verifySenderState("ln", true, false));
+ vm4.invoke(() -> verifySenderState("ln", true, false));
+ vm5.invoke(() -> verifySenderState("ln", true, false));
+ vm6.invoke(() -> verifySenderState("ln", true, false));
+ vm7.invoke(() -> verifySenderState("ln", true, false));
+
+ pause(10000);
+ String command = CliStrings.STOP_GATEWAYSENDER + " --" + CliStrings.STOP_GATEWAYSENDER__ID
+ + "=ln --" + CliStrings.GROUP + "=SenderGroup1,SenderGroup2";
+ CommandResult cmdResult = executeCommandWithIgnoredExceptions(command);
+ if (cmdResult != null) {
+ String strCmdResult = commandResultToString(cmdResult);
+ getLogWriter().info("testStopGatewaySender_Group stringResult : " + strCmdResult + ">>>>");
+ assertEquals(Result.Status.OK, cmdResult.getStatus());
+ TabularResultData resultData = (TabularResultData) cmdResult.getResultData();
+ List<String> status = resultData.retrieveAllValues("Result");
+ assertEquals(4, status.size());
+ assertFalse(status.contains("Error"));
+ assertTrue(status.contains("OK"));
+ } else {
+ fail("testStopGatewaySender failed as did not get CommandResult");
+ }
+ vm3.invoke(() -> verifySenderState("ln", false, false));
+ vm4.invoke(() -> verifySenderState("ln", false, false));
+ vm5.invoke(() -> verifySenderState("ln", false, false));
+ vm6.invoke(() -> verifySenderState("ln", false, false));
+ vm7.invoke(() -> verifySenderState("ln", true, false));
+ }
+
+ private CommandResult executeCommandWithIgnoredExceptions(String command) {
+ final IgnoredException exln = IgnoredException.addIgnoredException("Could not connect");
+ CommandResult commandResult = executeCommand(command);
+ exln.remove();
+ return commandResult;
+ }
+}
[28/50] [abbrv] geode git commit: GEODE-3192,
GEODE-3229: Change API and implementation of protobuf PutAll. This
closes #643
Posted by kl...@apache.org.
GEODE-3192,GEODE-3229: Change API and implementation of protobuf PutAll. This closes #643
* We will now dispatch incoming protobuf PutAlls as a series of put operations
* The PutAllResponse will contain a set of failed keys and the error they failed with
Signed-off-by: Galen O'Sullivan <go...@pivotal.io>
Signed-off-by: Brian Rowe <br...@pivotal.io>
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/0debd20a
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/0debd20a
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/0debd20a
Branch: refs/heads/feature/GEODE-3299
Commit: 0debd20acc290281cd55bf373cd1fec7d1e3e4b0
Parents: c62764b
Author: Brian Rowe <br...@pivotal.io>
Authored: Tue Jul 18 14:52:50 2017 -0700
Committer: Udo Kohlmeyer <uk...@pivotal.io>
Committed: Thu Jul 27 08:34:19 2017 -0700
----------------------------------------------------------------------
.../apache/geode/protocol/protobuf/Failure.java | 10 +-
.../protocol/protobuf/OperationContext.java | 10 +-
.../apache/geode/protocol/protobuf/Result.java | 4 +-
.../apache/geode/protocol/protobuf/Success.java | 4 +-
.../GetAllRequestOperationHandler.java | 17 +--
.../GetRegionRequestOperationHandler.java | 3 +-
.../operations/GetRequestOperationHandler.java | 9 +-
.../PutAllRequestOperationHandler.java | 63 ++++----
.../operations/PutRequestOperationHandler.java | 11 +-
.../RemoveRequestOperationHandler.java | 9 +-
.../utilities/ProtobufResponseUtilities.java | 17 +--
.../protobuf/utilities/ProtobufUtilities.java | 4 +-
.../geode/serialization/codec/BooleanCodec.java | 4 +-
geode-protobuf/src/main/proto/basicTypes.proto | 12 +-
.../src/main/proto/clientProtocol.proto | 5 -
geode-protobuf/src/main/proto/region_API.proto | 2 +-
.../RoundTripCacheConnectionJUnitTest.java | 148 ++++++++++---------
.../PutAllRequestOperationHandlerJUnitTest.java | 77 ++++------
.../PutRequestOperationHandlerJUnitTest.java | 27 ++--
19 files changed, 211 insertions(+), 225 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Failure.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Failure.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Failure.java
index fb75c26..fcbbb50 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Failure.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Failure.java
@@ -17,19 +17,19 @@ package org.apache.geode.protocol.protobuf;
import java.util.function.Function;
public class Failure<SuccessType> implements Result<SuccessType> {
- private final ClientProtocol.ErrorResponse errorResponse;
+ private final BasicTypes.ErrorResponse errorResponse;
- public Failure(ClientProtocol.ErrorResponse errorResponse) {
+ public Failure(BasicTypes.ErrorResponse errorResponse) {
this.errorResponse = errorResponse;
}
- public static <T> Failure<T> of(ClientProtocol.ErrorResponse errorResponse) {
+ public static <T> Failure<T> of(BasicTypes.ErrorResponse errorResponse) {
return new Failure<>(errorResponse);
}
@Override
public <T> T map(Function<SuccessType, T> successFunction,
- Function<ClientProtocol.ErrorResponse, T> errorFunction) {
+ Function<BasicTypes.ErrorResponse, T> errorFunction) {
return errorFunction.apply(errorResponse);
}
@@ -39,7 +39,7 @@ public class Failure<SuccessType> implements Result<SuccessType> {
}
@Override
- public ClientProtocol.ErrorResponse getErrorMessage() {
+ public BasicTypes.ErrorResponse getErrorMessage() {
return errorResponse;
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/OperationContext.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/OperationContext.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/OperationContext.java
index 9b234f2..72e4d75 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/OperationContext.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/OperationContext.java
@@ -15,15 +15,15 @@
package org.apache.geode.protocol.protobuf;
-import java.util.function.Function;
-
import org.apache.geode.protocol.operations.OperationHandler;
+import java.util.function.Function;
+
public class OperationContext<OperationRequest, OperationResponse> {
private final OperationHandler<OperationRequest, OperationResponse> operationHandler;
private final Function<ClientProtocol.Request, OperationRequest> fromRequest;
private final Function<OperationResponse, ClientProtocol.Response.Builder> toResponse;
- private final Function<ClientProtocol.ErrorResponse, ClientProtocol.Response.Builder> toErrorResponse;
+ private final Function<BasicTypes.ErrorResponse, ClientProtocol.Response.Builder> toErrorResponse;
public OperationContext(Function<ClientProtocol.Request, OperationRequest> fromRequest,
OperationHandler<OperationRequest, OperationResponse> operationHandler,
@@ -35,7 +35,7 @@ public class OperationContext<OperationRequest, OperationResponse> {
}
public static ClientProtocol.Response.Builder makeErrorBuilder(
- ClientProtocol.ErrorResponse errorResponse) {
+ BasicTypes.ErrorResponse errorResponse) {
return ClientProtocol.Response.newBuilder().setErrorResponse(errorResponse);
}
@@ -51,7 +51,7 @@ public class OperationContext<OperationRequest, OperationResponse> {
return toResponse;
}
- public Function<ClientProtocol.ErrorResponse, ClientProtocol.Response.Builder> getToErrorResponse() {
+ public Function<BasicTypes.ErrorResponse, ClientProtocol.Response.Builder> getToErrorResponse() {
return toErrorResponse;
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Result.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Result.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Result.java
index f22d845..14168bc 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Result.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Result.java
@@ -18,9 +18,9 @@ import java.util.function.Function;
public interface Result<SuccessType> {
<T> T map(Function<SuccessType, T> successFunction,
- Function<ClientProtocol.ErrorResponse, T> errorFunction);
+ Function<BasicTypes.ErrorResponse, T> errorFunction);
SuccessType getMessage();
- ClientProtocol.ErrorResponse getErrorMessage();
+ BasicTypes.ErrorResponse getErrorMessage();
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Success.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Success.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Success.java
index 4bb07b8..2c409dd 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Success.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/Success.java
@@ -29,7 +29,7 @@ public class Success<SuccessType> implements Result<SuccessType> {
@Override
public <T> T map(Function<SuccessType, T> successFunction,
- Function<ClientProtocol.ErrorResponse, T> errorFunction) {
+ Function<BasicTypes.ErrorResponse, T> errorFunction) {
return successFunction.apply(successResponse);
}
@@ -39,7 +39,7 @@ public class Success<SuccessType> implements Result<SuccessType> {
}
@Override
- public ClientProtocol.ErrorResponse getErrorMessage() {
+ public BasicTypes.ErrorResponse getErrorMessage() {
throw new RuntimeException("This is a not Failure result");
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetAllRequestOperationHandler.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetAllRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetAllRequestOperationHandler.java
index e3401c8..a6ffd9d 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetAllRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetAllRequestOperationHandler.java
@@ -14,15 +14,10 @@
*/
package org.apache.geode.protocol.protobuf.operations;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.operations.OperationHandler;
import org.apache.geode.protocol.protobuf.BasicTypes;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
import org.apache.geode.protocol.protobuf.Failure;
import org.apache.geode.protocol.protobuf.RegionAPI;
import org.apache.geode.protocol.protobuf.Result;
@@ -32,6 +27,10 @@ import org.apache.geode.serialization.SerializationService;
import org.apache.geode.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTypeException;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
public class GetAllRequestOperationHandler
implements OperationHandler<RegionAPI.GetAllRequest, RegionAPI.GetAllResponse> {
@@ -42,7 +41,7 @@ public class GetAllRequestOperationHandler
Region region = cache.getRegion(regionName);
if (region == null) {
return Failure
- .of(ClientProtocol.ErrorResponse.newBuilder().setMessage("Region not found").build());
+ .of(BasicTypes.ErrorResponse.newBuilder().setMessage("Region not found").build());
}
try {
@@ -58,10 +57,10 @@ public class GetAllRequestOperationHandler
}
return Success.of(RegionAPI.GetAllResponse.newBuilder().addAllEntries(entries).build());
} catch (UnsupportedEncodingTypeException ex) {
- return Failure.of(
- ClientProtocol.ErrorResponse.newBuilder().setMessage("Encoding not supported.").build());
+ return Failure
+ .of(BasicTypes.ErrorResponse.newBuilder().setMessage("Encoding not supported.").build());
} catch (CodecNotRegisteredForTypeException ex) {
- return Failure.of(ClientProtocol.ErrorResponse.newBuilder()
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder()
.setMessage("Codec error in protobuf deserialization.").build());
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRegionRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
index f2e1b37..e8dfdda 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRegionRequestOperationHandler.java
@@ -18,7 +18,6 @@ import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.operations.OperationHandler;
import org.apache.geode.protocol.protobuf.BasicTypes;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
import org.apache.geode.protocol.protobuf.Failure;
import org.apache.geode.protocol.protobuf.RegionAPI;
import org.apache.geode.protocol.protobuf.Result;
@@ -37,7 +36,7 @@ public class GetRegionRequestOperationHandler
Region region = cache.getRegion(regionName);
if (region == null) {
- return Failure.of(ClientProtocol.ErrorResponse.newBuilder()
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder()
.setMessage("No region exists for name: " + regionName).build());
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRequestOperationHandler.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRequestOperationHandler.java
index 79c59f8..21aa15f 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/GetRequestOperationHandler.java
@@ -18,7 +18,6 @@ import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.operations.OperationHandler;
import org.apache.geode.protocol.protobuf.BasicTypes;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
import org.apache.geode.protocol.protobuf.Failure;
import org.apache.geode.protocol.protobuf.RegionAPI;
import org.apache.geode.protocol.protobuf.Result;
@@ -38,7 +37,7 @@ public class GetRequestOperationHandler
Region region = cache.getRegion(regionName);
if (region == null) {
return Failure
- .of(ClientProtocol.ErrorResponse.newBuilder().setMessage("Region not found").build());
+ .of(BasicTypes.ErrorResponse.newBuilder().setMessage("Region not found").build());
}
try {
@@ -53,10 +52,10 @@ public class GetRequestOperationHandler
ProtobufUtilities.createEncodedValue(serializationService, resultValue);
return Success.of(RegionAPI.GetResponse.newBuilder().setResult(encodedValue).build());
} catch (UnsupportedEncodingTypeException ex) {
- return Failure.of(
- ClientProtocol.ErrorResponse.newBuilder().setMessage("Encoding not supported.").build());
+ return Failure
+ .of(BasicTypes.ErrorResponse.newBuilder().setMessage("Encoding not supported.").build());
} catch (CodecNotRegisteredForTypeException ex) {
- return Failure.of(ClientProtocol.ErrorResponse.newBuilder()
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder()
.setMessage("Codec error in protobuf deserialization.").build());
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandler.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandler.java
index 55d2f3f..6e26e75 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandler.java
@@ -14,12 +14,6 @@
*/
package org.apache.geode.protocol.protobuf.operations;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.operations.OperationHandler;
@@ -33,6 +27,11 @@ import org.apache.geode.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.serialization.SerializationService;
import org.apache.geode.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTypeException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Objects;
+import java.util.stream.Collectors;
public class PutAllRequestOperationHandler
implements OperationHandler<RegionAPI.PutAllRequest, RegionAPI.PutAllResponse> {
@@ -40,44 +39,44 @@ public class PutAllRequestOperationHandler
@Override
public Result<RegionAPI.PutAllResponse> process(SerializationService serializationService,
- RegionAPI.PutAllRequest request, Cache cache) {
- String regionName = request.getRegionName();
- Region region = cache.getRegion(regionName);
+ RegionAPI.PutAllRequest putAllRequest, Cache cache) {
+ Region region = cache.getRegion(putAllRequest.getRegionName());
if (region == null) {
return Failure.of(ProtobufResponseUtilities.createAndLogErrorResponse(
- "Region passed by client did not exist: " + regionName, logger, null));
+ "Region passed by client did not exist: " + putAllRequest.getRegionName(), logger, null));
}
- Map entries = extractPutAllEntries(serializationService, request);
- try {
- region.putAll(entries);
- } catch (Exception ex) {
- return Failure
- .of(ProtobufResponseUtilities.createAndLogErrorResponse(ex.getMessage(), logger, ex));
- }
-
- return Success.of(RegionAPI.PutAllResponse.newBuilder().build());
+ RegionAPI.PutAllResponse.Builder builder = RegionAPI.PutAllResponse.newBuilder()
+ .addAllFailedKeys(putAllRequest.getEntryList().stream()
+ .map((entry) -> singlePut(serializationService, region, entry)).filter(Objects::nonNull)
+ .collect(Collectors.toList()));
+ return Success.of(builder.build());
}
- // Read all of the entries out of the protobuf and return an error (without performing any puts)
- // if any of the entries can't be decoded
- private Map extractPutAllEntries(SerializationService serializationService,
- RegionAPI.PutAllRequest putAllRequest) {
- Map entries = new HashMap();
+ private BasicTypes.KeyedErrorResponse singlePut(SerializationService serializationService,
+ Region region, BasicTypes.Entry entry) {
try {
- for (BasicTypes.Entry entry : putAllRequest.getEntryList()) {
- Object decodedValue = ProtobufUtilities.decodeValue(serializationService, entry.getValue());
- Object decodedKey = ProtobufUtilities.decodeValue(serializationService, entry.getKey());
+ Object decodedValue = ProtobufUtilities.decodeValue(serializationService, entry.getValue());
+ Object decodedKey = ProtobufUtilities.decodeValue(serializationService, entry.getKey());
- entries.put(decodedKey, decodedValue);
- }
+ region.put(decodedKey, decodedValue);
} catch (UnsupportedEncodingTypeException ex) {
- throw new RuntimeException("This exception still needs to be handled in an ErrorMessage");
+ return buildAndLogKeyedError(entry, "Encoding not supported", ex);
} catch (CodecNotRegisteredForTypeException ex) {
- throw new RuntimeException("This exception still needs to be handled in an ErrorMessage");
+ return buildAndLogKeyedError(entry, "Codec error in protobuf deserialization", ex);
+ } catch (ClassCastException ex) {
+ return buildAndLogKeyedError(entry, "Invalid key or value type for region", ex);
}
+ return null;
+ }
- return entries;
+ private BasicTypes.KeyedErrorResponse buildAndLogKeyedError(BasicTypes.Entry entry,
+ String message, Exception ex) {
+ logger.error(message, ex);
+ BasicTypes.ErrorResponse errorResponse =
+ BasicTypes.ErrorResponse.newBuilder().setMessage(message).build();
+ return BasicTypes.KeyedErrorResponse.newBuilder().setKey(entry.getKey()).setError(errorResponse)
+ .build();
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandler.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandler.java
index be2308e..ccfd0c1 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandler.java
@@ -18,7 +18,6 @@ import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.operations.OperationHandler;
import org.apache.geode.protocol.protobuf.BasicTypes;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
import org.apache.geode.protocol.protobuf.Failure;
import org.apache.geode.protocol.protobuf.RegionAPI;
import org.apache.geode.protocol.protobuf.Result;
@@ -37,7 +36,7 @@ public class PutRequestOperationHandler
String regionName = request.getRegionName();
Region region = cache.getRegion(regionName);
if (region == null) {
- return Failure.of(ClientProtocol.ErrorResponse.newBuilder()
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder()
.setMessage("Region passed by client did not exist: " + regionName).build());
}
@@ -50,18 +49,16 @@ public class PutRequestOperationHandler
region.put(decodedKey, decodedValue);
return Success.of(RegionAPI.PutResponse.newBuilder().build());
} catch (ClassCastException ex) {
- return Failure.of(ClientProtocol.ErrorResponse.newBuilder()
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder()
.setMessage("invalid key or value type for region " + regionName + ",passed key: "
+ entry.getKey().getEncodingType() + " value: "
+ entry.getValue().getEncodingType())
.build());
}
} catch (UnsupportedEncodingTypeException ex) {
- return Failure
- .of(ClientProtocol.ErrorResponse.newBuilder().setMessage(ex.getMessage()).build());
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder().setMessage(ex.getMessage()).build());
} catch (CodecNotRegisteredForTypeException ex) {
- return Failure
- .of(ClientProtocol.ErrorResponse.newBuilder().setMessage(ex.getMessage()).build());
+ return Failure.of(BasicTypes.ErrorResponse.newBuilder().setMessage(ex.getMessage()).build());
}
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/RemoveRequestOperationHandler.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/RemoveRequestOperationHandler.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/RemoveRequestOperationHandler.java
index 1058ca3..0bf162e 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/RemoveRequestOperationHandler.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/operations/RemoveRequestOperationHandler.java
@@ -14,13 +14,10 @@
*/
package org.apache.geode.protocol.protobuf.operations;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.operations.OperationHandler;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
+import org.apache.geode.protocol.protobuf.BasicTypes;
import org.apache.geode.protocol.protobuf.Failure;
import org.apache.geode.protocol.protobuf.RegionAPI;
import org.apache.geode.protocol.protobuf.Result;
@@ -30,6 +27,8 @@ import org.apache.geode.protocol.protobuf.utilities.ProtobufUtilities;
import org.apache.geode.serialization.SerializationService;
import org.apache.geode.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTypeException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class RemoveRequestOperationHandler
implements OperationHandler<RegionAPI.RemoveRequest, RegionAPI.RemoveResponse> {
@@ -43,7 +42,7 @@ public class RemoveRequestOperationHandler
Region region = cache.getRegion(regionName);
if (region == null) {
return Failure
- .of(ClientProtocol.ErrorResponse.newBuilder().setMessage("Region not found").build());
+ .of(BasicTypes.ErrorResponse.newBuilder().setMessage("Region not found").build());
}
try {
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufResponseUtilities.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufResponseUtilities.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufResponseUtilities.java
index 6da4730..06ae401 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufResponseUtilities.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufResponseUtilities.java
@@ -14,13 +14,12 @@
*/
package org.apache.geode.protocol.protobuf.utilities;
-import java.util.Set;
-
-import org.apache.logging.log4j.Logger;
-
import org.apache.geode.cache.Region;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
+import org.apache.geode.protocol.protobuf.BasicTypes;
import org.apache.geode.protocol.protobuf.RegionAPI;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Set;
/**
* This class contains helper functions for generating ClientProtocol.Response objects.
@@ -31,22 +30,22 @@ import org.apache.geode.protocol.protobuf.RegionAPI;
public abstract class ProtobufResponseUtilities {
/**
- * This creates response object containing a ClientProtocol.ErrorResponse, and also logs the
- * passed error message and exception (if present) to the provided logger.
+ * This creates response object containing a BasicTypes.ErrorResponse, and also logs the passed
+ * error message and exception (if present) to the provided logger.
*
* @param errorMessage - description of the error
* @param logger - logger to write the error message to
* @param ex - exception which should be logged
* @return An error response containing the first three parameters.
*/
- public static ClientProtocol.ErrorResponse createAndLogErrorResponse(String errorMessage,
+ public static BasicTypes.ErrorResponse createAndLogErrorResponse(String errorMessage,
Logger logger, Exception ex) {
if (ex != null) {
logger.error(errorMessage, ex);
} else {
logger.error(errorMessage);
}
- return ClientProtocol.ErrorResponse.newBuilder().setMessage(errorMessage).build();
+ return BasicTypes.ErrorResponse.newBuilder().setMessage(errorMessage).build();
}
/**
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufUtilities.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufUtilities.java b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufUtilities.java
index 242f5e3..c7bf6aa 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufUtilities.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/protocol/protobuf/utilities/ProtobufUtilities.java
@@ -15,7 +15,6 @@
package org.apache.geode.protocol.protobuf.utilities;
import com.google.protobuf.ByteString;
-
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.protocol.protobuf.BasicTypes;
@@ -31,7 +30,7 @@ import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTy
* This class contains helper functions for assistance in creating protobuf objects. This class is
* mainly focused on helper functions which can be used in building BasicTypes for use in other
* messages or those used to create the top level Message objects.
- *
+ * <p>
* Helper functions specific to creating ClientProtocol.Responses can be found at
* {@link ProtobufResponseUtilities} Helper functions specific to creating ClientProtocol.Requests
* can be found at {@link ProtobufRequestUtilities}
@@ -170,7 +169,6 @@ public abstract class ProtobufUtilities {
}
/**
- *
* @param region
* @return a Protobuf BasicTypes.Region message that represents the {@link Region}
*/
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/java/org/apache/geode/serialization/codec/BooleanCodec.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/java/org/apache/geode/serialization/codec/BooleanCodec.java b/geode-protobuf/src/main/java/org/apache/geode/serialization/codec/BooleanCodec.java
index d9f2d07..e3e234d 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/serialization/codec/BooleanCodec.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/serialization/codec/BooleanCodec.java
@@ -14,11 +14,11 @@
*/
package org.apache.geode.serialization.codec;
-import java.nio.ByteBuffer;
-
import org.apache.geode.serialization.SerializationType;
import org.apache.geode.serialization.TypeCodec;
+import java.nio.ByteBuffer;
+
public class BooleanCodec implements TypeCodec<Boolean> {
@Override
public Boolean decode(byte[] incoming) {
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/proto/basicTypes.proto
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/proto/basicTypes.proto b/geode-protobuf/src/main/proto/basicTypes.proto
index d45d61b..ad254cd 100644
--- a/geode-protobuf/src/main/proto/basicTypes.proto
+++ b/geode-protobuf/src/main/proto/basicTypes.proto
@@ -62,4 +62,14 @@ message Region {
message Server {
string url = 1;
-}
\ No newline at end of file
+}
+
+message ErrorResponse {
+ int32 errorCode = 1;
+ string message = 2;
+}
+
+message KeyedErrorResponse {
+ EncodedValue key = 1;
+ ErrorResponse error = 2;
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/proto/clientProtocol.proto
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/proto/clientProtocol.proto b/geode-protobuf/src/main/proto/clientProtocol.proto
index 2c3bed0..6b037ca 100644
--- a/geode-protobuf/src/main/proto/clientProtocol.proto
+++ b/geode-protobuf/src/main/proto/clientProtocol.proto
@@ -78,11 +78,6 @@ message Response {
}
}
-message ErrorResponse {
- int32 errorCode = 1;
- string message = 2;
-}
-
message MetaData {
int32 numberOfMetadata = 1;
map<int32, google.protobuf.Any> metaDataEntries = 2;
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/main/proto/region_API.proto
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/main/proto/region_API.proto b/geode-protobuf/src/main/proto/region_API.proto
index 5d411ba..bf2c15e 100644
--- a/geode-protobuf/src/main/proto/region_API.proto
+++ b/geode-protobuf/src/main/proto/region_API.proto
@@ -42,7 +42,7 @@ message PutAllRequest {
}
message PutAllResponse {
- // message presence indicates success.
+ repeated KeyedErrorResponse failedKeys = 1;
}
message GetAllRequest {
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/test/java/org/apache/geode/protocol/RoundTripCacheConnectionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/test/java/org/apache/geode/protocol/RoundTripCacheConnectionJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/protocol/RoundTripCacheConnectionJUnitTest.java
index 78f7ee0..5005314 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/protocol/RoundTripCacheConnectionJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/protocol/RoundTripCacheConnectionJUnitTest.java
@@ -15,34 +15,6 @@
package org.apache.geode.protocol;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_ENABLED_COMPONENTS;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_PASSWORD;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_TYPE;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_REQUIRE_AUTHENTICATION;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE;
-import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE_PASSWORD;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.Socket;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import org.awaitility.Awaitility;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.contrib.java.lang.system.RestoreSystemProperties;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
-
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.DataPolicy;
@@ -69,6 +41,36 @@ import org.apache.geode.serialization.registry.exception.CodecAlreadyRegisteredF
import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTypeException;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.util.test.TestUtil;
+import org.awaitility.Awaitility;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TestName;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Stream;
+
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_ENABLED_COMPONENTS;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_PASSWORD;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_KEYSTORE_TYPE;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_REQUIRE_AUTHENTICATION;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE;
+import static org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE_PASSWORD;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* Test that switching on the header byte makes instances of
@@ -185,8 +187,7 @@ public class RoundTripCacheConnectionJUnitTest {
ProtobufUtilities.createMessageHeader(TEST_PUT_CORRELATION_ID),
ProtobufRequestUtilities.createPutAllRequest(TEST_REGION, putEntries));
protobufProtocolSerializer.serialize(putAllMessage, outputStream);
- validatePutAllResponse(socket, protobufProtocolSerializer,
- ClientProtocol.Response.ResponseAPICase.PUTALLRESPONSE);
+ validatePutAllResponse(socket, protobufProtocolSerializer, new HashSet<>());
Set<BasicTypes.EncodedValue> getEntries = new HashSet<>();
getEntries.add(ProtobufUtilities.createEncodedValue(serializationService, TEST_MULTIOP_KEY1));
@@ -218,8 +219,9 @@ public class RoundTripCacheConnectionJUnitTest {
ProtobufProtocolSerializer protobufProtocolSerializer = new ProtobufProtocolSerializer();
Set<BasicTypes.Entry> putEntries = new HashSet<>();
- putEntries.add(
- ProtobufUtilities.createEntry(serializationService, new Float(2.2), TEST_MULTIOP_VALUE1));
+ Float validKey = new Float(2.2);
+ putEntries
+ .add(ProtobufUtilities.createEntry(serializationService, validKey, TEST_MULTIOP_VALUE1));
putEntries.add(ProtobufUtilities.createEntry(serializationService, TEST_MULTIOP_KEY2,
TEST_MULTIOP_VALUE2));
putEntries.add(ProtobufUtilities.createEntry(serializationService, TEST_MULTIOP_KEY3,
@@ -227,12 +229,17 @@ public class RoundTripCacheConnectionJUnitTest {
ClientProtocol.Message putAllMessage = ProtobufUtilities.createProtobufMessage(
ProtobufUtilities.createMessageHeader(TEST_PUT_CORRELATION_ID),
ProtobufRequestUtilities.createPutAllRequest(regionName, putEntries));
+
protobufProtocolSerializer.serialize(putAllMessage, outputStream);
- validatePutAllResponse(socket, protobufProtocolSerializer,
- ClientProtocol.Response.ResponseAPICase.ERRORRESPONSE);
+ HashSet<BasicTypes.EncodedValue> expectedFailedKeys = new HashSet<BasicTypes.EncodedValue>();
+ expectedFailedKeys
+ .add(ProtobufUtilities.createEncodedValue(serializationService, TEST_MULTIOP_KEY2));
+ expectedFailedKeys
+ .add(ProtobufUtilities.createEncodedValue(serializationService, TEST_MULTIOP_KEY3));
+ validatePutAllResponse(socket, protobufProtocolSerializer, expectedFailedKeys);
ClientProtocol.Message getMessage = MessageUtil.makeGetRequestMessage(serializationService,
- new Float(2.2), regionName, ProtobufUtilities.createMessageHeader(TEST_GET_CORRELATION_ID));
+ validKey, regionName, ProtobufUtilities.createMessageHeader(TEST_GET_CORRELATION_ID));
protobufProtocolSerializer.serialize(getMessage, outputStream);
validateGetResponse(socket, protobufProtocolSerializer, TEST_MULTIOP_VALUE1);
@@ -252,11 +259,8 @@ public class RoundTripCacheConnectionJUnitTest {
TEST_KEY, TEST_REGION, ProtobufUtilities.createMessageHeader(TEST_GET_CORRELATION_ID));
protobufProtocolSerializer.serialize(getMessage, outputStream);
- ClientProtocol.Message message =
- protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(TEST_GET_CORRELATION_ID, message.getMessageHeader().getCorrelationId());
- assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, TEST_GET_CORRELATION_ID);
assertEquals(ClientProtocol.Response.ResponseAPICase.GETRESPONSE,
response.getResponseAPICase());
RegionAPI.GetResponse getResponse = response.getGetResponse();
@@ -321,11 +325,8 @@ public class RoundTripCacheConnectionJUnitTest {
private void validatePutResponse(Socket socket,
ProtobufProtocolSerializer protobufProtocolSerializer) throws Exception {
- ClientProtocol.Message message =
- protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(TEST_PUT_CORRELATION_ID, message.getMessageHeader().getCorrelationId());
- assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, TEST_PUT_CORRELATION_ID);
assertEquals(ClientProtocol.Response.ResponseAPICase.PUTRESPONSE,
response.getResponseAPICase());
}
@@ -334,11 +335,9 @@ public class RoundTripCacheConnectionJUnitTest {
ProtobufProtocolSerializer protobufProtocolSerializer, Object expectedValue)
throws InvalidProtocolMessageException, IOException, UnsupportedEncodingTypeException,
CodecNotRegisteredForTypeException, CodecAlreadyRegisteredForTypeException {
- ClientProtocol.Message message =
- protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(TEST_GET_CORRELATION_ID, message.getMessageHeader().getCorrelationId());
- assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, TEST_GET_CORRELATION_ID);
+
assertEquals(ClientProtocol.Response.ResponseAPICase.GETRESPONSE,
response.getResponseAPICase());
RegionAPI.GetResponse getResponse = response.getGetResponse();
@@ -348,14 +347,22 @@ public class RoundTripCacheConnectionJUnitTest {
result.getValue().toByteArray()));
}
- private void validateGetRegionNamesResponse(Socket socket, int correlationId,
- ProtobufProtocolSerializer protobufProtocolSerializer)
+ private ClientProtocol.Response deserializeResponse(Socket socket,
+ ProtobufProtocolSerializer protobufProtocolSerializer, int expectedCorrelationId)
throws InvalidProtocolMessageException, IOException {
ClientProtocol.Message message =
protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(correlationId, message.getMessageHeader().getCorrelationId());
+ assertEquals(expectedCorrelationId, message.getMessageHeader().getCorrelationId());
assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
+ return message.getResponse();
+ }
+
+ private void validateGetRegionNamesResponse(Socket socket, int correlationId,
+ ProtobufProtocolSerializer protobufProtocolSerializer)
+ throws InvalidProtocolMessageException, IOException {
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, correlationId);
+
assertEquals(ClientProtocol.Response.ResponseAPICase.GETREGIONNAMESRESPONSE,
response.getResponseAPICase());
RegionAPI.GetRegionNamesResponse getRegionsResponse = response.getGetRegionNamesResponse();
@@ -365,24 +372,26 @@ public class RoundTripCacheConnectionJUnitTest {
private void validatePutAllResponse(Socket socket,
ProtobufProtocolSerializer protobufProtocolSerializer,
- ClientProtocol.Response.ResponseAPICase responseCase) throws Exception {
- ClientProtocol.Message message =
- protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(TEST_PUT_CORRELATION_ID, message.getMessageHeader().getCorrelationId());
- assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
- assertEquals(responseCase, response.getResponseAPICase());
+ Collection<BasicTypes.EncodedValue> expectedFailedKeys) throws Exception {
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, TEST_PUT_CORRELATION_ID);
+
+ assertEquals(ClientProtocol.Response.ResponseAPICase.PUTALLRESPONSE,
+ response.getResponseAPICase());
+ assertEquals(expectedFailedKeys.size(), response.getPutAllResponse().getFailedKeysCount());
+
+ Stream<BasicTypes.EncodedValue> failedKeyStream = response.getPutAllResponse()
+ .getFailedKeysList().stream().map(BasicTypes.KeyedErrorResponse::getKey);
+ assertTrue(failedKeyStream.allMatch(expectedFailedKeys::contains));
+
}
private void validateGetAllResponse(Socket socket,
ProtobufProtocolSerializer protobufProtocolSerializer)
throws InvalidProtocolMessageException, IOException, UnsupportedEncodingTypeException,
CodecNotRegisteredForTypeException, CodecAlreadyRegisteredForTypeException {
- ClientProtocol.Message message =
- protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(TEST_GET_CORRELATION_ID, message.getMessageHeader().getCorrelationId());
- assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, TEST_GET_CORRELATION_ID);
assertEquals(ClientProtocol.Response.ResponseAPICase.GETALLRESPONSE,
response.getResponseAPICase());
RegionAPI.GetAllResponse getAllResponse = response.getGetAllResponse();
@@ -409,11 +418,8 @@ public class RoundTripCacheConnectionJUnitTest {
private void validateRemoveResponse(Socket socket,
ProtobufProtocolSerializer protobufProtocolSerializer) throws Exception {
- ClientProtocol.Message message =
- protobufProtocolSerializer.deserialize(socket.getInputStream());
- assertEquals(TEST_REMOVE_CORRELATION_ID, message.getMessageHeader().getCorrelationId());
- assertEquals(ClientProtocol.Message.MessageTypeCase.RESPONSE, message.getMessageTypeCase());
- ClientProtocol.Response response = message.getResponse();
+ ClientProtocol.Response response =
+ deserializeResponse(socket, protobufProtocolSerializer, TEST_REMOVE_CORRELATION_ID);
assertEquals(ClientProtocol.Response.ResponseAPICase.REMOVERESPONSE,
response.getResponseAPICase());
}
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
index d0736de..33d21e7 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutAllRequestOperationHandlerJUnitTest.java
@@ -14,33 +14,8 @@
*/
package org.apache.geode.protocol.protobuf.operations;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.argThat;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.mockito.ArgumentMatcher;
-
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.protobuf.BasicTypes;
-import org.apache.geode.protocol.protobuf.ClientProtocol;
-import org.apache.geode.protocol.protobuf.Failure;
import org.apache.geode.protocol.protobuf.RegionAPI;
import org.apache.geode.protocol.protobuf.Result;
import org.apache.geode.protocol.protobuf.Success;
@@ -50,7 +25,24 @@ import org.apache.geode.serialization.SerializationService;
import org.apache.geode.serialization.exception.UnsupportedEncodingTypeException;
import org.apache.geode.serialization.registry.exception.CodecAlreadyRegisteredForTypeException;
import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTypeException;
+import org.apache.geode.test.dunit.Assert;
import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@Category(UnitTest.class)
public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTest {
@@ -66,13 +58,6 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
private final String EXCEPTION_TEXT = "Simulating put failure";
private Region regionMock;
- private class MapContainingInvalidKeyMatcher implements ArgumentMatcher<Map> {
- @Override
- public boolean matches(Map argument) {
- return argument.containsKey(TEST_INVALID_KEY);
- }
- }
-
@Before
public void setUp() throws Exception {
super.setUp();
@@ -91,9 +76,8 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
.thenReturn(TEST_INVALID_VALUE);
regionMock = mock(Region.class);
-
- doThrow(new ClassCastException(EXCEPTION_TEXT)).when(regionMock)
- .putAll(argThat(new MapContainingInvalidKeyMatcher()));
+ when(regionMock.put(TEST_INVALID_KEY, TEST_INVALID_VALUE))
+ .thenThrow(new ClassCastException(EXCEPTION_TEXT));
when(cacheStub.getRegion(TEST_REGION)).thenReturn(regionMock);
}
@@ -115,12 +99,9 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
Assert.assertTrue(result instanceof Success);
- HashMap<Object, Object> expectedValues = new HashMap<>();
- expectedValues.put(TEST_KEY1, TEST_VALUE1);
- expectedValues.put(TEST_KEY2, TEST_VALUE2);
- expectedValues.put(TEST_KEY3, TEST_VALUE3);
-
- verify(regionMock).putAll(expectedValues);
+ verify(regionMock).put(TEST_KEY1, TEST_VALUE1);
+ verify(regionMock).put(TEST_KEY2, TEST_VALUE2);
+ verify(regionMock).put(TEST_KEY3, TEST_VALUE3);
}
@Test
@@ -130,10 +111,16 @@ public class PutAllRequestOperationHandlerJUnitTest extends OperationHandlerJUni
Result<RegionAPI.PutAllResponse> result = operationHandler.process(serializationServiceStub,
generateTestRequest(true, true), cacheStub);
- assertTrue(result instanceof Failure);
- ClientProtocol.ErrorResponse errorMessage = result.getErrorMessage();
- Assert.assertThat(errorMessage.getMessage(), CoreMatchers.containsString(EXCEPTION_TEXT));
- // can't verify anything about put keys because we make no guarantees.
+ assertTrue(result instanceof Success);
+ verify(regionMock).put(TEST_KEY1, TEST_VALUE1);
+ verify(regionMock).put(TEST_KEY2, TEST_VALUE2);
+ verify(regionMock).put(TEST_KEY3, TEST_VALUE3);
+
+ RegionAPI.PutAllResponse putAllResponse = result.getMessage();
+ assertEquals(1, putAllResponse.getFailedKeysCount());
+ BasicTypes.KeyedErrorResponse error = putAllResponse.getFailedKeys(0);
+ assertEquals(TEST_INVALID_KEY, serializationServiceStub.decode(error.getKey().getEncodingType(),
+ error.getKey().getValue().toByteArray()));
}
@Test
http://git-wip-us.apache.org/repos/asf/geode/blob/0debd20a/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java b/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
index f628d4e..8c1652b 100644
--- a/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
+++ b/geode-protobuf/src/test/java/org/apache/geode/protocol/protobuf/operations/PutRequestOperationHandlerJUnitTest.java
@@ -14,20 +14,6 @@
*/
package org.apache.geode.protocol.protobuf.operations;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.nio.charset.Charset;
-
-import org.hamcrest.CoreMatchers;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
import org.apache.geode.cache.Region;
import org.apache.geode.protocol.protobuf.BasicTypes;
import org.apache.geode.protocol.protobuf.Failure;
@@ -41,6 +27,19 @@ import org.apache.geode.serialization.registry.exception.CodecAlreadyRegisteredF
import org.apache.geode.serialization.registry.exception.CodecNotRegisteredForTypeException;
import org.apache.geode.test.dunit.Assert;
import org.apache.geode.test.junit.categories.UnitTest;
+import org.hamcrest.CoreMatchers;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.nio.charset.Charset;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@Category(UnitTest.class)
public class PutRequestOperationHandlerJUnitTest extends OperationHandlerJUnitTest {
[36/50] [abbrv] geode git commit: GEODE-3326: Fix intermittent
ConcurrentDeployDUnitTest failure
Posted by kl...@apache.org.
GEODE-3326: Fix intermittent ConcurrentDeployDUnitTest failure
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/36665aef
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/36665aef
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/36665aef
Branch: refs/heads/feature/GEODE-3299
Commit: 36665aef4a9e837ae99b99e033a2cc2a68bc2029
Parents: 5ec4069
Author: Jared Stewart <js...@pivotal.io>
Authored: Thu Jul 27 15:19:58 2017 -0700
Committer: Jared Stewart <js...@pivotal.io>
Committed: Fri Jul 28 14:10:30 2017 -0700
----------------------------------------------------------------------
.../internal/cli/commands/ConcurrentDeployDUnitTest.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/36665aef/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConcurrentDeployDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConcurrentDeployDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConcurrentDeployDUnitTest.java
index 559440c..80d0b06 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConcurrentDeployDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ConcurrentDeployDUnitTest.java
@@ -28,6 +28,7 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import java.io.File;
+import java.util.concurrent.TimeUnit;
@Category(DistributedTest.class)
public class ConcurrentDeployDUnitTest {
@@ -64,9 +65,9 @@ public class ConcurrentDeployDUnitTest {
AsyncInvocation gfsh2Invocation = gfsh2.invokeAsync(() -> loopThroughDeployAndUndeploys(jar1));
AsyncInvocation gfsh3Invocation = gfsh3.invokeAsync(() -> loopThroughDeployAndUndeploys(jar1));
- gfsh1Invocation.await();
- gfsh2Invocation.await();
- gfsh3Invocation.await();
+ gfsh1Invocation.await(5, TimeUnit.MINUTES);
+ gfsh2Invocation.await(5, TimeUnit.MINUTES);
+ gfsh3Invocation.await(5, TimeUnit.MINUTES);
}
@After
[11/50] [abbrv] geode git commit: GEODE-2654: Backups can capture
different members from different points in time Online backup now takes a
backup from a single point in time. This is done by making all write
operations get a backup lock which causes the
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/BackupPrepareAndFinishMsgDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/BackupPrepareAndFinishMsgDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/BackupPrepareAndFinishMsgDUnitTest.java
new file mode 100644
index 0000000..39c5c3c
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/persistence/BackupPrepareAndFinishMsgDUnitTest.java
@@ -0,0 +1,571 @@
+/*
+ * 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.internal.cache.persistence;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.geode.admin.internal.FinishBackupRequest;
+import org.apache.geode.admin.internal.PrepareBackupRequest;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.DiskStore;
+import org.apache.geode.cache.DiskStoreFactory;
+import org.apache.geode.cache.PartitionAttributesFactory;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionFactory;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.cache.query.FunctionDomainException;
+import org.apache.geode.cache.query.NameResolutionException;
+import org.apache.geode.cache.query.QueryInvocationTargetException;
+import org.apache.geode.cache.query.TypeMismatchException;
+import org.apache.geode.cache30.CacheTestCase;
+import org.apache.geode.distributed.internal.DM;
+import org.apache.geode.internal.cache.BackupLock;
+import org.apache.geode.internal.cache.DiskStoreImpl;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.awaitility.Awaitility;
+import org.junit.After;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category({DistributedTest.class})
+public class BackupPrepareAndFinishMsgDUnitTest extends CacheTestCase {
+ // Although this test does not make use of other members, the current member needs to be
+ // a distributed member (rather than local) because it sends prepare and finish backup messages
+ File[] diskDirs = null;
+ private int waitingForBackupLockCount = 0;
+
+ @After
+ public void after() throws Exception {
+ waitingForBackupLockCount = 0;
+ diskDirs = null;
+ }
+
+ @Test
+ public void testCreateWithParReg() throws Throwable {
+ doCreate(RegionShortcut.PARTITION_PERSISTENT, true);
+ }
+
+ @Test
+ public void testCreateWithReplicate() throws Throwable {
+ doCreate(RegionShortcut.REPLICATE_PERSISTENT, true);
+ }
+
+ @Test
+ public void testPutAsCreateWithParReg() throws Throwable {
+ doCreate(RegionShortcut.PARTITION_PERSISTENT, false);
+ }
+
+ @Test
+ public void testPutAsCreateWithReplicate() throws Throwable {
+ doCreate(RegionShortcut.REPLICATE_PERSISTENT, false);
+ }
+
+ @Test
+ public void testUpdateWithParReg() throws Throwable {
+ doUpdate(RegionShortcut.PARTITION_PERSISTENT);
+ }
+
+ @Test
+ public void testUpdateWithReplicate() throws Throwable {
+ doUpdate(RegionShortcut.REPLICATE_PERSISTENT);
+ }
+
+ @Test
+ public void testInvalidateWithParReg() throws Throwable {
+ doInvalidate(RegionShortcut.PARTITION_PERSISTENT);
+ }
+
+ @Test
+ public void testInvalidateWithReplicate() throws Throwable {
+ doInvalidate(RegionShortcut.REPLICATE_PERSISTENT);
+ }
+
+ @Test
+ public void testDestroyWithParReg() throws Throwable {
+ doDestroy(RegionShortcut.PARTITION_PERSISTENT);
+ }
+
+ @Test
+ public void testDestroyWithReplicate() throws Throwable {
+ doDestroy(RegionShortcut.REPLICATE_PERSISTENT);
+ }
+
+ @Test
+ public void testGetWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "get");
+ }
+
+ @Test
+ public void testGetWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "get");
+ }
+
+ @Test
+ public void testContainsKeyWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "containsKey");
+ }
+
+ @Test
+ public void testContainsKeyWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "containsKey");
+ }
+
+ @Test
+ public void testContainsValueWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "containsValue");
+ }
+
+ @Test
+ public void testContainsValueWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "containsValue");
+ }
+
+ @Test
+ public void testContainsValueForKeyWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "containsValueForKey");
+ }
+
+ @Test
+ public void testContainsValueForKeyWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "containsValueForKey");
+ }
+
+ @Test
+ public void testEntrySetWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "entrySet");
+ }
+
+ @Test
+ public void testEntrySetWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "entrySet");
+ }
+
+ @Test
+ public void testGetAllWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "getAll");
+ }
+
+ @Test
+ public void testGetAllWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "getAll");
+ }
+
+ @Test
+ public void testGetEntryWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "getEntry");
+ }
+
+ @Test
+ public void testGetEntryWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "getEntry");
+ }
+
+ @Test
+ public void testIsEmptyWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "isEmpty");
+ }
+
+ @Test
+ public void testIsEmptyWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "isEmpty");
+ }
+
+ @Test
+ public void testKeySetWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "keySet");
+ }
+
+ @Test
+ public void testKeySetWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "keySet");
+ }
+
+ @Test
+ public void testSizeWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "size");
+ }
+
+ @Test
+ public void testSizeWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "size");
+ }
+
+ @Test
+ public void testValuesWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "values");
+ }
+
+ @Test
+ public void testValuesWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "values");
+ }
+
+ @Test
+ public void testQueryWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "query");
+ }
+
+ @Test
+ public void testQueryWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "query");
+ }
+
+ @Test
+ public void testExistsValueWithParReg() throws Throwable {
+ doRead(RegionShortcut.PARTITION_PERSISTENT, "existsValue");
+ }
+
+ @Test
+ public void testExistsValueWithReplicate() throws Throwable {
+ doRead(RegionShortcut.REPLICATE_PERSISTENT, "existsValue");
+ }
+
+ @Test
+ public void testPutAllWithParReg() throws Throwable {
+ doPutAll(RegionShortcut.PARTITION_PERSISTENT);
+ }
+
+ @Test
+ public void testPutAllWithReplicate() throws Throwable {
+ doPutAll(RegionShortcut.REPLICATE_PERSISTENT);
+ }
+
+ @Test
+ public void testRemoveAllWithParReg() throws Throwable {
+ doRemoveAll(RegionShortcut.PARTITION_PERSISTENT);
+ }
+
+ @Test
+ public void testRemoveAllWithReplicate() throws Throwable {
+ doRemoveAll(RegionShortcut.REPLICATE_PERSISTENT);
+ }
+
+ /**
+ * Test that a create waits for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doCreate(RegionShortcut shortcut, boolean useCreate) throws InterruptedException {
+ Region aRegion = createRegion(shortcut);
+ Runnable runnable = new Runnable() {
+ public void run() {
+ if (useCreate) {
+ aRegion.create(1, 1);
+ } else {
+ aRegion.put(1, 1);
+ }
+ }
+ };
+
+ verifyWaitForBackup(runnable);
+ assertTrue(aRegion.containsKey(1));
+ assertEquals(aRegion.get(1), 1);
+ }
+
+ /**
+ * Test that an update waits for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doUpdate(RegionShortcut shortcut) throws InterruptedException {
+ Region aRegion = createRegion(shortcut);
+ aRegion.put(1, 1);
+
+ Runnable runnable = new Runnable() {
+ public void run() {
+ aRegion.put(1, 2);
+ }
+ };
+
+ verifyWaitForBackup(runnable);
+ assertTrue(aRegion.containsKey(1));
+ assertEquals(aRegion.get(1), 2);
+ }
+
+ /**
+ * Test that an invalidate waits for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doInvalidate(RegionShortcut shortcut) throws InterruptedException {
+ Region aRegion = createRegion(shortcut);
+ aRegion.put(1, 1);
+
+ Runnable runnable = (new Runnable() {
+ public void run() {
+ aRegion.invalidate(1);
+ }
+ });
+
+ verifyWaitForBackup(runnable);
+ assertTrue(aRegion.containsKey(1));
+ assertNull(aRegion.get(1));
+ }
+
+ /**
+ * Test that a destroy waits for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doDestroy(RegionShortcut shortcut) throws InterruptedException {
+ Region aRegion = createRegion(shortcut);
+ aRegion.put(1, 1);
+
+ Runnable runnable = new Runnable() {
+ public void run() {
+ aRegion.destroy(1);
+ }
+ };
+
+ verifyWaitForBackup(runnable);
+ assertFalse(aRegion.containsKey(1));
+ }
+
+ /**
+ * Test that a read op does NOT wait for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doRead(RegionShortcut shortcut, String op) throws Exception {
+ Region aRegion = createRegion(shortcut);
+ aRegion.put(1, 1);
+
+ Runnable runnable = new Runnable() {
+ public void run() {
+ switch (op) {
+ case "get": {
+ aRegion.get(1);
+ break;
+ }
+ case "containsKey": {
+ aRegion.containsKey(1);
+ break;
+ }
+ case "containsValue": {
+ aRegion.containsValue(1);
+ break;
+ }
+ case "containsValueForKey": {
+ aRegion.containsValue(1);
+ break;
+ }
+ case "entrySet": {
+ aRegion.entrySet();
+ break;
+ }
+ case "existsValue": {
+ try {
+ aRegion.existsValue("value = 1");
+ } catch (FunctionDomainException | TypeMismatchException | NameResolutionException
+ | QueryInvocationTargetException e) {
+ fail(e.toString());
+ }
+ break;
+ }
+ case "getAll": {
+ aRegion.getAll(new ArrayList());
+ break;
+ }
+ case "getEntry": {
+ aRegion.getEntry(1);
+ break;
+ }
+ case "isEmpty": {
+ aRegion.isEmpty();
+ break;
+ }
+ case "keySet": {
+ aRegion.keySet();
+ break;
+ }
+ case "query": {
+ try {
+ aRegion.query("select *");
+ } catch (FunctionDomainException | TypeMismatchException | NameResolutionException
+ | QueryInvocationTargetException e) {
+ fail(e.toString());
+ }
+ break;
+ }
+ case "size": {
+ aRegion.size();
+ break;
+ }
+ case "values": {
+ aRegion.values();
+ break;
+ }
+ default: {
+ fail("Unknown operation " + op);
+ }
+ }
+ }
+ };
+
+ verifyNoWaitForBackup(runnable);
+ }
+
+ /**
+ * Test that a putAll waits for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doPutAll(RegionShortcut shortcut) throws InterruptedException {
+ Region aRegion = createRegion(shortcut);
+ Runnable runnable = new Runnable() {
+ public void run() {
+ Map<Object, Object> putAllMap = new HashMap<Object, Object>();
+ putAllMap.put(1, 1);
+ putAllMap.put(2, 2);
+ aRegion.putAll(putAllMap);
+ }
+ };
+
+ verifyWaitForBackup(runnable);
+ assertTrue(aRegion.containsKey(1));
+ assertEquals(aRegion.get(1), 1);
+ assertTrue(aRegion.containsKey(2));
+ assertEquals(aRegion.get(2), 2);
+ }
+
+ /**
+ * Test that a removeAll waits for backup
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @throws InterruptedException
+ */
+ private void doRemoveAll(RegionShortcut shortcut) throws InterruptedException {
+ Region aRegion = createRegion(shortcut);
+ aRegion.put(1, 2);
+ aRegion.put(2, 3);
+
+ Runnable runnable = new Runnable() {
+ public void run() {
+ List<Object> keys = new ArrayList();
+ keys.add(1);
+ keys.add(2);
+ aRegion.removeAll(keys);
+ }
+ };
+
+ verifyWaitForBackup(runnable);
+ assertEquals(aRegion.size(), 0);
+ }
+
+ /**
+ * Test that executing the given runnable waits for backup completion to proceed
+ *
+ * @param runnable The code that should wait for backup.
+ * @throws InterruptedException
+ */
+ private void verifyWaitForBackup(Runnable runnable) throws InterruptedException {
+ DM dm = ((InternalCache) GemFireCacheImpl.getInstance()).getDistributionManager();
+ Set recipients = dm.getOtherDistributionManagerIds();
+ boolean abort = true;
+ Thread aThread = new Thread(runnable);
+ try {
+ PrepareBackupRequest.send(dm, recipients);
+ abort = false;
+ waitingForBackupLockCount = 0;
+ aThread.start();
+ Awaitility.await().atMost(30, TimeUnit.SECONDS)
+ .until(() -> assertTrue(waitingForBackupLockCount == 1));
+ } finally {
+ FinishBackupRequest.send(dm, recipients, diskDirs[0], null, abort);
+ aThread.join(30000);
+ assertFalse(aThread.isAlive());
+ }
+ }
+
+ /**
+ * Test that executing the given runnable does NOT wait for backup completion to proceed
+ *
+ * @param runnable The code that should not wait for backup.
+ * @throws InterruptedException
+ */
+ private void verifyNoWaitForBackup(Runnable runnable) throws InterruptedException {
+ DM dm = ((InternalCache) GemFireCacheImpl.getInstance()).getDistributionManager();
+ Set recipients = dm.getOtherDistributionManagerIds();
+ boolean abort = true;
+ Thread aThread = new Thread(runnable);
+ try {
+ PrepareBackupRequest.send(dm, recipients);
+ abort = false;
+ waitingForBackupLockCount = 0;
+ aThread.start();
+ aThread.join(30000);
+ assertFalse(aThread.isAlive());
+ assertTrue(waitingForBackupLockCount == 0);
+ } finally {
+ FinishBackupRequest.send(dm, recipients, diskDirs[0], null, abort);
+ }
+ }
+
+ /**
+ * Implementation of test hook
+ */
+ private class BackupLockHook implements BackupLock.BackupLockTestHook {
+ @Override
+ public void beforeWaitForBackupCompletion() {
+ waitingForBackupLockCount++;
+ }
+ }
+
+ /**
+ * Create a region, installing the test hook in the backup lock
+ *
+ * @param shortcut The region shortcut to use to create the region
+ * @return The newly created region.
+ */
+ private Region<?, ?> createRegion(RegionShortcut shortcut) {
+ Cache cache = getCache();
+ DiskStoreFactory diskStoreFactory = cache.createDiskStoreFactory();
+ diskDirs = getDiskDirs();
+ diskStoreFactory.setDiskDirs(diskDirs);
+ DiskStore diskStore = diskStoreFactory.create(getUniqueName());
+ ((DiskStoreImpl) diskStore).getBackupLock().setBackupLockTestHook(new BackupLockHook());
+
+ RegionFactory<String, String> regionFactory = cache.createRegionFactory(shortcut);
+ regionFactory.setDiskStoreName(diskStore.getName());
+ regionFactory.setDiskSynchronous(true);
+ if (shortcut.equals(RegionShortcut.PARTITION_PERSISTENT)) {
+ PartitionAttributesFactory prFactory = new PartitionAttributesFactory();
+ prFactory.setTotalNumBuckets(1);
+ regionFactory.setPartitionAttributes(prFactory.create());
+ }
+ return regionFactory.create("TestRegion");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
index db234e0..3232933 100644
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -8,6 +8,7 @@ org/apache/geode/distributed/ServerLauncher
org/apache/geode/distributed/ServerLauncher$Command
org/apache/geode/distributed/internal/DistributionManager
org/apache/geode/internal/JarDeployer
+org/apache/geode/internal/cache/BackupLock
org/apache/geode/internal/logging/GemFireLevel
org/apache/geode/internal/logging/LoggingThreadGroup
org/apache/geode/internal/logging/LogWriterImpl
http://git-wip-us.apache.org/repos/asf/geode/blob/f1326be5/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
index e5a111c..d627da9 100755
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
@@ -250,7 +250,6 @@ org/apache/geode/internal/admin/CompoundRegionSnapshot,true,6295026394298398004,
org/apache/geode/internal/admin/StatAlert,true,5725457607122449170,definitionId:int,time:java/util/Date,values:java/lang/Number[]
org/apache/geode/internal/admin/remote/DistributionLocatorId,true,6587390186971937865,bindAddress:java/lang/String,host:java/net/InetAddress,hostnameForClients:java/lang/String,peerLocator:boolean,port:int,serverLocator:boolean
org/apache/geode/internal/admin/remote/EntryValueNodeImpl,false,fields:org/apache/geode/internal/admin/remote/EntryValueNodeImpl[],name:java/lang/String,primitive:boolean,primitiveVal:java/lang/Object,type:java/lang/String
-org/apache/geode/internal/cache/BackupLock,false,backupDone:java/util/concurrent/locks/Condition,backupThread:java/lang/Thread,isBackingUp:boolean
org/apache/geode/internal/cache/BucketAdvisor$SetFromMap,true,2454657854757543876,m:java/util/Map
org/apache/geode/internal/cache/BucketNotFoundException,true,2898657229184289911
org/apache/geode/internal/cache/BucketRegion$SizeOp,false
[45/50] [abbrv] geode git commit: GEODE-3256: Refactoring DataCommands
Posted by kl...@apache.org.
GEODE-3256: Refactoring DataCommands
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/32364169
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/32364169
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/32364169
Branch: refs/heads/feature/GEODE-3299
Commit: 32364169af27039f6281cf05bb8c21fd6ecb1a19
Parents: 9d59402
Author: YehEmily <em...@gmail.com>
Authored: Mon Jul 31 16:45:19 2017 -0700
Committer: Jared Stewart <js...@pivotal.io>
Committed: Tue Aug 1 10:31:13 2017 -0700
----------------------------------------------------------------------
.../internal/beans/QueryDataFunction.java | 12 +-
.../internal/cli/commands/DataCommands.java | 1282 ------------------
.../cli/commands/DataCommandsUtils.java | 311 +++++
.../cli/commands/ExportDataCommand.java | 90 ++
.../internal/cli/commands/GetCommand.java | 106 ++
.../cli/commands/ImportDataCommand.java | 94 ++
.../cli/commands/LocateEntryCommand.java | 91 ++
.../internal/cli/commands/PutCommand.java | 105 ++
.../internal/cli/commands/QueryCommand.java | 81 +-
.../internal/cli/commands/RebalanceCommand.java | 592 ++++++++
.../internal/cli/commands/RemoveCommand.java | 98 ++
.../web/controllers/DataCommandsController.java | 8 +-
.../internal/cli/CommandRequestTest.java | 4 +-
.../commands/GemfireDataCommandsDUnitTest.java | 3 +-
...WithCacheLoaderDuringCacheMissDUnitTest.java | 2 +-
15 files changed, 1583 insertions(+), 1296 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java
index 9829df3..0b4470d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/QueryDataFunction.java
@@ -46,7 +46,7 @@ import org.apache.geode.management.ManagementService;
import org.apache.geode.management.internal.ManagementConstants;
import org.apache.geode.management.internal.ManagementStrings;
import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.management.internal.cli.commands.DataCommands;
+import org.apache.geode.management.internal.cli.commands.DataCommandsUtils;
import org.apache.geode.management.internal.cli.json.GfJsonException;
import org.apache.geode.management.internal.cli.json.GfJsonObject;
import org.apache.geode.management.internal.cli.json.TypedJson;
@@ -168,7 +168,7 @@ public class QueryDataFunction extends FunctionAdapter implements InternalEntity
}
LocalDataSet lds = new LocalDataSet(parRegion, localPrimaryBucketSet);
DefaultQuery query = (DefaultQuery) cache.getQueryService().newQuery(queryString);
- results = (SelectResults) lds.executeQuery(query, null, localPrimaryBucketSet);
+ results = lds.executeQuery(query, null, localPrimaryBucketSet);
}
} else {
rcollector = FunctionService.onRegion(cache.getRegion(regionName))
@@ -365,7 +365,7 @@ public class QueryDataFunction extends FunctionAdapter implements InternalEntity
.toString();
} else {
Set<DistributedMember> associatedMembers =
- DataCommands.getRegionAssociatedMembers(regionPath, cache, true);
+ DataCommandsUtils.getRegionAssociatedMembers(regionPath, cache, true);
if (inputMembers != null && inputMembers.size() > 0) {
if (!associatedMembers.containsAll(inputMembers)) {
@@ -397,9 +397,9 @@ public class QueryDataFunction extends FunctionAdapter implements InternalEntity
String randomRegion = regionsInQuery.iterator().next();
Set<DistributedMember> associatedMembers =
- DataCommands.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false);// First
- // available
- // member
+ DataCommandsUtils.getQueryRegionsAssociatedMembers(regionsInQuery, cache, false);// First
+ // available
+ // member
if (associatedMembers != null && associatedMembers.size() > 0) {
Object[] functionArgs = new Object[6];
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
deleted file mode 100644
index 69daca6..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
+++ /dev/null
@@ -1,1282 +0,0 @@
-/*
- * 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.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.shiro.subject.Subject;
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
-
-import org.apache.geode.LogWriter;
-import org.apache.geode.cache.CacheClosedException;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.DataPolicy;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.control.RebalanceFactory;
-import org.apache.geode.cache.control.RebalanceOperation;
-import org.apache.geode.cache.control.RebalanceResults;
-import org.apache.geode.cache.control.ResourceManager;
-import org.apache.geode.cache.execute.Function;
-import org.apache.geode.cache.execute.FunctionInvocationTargetException;
-import org.apache.geode.cache.execute.FunctionService;
-import org.apache.geode.cache.execute.ResultCollector;
-import org.apache.geode.cache.partition.PartitionRebalanceInfo;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.DistributedRegionMXBean;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.MBeanJMXAdapter;
-import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.LogWrapper;
-import org.apache.geode.management.internal.cli.domain.DataCommandRequest;
-import org.apache.geode.management.internal.cli.domain.DataCommandResult;
-import org.apache.geode.management.internal.cli.functions.DataCommandFunction;
-import org.apache.geode.management.internal.cli.functions.ExportDataFunction;
-import org.apache.geode.management.internal.cli.functions.ImportDataFunction;
-import org.apache.geode.management.internal.cli.functions.RebalanceFunction;
-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.ErrorResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
-import org.apache.geode.management.internal.cli.shell.Gfsh;
-import org.apache.geode.management.internal.security.ResourceOperation;
-import org.apache.geode.security.ResourcePermission.Operation;
-import org.apache.geode.security.ResourcePermission.Resource;
-
-/**
- * @since GemFire 7.0
- */
-public class DataCommands implements GfshCommand {
-
- private final int resultItemCount = 9;
-
- private final ExportDataFunction exportDataFunction = new ExportDataFunction();
-
- private final ImportDataFunction importDataFunction = new ImportDataFunction();
-
- @Override
- public Gfsh getGfsh() {
- return Gfsh.getCurrentInstance();
- }
-
- @Override
- public InternalCache getCache() {
- return (InternalCache) CacheFactory.getAnyInstance();
- }
-
- @CliCommand(value = CliStrings.REBALANCE, help = CliStrings.REBALANCE__HELP)
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- @ResourceOperation(resource = Resource.DATA, operation = Operation.MANAGE)
- public Result rebalance(
- @CliOption(key = CliStrings.REBALANCE__INCLUDEREGION,
- help = CliStrings.REBALANCE__INCLUDEREGION__HELP) String[] includeRegions,
- @CliOption(key = CliStrings.REBALANCE__EXCLUDEREGION,
- help = CliStrings.REBALANCE__EXCLUDEREGION__HELP) String[] excludeRegions,
- @CliOption(key = CliStrings.REBALANCE__TIMEOUT, unspecifiedDefaultValue = "-1",
- help = CliStrings.REBALANCE__TIMEOUT__HELP) long timeout,
- @CliOption(key = CliStrings.REBALANCE__SIMULATE, specifiedDefaultValue = "true",
- unspecifiedDefaultValue = "false",
- help = CliStrings.REBALANCE__SIMULATE__HELP) boolean simulate) {
-
- ExecutorService commandExecutors = Executors.newSingleThreadExecutor();
- List<Future<Result>> commandResult = new ArrayList<>();
- Result result;
- try {
- commandResult.add(commandExecutors
- .submit(new ExecuteRebalanceWithTimeout(includeRegions, excludeRegions, simulate)));
-
- Future<Result> fs = commandResult.get(0);
- if (timeout > 0) {
- result = fs.get(timeout, TimeUnit.SECONDS);
- } else {
- result = fs.get();
-
- }
- } catch (TimeoutException timeoutException) {
- result = ResultBuilder.createInfoResult(CliStrings.REBALANCE__MSG__REBALANCE_WILL_CONTINUE);
-
- } catch (Exception ex) {
- result = ResultBuilder.createGemFireErrorResult(CliStrings.format(
- CliStrings.REBALANCE__MSG__EXCEPTION_OCCURRED_WHILE_REBALANCING_0, ex.getMessage()));
- }
- LogWrapper.getInstance().info("Rebalance returning result >>>" + result);
- return result;
- }
-
- private class ExecuteRebalanceWithTimeout implements Callable<Result> {
- String[] includeRegions = null;
- String[] excludeRegions = null;
- boolean simulate;
- InternalCache cache = getCache();
-
- @Override
- public Result call() throws Exception {
- return executeRebalanceWithTimeout(includeRegions, excludeRegions, simulate);
- }
-
- ExecuteRebalanceWithTimeout(String[] includedRegions, String[] excludedRegions,
- boolean toSimulate) {
- includeRegions = includedRegions;
- excludeRegions = excludedRegions;
- simulate = toSimulate;
- }
-
- Result executeRebalanceWithTimeout(String[] includeRegions, String[] excludeRegions,
- boolean simulate) {
-
- Result result = null;
- try {
- RebalanceOperation op;
-
- if (ArrayUtils.isNotEmpty(includeRegions)) {
- CompositeResultData rebalanceResultData = ResultBuilder.createCompositeResultData();
- int index = 0;
-
- for (String regionName : includeRegions) {
-
- // To be removed after region Name specification with "/" is fixed
- regionName = regionName.startsWith("/") ? regionName : ("/" + regionName);
- Region region = cache.getRegion(regionName);
-
- if (region == null) {
- DistributedMember member = getAssociatedMembers(regionName, cache);
-
- if (member == null) {
- LogWrapper.getInstance().info(CliStrings.format(
- CliStrings.REBALANCE__MSG__NO_ASSOCIATED_DISTRIBUTED_MEMBER, regionName));
- continue;
- }
-
- Function rebalanceFunction = new RebalanceFunction();
- Object[] functionArgs = new Object[3];
- functionArgs[0] = simulate ? "true" : "false";
- Set<String> setRegionName = new HashSet<>();
- setRegionName.add(regionName);
- functionArgs[1] = setRegionName;
-
- Set<String> excludeRegionSet = new HashSet<>();
- if (ArrayUtils.isNotEmpty(excludeRegions)) {
- Collections.addAll(excludeRegionSet, excludeRegions);
- }
- functionArgs[2] = excludeRegionSet;
-
- if (simulate) {
- List resultList;
- try {
- resultList = (ArrayList) CliUtil
- .executeFunction(rebalanceFunction, functionArgs, member).getResult();
- } catch (Exception ex) {
- LogWrapper.getInstance()
- .info(CliStrings.format(
- CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception_1,
- member.getId(), ex.getMessage()), ex);
- rebalanceResultData.addSection()
- .addData(CliStrings.format(
- CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception,
- member.getId()), ex.getMessage());
- result = ResultBuilder.buildResult(rebalanceResultData);
- continue;
- }
-
- if (checkResultList(rebalanceResultData, resultList, member)) {
- result = ResultBuilder.buildResult(rebalanceResultData);
- continue;
- }
- List<String> rstList = tokenize((String) resultList.get(0), ",");
-
- result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
- (ArrayList) rstList, index, true, cache));
- } else {
- List resultList;
- try {
- resultList = (ArrayList) CliUtil
- .executeFunction(rebalanceFunction, functionArgs, member).getResult();
- } catch (Exception ex) {
- LogWrapper.getInstance()
- .info(CliStrings.format(
- CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception_1,
- member.getId(), ex.getMessage()), ex);
- rebalanceResultData.addSection()
- .addData(CliStrings.format(
- CliStrings.REBALANCE__MSG__EXCEPTION_IN_REBALANCE_FOR_MEMBER_0_Exception,
- member.getId()), ex.getMessage());
- result = ResultBuilder.buildResult(rebalanceResultData);
- continue;
- }
-
- if (checkResultList(rebalanceResultData, resultList, member)) {
- result = ResultBuilder.buildResult(rebalanceResultData);
- continue;
- }
- List<String> rstList = tokenize((String) resultList.get(0), ",");
-
- result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
- (ArrayList) rstList, index, false, cache));
- }
-
- } else {
-
- ResourceManager manager = cache.getResourceManager();
- RebalanceFactory rbFactory = manager.createRebalanceFactory();
- Set<String> excludeRegionSet = new HashSet<>();
- if (excludeRegions != null) {
- Collections.addAll(excludeRegionSet, excludeRegions);
- }
- rbFactory.excludeRegions(excludeRegionSet);
- Set<String> includeRegionSet = new HashSet<>();
- includeRegionSet.add(regionName);
- rbFactory.includeRegions(includeRegionSet);
-
- if (simulate) {
- op = manager.createRebalanceFactory().simulate();
- result = ResultBuilder.buildResult(buildResultForRebalance(rebalanceResultData,
- op.getResults(), index, true, cache));
-
- } else {
- op = manager.createRebalanceFactory().start();
- // Wait until the rebalance is complete and then get the results
- result = ResultBuilder.buildResult(buildResultForRebalance(rebalanceResultData,
- op.getResults(), index, false, cache));
- }
- }
- index++;
- }
- LogWrapper.getInstance().info("Rebalance returning result " + result);
- return result;
- } else {
- result = executeRebalanceOnDS(cache, String.valueOf(simulate), excludeRegions);
- LogWrapper.getInstance().info("Starting Rebalance simulate false result >> " + result);
- }
- } catch (Exception e) {
- result = ResultBuilder.createGemFireErrorResult(e.getMessage());
- }
- LogWrapper.getInstance().info("Rebalance returning result >>>" + result);
- return result;
- }
- }
-
- private List<String> tokenize(String str, String separator) {
- StringTokenizer st = new StringTokenizer(str, separator);
- List<String> rstList = new ArrayList<>();
-
- while (st.hasMoreTokens()) {
- rstList.add(st.nextToken());
-
- }
- return rstList;
- }
-
- private boolean checkResultList(CompositeResultData rebalanceResultData, List resultList,
- DistributedMember member) {
- boolean toContinueForOtherMembers = false;
-
- if (CollectionUtils.isNotEmpty(resultList)) {
- for (Object object : resultList) {
- if (object instanceof Exception) {
-
- rebalanceResultData.addSection().addData(
- CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()),
- ((Exception) object).getMessage());
-
- LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId()
- + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object));
-
- toContinueForOtherMembers = true;
- break;
- } else if (object instanceof Throwable) {
- rebalanceResultData.addSection().addData(
- CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()),
- ((Throwable) object).getMessage());
-
- LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId()
- + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object));
-
- toContinueForOtherMembers = true;
- break;
- }
- }
- } else {
- LogWrapper.getInstance().info(
- "Rebalancing for member=" + member.getId() + ", resultList is either null or empty");
- rebalanceResultData.addSection().addData("Rebalancing for member=" + member.getId(),
- ", resultList is either null or empty");
- toContinueForOtherMembers = true;
- }
-
- return toContinueForOtherMembers;
- }
-
- private Result executeRebalanceOnDS(InternalCache cache, String simulate,
- String[] excludeRegionsList) {
- Result result = null;
- int index = 1;
- CompositeResultData rebalanceResultData = ResultBuilder.createCompositeResultData();
- List<String> listExcludedRegion = new ArrayList<>();
- if (excludeRegionsList != null) {
- Collections.addAll(listExcludedRegion, excludeRegionsList);
- }
- List<MemberPRInfo> listMemberRegion = getMemberRegionList(cache, listExcludedRegion);
-
- if (listMemberRegion.size() == 0) {
- return ResultBuilder
- .createInfoResult(CliStrings.REBALANCE__MSG__NO_REBALANCING_REGIONS_ON_DS);
- }
-
- Iterator<MemberPRInfo> iterator = listMemberRegion.iterator();
- boolean flagToContinueWithRebalance = false;
-
- // check if list has some members that can be rebalanced
- while (iterator.hasNext()) {
- if (iterator.next().dsMemberList.size() > 1) {
- flagToContinueWithRebalance = true;
- break;
- }
- }
-
- if (!flagToContinueWithRebalance) {
- return ResultBuilder
- .createInfoResult(CliStrings.REBALANCE__MSG__NO_REBALANCING_REGIONS_ON_DS);
- }
-
- for (MemberPRInfo memberPR : listMemberRegion) {
- try {
- // check if there are more than one members associated with region for rebalancing
- if (memberPR.dsMemberList.size() > 1) {
- for (int i = 0; i < memberPR.dsMemberList.size(); i++) {
- DistributedMember dsMember = memberPR.dsMemberList.get(i);
- Function rebalanceFunction = new RebalanceFunction();
- Object[] functionArgs = new Object[3];
- functionArgs[0] = simulate;
- Set<String> regionSet = new HashSet<>();
-
- regionSet.add(memberPR.region);
- functionArgs[1] = regionSet;
-
- Set<String> excludeRegionSet = new HashSet<>();
- functionArgs[2] = excludeRegionSet;
-
- List resultList = null;
-
- try {
- if (checkMemberPresence(dsMember, cache)) {
- resultList = (ArrayList) CliUtil
- .executeFunction(rebalanceFunction, functionArgs, dsMember).getResult();
-
- if (checkResultList(rebalanceResultData, resultList, dsMember)) {
- result = ResultBuilder.buildResult(rebalanceResultData);
- continue;
- }
-
- List<String> rstList = tokenize((String) resultList.get(0), ",");
- result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
- (ArrayList) rstList, index, simulate.equals("true"), cache));
- index++;
-
- // Rebalancing for region is done so break and continue with other region
- break;
- } else {
- if (i == memberPR.dsMemberList.size() - 1) {
- rebalanceResultData.addSection().addData(
- CliStrings.format(
- CliStrings.REBALANCE__MSG__NO_EXECUTION_FOR_REGION_0_ON_MEMBERS_1,
- memberPR.region, listOfAllMembers(memberPR.dsMemberList)),
- CliStrings.REBALANCE__MSG__MEMBERS_MIGHT_BE_DEPARTED);
- result = ResultBuilder.buildResult(rebalanceResultData);
- } else {
- continue;
- }
- }
- } catch (Exception ex) {
- if (i == memberPR.dsMemberList.size() - 1) {
- rebalanceResultData.addSection().addData(
- CliStrings.format(
- CliStrings.REBALANCE__MSG__NO_EXECUTION_FOR_REGION_0_ON_MEMBERS_1,
- memberPR.region, listOfAllMembers(memberPR.dsMemberList)),
- CliStrings.REBALANCE__MSG__REASON + ex.getMessage());
- result = ResultBuilder.buildResult(rebalanceResultData);
- } else {
- continue;
- }
- }
-
- if (checkResultList(rebalanceResultData, resultList, dsMember)) {
- result = ResultBuilder.buildResult(rebalanceResultData);
- continue;
- }
-
- List<String> rstList = tokenize((String) resultList.get(0), ",");
- result = ResultBuilder.buildResult(toCompositeResultData(rebalanceResultData,
- (ArrayList) rstList, index, simulate.equals("true"), cache));
- index++;
- }
- }
- } catch (Exception e) {
- ErrorResultData errorResultData = ResultBuilder.createErrorResultData()
- .setErrorCode(ResultBuilder.ERRORCODE_DEFAULT).addLine(e.getMessage());
- return (ResultBuilder.buildResult(errorResultData));
- }
- }
- return result;
- }
-
- private boolean checkMemberPresence(DistributedMember dsMember, InternalCache cache) {
- // check if member's presence just before executing function
- // this is to avoid running a function on departed members #47248
- Set<DistributedMember> dsMemberList = CliUtil.getAllNormalMembers(cache);
- return dsMemberList.contains(dsMember);
- }
-
- private String listOfAllMembers(ArrayList<DistributedMember> dsMemberList) {
- StringBuilder listMembersId = new StringBuilder();
- for (int j = 0; j < dsMemberList.size() - 1; j++) {
- listMembersId.append(dsMemberList.get(j).getId());
- listMembersId.append(" ; ");
- }
- return listMembersId.toString();
- }
-
- private CompositeResultData toCompositeResultData(CompositeResultData rebalanceResultData,
- ArrayList<String> rstlist, int index, boolean simulate, InternalCache cache) {
-
- // add only if there are any valid regions in results
- if (rstlist.size() > resultItemCount && StringUtils.isNotEmpty(rstlist.get(resultItemCount))) {
- TabularResultData table1 = rebalanceResultData.addSection().addTable("Table" + index);
- String newLine = System.getProperty("line.separator");
- StringBuilder resultStr = new StringBuilder();
- resultStr.append(newLine);
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES);
- table1.accumulate("Value", rstlist.get(0));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES).append(" = ")
- .append(rstlist.get(0)).append(newLine);
-
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM);
- table1.accumulate("Value", rstlist.get(1));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM).append(" = ")
- .append(rstlist.get(1)).append(newLine);
-
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED);
- table1.accumulate("Value", rstlist.get(2));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED).append(" = ")
- .append(rstlist.get(2)).append(newLine);
-
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES);
- table1.accumulate("Value", rstlist.get(3));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES).append(" = ")
- .append(rstlist.get(3)).append(newLine);
-
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME);
- table1.accumulate("Value", rstlist.get(4));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME).append(" = ")
- .append(rstlist.get(4)).append(newLine);
-
- table1.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED);
- table1.accumulate("Value", rstlist.get(5));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED).append(" = ")
- .append(rstlist.get(5)).append(newLine);
-
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME);
- table1.accumulate("Value", rstlist.get(6));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME).append(" = ")
- .append(rstlist.get(6)).append(newLine);
-
- table1.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED);
- table1.accumulate("Value", rstlist.get(7));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED).append(" = ")
- .append(rstlist.get(7)).append(newLine);
-
- table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALTIME);
- table1.accumulate("Value", rstlist.get(8));
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALTIME).append(" = ").append(rstlist.get(8))
- .append(newLine);
-
- String headerText;
- if (simulate) {
- headerText = "Simulated partition regions ";
- } else {
- headerText = "Rebalanced partition regions ";
- }
- for (int i = resultItemCount; i < rstlist.size(); i++) {
- headerText = headerText + " " + rstlist.get(i);
- }
- table1.setHeader(headerText);
- cache.getLogger().info(headerText + resultStr);
- }
- return rebalanceResultData;
- }
-
- private CompositeResultData buildResultForRebalance(CompositeResultData rebalanceResultData,
- RebalanceResults results, int index, boolean simulate, InternalCache cache) {
- Set<PartitionRebalanceInfo> regions = results.getPartitionRebalanceDetails();
- Iterator iterator = regions.iterator();
-
- // add only if there are valid number of regions
- if (regions.size() > 0
- && StringUtils.isNotEmpty(((PartitionRebalanceInfo) iterator.next()).getRegionPath())) {
- final TabularResultData resultData =
- rebalanceResultData.addSection().addTable("Table" + index);
- String newLine = System.getProperty("line.separator");
- StringBuilder resultStr = new StringBuilder();
- resultStr.append(newLine);
-
- resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES);
- resultData.accumulate("Value", results.getTotalBucketCreateBytes());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES).append(" = ")
- .append(results.getTotalBucketCreateBytes()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM);
- resultData.accumulate("Value", results.getTotalBucketCreateTime());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM).append(" = ")
- .append(results.getTotalBucketCreateTime()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED);
- resultData.accumulate("Value", results.getTotalBucketCreatesCompleted());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED).append(" = ")
- .append(results.getTotalBucketCreatesCompleted()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES);
- resultData.accumulate("Value", results.getTotalBucketTransferBytes());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES).append(" = ")
- .append(results.getTotalBucketTransferBytes()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME);
- resultData.accumulate("Value", results.getTotalBucketTransferTime());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME).append(" = ")
- .append(results.getTotalBucketTransferTime()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED);
- resultData.accumulate("Value", results.getTotalBucketTransfersCompleted());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED).append(" = ")
- .append(results.getTotalBucketTransfersCompleted()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME);
- resultData.accumulate("Value", results.getTotalPrimaryTransferTime());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME).append(" = ")
- .append(results.getTotalPrimaryTransferTime()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats",
- CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED);
- resultData.accumulate("Value", results.getTotalPrimaryTransfersCompleted());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED).append(" = ")
- .append(results.getTotalPrimaryTransfersCompleted()).append(newLine);
-
- resultData.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALTIME);
- resultData.accumulate("Value", results.getTotalTime());
- resultStr.append(CliStrings.REBALANCE__MSG__TOTALTIME).append(" = ")
- .append(results.getTotalTime()).append(newLine);
-
- Iterator<PartitionRebalanceInfo> it = regions.iterator();
-
- String headerText;
-
- if (simulate) {
- headerText = "Simulated partition regions ";
- } else {
- headerText = "Rebalanced partition regions ";
- }
-
- while (it.hasNext()) {
- PartitionRebalanceInfo rgn = it.next();
- headerText = headerText + " " + rgn.getRegionPath();
- }
- resultData.setHeader(resultData.getHeader() + headerText);
-
- cache.getLogger().info(headerText + resultStr);
- }
- return rebalanceResultData;
- }
-
- private DistributedMember getAssociatedMembers(String region, final InternalCache cache) {
- DistributedRegionMXBean bean =
- ManagementService.getManagementService(cache).getDistributedRegionMXBean(region);
-
- DistributedMember member = null;
-
- if (bean == null) {
- return null;
- }
-
- String[] membersName = bean.getMembers();
- Set<DistributedMember> dsMembers = CliUtil.getAllMembers(cache);
- Iterator it = dsMembers.iterator();
-
- boolean matchFound = false;
-
- if (membersName.length > 1) {
- while (it.hasNext() && !matchFound) {
- DistributedMember dsmember = (DistributedMember) it.next();
- for (String memberName : membersName) {
- if (MBeanJMXAdapter.getMemberNameOrId(dsmember).equals(memberName)) {
- member = dsmember;
- matchFound = true;
- break;
- }
- }
- }
- }
- return member;
- }
-
- private List<MemberPRInfo> getMemberRegionList(InternalCache cache,
- List<String> listExcludedRegion) {
- List<MemberPRInfo> listMemberPRInfo = new ArrayList<>();
- String[] listDSRegions =
- ManagementService.getManagementService(cache).getDistributedSystemMXBean().listRegions();
- final Set<DistributedMember> dsMembers = CliUtil.getAllMembers(cache);
-
- for (String regionName : listDSRegions) {
- // check for excluded regions
- boolean excludedRegionMatch = false;
- for (String aListExcludedRegion : listExcludedRegion) {
- // this is needed since region name may start with / or without it
- // also
- String excludedRegion = aListExcludedRegion.trim();
- if (regionName.startsWith("/")) {
- if (!excludedRegion.startsWith("/")) {
- excludedRegion = "/" + excludedRegion;
- }
- }
- if (excludedRegion.startsWith("/")) {
- if (!regionName.startsWith("/")) {
- regionName = "/" + regionName;
- }
- }
-
- if (excludedRegion.equals(regionName)) {
- excludedRegionMatch = true;
- break;
- }
- }
-
- if (excludedRegionMatch) {
- // ignore this region
- continue;
- }
-
- if (!regionName.startsWith("/")) {
- regionName = Region.SEPARATOR + regionName;
- }
- // remove this prefix /
- DistributedRegionMXBean bean =
- ManagementService.getManagementService(cache).getDistributedRegionMXBean(regionName);
-
- if (bean != null) {
- if (bean.getRegionType().equals(DataPolicy.PARTITION.toString())
- || bean.getRegionType().equals(DataPolicy.PERSISTENT_PARTITION.toString())) {
-
- String[] memberNames = bean.getMembers();
- for (DistributedMember dsmember : dsMembers) {
- for (String memberName : memberNames) {
- if (MBeanJMXAdapter.getMemberNameOrId(dsmember).equals(memberName)) {
- MemberPRInfo memberAndItsPRRegions = new MemberPRInfo();
- memberAndItsPRRegions.region = regionName;
- memberAndItsPRRegions.dsMemberList.add(dsmember);
- if (listMemberPRInfo.contains(memberAndItsPRRegions)) {
- // add member for appropriate region
- int index = listMemberPRInfo.indexOf(memberAndItsPRRegions);
- MemberPRInfo listMember = listMemberPRInfo.get(index);
- listMember.dsMemberList.add(dsmember);
- } else {
- listMemberPRInfo.add(memberAndItsPRRegions);
- }
- break;
- }
- }
- }
- }
- }
- }
-
- return listMemberPRInfo;
- }
-
- @CliCommand(value = CliStrings.EXPORT_DATA, help = CliStrings.EXPORT_DATA__HELP)
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- public Result exportData(
- @CliOption(key = CliStrings.EXPORT_DATA__REGION, mandatory = true,
- optionContext = ConverterHint.REGION_PATH,
- help = CliStrings.EXPORT_DATA__REGION__HELP) String regionName,
- @CliOption(key = CliStrings.EXPORT_DATA__FILE, mandatory = true,
- help = CliStrings.EXPORT_DATA__FILE__HELP) String filePath,
- @CliOption(key = CliStrings.MEMBER, optionContext = ConverterHint.MEMBERIDNAME,
- mandatory = true, help = CliStrings.EXPORT_DATA__MEMBER__HELP) String memberNameOrId) {
-
- getSecurityService().authorizeRegionRead(regionName);
- final DistributedMember targetMember = CliUtil.getDistributedMemberByNameOrId(memberNameOrId);
- Result result;
-
- if (!filePath.endsWith(CliStrings.GEODE_DATA_FILE_EXTENSION)) {
- return ResultBuilder.createUserErrorResult(CliStrings
- .format(CliStrings.INVALID_FILE_EXTENSION, CliStrings.GEODE_DATA_FILE_EXTENSION));
- }
- try {
- if (targetMember != null) {
- final String args[] = {regionName, filePath};
-
- ResultCollector<?, ?> rc = CliUtil.executeFunction(exportDataFunction, args, targetMember);
- List<Object> results = (List<Object>) rc.getResult();
-
- if (results != null) {
- Object resultObj = results.get(0);
- if (resultObj instanceof String) {
- result = ResultBuilder.createInfoResult((String) resultObj);
- } else if (resultObj instanceof Exception) {
- result = ResultBuilder.createGemFireErrorResult(((Exception) resultObj).getMessage());
- } else {
- result = ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.EXPORT_DATA));
- }
- } else {
- result = ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.EXPORT_DATA));
- }
- } else {
- result = ResultBuilder.createUserErrorResult(
- CliStrings.format(CliStrings.EXPORT_DATA__MEMBER__NOT__FOUND, memberNameOrId));
- }
- } catch (CacheClosedException e) {
- result = ResultBuilder.createGemFireErrorResult(e.getMessage());
- } catch (FunctionInvocationTargetException e) {
- result = ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
- }
-
- return result;
- }
-
- @CliCommand(value = CliStrings.IMPORT_DATA, help = CliStrings.IMPORT_DATA__HELP)
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- public Result importData(
- @CliOption(key = CliStrings.IMPORT_DATA__REGION, optionContext = ConverterHint.REGION_PATH,
- mandatory = true, help = CliStrings.IMPORT_DATA__REGION__HELP) String regionName,
- @CliOption(key = CliStrings.IMPORT_DATA__FILE, mandatory = true,
- help = CliStrings.IMPORT_DATA__FILE__HELP) String filePath,
- @CliOption(key = CliStrings.MEMBER, mandatory = true,
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.IMPORT_DATA__MEMBER__HELP) String memberNameOrId,
- @CliOption(key = CliStrings.IMPORT_DATA__INVOKE_CALLBACKS, unspecifiedDefaultValue = "false",
- help = CliStrings.IMPORT_DATA__INVOKE_CALLBACKS__HELP) boolean invokeCallbacks) {
-
- getSecurityService().authorizeRegionWrite(regionName);
-
- Result result;
-
- try {
- final DistributedMember targetMember = CliUtil.getDistributedMemberByNameOrId(memberNameOrId);
-
- if (!filePath.endsWith(CliStrings.GEODE_DATA_FILE_EXTENSION)) {
- return ResultBuilder.createUserErrorResult(CliStrings
- .format(CliStrings.INVALID_FILE_EXTENSION, CliStrings.GEODE_DATA_FILE_EXTENSION));
- }
- if (targetMember != null) {
- final Object args[] = {regionName, filePath, invokeCallbacks};
- ResultCollector<?, ?> rc = CliUtil.executeFunction(importDataFunction, args, targetMember);
- List<Object> results = (List<Object>) rc.getResult();
-
- if (results != null) {
- Object resultObj = results.get(0);
-
- if (resultObj instanceof String) {
- result = ResultBuilder.createInfoResult((String) resultObj);
- } else if (resultObj instanceof Exception) {
- result = ResultBuilder.createGemFireErrorResult(((Exception) resultObj).getMessage());
- } else {
- result = ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
- }
- } else {
- result = ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
- }
- } else {
- result = ResultBuilder.createUserErrorResult(
- CliStrings.format(CliStrings.IMPORT_DATA__MEMBER__NOT__FOUND, memberNameOrId));
- }
- } catch (CacheClosedException e) {
- result = ResultBuilder.createGemFireErrorResult(e.getMessage());
- } catch (FunctionInvocationTargetException e) {
- result = ResultBuilder.createGemFireErrorResult(
- CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
- }
- return result;
- }
-
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- @CliCommand(value = {CliStrings.PUT}, help = CliStrings.PUT__HELP)
- public Result put(
- @CliOption(key = {CliStrings.PUT__KEY}, mandatory = true,
- help = CliStrings.PUT__KEY__HELP) String key,
- @CliOption(key = {CliStrings.PUT__VALUE}, mandatory = true,
- help = CliStrings.PUT__VALUE__HELP) String value,
- @CliOption(key = {CliStrings.PUT__REGIONNAME}, mandatory = true,
- help = CliStrings.PUT__REGIONNAME__HELP,
- optionContext = ConverterHint.REGION_PATH) String regionPath,
- @CliOption(key = {CliStrings.PUT__KEYCLASS},
- help = CliStrings.PUT__KEYCLASS__HELP) String keyClass,
- @CliOption(key = {CliStrings.PUT__VALUEKLASS},
- help = CliStrings.PUT__VALUEKLASS__HELP) String valueClass,
- @CliOption(key = {CliStrings.PUT__PUTIFABSENT}, help = CliStrings.PUT__PUTIFABSENT__HELP,
- unspecifiedDefaultValue = "false") boolean putIfAbsent) {
-
- InternalCache cache = getCache();
- cache.getSecurityService().authorizeRegionWrite(regionPath);
- DataCommandResult dataResult;
- if (StringUtils.isEmpty(regionPath)) {
- return makePresentationResult(DataCommandResult.createPutResult(key, null, null,
- CliStrings.PUT__MSG__REGIONNAME_EMPTY, false));
- }
-
- if (StringUtils.isEmpty(key)) {
- return makePresentationResult(DataCommandResult.createPutResult(key, null, null,
- CliStrings.PUT__MSG__KEY_EMPTY, false));
- }
-
- if (StringUtils.isEmpty(value)) {
- return makePresentationResult(DataCommandResult.createPutResult(value, null, null,
- CliStrings.PUT__MSG__VALUE_EMPTY, false));
- }
-
- @SuppressWarnings("rawtypes")
- Region region = cache.getRegion(regionPath);
- DataCommandFunction putfn = new DataCommandFunction();
- if (region == null) {
- Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false);
- if (CollectionUtils.isNotEmpty(memberList)) {
- DataCommandRequest request = new DataCommandRequest();
- request.setCommand(CliStrings.PUT);
- request.setValue(value);
- request.setKey(key);
- request.setKeyClass(keyClass);
- request.setRegionName(regionPath);
- request.setValueClass(valueClass);
- request.setPutIfAbsent(putIfAbsent);
- dataResult = callFunctionForRegion(request, putfn, memberList);
- } else {
- dataResult = DataCommandResult.createPutInfoResult(key, value, null,
- CliStrings.format(CliStrings.PUT__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath),
- false);
- }
- } else {
- dataResult = putfn.put(key, value, putIfAbsent, keyClass, valueClass, regionPath);
- }
- dataResult.setKeyClass(keyClass);
- if (valueClass != null) {
- dataResult.setValueClass(valueClass);
- }
- return makePresentationResult(dataResult);
- }
-
- private Result makePresentationResult(DataCommandResult dataResult) {
- if (dataResult != null) {
- return dataResult.toCommandResult();
- } else {
- return ResultBuilder.createGemFireErrorResult("Error executing data command");
- }
- }
-
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- @CliCommand(value = {CliStrings.GET}, help = CliStrings.GET__HELP)
- public Result get(
- @CliOption(key = {CliStrings.GET__KEY}, mandatory = true,
- help = CliStrings.GET__KEY__HELP) String key,
- @CliOption(key = {CliStrings.GET__REGIONNAME}, mandatory = true,
- help = CliStrings.GET__REGIONNAME__HELP,
- optionContext = ConverterHint.REGION_PATH) String regionPath,
- @CliOption(key = {CliStrings.GET__KEYCLASS},
- help = CliStrings.GET__KEYCLASS__HELP) String keyClass,
- @CliOption(key = {CliStrings.GET__VALUEKLASS},
- help = CliStrings.GET__VALUEKLASS__HELP) String valueClass,
- @CliOption(key = CliStrings.GET__LOAD, unspecifiedDefaultValue = "true",
- specifiedDefaultValue = "true",
- help = CliStrings.GET__LOAD__HELP) Boolean loadOnCacheMiss) {
-
- InternalCache cache = getCache();
- cache.getSecurityService().authorizeRegionRead(regionPath, key);
- DataCommandResult dataResult;
-
- if (StringUtils.isEmpty(regionPath)) {
- return makePresentationResult(DataCommandResult.createGetResult(key, null, null,
- CliStrings.GET__MSG__REGIONNAME_EMPTY, false));
- }
-
- if (StringUtils.isEmpty(key)) {
- return makePresentationResult(DataCommandResult.createGetResult(key, null, null,
- CliStrings.GET__MSG__KEY_EMPTY, false));
- }
-
- @SuppressWarnings("rawtypes")
- Region region = cache.getRegion(regionPath);
- DataCommandFunction getfn = new DataCommandFunction();
- if (region == null) {
- Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false);
- if (CollectionUtils.isNotEmpty(memberList)) {
- DataCommandRequest request = new DataCommandRequest();
- request.setCommand(CliStrings.GET);
- request.setKey(key);
- request.setKeyClass(keyClass);
- request.setRegionName(regionPath);
- request.setValueClass(valueClass);
- request.setLoadOnCacheMiss(loadOnCacheMiss);
- Subject subject = cache.getSecurityService().getSubject();
- if (subject != null) {
- request.setPrincipal(subject.getPrincipal());
- }
- dataResult = callFunctionForRegion(request, getfn, memberList);
- } else {
- dataResult = DataCommandResult.createGetInfoResult(key, null, null,
- CliStrings.format(CliStrings.GET__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath),
- false);
- }
- } else {
- dataResult = getfn.get(null, key, keyClass, valueClass, regionPath, loadOnCacheMiss,
- cache.getSecurityService());
- }
- dataResult.setKeyClass(keyClass);
- if (valueClass != null) {
- dataResult.setValueClass(valueClass);
- }
-
- return makePresentationResult(dataResult);
- }
-
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- @CliCommand(value = {CliStrings.LOCATE_ENTRY}, help = CliStrings.LOCATE_ENTRY__HELP)
- public Result locateEntry(
- @CliOption(key = {CliStrings.LOCATE_ENTRY__KEY}, mandatory = true,
- help = CliStrings.LOCATE_ENTRY__KEY__HELP) String key,
- @CliOption(key = {CliStrings.LOCATE_ENTRY__REGIONNAME}, mandatory = true,
- help = CliStrings.LOCATE_ENTRY__REGIONNAME__HELP,
- optionContext = ConverterHint.REGION_PATH) String regionPath,
- @CliOption(key = {CliStrings.LOCATE_ENTRY__KEYCLASS},
- help = CliStrings.LOCATE_ENTRY__KEYCLASS__HELP) String keyClass,
- @CliOption(key = {CliStrings.LOCATE_ENTRY__VALUEKLASS},
- help = CliStrings.LOCATE_ENTRY__VALUEKLASS__HELP) String valueClass,
- @CliOption(key = {CliStrings.LOCATE_ENTRY__RECURSIVE},
- help = CliStrings.LOCATE_ENTRY__RECURSIVE__HELP,
- unspecifiedDefaultValue = "false") boolean recursive) {
-
- getSecurityService().authorizeRegionRead(regionPath, key);
-
- DataCommandResult dataResult;
-
- if (StringUtils.isEmpty(regionPath)) {
- return makePresentationResult(DataCommandResult.createLocateEntryResult(key, null, null,
- CliStrings.LOCATE_ENTRY__MSG__REGIONNAME_EMPTY, false));
- }
-
- if (StringUtils.isEmpty(key)) {
- return makePresentationResult(DataCommandResult.createLocateEntryResult(key, null, null,
- CliStrings.LOCATE_ENTRY__MSG__KEY_EMPTY, false));
- }
-
- DataCommandFunction locateEntry = new DataCommandFunction();
- Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), true);
- if (CollectionUtils.isNotEmpty(memberList)) {
- DataCommandRequest request = new DataCommandRequest();
- request.setCommand(CliStrings.LOCATE_ENTRY);
- request.setKey(key);
- request.setKeyClass(keyClass);
- request.setRegionName(regionPath);
- request.setValueClass(valueClass);
- request.setRecursive(recursive);
- dataResult = callFunctionForRegion(request, locateEntry, memberList);
- } else {
- dataResult = DataCommandResult.createLocateEntryInfoResult(key, null, null, CliStrings.format(
- CliStrings.LOCATE_ENTRY__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath), false);
- }
- dataResult.setKeyClass(keyClass);
- if (valueClass != null) {
- dataResult.setValueClass(valueClass);
- }
-
- return makePresentationResult(dataResult);
- }
-
- @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
- @CliCommand(value = {CliStrings.REMOVE}, help = CliStrings.REMOVE__HELP)
- public Result remove(
- @CliOption(key = {CliStrings.REMOVE__KEY}, help = CliStrings.REMOVE__KEY__HELP,
- specifiedDefaultValue = "") String key,
- @CliOption(key = {CliStrings.REMOVE__REGION}, mandatory = true,
- help = CliStrings.REMOVE__REGION__HELP,
- optionContext = ConverterHint.REGION_PATH) String regionPath,
- @CliOption(key = CliStrings.REMOVE__ALL, help = CliStrings.REMOVE__ALL__HELP,
- specifiedDefaultValue = "true", unspecifiedDefaultValue = "false") boolean removeAllKeys,
- @CliOption(key = {CliStrings.REMOVE__KEYCLASS},
- help = CliStrings.REMOVE__KEYCLASS__HELP) String keyClass) {
- InternalCache cache = getCache();
- DataCommandResult dataResult;
-
- if (StringUtils.isEmpty(regionPath)) {
- return makePresentationResult(DataCommandResult.createRemoveResult(key, null, null,
- CliStrings.REMOVE__MSG__REGIONNAME_EMPTY, false));
- }
-
- if (!removeAllKeys && (key == null)) {
- return makePresentationResult(DataCommandResult.createRemoveResult(null, null, null,
- CliStrings.REMOVE__MSG__KEY_EMPTY, false));
- }
-
- if (removeAllKeys) {
- cache.getSecurityService().authorizeRegionWrite(regionPath);
- } else {
- cache.getSecurityService().authorizeRegionWrite(regionPath, key);
- }
-
- @SuppressWarnings("rawtypes")
- Region region = cache.getRegion(regionPath);
- DataCommandFunction removefn = new DataCommandFunction();
- if (region == null) {
- Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false);
- if (CollectionUtils.isNotEmpty(memberList)) {
- DataCommandRequest request = new DataCommandRequest();
- request.setCommand(CliStrings.REMOVE);
- request.setKey(key);
- request.setKeyClass(keyClass);
- request.setRemoveAllKeys(removeAllKeys ? "ALL" : null);
- request.setRegionName(regionPath);
- dataResult = callFunctionForRegion(request, removefn, memberList);
- } else {
- dataResult = DataCommandResult.createRemoveInfoResult(key, null, null,
- CliStrings.format(CliStrings.REMOVE__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath),
- false);
- }
-
- } else {
- dataResult = removefn.remove(key, keyClass, regionPath, removeAllKeys ? "ALL" : null);
- }
- dataResult.setKeyClass(keyClass);
-
- return makePresentationResult(dataResult);
- }
-
- private static class MemberPRInfo {
- ArrayList<DistributedMember> dsMemberList;
- public String region;
-
- MemberPRInfo() {
- region = "";
- dsMemberList = new ArrayList<>();
- }
-
- @Override
- public boolean equals(Object o2) {
- return o2 != null && this.region.equals(((MemberPRInfo) o2).region);
- }
- }
-
- @SuppressWarnings("rawtypes")
- public static DataCommandResult callFunctionForRegion(DataCommandRequest request,
- DataCommandFunction putfn, Set<DistributedMember> members) {
-
- if (members.size() == 1) {
- DistributedMember member = members.iterator().next();
- ResultCollector collector =
- FunctionService.onMember(member).setArguments(request).execute(putfn);
- List list = (List) collector.getResult();
- Object object = list.get(0);
- if (object instanceof Throwable) {
- Throwable error = (Throwable) object;
- DataCommandResult result = new DataCommandResult();
- result.setErorr(error);
- result.setErrorString(error.getMessage());
- return result;
- }
- DataCommandResult result = (DataCommandResult) list.get(0);
- result.aggregate(null);
- return result;
- } else {
- ResultCollector collector =
- FunctionService.onMembers(members).setArguments(request).execute(putfn);
- List list = (List) collector.getResult();
- DataCommandResult result = null;
- for (Object object : list) {
- if (object instanceof Throwable) {
- Throwable error = (Throwable) object;
- result = new DataCommandResult();
- result.setErorr(error);
- result.setErrorString(error.getMessage());
- return result;
- }
-
- if (result == null) {
- result = (DataCommandResult) object;
- result.aggregate(null);
- } else {
- result.aggregate((DataCommandResult) object);
- }
- }
- return result;
- }
- }
-
- public static Set<DistributedMember> getQueryRegionsAssociatedMembers(Set<String> regions,
- final InternalCache cache, boolean returnAll) {
- LogWriter logger = cache.getLogger();
- Set<DistributedMember> members;
- Set<DistributedMember> newMembers = null;
- Iterator<String> iterator = regions.iterator();
- String region = iterator.next();
- members = getRegionAssociatedMembers(region, cache, true);
- if (logger.fineEnabled()) {
- logger.fine("Members for region " + region + " Members " + members);
- }
- List<String> regionAndingList = new ArrayList<>();
- regionAndingList.add(region);
- if (regions.size() == 1) {
- newMembers = members;
- } else {
- if (CollectionUtils.isNotEmpty(members)) {
- while (iterator.hasNext()) {
- region = iterator.next();
- newMembers = getRegionAssociatedMembers(region, cache, true);
- if (newMembers == null) {
- newMembers = new HashSet<>();
- }
- if (logger.fineEnabled()) {
- logger.fine("Members for region " + region + " Members " + newMembers);
- }
- regionAndingList.add(region);
- newMembers.retainAll(members);
- members = newMembers;
- if (logger.fineEnabled()) {
- logger.fine(
- "Members after anding for regions " + regionAndingList + " List : " + newMembers);
- }
- }
- }
- }
- members = new HashSet<>();
- if (newMembers == null) {
- return members;
- }
- for (DistributedMember newMember : newMembers) {
- members.add(newMember);
- if (!returnAll) {
- return members;
- }
- }
- return members;
- }
-
- @SuppressWarnings("rawtypes")
- public static Set<DistributedMember> getRegionAssociatedMembers(String region,
- final InternalCache cache, boolean returnAll) {
-
- DistributedMember member;
-
- if (StringUtils.isEmpty(region)) {
- return null;
- }
-
- DistributedRegionMXBean bean =
- ManagementService.getManagementService(cache).getDistributedRegionMXBean(region);
-
- if (bean == null) {
- // try with slash ahead
- bean = ManagementService.getManagementService(cache)
- .getDistributedRegionMXBean(Region.SEPARATOR + region);
- }
-
- if (bean == null) {
- return null;
- }
-
- String[] membersName = bean.getMembers();
- Set<DistributedMember> dsMembers = cache.getMembers();
- Set<DistributedMember> dsMembersWithThisMember = new HashSet<>();
- dsMembersWithThisMember.addAll(dsMembers);
- dsMembersWithThisMember.add(cache.getDistributedSystem().getDistributedMember());
- Iterator it = dsMembersWithThisMember.iterator();
- Set<DistributedMember> matchedMembers = new HashSet<>();
-
- if (membersName.length > 0) {
- while (it.hasNext()) {
- DistributedMember dsmember = (DistributedMember) it.next();
- for (String memberName : membersName) {
- String name = MBeanJMXAdapter.getMemberNameOrId(dsmember);
- if (name.equals(memberName)) {
- member = dsmember;
- matchedMembers.add(member);
- if (!returnAll) {
- return matchedMembers;
- }
- }
- }
- }
- }
-
- // try with function calls
- if (matchedMembers.size() == 0) {
- matchedMembers = CliUtil.getMembersForeRegionViaFunction(cache, region, true);
- }
- return matchedMembers;
- }
-
- // TODO:k revisit after adding support in Gfsh.java?
- public static Object[] replaceGfshEnvVar(String query, Map<String, String> gfshEnvVarMap) {
- boolean done = false;
- int startIndex = 0;
- int replacedVars = 0;
- while (!done) {
- int index1 = query.indexOf("${", startIndex);
- if (index1 == -1) {
- break;
- }
- int index2 = query.indexOf("}", index1);
- if (index2 == -1) {
- break;
- }
- String var = query.substring(index1 + 2, index2);
- String value = gfshEnvVarMap.get(var);
- if (value != null) {
- query = query.replaceAll("\\$\\{" + var + "\\}", value);
- replacedVars++;
- }
- startIndex = index2 + 1;
- if (startIndex >= query.length()) {
- done = true;
- }
- }
- return new Object[] {replacedVars, query};
- }
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java
new file mode 100644
index 0000000..bca315f
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommandsUtils.java
@@ -0,0 +1,311 @@
+/*
+ * 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.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+
+import org.apache.geode.LogWriter;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.execute.FunctionService;
+import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.DistributedRegionMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.MBeanJMXAdapter;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.domain.DataCommandRequest;
+import org.apache.geode.management.internal.cli.domain.DataCommandResult;
+import org.apache.geode.management.internal.cli.functions.DataCommandFunction;
+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.management.internal.cli.result.TabularResultData;
+
+public class DataCommandsUtils {
+ static boolean checkResultList(CompositeResultData rebalanceResultData, List resultList,
+ DistributedMember member) {
+ boolean toContinueForOtherMembers = false;
+ if (CollectionUtils.isNotEmpty(resultList)) {
+ for (Object object : resultList) {
+ if (object instanceof Exception) {
+ rebalanceResultData.addSection().addData(
+ CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()),
+ ((Exception) object).getMessage());
+
+ LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId()
+ + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object));
+
+ toContinueForOtherMembers = true;
+ break;
+ } else if (object instanceof Throwable) {
+ rebalanceResultData.addSection().addData(
+ CliStrings.format(CliStrings.REBALANCE__MSG__NO_EXECUTION, member.getId()),
+ ((Throwable) object).getMessage());
+
+ LogWrapper.getInstance().info(CliStrings.REBALANCE__MSG__NO_EXECUTION + member.getId()
+ + " exception=" + ((Throwable) object).getMessage(), ((Throwable) object));
+
+ toContinueForOtherMembers = true;
+ break;
+ }
+ }
+ } else {
+ LogWrapper.getInstance().info(
+ "Rebalancing for member=" + member.getId() + ", resultList is either null or empty");
+ rebalanceResultData.addSection().addData("Rebalancing for member=" + member.getId(),
+ ", resultList is either null or empty");
+ toContinueForOtherMembers = true;
+ }
+ return toContinueForOtherMembers;
+ }
+
+ static List<String> tokenize(String str, String separator) {
+ StringTokenizer st = new StringTokenizer(str, separator);
+ List<String> rstList = new ArrayList<>();
+ while (st.hasMoreTokens()) {
+ rstList.add(st.nextToken());
+
+ }
+ return rstList;
+ }
+
+ static CompositeResultData toCompositeResultData(CompositeResultData rebalanceResultData,
+ ArrayList<String> rstlist, int index, boolean simulate, InternalCache cache) {
+ int resultItemCount = 9;
+ // add only if there are any valid regions in results
+ if (rstlist.size() > resultItemCount && StringUtils.isNotEmpty(rstlist.get(resultItemCount))) {
+ TabularResultData table1 = rebalanceResultData.addSection().addTable("Table" + index);
+ String newLine = System.getProperty("line.separator");
+ StringBuilder resultStr = new StringBuilder();
+ resultStr.append(newLine);
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES);
+ table1.accumulate("Value", rstlist.get(0));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATEBYTES).append(" = ")
+ .append(rstlist.get(0)).append(newLine);
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM);
+ table1.accumulate("Value", rstlist.get(1));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATETIM).append(" = ")
+ .append(rstlist.get(1)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED);
+ table1.accumulate("Value", rstlist.get(2));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETCREATESCOMPLETED).append(" = ")
+ .append(rstlist.get(2)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES);
+ table1.accumulate("Value", rstlist.get(3));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERBYTES).append(" = ")
+ .append(rstlist.get(3)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME);
+ table1.accumulate("Value", rstlist.get(4));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERTIME).append(" = ")
+ .append(rstlist.get(4)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED);
+ table1.accumulate("Value", rstlist.get(5));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALBUCKETTRANSFERSCOMPLETED).append(" = ")
+ .append(rstlist.get(5)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME);
+ table1.accumulate("Value", rstlist.get(6));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERTIME).append(" = ")
+ .append(rstlist.get(6)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats",
+ CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED);
+ table1.accumulate("Value", rstlist.get(7));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALPRIMARYTRANSFERSCOMPLETED).append(" = ")
+ .append(rstlist.get(7)).append(newLine);
+
+ table1.accumulate("Rebalanced Stats", CliStrings.REBALANCE__MSG__TOTALTIME);
+ table1.accumulate("Value", rstlist.get(8));
+ resultStr.append(CliStrings.REBALANCE__MSG__TOTALTIME).append(" = ").append(rstlist.get(8))
+ .append(newLine);
+
+ String headerText;
+ if (simulate) {
+ headerText = "Simulated partition regions ";
+ } else {
+ headerText = "Rebalanced partition regions ";
+ }
+ for (int i = resultItemCount; i < rstlist.size(); i++) {
+ headerText = headerText + " " + rstlist.get(i);
+ }
+ table1.setHeader(headerText);
+ cache.getLogger().info(headerText + resultStr);
+ }
+ return rebalanceResultData;
+ }
+
+ static Result makePresentationResult(DataCommandResult dataResult) {
+ if (dataResult != null) {
+ return dataResult.toCommandResult();
+ } else {
+ return ResultBuilder.createGemFireErrorResult("Error executing data command");
+ }
+ }
+
+ public static Set<DistributedMember> getRegionAssociatedMembers(String region,
+ final InternalCache cache, boolean returnAll) {
+ DistributedMember member;
+ if (StringUtils.isEmpty(region)) {
+ return null;
+ }
+ DistributedRegionMXBean bean =
+ ManagementService.getManagementService(cache).getDistributedRegionMXBean(region);
+ if (bean == null) {
+ // try with slash ahead
+ bean = ManagementService.getManagementService(cache)
+ .getDistributedRegionMXBean(Region.SEPARATOR + region);
+ }
+ if (bean == null) {
+ return null;
+ }
+ String[] membersName = bean.getMembers();
+ Set<DistributedMember> dsMembers = cache.getMembers();
+ Set<DistributedMember> dsMembersWithThisMember = new HashSet<>();
+ dsMembersWithThisMember.addAll(dsMembers);
+ dsMembersWithThisMember.add(cache.getDistributedSystem().getDistributedMember());
+ Iterator it = dsMembersWithThisMember.iterator();
+ Set<DistributedMember> matchedMembers = new HashSet<>();
+
+ if (membersName.length > 0) {
+ while (it.hasNext()) {
+ DistributedMember dsmember = (DistributedMember) it.next();
+ for (String memberName : membersName) {
+ String name = MBeanJMXAdapter.getMemberNameOrId(dsmember);
+ if (name.equals(memberName)) {
+ member = dsmember;
+ matchedMembers.add(member);
+ if (!returnAll) {
+ return matchedMembers;
+ }
+ }
+ }
+ }
+ }
+ // try with function calls
+ if (matchedMembers.size() == 0) {
+ matchedMembers = CliUtil.getMembersForeRegionViaFunction(cache, region, true);
+ }
+ return matchedMembers;
+ }
+
+ static DataCommandResult callFunctionForRegion(DataCommandRequest request,
+ DataCommandFunction putfn, Set<DistributedMember> members) {
+ if (members.size() == 1) {
+ DistributedMember member = members.iterator().next();
+ ResultCollector collector =
+ FunctionService.onMember(member).setArguments(request).execute(putfn);
+ List list = (List) collector.getResult();
+ Object object = list.get(0);
+ if (object instanceof Throwable) {
+ Throwable error = (Throwable) object;
+ DataCommandResult result = new DataCommandResult();
+ result.setErorr(error);
+ result.setErrorString(error.getMessage());
+ return result;
+ }
+ DataCommandResult result = (DataCommandResult) list.get(0);
+ result.aggregate(null);
+ return result;
+ } else {
+ ResultCollector collector =
+ FunctionService.onMembers(members).setArguments(request).execute(putfn);
+ List list = (List) collector.getResult();
+ DataCommandResult result = null;
+ for (Object object : list) {
+ if (object instanceof Throwable) {
+ Throwable error = (Throwable) object;
+ result = new DataCommandResult();
+ result.setErorr(error);
+ result.setErrorString(error.getMessage());
+ return result;
+ }
+
+ if (result == null) {
+ result = (DataCommandResult) object;
+ result.aggregate(null);
+ } else {
+ result.aggregate((DataCommandResult) object);
+ }
+ }
+ return result;
+ }
+ }
+
+ public static Set<DistributedMember> getQueryRegionsAssociatedMembers(Set<String> regions,
+ final InternalCache cache, boolean returnAll) {
+ LogWriter logger = cache.getLogger();
+ Set<DistributedMember> members;
+ Set<DistributedMember> newMembers = null;
+ Iterator<String> iterator = regions.iterator();
+ String region = iterator.next();
+ members = getRegionAssociatedMembers(region, cache, true);
+ if (logger.fineEnabled()) {
+ logger.fine("Members for region " + region + " Members " + members);
+ }
+ List<String> regionAndingList = new ArrayList<>();
+ regionAndingList.add(region);
+ if (regions.size() == 1) {
+ newMembers = members;
+ } else {
+ if (CollectionUtils.isNotEmpty(members)) {
+ while (iterator.hasNext()) {
+ region = iterator.next();
+ newMembers = getRegionAssociatedMembers(region, cache, true);
+ if (newMembers == null) {
+ newMembers = new HashSet<>();
+ }
+ if (logger.fineEnabled()) {
+ logger.fine("Members for region " + region + " Members " + newMembers);
+ }
+ regionAndingList.add(region);
+ newMembers.retainAll(members);
+ members = newMembers;
+ if (logger.fineEnabled()) {
+ logger.fine(
+ "Members after anding for regions " + regionAndingList + " List : " + newMembers);
+ }
+ }
+ }
+ }
+ members = new HashSet<>();
+ if (newMembers == null) {
+ return members;
+ }
+ for (DistributedMember newMember : newMembers) {
+ members.add(newMember);
+ if (!returnAll) {
+ return members;
+ }
+ }
+ return members;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.java
new file mode 100644
index 0000000..40bd0f3
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportDataCommand.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.util.List;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.CacheClosedException;
+import org.apache.geode.cache.execute.FunctionInvocationTargetException;
+import org.apache.geode.cache.execute.ResultCollector;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.functions.ExportDataFunction;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+
+public class ExportDataCommand implements GfshCommand {
+ private final ExportDataFunction exportDataFunction = new ExportDataFunction();
+
+ @CliCommand(value = CliStrings.EXPORT_DATA, help = CliStrings.EXPORT_DATA__HELP)
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ public Result exportData(
+ @CliOption(key = CliStrings.EXPORT_DATA__REGION, mandatory = true,
+ optionContext = ConverterHint.REGION_PATH,
+ help = CliStrings.EXPORT_DATA__REGION__HELP) String regionName,
+ @CliOption(key = CliStrings.EXPORT_DATA__FILE, mandatory = true,
+ help = CliStrings.EXPORT_DATA__FILE__HELP) String filePath,
+ @CliOption(key = CliStrings.MEMBER, optionContext = ConverterHint.MEMBERIDNAME,
+ mandatory = true, help = CliStrings.EXPORT_DATA__MEMBER__HELP) String memberNameOrId) {
+
+ getSecurityService().authorizeRegionRead(regionName);
+ final DistributedMember targetMember = CliUtil.getDistributedMemberByNameOrId(memberNameOrId);
+ Result result;
+
+ if (!filePath.endsWith(CliStrings.GEODE_DATA_FILE_EXTENSION)) {
+ return ResultBuilder.createUserErrorResult(CliStrings
+ .format(CliStrings.INVALID_FILE_EXTENSION, CliStrings.GEODE_DATA_FILE_EXTENSION));
+ }
+ try {
+ if (targetMember != null) {
+ final String args[] = {regionName, filePath};
+
+ ResultCollector<?, ?> rc = CliUtil.executeFunction(exportDataFunction, args, targetMember);
+ List<Object> results = (List<Object>) rc.getResult();
+
+ if (results != null) {
+ Object resultObj = results.get(0);
+ if (resultObj instanceof String) {
+ result = ResultBuilder.createInfoResult((String) resultObj);
+ } else if (resultObj instanceof Exception) {
+ result = ResultBuilder.createGemFireErrorResult(((Exception) resultObj).getMessage());
+ } else {
+ result = ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.EXPORT_DATA));
+ }
+ } else {
+ result = ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.EXPORT_DATA));
+ }
+ } else {
+ result = ResultBuilder.createUserErrorResult(
+ CliStrings.format(CliStrings.EXPORT_DATA__MEMBER__NOT__FOUND, memberNameOrId));
+ }
+ } catch (CacheClosedException e) {
+ result = ResultBuilder.createGemFireErrorResult(e.getMessage());
+ } catch (FunctionInvocationTargetException e) {
+ result = ResultBuilder.createGemFireErrorResult(
+ CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, CliStrings.IMPORT_DATA));
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/32364169/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java
new file mode 100644
index 0000000..f09174e
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GetCommand.java
@@ -0,0 +1,106 @@
+/*
+ * 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 static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.callFunctionForRegion;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.getRegionAssociatedMembers;
+import static org.apache.geode.management.internal.cli.commands.DataCommandsUtils.makePresentationResult;
+
+import java.util.Set;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.subject.Subject;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.cache.Region;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.cli.domain.DataCommandRequest;
+import org.apache.geode.management.internal.cli.domain.DataCommandResult;
+import org.apache.geode.management.internal.cli.functions.DataCommandFunction;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+
+public class GetCommand implements GfshCommand {
+ @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
+ @CliCommand(value = {CliStrings.GET}, help = CliStrings.GET__HELP)
+ public Result get(
+ @CliOption(key = {CliStrings.GET__KEY}, mandatory = true,
+ help = CliStrings.GET__KEY__HELP) String key,
+ @CliOption(key = {CliStrings.GET__REGIONNAME}, mandatory = true,
+ help = CliStrings.GET__REGIONNAME__HELP,
+ optionContext = ConverterHint.REGION_PATH) String regionPath,
+ @CliOption(key = {CliStrings.GET__KEYCLASS},
+ help = CliStrings.GET__KEYCLASS__HELP) String keyClass,
+ @CliOption(key = {CliStrings.GET__VALUEKLASS},
+ help = CliStrings.GET__VALUEKLASS__HELP) String valueClass,
+ @CliOption(key = CliStrings.GET__LOAD, unspecifiedDefaultValue = "true",
+ specifiedDefaultValue = "true",
+ help = CliStrings.GET__LOAD__HELP) Boolean loadOnCacheMiss) {
+
+ InternalCache cache = getCache();
+ cache.getSecurityService().authorizeRegionRead(regionPath, key);
+ DataCommandResult dataResult;
+
+ if (StringUtils.isEmpty(regionPath)) {
+ return makePresentationResult(DataCommandResult.createGetResult(key, null, null,
+ CliStrings.GET__MSG__REGIONNAME_EMPTY, false));
+ }
+
+ if (StringUtils.isEmpty(key)) {
+ return makePresentationResult(DataCommandResult.createGetResult(key, null, null,
+ CliStrings.GET__MSG__KEY_EMPTY, false));
+ }
+
+ @SuppressWarnings("rawtypes")
+ Region region = cache.getRegion(regionPath);
+ DataCommandFunction getfn = new DataCommandFunction();
+ if (region == null) {
+ Set<DistributedMember> memberList = getRegionAssociatedMembers(regionPath, getCache(), false);
+ if (CollectionUtils.isNotEmpty(memberList)) {
+ DataCommandRequest request = new DataCommandRequest();
+ request.setCommand(CliStrings.GET);
+ request.setKey(key);
+ request.setKeyClass(keyClass);
+ request.setRegionName(regionPath);
+ request.setValueClass(valueClass);
+ request.setLoadOnCacheMiss(loadOnCacheMiss);
+ Subject subject = cache.getSecurityService().getSubject();
+ if (subject != null) {
+ request.setPrincipal(subject.getPrincipal());
+ }
+ dataResult = callFunctionForRegion(request, getfn, memberList);
+ } else {
+ dataResult = DataCommandResult.createGetInfoResult(key, null, null,
+ CliStrings.format(CliStrings.GET__MSG__REGION_NOT_FOUND_ON_ALL_MEMBERS, regionPath),
+ false);
+ }
+ } else {
+ dataResult = getfn.get(null, key, keyClass, valueClass, regionPath, loadOnCacheMiss,
+ cache.getSecurityService());
+ }
+ dataResult.setKeyClass(keyClass);
+ if (valueClass != null) {
+ dataResult.setValueClass(valueClass);
+ }
+
+ return makePresentationResult(dataResult);
+ }
+}
[35/50] [abbrv] geode git commit: GEODE-3030: Set
possibleDuplicate=true for all bucket events after failover
Posted by kl...@apache.org.
GEODE-3030: Set possibleDuplicate=true for all bucket events after failover
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/5ec40698
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/5ec40698
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/5ec40698
Branch: refs/heads/feature/GEODE-3299
Commit: 5ec4069848a0ec48466240c17003b8f25fe2fcdd
Parents: 0b4a1a2
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Thu Jul 27 17:02:45 2017 -0700
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Fri Jul 28 12:19:43 2017 -0700
----------------------------------------------------------------------
.../cache/AbstractBucketRegionQueue.java | 10 +-
.../geode/internal/cache/BucketRegionQueue.java | 3 +-
.../PossibleDuplicateAsyncEventListener.java | 78 ++++++++++++++++
.../asyncqueue/AsyncEventListenerDUnitTest.java | 96 ++++++++++++++++++++
4 files changed, 180 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/5ec40698/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractBucketRegionQueue.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractBucketRegionQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractBucketRegionQueue.java
index eacb8fd..3674474 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractBucketRegionQueue.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/AbstractBucketRegionQueue.java
@@ -298,13 +298,13 @@ public abstract class AbstractBucketRegionQueue extends BucketRegion {
}
/**
- * Marks batchSize number of events in the iterator as duplicate
+ * Marks all events in the iterator as duplicate
*/
- protected void markEventsAsDuplicate(int batchSize, Iterator itr) {
+ protected void markEventsAsDuplicate(Iterator itr) {
int i = 0;
- // mark number of event equal to the batchSize for setPossibleDuplicate to
- // true before this bucket becomes primary on the node
- while (i < batchSize && itr.hasNext()) {
+ // mark setPossibleDuplicate to true for all events in this bucket before it becomes primary on
+ // the node
+ while (itr.hasNext()) {
Object key = itr.next();
Object senderEvent = getNoLRU(key, true, false, false);
http://git-wip-us.apache.org/repos/asf/geode/blob/5ec40698/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegionQueue.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegionQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegionQueue.java
index 5ce5963..567f46f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegionQueue.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/BucketRegionQueue.java
@@ -203,9 +203,8 @@ public class BucketRegionQueue extends AbstractBucketRegionQueue {
@Override
public void beforeAcquiringPrimaryState() {
- int batchSize = this.getPartitionedRegion().getParallelGatewaySender().getBatchSize();
Iterator<Object> itr = eventSeqNumDeque.iterator();
- markEventsAsDuplicate(batchSize, itr);
+ markEventsAsDuplicate(itr);
}
@Override
http://git-wip-us.apache.org/repos/asf/geode/blob/5ec40698/geode-core/src/test/java/org/apache/geode/internal/cache/wan/PossibleDuplicateAsyncEventListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/PossibleDuplicateAsyncEventListener.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/PossibleDuplicateAsyncEventListener.java
new file mode 100644
index 0000000..45f3dc5
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/PossibleDuplicateAsyncEventListener.java
@@ -0,0 +1,78 @@
+/*
+ * 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.internal.cache.wan;
+
+import org.apache.geode.cache.asyncqueue.AsyncEvent;
+import org.apache.geode.cache.asyncqueue.AsyncEventListener;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class PossibleDuplicateAsyncEventListener implements AsyncEventListener {
+
+ private final CountDownLatch latch = new CountDownLatch(1);
+
+ private final AtomicInteger numberOfEvents = new AtomicInteger();
+
+ private final AtomicInteger numberOfPossibleDuplicateEvents = new AtomicInteger();
+
+ public boolean processEvents(List<AsyncEvent> events) {
+ try {
+ waitToStartProcessingEvents();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(
+ "PossibleDuplicateAsyncEventListener processEvents was interrupted");
+ }
+ for (AsyncEvent event : events) {
+ process(event);
+ }
+ return true;
+ }
+
+ private void process(AsyncEvent event) {
+ if (event.getPossibleDuplicate()) {
+ incrementTotalPossibleDuplicateEvents();
+ }
+ incrementTotalEvents();
+ }
+
+ private void waitToStartProcessingEvents() throws InterruptedException {
+ this.latch.await(60, TimeUnit.SECONDS);
+ }
+
+ public void startProcessingEvents() {
+ this.latch.countDown();
+ }
+
+ private int incrementTotalEvents() {
+ return this.numberOfEvents.incrementAndGet();
+ }
+
+ public int getTotalEvents() {
+ return this.numberOfEvents.get();
+ }
+
+ private void incrementTotalPossibleDuplicateEvents() {
+ this.numberOfPossibleDuplicateEvents.incrementAndGet();
+ }
+
+ public int getTotalPossibleDuplicateEvents() {
+ return this.numberOfPossibleDuplicateEvents.get();
+ }
+
+ public void close() {}
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/5ec40698/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
index 1a57bde..6964edf 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
@@ -27,6 +27,8 @@ import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.PartitionAttributesFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.asyncqueue.AsyncEvent;
+import org.apache.geode.cache.asyncqueue.AsyncEventListener;
+import org.apache.geode.cache.asyncqueue.AsyncEventQueue;
import org.apache.geode.cache.asyncqueue.AsyncEventQueueFactory;
import org.apache.geode.cache.asyncqueue.internal.AsyncEventQueueFactoryImpl;
import org.apache.geode.cache.asyncqueue.internal.AsyncEventQueueImpl;
@@ -44,6 +46,7 @@ import org.apache.geode.internal.cache.partitioned.BecomePrimaryBucketMessage;
import org.apache.geode.internal.cache.partitioned.BecomePrimaryBucketMessage.BecomePrimaryBucketResponse;
import org.apache.geode.internal.cache.wan.AsyncEventQueueTestBase;
import org.apache.geode.internal.cache.wan.MyAsyncEventListener;
+import org.apache.geode.internal.cache.wan.PossibleDuplicateAsyncEventListener;
import org.apache.geode.test.dunit.LogWriterUtils;
import org.apache.geode.test.dunit.SerializableRunnableIF;
import org.apache.geode.test.dunit.VM;
@@ -1728,6 +1731,99 @@ public class AsyncEventListenerDUnitTest extends AsyncEventQueueTestBase {
});
}
+ @Test
+ public void testParallelAsyncEventQueueWithPossibleDuplicateEvents() {
+ // Set disable move primaries on start up
+ vm1.invoke(() -> setDisableMovePrimary());
+ vm2.invoke(() -> setDisableMovePrimary());
+
+ try {
+ // Create locator
+ Integer lnPort = (Integer) vm0.invoke(() -> createFirstLocatorWithDSId(1));
+
+ // Create cache and async event queue in member 1
+ String aeqId = "ln";
+ vm1.invoke(() -> createCache(lnPort));
+ vm1.invoke(() -> createAsyncEventQueue(aeqId, true, 100, 1, false, false, null, true,
+ "PossibleDuplicateAsyncEventListener"));
+
+ // Create region with async event queue in member 1
+ String regionName = getTestMethodName() + "_PR";
+ vm1.invoke(
+ () -> createPRWithRedundantCopyWithAsyncEventQueue(regionName, aeqId, isOffHeap()));
+
+ // Do puts so that all primaries are in member 1
+ int numPuts = 30;
+ vm1.invoke(() -> doPuts(regionName, numPuts));
+
+ // Create cache and async event queue in member 2
+ vm2.invoke(() -> createCache(lnPort));
+ vm2.invoke(() -> createAsyncEventQueue(aeqId, true, 100, 1, false, false, null, true,
+ "PossibleDuplicateAsyncEventListener"));
+
+ // Create region with paused async event queue in member 2
+ vm2.invoke(
+ () -> createPRWithRedundantCopyWithAsyncEventQueue(regionName, aeqId, isOffHeap()));
+ vm2.invoke(() -> pauseAsyncEventQueue(aeqId));
+
+ // Close cache in member 1 (all AEQ buckets will fail over to member 2)
+ vm1.invoke(() -> closeCache());
+
+ // Start processing async event queue in member 2
+ vm2.invoke(() -> resumeAsyncEventQueue(aeqId));
+ vm2.invoke(() -> startProcessingAsyncEvents(aeqId));
+
+ // Wait for queue to be empty
+ vm2.invoke(() -> waitForAsyncQueueToGetEmpty(aeqId));
+
+ // Verify all events were processed in member 2
+ vm2.invoke(() -> verifyAsyncEventProcessing(aeqId, numPuts));
+ } finally {
+ // Clear disable move primaries on start up
+ vm1.invoke(() -> clearDisableMovePrimary());
+ vm2.invoke(() -> clearDisableMovePrimary());
+ }
+ }
+
+ public static void setDisableMovePrimary() {
+ System.setProperty("gemfire.DISABLE_MOVE_PRIMARIES_ON_STARTUP", "true");
+ }
+
+ public static void clearDisableMovePrimary() {
+ System.clearProperty("gemfire.DISABLE_MOVE_PRIMARIES_ON_STARTUP");
+ }
+
+ public static void startProcessingAsyncEvents(String aeqId) {
+ // Get the async event listener
+ PossibleDuplicateAsyncEventListener listener = getPossibleDuplicateAsyncEventListener(aeqId);
+
+ // Start processing waiting events
+ listener.startProcessingEvents();
+ }
+
+ public static void verifyAsyncEventProcessing(String aeqId, int numEvents) {
+ // Get the async event listener
+ PossibleDuplicateAsyncEventListener listener = getPossibleDuplicateAsyncEventListener(aeqId);
+
+ // Verify all events were processed
+ assertEquals(numEvents, listener.getTotalEvents());
+
+ // Verify all events are possibleDuplicate
+ assertEquals(numEvents, listener.getTotalPossibleDuplicateEvents());
+ }
+
+ private static PossibleDuplicateAsyncEventListener getPossibleDuplicateAsyncEventListener(
+ String aeqId) {
+ // Get the async event queue
+ AsyncEventQueue aeq = cache.getAsyncEventQueue(aeqId);
+ assertNotNull(aeq);
+
+ // Get and return the async event listener
+ AsyncEventListener aeqListener = aeq.getAsyncEventListener();
+ assertTrue(aeqListener instanceof PossibleDuplicateAsyncEventListener);
+ return (PossibleDuplicateAsyncEventListener) aeqListener;
+ }
+
private void createPersistentPartitionRegion() {
AttributesFactory fact = new AttributesFactory();
[26/50] [abbrv] geode git commit: GEODE-3271: Separating WanCommands
into multiple command classes
Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java
new file mode 100644
index 0000000..5b20f1e
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java
@@ -0,0 +1,113 @@
+/*
+ * 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.util.Set;
+
+import javax.management.ObjectName;
+
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.management.GatewaySenderMXBean;
+import org.apache.geode.management.ManagementService;
+import org.apache.geode.management.cli.CliMetaData;
+import org.apache.geode.management.cli.ConverterHint;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.LogWrapper;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission;
+
+public class StopGatewaySenderCommand implements GfshCommand {
+
+ @CliCommand(value = CliStrings.STOP_GATEWAYSENDER, help = CliStrings.STOP_GATEWAYSENDER__HELP)
+ @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
+ @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
+ operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY)
+ public Result stopGatewaySender(@CliOption(key = CliStrings.STOP_GATEWAYSENDER__ID,
+ mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
+ help = CliStrings.STOP_GATEWAYSENDER__ID__HELP) String senderId,
+
+ @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
+ optionContext = ConverterHint.MEMBERGROUP,
+ help = CliStrings.STOP_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
+
+ @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
+ optionContext = ConverterHint.MEMBERIDNAME,
+ help = CliStrings.STOP_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
+
+ Result result;
+ if (senderId != null) {
+ senderId = senderId.trim();
+ }
+
+ try {
+ InternalCache cache = getCache();
+ SystemManagementService service =
+ (SystemManagementService) ManagementService.getExistingManagementService(cache);
+
+ GatewaySenderMXBean bean;
+
+ TabularResultData resultData = ResultBuilder.createTabularResultData();
+
+ Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
+
+ if (dsMembers.isEmpty()) {
+ return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ }
+
+ for (DistributedMember member : dsMembers) {
+ if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
+ bean = service.getLocalGatewaySenderMXBean(senderId);
+ } else {
+ ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
+ bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
+ }
+ if (bean != null) {
+ if (bean.isRunning()) {
+ bean.stop();
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_OK, CliStrings.format(
+ CliStrings.GATEWAY_SENDER_0_IS_STOPPED_ON_MEMBER_1, senderId, member.getId()));
+
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ } else {
+ GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(),
+ CliStrings.GATEWAY_ERROR,
+ CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId,
+ member.getId()));
+ }
+ }
+ result = ResultBuilder.buildResult(resultData);
+ } catch (Exception e) {
+ LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
+ result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
deleted file mode 100644
index c6fb709..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
+++ /dev/null
@@ -1,1137 +0,0 @@
-/*
- * 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.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.management.ObjectName;
-
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
-
-import org.apache.geode.cache.execute.ResultCollector;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.DistributedSystemMXBean;
-import org.apache.geode.management.GatewayReceiverMXBean;
-import org.apache.geode.management.GatewaySenderMXBean;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.MBeanJMXAdapter;
-import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.LogWrapper;
-import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
-import org.apache.geode.management.internal.cli.functions.GatewayReceiverCreateFunction;
-import org.apache.geode.management.internal.cli.functions.GatewayReceiverFunctionArgs;
-import org.apache.geode.management.internal.cli.functions.GatewaySenderCreateFunction;
-import org.apache.geode.management.internal.cli.functions.GatewaySenderDestroyFunction;
-import org.apache.geode.management.internal.cli.functions.GatewaySenderDestroyFunctionArgs;
-import org.apache.geode.management.internal.cli.functions.GatewaySenderFunctionArgs;
-import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CommandResultException;
-import org.apache.geode.management.internal.cli.result.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
-import org.apache.geode.management.internal.configuration.domain.XmlEntity;
-import org.apache.geode.management.internal.security.ResourceOperation;
-import org.apache.geode.security.ResourcePermission.Operation;
-import org.apache.geode.security.ResourcePermission.Resource;
-import org.apache.geode.security.ResourcePermission.Target;
-
-public class WanCommands implements GfshCommand {
-
- @CliCommand(value = CliStrings.CREATE_GATEWAYSENDER, help = CliStrings.CREATE_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result 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,
- help = CliStrings.CREATE_GATEWAYSENDER__ID__HELP) String id,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID, mandatory = true,
- help = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID__HELP) Integer remoteDistributedSystemId,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__PARALLEL,
- help = CliStrings.CREATE_GATEWAYSENDER__PARALLEL__HELP) Boolean parallel,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART,
- help = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART__HELP) Boolean manualStart,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE,
- help = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT,
- help = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT__HELP) Integer socketReadTimeout,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION,
- help = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION__HELP) Boolean enableBatchConflation,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE,
- help = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE__HELP) Integer batchSize,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL,
- help = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL__HELP) Integer batchTimeInterval,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE,
- 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,
- help = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS__HELP) Boolean diskSynchronous,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY,
- help = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY__HELP) Integer maxQueueMemory,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD,
- help = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD__HELP) Integer alertThreshold,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS,
- help = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS__HELP) Integer dispatcherThreads,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY,
- help = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY__HELP) String orderPolicy,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER,
- help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER__HELP) String[] gatewayEventFilters,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER,
- help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilter) {
-
- Result result;
-
- AtomicReference<XmlEntity> xmlEntity = new AtomicReference<>();
- try {
- GatewaySenderFunctionArgs gatewaySenderFunctionArgs = new GatewaySenderFunctionArgs(id,
- remoteDistributedSystemId, parallel, manualStart, socketBufferSize, socketReadTimeout,
- enableBatchConflation, batchSize, batchTimeInterval, enablePersistence, diskStoreName,
- diskSynchronous, maxQueueMemory, alertThreshold, dispatcherThreads, orderPolicy,
- gatewayEventFilters, gatewayTransportFilter);
-
- Set<DistributedMember> membersToCreateGatewaySenderOn =
- CliUtil.findMembers(onGroups, onMember);
-
- if (membersToCreateGatewaySenderOn.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- ResultCollector<?, ?> resultCollector =
- CliUtil.executeFunction(GatewaySenderCreateFunction.INSTANCE, gatewaySenderFunctionArgs,
- membersToCreateGatewaySenderOn);
- @SuppressWarnings("unchecked")
- List<CliFunctionResult> gatewaySenderCreateResults =
- (List<CliFunctionResult>) resultCollector.getResult();
-
- TabularResultData tabularResultData = ResultBuilder.createTabularResultData();
- final String errorPrefix = "ERROR: ";
- for (CliFunctionResult gatewaySenderCreateResult : gatewaySenderCreateResults) {
- boolean success = gatewaySenderCreateResult.isSuccessful();
- tabularResultData.accumulate("Member", gatewaySenderCreateResult.getMemberIdOrName());
- tabularResultData.accumulate("Status",
- (success ? "" : errorPrefix) + gatewaySenderCreateResult.getMessage());
-
- if (success && xmlEntity.get() == null) {
- xmlEntity.set(gatewaySenderCreateResult.getXmlEntity());
- }
- }
- result = ResultBuilder.buildResult(tabularResultData);
- } catch (IllegalArgumentException e) {
- LogWrapper.getInstance().info(e.getMessage());
- result = ResultBuilder.createUserErrorResult(e.getMessage());
- }
-
- if (xmlEntity.get() != null) {
- persistClusterConfiguration(result,
- () -> getSharedConfiguration().addXmlEntity(xmlEntity.get(), onGroups));
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.START_GATEWAYSENDER, help = CliStrings.START_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result startGatewaySender(@CliOption(key = CliStrings.START_GATEWAYSENDER__ID,
- mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.START_GATEWAYSENDER__ID__HELP) String senderId,
-
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.START_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.START_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
-
- Result result;
- final String id = senderId.trim();
-
- try {
- final InternalCache cache = getCache();
- final SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- TabularResultData resultData = ResultBuilder.createTabularResultData();
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- ExecutorService execService = Executors.newCachedThreadPool(new ThreadFactory() {
- AtomicInteger threadNum = new AtomicInteger();
-
- public Thread newThread(final Runnable r) {
- Thread result =
- new Thread(r, "Start Sender Command Thread " + threadNum.incrementAndGet());
- result.setDaemon(true);
- return result;
- }
- });
-
- List<Callable<List>> callables = new ArrayList<>();
-
- for (final DistributedMember member : dsMembers) {
-
- callables.add(() -> {
-
- GatewaySenderMXBean bean;
- ArrayList<String> statusList = new ArrayList<>();
- if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
- bean = service.getLocalGatewaySenderMXBean(id);
- } else {
- ObjectName objectName = service.getGatewaySenderMBeanName(member, id);
- bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
- }
- if (bean != null) {
- if (bean.isRunning()) {
- statusList.add(member.getId());
- statusList.add(CliStrings.GATEWAY_ERROR);
- statusList.add(CliStrings.format(
- CliStrings.GATEWAY_SENDER_0_IS_ALREADY_STARTED_ON_MEMBER_1, id, member.getId()));
- } else {
- bean.start();
- statusList.add(member.getId());
- statusList.add(CliStrings.GATEWAY_OK);
- statusList.add(CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_STARTED_ON_MEMBER_1,
- id, member.getId()));
- }
- } else {
- statusList.add(member.getId());
- statusList.add(CliStrings.GATEWAY_ERROR);
- statusList.add(CliStrings.format(
- CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, id, member.getId()));
- }
- return statusList;
-
- });
- }
-
- Iterator<DistributedMember> memberIterator = dsMembers.iterator();
- List<Future<List>> futures = null;
-
- try {
- futures = execService.invokeAll(callables);
- } catch (InterruptedException ite) {
- accumulateStartResult(resultData, null, CliStrings.GATEWAY_ERROR, CliStrings.format(
- CliStrings.GATEWAY_SENDER_0_COULD_NOT_BE_INVOKED_DUE_TO_1, id, ite.getMessage()));
- }
-
- for (Future<List> future : futures) {
- DistributedMember member = memberIterator.next();
- List<String> memberStatus;
- try {
- memberStatus = future.get();
- accumulateStartResult(resultData, memberStatus.get(0), memberStatus.get(1),
- memberStatus.get(2));
- } catch (InterruptedException | ExecutionException ite) {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_COULD_NOT_BE_STARTED_ON_MEMBER_DUE_TO_1,
- id, ite.getMessage()));
- }
- }
- execService.shutdown();
- result = ResultBuilder.buildResult(resultData);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
-
- return result;
- }
-
- @CliCommand(value = CliStrings.PAUSE_GATEWAYSENDER, help = CliStrings.PAUSE_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result pauseGatewaySender(@CliOption(key = CliStrings.PAUSE_GATEWAYSENDER__ID,
- mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.PAUSE_GATEWAYSENDER__ID__HELP) String senderId,
-
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.PAUSE_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.PAUSE_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
-
- Result result;
- if (senderId != null) {
- senderId = senderId.trim();
- }
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- GatewaySenderMXBean bean;
-
- TabularResultData resultData = ResultBuilder.createTabularResultData();
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
- bean = service.getLocalGatewaySenderMXBean(senderId);
- } else {
- ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
- bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
- }
- if (bean != null) {
- if (bean.isRunning()) {
- if (bean.isPaused()) {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_ALREADY_PAUSED_ON_MEMBER_1,
- senderId, member.getId()));
- } else {
- bean.pause();
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_PAUSED_ON_MEMBER_1, senderId,
- member.getId()));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId,
- member.getId()));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId,
- member.getId()));
- }
- }
- result = ResultBuilder.buildResult(resultData);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.RESUME_GATEWAYSENDER, help = CliStrings.RESUME_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result resumeGatewaySender(@CliOption(key = CliStrings.RESUME_GATEWAYSENDER__ID,
- mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.RESUME_GATEWAYSENDER__ID__HELP) String senderId,
-
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.RESUME_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.RESUME_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
-
- Result result;
- if (senderId != null) {
- senderId = senderId.trim();
- }
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- GatewaySenderMXBean bean;
-
- TabularResultData resultData = ResultBuilder.createTabularResultData();
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
- bean = service.getLocalGatewaySenderMXBean(senderId);
- } else {
- ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
- bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
- }
- if (bean != null) {
- if (bean.isRunning()) {
- if (bean.isPaused()) {
- bean.resume();
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_RESUMED_ON_MEMBER_1, senderId,
- member.getId()));
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_PAUSED_ON_MEMBER_1, senderId,
- member.getId()));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId,
- member.getId()));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId,
- member.getId()));
- }
- }
- result = ResultBuilder.buildResult(resultData);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.STOP_GATEWAYSENDER, help = CliStrings.STOP_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result stopGatewaySender(@CliOption(key = CliStrings.STOP_GATEWAYSENDER__ID,
- mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.STOP_GATEWAYSENDER__ID__HELP) String senderId,
-
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.STOP_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.STOP_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
-
- Result result;
- if (senderId != null)
- senderId = senderId.trim();
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- GatewaySenderMXBean bean;
-
- TabularResultData resultData = ResultBuilder.createTabularResultData();
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
- bean = service.getLocalGatewaySenderMXBean(senderId);
- } else {
- ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
- bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
- }
- if (bean != null) {
- if (bean.isRunning()) {
- bean.stop();
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_STOPPED_ON_MEMBER_1, senderId,
- member.getId()));
-
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId,
- member.getId()));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId,
- member.getId()));
- }
- }
- result = ResultBuilder.buildResult(resultData);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.CREATE_GATEWAYRECEIVER,
- help = CliStrings.CREATE_GATEWAYRECEIVER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result createGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.CREATE_GATEWAYRECEIVER__GROUP__HELP) String[] onGroups,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART,
- help = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART__HELP) Boolean manualStart,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT,
- help = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT__HELP) Integer startPort,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT,
- help = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT__HELP) Integer endPort,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS,
- help = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS__HELP) String bindAddress,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS,
- help = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS__HELP) Integer maximumTimeBetweenPings,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE,
- help = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize,
-
- @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER,
- help = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilters) {
-
- Result result;
-
- AtomicReference<XmlEntity> xmlEntity = new AtomicReference<>();
- try {
- GatewayReceiverFunctionArgs gatewayReceiverFunctionArgs =
- new GatewayReceiverFunctionArgs(manualStart, startPort, endPort, bindAddress,
- socketBufferSize, maximumTimeBetweenPings, gatewayTransportFilters);
-
- Set<DistributedMember> membersToCreateGatewayReceiverOn =
- CliUtil.findMembers(onGroups, onMember);
-
- if (membersToCreateGatewayReceiverOn.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- ResultCollector<?, ?> resultCollector =
- CliUtil.executeFunction(GatewayReceiverCreateFunction.INSTANCE,
- gatewayReceiverFunctionArgs, membersToCreateGatewayReceiverOn);
- @SuppressWarnings("unchecked")
- List<CliFunctionResult> gatewayReceiverCreateResults =
- (List<CliFunctionResult>) resultCollector.getResult();
-
- TabularResultData tabularResultData = ResultBuilder.createTabularResultData();
- final String errorPrefix = "ERROR: ";
-
- for (CliFunctionResult gatewayReceiverCreateResult : gatewayReceiverCreateResults) {
- boolean success = gatewayReceiverCreateResult.isSuccessful();
- tabularResultData.accumulate("Member", gatewayReceiverCreateResult.getMemberIdOrName());
- tabularResultData.accumulate("Status",
- (success ? "" : errorPrefix) + gatewayReceiverCreateResult.getMessage());
-
- if (success && xmlEntity.get() == null) {
- xmlEntity.set(gatewayReceiverCreateResult.getXmlEntity());
- }
- }
- result = ResultBuilder.buildResult(tabularResultData);
- } catch (IllegalArgumentException e) {
- LogWrapper.getInstance().info(e.getMessage());
- result = ResultBuilder.createUserErrorResult(e.getMessage());
- }
-
- if (xmlEntity.get() != null) {
- persistClusterConfiguration(result,
- () -> getSharedConfiguration().addXmlEntity(xmlEntity.get(), onGroups));
- }
-
- return result;
- }
-
- @CliCommand(value = CliStrings.LOAD_BALANCE_GATEWAYSENDER,
- help = CliStrings.LOAD_BALANCE_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result loadBalanceGatewaySender(@CliOption(key = CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID,
- mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID__HELP) String senderId) {
-
- Result result;
- if (senderId != null) {
- senderId = senderId.trim();
- }
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
- TabularResultData resultData = ResultBuilder.createTabularResultData();
- Set<DistributedMember> dsMembers = CliUtil.getAllNormalMembers(cache);
-
- if (dsMembers.isEmpty()) {
- result = ResultBuilder.createInfoResult(CliStrings.GATEWAY_MSG_MEMBERS_NOT_FOUND);
- } else {
- boolean gatewaySenderExists = false;
- for (DistributedMember member : dsMembers) {
- GatewaySenderMXBean bean;
- if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
- bean = service.getLocalGatewaySenderMXBean(senderId);
- } else {
- ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
- bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
- }
- if (bean != null) {
- gatewaySenderExists = true;
- bean.rebalance();
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_REBALANCED_ON_MEMBER_1, senderId,
- member.getId()));
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1,
- senderId, member.getId()));
- }
- }
- if (gatewaySenderExists) {
- result = ResultBuilder.buildResult(resultData);
- } else {
- result = ResultBuilder.createInfoResult(CliStrings.format(
- CliStrings.GATEWAY_SENDER_0_IS_NOT_FOUND_ON_ANY_MEMBER, new Object[] {senderId}));
- }
- }
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
-
- return result;
- }
-
- @CliCommand(value = CliStrings.START_GATEWAYRECEIVER,
- help = CliStrings.START_GATEWAYRECEIVER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result startGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.START_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.START_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) {
- Result result;
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- GatewayReceiverMXBean receiverBean;
-
- TabularResultData resultData = ResultBuilder.createTabularResultData();
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
-
- if (gatewayReceiverObjectName != null) {
- receiverBean =
- service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
- if (receiverBean != null) {
- if (receiverBean.isRunning()) {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_ALREADY_STARTED_ON_MEMBER_0,
- new Object[] {member.getId()}));
- } else {
- receiverBean.start();
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_STARTED_ON_MEMBER_0,
- new Object[] {member.getId()}));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
- new Object[] {member.getId()}));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
- new Object[] {member.getId()}));
- }
- }
- result = ResultBuilder.buildResult(resultData);
- } catch (CommandResultException crex) {
- result = handleCommandResultException(crex);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.STOP_GATEWAYRECEIVER, help = CliStrings.STOP_GATEWAYRECEIVER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result stopGatewayReceiver(
-
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.STOP_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.STOP_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) {
-
- Result result;
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- GatewayReceiverMXBean receiverBean;
-
- TabularResultData resultData = ResultBuilder.createTabularResultData();
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
-
- if (gatewayReceiverObjectName != null) {
- receiverBean =
- service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
- if (receiverBean != null) {
- if (receiverBean.isRunning()) {
- receiverBean.stop();
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_STOPPED_ON_MEMBER_0,
- new Object[] {member.getId()}));
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_RUNNING_ON_MEMBER_0,
- new Object[] {member.getId()}));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
- new Object[] {member.getId()}));
- }
- } else {
- accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR,
- CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0,
- new Object[] {member.getId()}));
- }
- }
- result = ResultBuilder.buildResult(resultData);
- } catch (CommandResultException crex) {
- result = handleCommandResultException(crex);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.LIST_GATEWAY, help = CliStrings.LIST_GATEWAY__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
- public Result listGateway(
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.LIST_GATEWAY__MEMBER__HELP) String[] onMember,
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.LIST_GATEWAY__GROUP__HELP) String[] onGroup) {
-
- Result result;
- InternalCache cache = getCache();
- try {
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans = new TreeMap<>();
- Map<String, GatewayReceiverMXBean> gatewayReceiverBeans = new TreeMap<>();
-
- DistributedSystemMXBean dsMXBean = service.getDistributedSystemMXBean();
- for (DistributedMember member : dsMembers) {
- String memberName = member.getName();
- String memberNameOrId =
- (memberName != null && !memberName.isEmpty()) ? memberName : member.getId();
- ObjectName gatewaySenderObjectNames[] =
- dsMXBean.listGatewaySenderObjectNames(memberNameOrId);
- // gateway senders : a member can have multiple gateway sendersdefined
- // on it
- if (gatewaySenderObjectNames != null) {
- for (ObjectName name : gatewaySenderObjectNames) {
- GatewaySenderMXBean senderBean = service.getMBeanProxy(name, GatewaySenderMXBean.class);
- if (senderBean != null) {
- if (gatewaySenderBeans.containsKey(senderBean.getSenderId())) {
- Map<String, GatewaySenderMXBean> memberToBeanMap =
- gatewaySenderBeans.get(senderBean.getSenderId());
- memberToBeanMap.put(member.getId(), senderBean);
- } else {
- Map<String, GatewaySenderMXBean> memberToBeanMap = new TreeMap<>();
- memberToBeanMap.put(member.getId(), senderBean);
- gatewaySenderBeans.put(senderBean.getSenderId(), memberToBeanMap);
- }
- }
- }
- }
- // gateway receivers : a member can have only one gateway receiver
- ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
- if (gatewayReceiverObjectName != null) {
- GatewayReceiverMXBean receiverBean;
- receiverBean =
- service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
- if (receiverBean != null) {
- gatewayReceiverBeans.put(member.getId(), receiverBean);
- }
- }
- }
- if (gatewaySenderBeans.isEmpty() && gatewayReceiverBeans.isEmpty()) {
- return ResultBuilder
- .createUserErrorResult(CliStrings.GATEWAYS_ARE_NOT_AVAILABLE_IN_CLUSTER);
- }
- CompositeResultData crd = ResultBuilder.createCompositeResultData();
- crd.setHeader(CliStrings.HEADER_GATEWAYS);
- accumulateListGatewayResult(crd, gatewaySenderBeans, gatewayReceiverBeans);
- result = ResultBuilder.buildResult(crd);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.STATUS_GATEWAYSENDER, help = CliStrings.STATUS_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
- public Result statusGatewaySender(@CliOption(key = CliStrings.STATUS_GATEWAYSENDER__ID,
- mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.STATUS_GATEWAYSENDER__ID__HELP) String senderId,
-
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.STATUS_GATEWAYSENDER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.STATUS_GATEWAYSENDER__MEMBER__HELP) String[] onMember) {
-
- Result result;
- if (senderId != null)
- senderId = senderId.trim();
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- GatewaySenderMXBean bean;
-
- CompositeResultData crd = ResultBuilder.createCompositeResultData();
- TabularResultData availableSenderData =
- crd.addSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE)
- .addTable(CliStrings.TABLE_GATEWAY_SENDER);
-
- TabularResultData notAvailableSenderData =
- crd.addSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE)
- .addTable(CliStrings.TABLE_GATEWAY_SENDER);
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) {
- bean = service.getLocalGatewaySenderMXBean(senderId);
- } else {
- ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId);
- bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class);
- }
- if (bean != null) {
- buildSenderStatus(member.getId(), bean, availableSenderData);
- } else {
- buildSenderStatus(member.getId(), bean, notAvailableSenderData);
- }
- }
- result = ResultBuilder.buildResult(crd);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.STATUS_GATEWAYRECEIVER,
- help = CliStrings.STATUS_GATEWAYRECEIVER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
- public Result statusGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.STATUS_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup,
-
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) {
-
- Result result;
-
- try {
- InternalCache cache = getCache();
- SystemManagementService service =
- (SystemManagementService) ManagementService.getExistingManagementService(cache);
-
- CompositeResultData crd = ResultBuilder.createCompositeResultData();
- TabularResultData availableReceiverData =
- crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE)
- .addTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-
- TabularResultData notAvailableReceiverData =
- crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE)
- .addTable(CliStrings.TABLE_GATEWAY_RECEIVER);
-
- Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember);
-
- if (dsMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- for (DistributedMember member : dsMembers) {
- ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member);
- if (gatewayReceiverObjectName != null) {
- GatewayReceiverMXBean receiverBean =
- service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class);
- if (receiverBean != null) {
- buildReceiverStatus(member.getId(), receiverBean, availableReceiverData);
- continue;
- }
- }
- buildReceiverStatus(member.getId(), null, notAvailableReceiverData);
- }
- result = ResultBuilder.buildResult(crd);
- } catch (Exception e) {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage());
- }
- return result;
- }
-
- @CliCommand(value = CliStrings.DESTROY_GATEWAYSENDER,
- help = CliStrings.DESTROY_GATEWAYSENDER__HELP)
- @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN)
- @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE,
- target = Target.GATEWAY)
- public Result destroyGatewaySender(
- @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
- optionContext = ConverterHint.MEMBERGROUP,
- help = CliStrings.DESTROY_GATEWAYSENDER__GROUP__HELP) String[] onGroups,
- @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS},
- optionContext = ConverterHint.MEMBERIDNAME,
- help = CliStrings.DESTROY_GATEWAYSENDER__MEMBER__HELP) String[] onMember,
- @CliOption(key = CliStrings.DESTROY_GATEWAYSENDER__ID, mandatory = true,
- optionContext = ConverterHint.GATEWAY_SENDER_ID,
- help = CliStrings.DESTROY_GATEWAYSENDER__ID__HELP) String id) {
- Result result;
- try {
- GatewaySenderDestroyFunctionArgs gatewaySenderDestroyFunctionArgs =
- new GatewaySenderDestroyFunctionArgs(id);
-
- Set<DistributedMember> membersToDestroyGatewaySenderOn =
- CliUtil.findMembers(onGroups, onMember);
-
- if (membersToDestroyGatewaySenderOn.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
- }
-
- ResultCollector<?, ?> resultCollector =
- CliUtil.executeFunction(GatewaySenderDestroyFunction.INSTANCE,
- gatewaySenderDestroyFunctionArgs, membersToDestroyGatewaySenderOn);
- @SuppressWarnings("unchecked")
- List<CliFunctionResult> gatewaySenderDestroyResults =
- (List<CliFunctionResult>) resultCollector.getResult();
-
- TabularResultData tabularResultData = ResultBuilder.createTabularResultData();
- final String errorPrefix = "ERROR: ";
- for (CliFunctionResult gatewaySenderDestroyResult : gatewaySenderDestroyResults) {
- boolean success = gatewaySenderDestroyResult.isSuccessful();
- tabularResultData.accumulate("Member", gatewaySenderDestroyResult.getMemberIdOrName());
- tabularResultData.accumulate("Status",
- (success ? "" : errorPrefix) + gatewaySenderDestroyResult.getMessage());
- }
- result = ResultBuilder.buildResult(tabularResultData);
- } catch (IllegalArgumentException e) {
- LogWrapper.getInstance().info(e.getMessage());
- result = ResultBuilder.createUserErrorResult(e.getMessage());
- }
- return result;
- }
-
- private TabularResultData buildReceiverStatus(String memberId, GatewayReceiverMXBean bean,
- TabularResultData resultData) {
- resultData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberId);
- if (bean != null) {
- resultData.accumulate(CliStrings.RESULT_PORT, bean.getPort());
- resultData.accumulate(CliStrings.RESULT_STATUS,
- bean.isRunning() ? CliStrings.GATEWAY_RUNNING : CliStrings.GATEWAY_NOT_RUNNING);
- } else {
- resultData.accumulate(CliStrings.GATEWAY_ERROR,
- CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_OR_STOPPED);
- }
- return resultData;
- }
-
- private TabularResultData buildSenderStatus(String memberId, GatewaySenderMXBean bean,
- TabularResultData resultData) {
- resultData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberId);
- if (bean != null) {
- resultData.accumulate(CliStrings.RESULT_TYPE,
- bean.isParallel() ? CliStrings.SENDER_PARALLEL : CliStrings.SENDER_SERIAL);
- if (!bean.isParallel()) {
- resultData.accumulate(CliStrings.RESULT_POLICY,
- bean.isPrimary() ? CliStrings.SENDER_PRIMARY : CliStrings.SENDER_SECONADRY);
- }
- if (bean.isRunning()) {
- if (bean.isPaused()) {
- resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.SENDER_PAUSED);
- } else {
- resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.GATEWAY_RUNNING);
- }
- } else {
- resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.GATEWAY_NOT_RUNNING);
- }
- } else {
- resultData.accumulate(CliStrings.GATEWAY_ERROR, CliStrings.GATEWAY_SENDER_IS_NOT_AVAILABLE);
- }
-
- return resultData;
- }
-
- private void accumulateListGatewayResult(CompositeResultData crd,
- Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans,
- Map<String, GatewayReceiverMXBean> gatewayReceiverBeans) {
-
- if (!gatewaySenderBeans.isEmpty()) {
- TabularResultData gatewaySenderData = crd.addSection(CliStrings.SECTION_GATEWAY_SENDER)
- .addTable(CliStrings.TABLE_GATEWAY_SENDER).setHeader(CliStrings.HEADER_GATEWAY_SENDER);
- for (Map.Entry<String, Map<String, GatewaySenderMXBean>> entry : gatewaySenderBeans
- .entrySet()) {
- for (Map.Entry<String, GatewaySenderMXBean> memberToBean : entry.getValue().entrySet()) {
- gatewaySenderData.accumulate(CliStrings.RESULT_GATEWAY_SENDER_ID, entry.getKey());
- gatewaySenderData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberToBean.getKey());
- gatewaySenderData.accumulate(CliStrings.RESULT_REMOTE_CLUSTER,
- memberToBean.getValue().getRemoteDSId());
- gatewaySenderData.accumulate(CliStrings.RESULT_TYPE, memberToBean.getValue().isParallel()
- ? CliStrings.SENDER_PARALLEL : CliStrings.SENDER_SERIAL);
- gatewaySenderData.accumulate(CliStrings.RESULT_STATUS, memberToBean.getValue().isRunning()
- ? CliStrings.GATEWAY_RUNNING : CliStrings.GATEWAY_NOT_RUNNING);
- gatewaySenderData.accumulate(CliStrings.RESULT_QUEUED_EVENTS,
- memberToBean.getValue().getEventQueueSize());
- gatewaySenderData.accumulate(CliStrings.RESULT_RECEIVER,
- memberToBean.getValue().getGatewayReceiver());
- }
- }
- }
-
- if (!gatewayReceiverBeans.isEmpty()) {
- TabularResultData gatewayReceiverData = crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER)
- .addTable(CliStrings.TABLE_GATEWAY_RECEIVER)
- .setHeader(CliStrings.HEADER_GATEWAY_RECEIVER);
- for (Map.Entry<String, GatewayReceiverMXBean> entry : gatewayReceiverBeans.entrySet()) {
- gatewayReceiverData.accumulate(CliStrings.RESULT_HOST_MEMBER, entry.getKey());
- gatewayReceiverData.accumulate(CliStrings.RESULT_PORT, entry.getValue().getPort());
- gatewayReceiverData.accumulate(CliStrings.RESULT_SENDERS_COUNT,
- entry.getValue().getClientConnectionCount());
- gatewayReceiverData.accumulate(CliStrings.RESULT_SENDER_CONNECTED,
- entry.getValue().getConnectedGatewaySenders());
- }
- }
- }
-
- private void accumulateStartResult(TabularResultData resultData, String member, String Status,
- String message) {
- if (member != null) {
- resultData.accumulate("Member", member);
- }
- resultData.accumulate("Result", Status);
- resultData.accumulate("Message", message);
- }
-
-
- private Result handleCommandResultException(CommandResultException crex) {
- Result result;
- if (crex.getResult() != null) {
- result = crex.getResult();
- } else {
- LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(crex));
- result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + crex.getMessage());
- }
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java
index 6a01c3e..36b4d2e 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java
@@ -15,9 +15,6 @@
package org.apache.geode.management.internal.web.controllers;
-import org.apache.geode.internal.lang.StringUtils;
-import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,11 +22,28 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
+import org.apache.geode.internal.lang.StringUtils;
+import org.apache.geode.management.internal.cli.i18n.CliStrings;
+import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
+
/**
* The WanCommandsController class implements the GemFire Management REST API web service endpoints
* for the Gfsh WAN Commands.
- *
- * @see org.apache.geode.management.internal.cli.commands.WanCommands
+ *
+ * @see org.apache.geode.management.internal.cli.commands.CreateGatewayReceiverCommand
+ * @see org.apache.geode.management.internal.cli.commands.CreateGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.DestroyGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.GatewayCommandsUtils
+ * @see org.apache.geode.management.internal.cli.commands.ListGatewayCommand
+ * @see org.apache.geode.management.internal.cli.commands.LoadBalanceGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.PauseGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.ResumeGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.StartGatewayReceiverCommand
+ * @see org.apache.geode.management.internal.cli.commands.StartGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.StatusGatewayReceiverCommand
+ * @see org.apache.geode.management.internal.cli.commands.StatusGatewaySenderCommand
+ * @see org.apache.geode.management.internal.cli.commands.StopGatewayReceiverCommand
+ * @see org.apache.geode.management.internal.cli.commands.StopGatewaySenderCommand
* @see org.apache.geode.management.internal.web.controllers.AbstractCommandsController
* @see org.springframework.stereotype.Controller
* @see org.springframework.web.bind.annotation.RequestMapping
[32/50] [abbrv] geode git commit: GEODE-3310: Set target node in
TXStateProxy during TXFailover
Posted by kl...@apache.org.
GEODE-3310: Set target node in TXStateProxy during TXFailover
During tx failover, the new server needs to set the target node in its TXStateProxy.
Add unit test to verify the fix.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/03e11e87
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/03e11e87
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/03e11e87
Branch: refs/heads/feature/GEODE-3299
Commit: 03e11e8799a5782cf943f6e20cf55ae55aba56d9
Parents: e24438b
Author: eshu <es...@pivotal.io>
Authored: Thu Jul 27 16:48:34 2017 -0700
Committer: eshu <es...@pivotal.io>
Committed: Thu Jul 27 16:51:56 2017 -0700
----------------------------------------------------------------------
.../tier/sockets/command/TXFailoverCommand.java | 10 +-
.../cache/execute/MyTransactionFunction.java | 16 +++
.../cache/execute/PRTransactionDUnitTest.java | 130 +++++++++++++------
.../sockets/command/TXFailoverCommandTest.java | 84 ++++++++++++
4 files changed, 202 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/03e11e87/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommand.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommand.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommand.java
index 6bd00c0..18b7c62 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommand.java
@@ -61,7 +61,7 @@ public class TXFailoverCommand extends BaseCommand {
if (logger.isDebugEnabled()) {
logger.debug("TX: Transaction {} from {} is failing over to this server", uniqId, client);
}
- TXId txId = new TXId(client, uniqId);
+ TXId txId = createTXId(client, uniqId);
TXManagerImpl mgr = (TXManagerImpl) serverConnection.getCache().getCacheTransactionManager();
mgr.waitForCompletingTransaction(txId); // in case it's already completing here in another
// thread
@@ -92,6 +92,10 @@ public class TXFailoverCommand extends BaseCommand {
"TX: txState is not local, bootstrapping PeerTXState stub for targetNode: {}",
hostingMember);
}
+ // GEODE-3310 set the target node in the tx
+ if (tx.getTarget() == null) {
+ tx.setTarget(hostingMember);
+ }
// inject the real deal
tx.setLocalTXState(new PeerTXStateStub(tx, hostingMember, client));
} else {
@@ -127,4 +131,8 @@ public class TXFailoverCommand extends BaseCommand {
serverConnection.setAsTrue(RESPONDED);
}
+ TXId createTXId(InternalDistributedMember client, int uniqId) {
+ return new TXId(client, uniqId);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/03e11e87/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MyTransactionFunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MyTransactionFunction.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MyTransactionFunction.java
index 0970836..10e3282 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MyTransactionFunction.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/MyTransactionFunction.java
@@ -86,6 +86,9 @@ public class MyTransactionFunction implements Function {
case PRTransactionDUnitTest.VERIFY_REP_READ:
verifyRepeatableRead(ctx);
break;
+ case PRTransactionDUnitTest.UPDATE_NON_COLOCATION:
+ updateNonColocation(ctx);
+ break;
}
context.getResultSender().lastResult(null);
}
@@ -476,6 +479,19 @@ public class MyTransactionFunction implements Function {
mImp.commit();
}
+ private void updateNonColocation(RegionFunctionContext ctx) {
+ Region custPR = ctx.getDataSet();
+
+ ArrayList args = (ArrayList) ctx.getArguments();
+ CustId custId = (CustId) args.get(1);
+ Customer newCus = (Customer) args.get(2);
+
+ custPR.put(custId, newCus);
+ Assert.assertTrue(custPR.containsKey(custId));
+ Assert.assertTrue(custPR.containsValueForKey(custId));
+
+ }
+
public boolean hasResult() {
return true;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/03e11e87/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRTransactionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRTransactionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRTransactionDUnitTest.java
index 7a56644..6578baa 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRTransactionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/execute/PRTransactionDUnitTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.*;
import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.logging.log4j.Logger;
import org.assertj.core.api.Assertions;
import java.util.ArrayList;
@@ -40,6 +41,7 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.Region.Entry;
import org.apache.geode.cache.TransactionDataNotColocatedException;
import org.apache.geode.cache.TransactionDataRebalancedException;
+import org.apache.geode.cache.TransactionException;
import org.apache.geode.cache.TransactionId;
import org.apache.geode.cache.execute.Execution;
import org.apache.geode.cache.execute.Function;
@@ -74,6 +76,7 @@ import org.apache.geode.test.dunit.SerializableRunnable;
*/
@Category(DistributedTest.class)
public class PRTransactionDUnitTest extends PRColocationDUnitTest {
+ private static final Logger logger = LogService.getLogger();
public static final int VERIFY_TX = 0;
@@ -91,6 +94,8 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
public static final int VERIFY_REP_READ = 8;
+ public static final int UPDATE_NON_COLOCATION = 9;
+
final int totalIterations = 50;
final int warmupIterations = 10;
@@ -131,6 +136,73 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
basicPRTXInFunction(2, false);
}
+ @Test
+ public void testBasicPRTransactionNonColatedFunction0() {
+ basicPRTXInNonColocatedFunction(0);
+ }
+
+ /**
+ * Test two non colocated functions in a transaction. This method invokes
+ * {@link MyTransactionFunction} and tells it what to test, using different arguments.
+ *
+ * @param redundantBuckets redundant buckets for colocated PRs
+ */
+ protected void basicPRTXInNonColocatedFunction(int redundantBuckets) {
+ setupColocatedRegions(redundantBuckets);
+
+ dataStore1.invoke(() -> registerFunction());
+ dataStore2.invoke(() -> registerFunction());
+
+ dataStore1.invoke(() -> runTXFunctions());
+ }
+
+ private void registerFunction() {
+ logger.info("register Fn");
+ Function txFunction = new MyTransactionFunction();
+ FunctionService.registerFunction(txFunction);
+ }
+
+ private void runFunction(final Region pr, int cust, boolean isFirstFunc) {
+ CustId custId = new CustId(cust);
+ Customer newCus = new Customer("foo", "bar");
+ ArrayList args = new ArrayList();
+ Execution execution = FunctionService.onRegion(pr);
+ Set filter = new HashSet();
+
+ args.add(new Integer(UPDATE_NON_COLOCATION));
+ logger.info("UPDATE_NON_COLOCATION");
+ args.add(custId);
+ args.add(newCus);
+ filter.add(custId);
+ try {
+ execution.withFilter(filter).setArguments(args).execute(new MyTransactionFunction().getId())
+ .getResult();
+ assertTrue("Expected exception was not thrown", isFirstFunc);
+ } catch (Exception exp) {
+ if (!isFirstFunc) {
+ if (exp instanceof TransactionException && exp.getMessage()
+ .startsWith("Function execution is not colocated with transaction.")) {
+ } else {
+ logger.info("Expected to catch TransactionException but caught exception " + exp, exp);
+ Assert.fail("Expected to catch TransactionException but caught exception ", exp);
+ }
+ } else {
+ logger.info("Caught unexpected exception", exp);
+ Assert.fail("Unexpected exception was thrown", exp);
+ }
+ }
+ }
+
+ private void runTXFunctions() {
+ PartitionedRegion pr = (PartitionedRegion) basicGetCache()
+ .getRegion(Region.SEPARATOR + CustomerPartitionedRegionName);
+ CacheTransactionManager mgr = pr.getCache().getCacheTransactionManager();
+ mgr.begin();
+ runFunction(pr, 1, true);
+ runFunction(pr, 2, false);
+ mgr.commit();
+ }
+
/**
* Test all the basic functionality of colocated transactions. This method invokes
* {@link MyTransactionFunction} and tells it what to test, using different arguments.
@@ -146,17 +218,9 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
createColocatedPRs(redundantBuckets);
}
- SerializableCallable registerFunction = new SerializableCallable("register Fn") {
- public Object call() throws Exception {
- Function txFunction = new MyTransactionFunction();
- FunctionService.registerFunction(txFunction);
- return Boolean.TRUE;
- }
- };
-
- dataStore1.invoke(registerFunction);
- dataStore2.invoke(registerFunction);
- dataStore3.invoke(registerFunction);
+ dataStore1.invoke(() -> registerFunction());
+ dataStore2.invoke(() -> registerFunction());
+ dataStore3.invoke(() -> registerFunction());
accessor.invoke(new SerializableCallable("run function") {
public Object call() throws Exception {
@@ -171,7 +235,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
ArrayList args = new ArrayList();
Function txFunction = new MyTransactionFunction();
FunctionService.registerFunction(txFunction);
- Execution e = FunctionService.onRegion(pr);
+ Execution execution = FunctionService.onRegion(pr);
Set filter = new HashSet();
// test transaction non-coLocated operations
filter.clear();
@@ -184,7 +248,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
args.add(order);
filter.add(custId);
try {
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
fail("Expected exception was not thrown");
} catch (FunctionException fe) {
LogWriterUtils.getLogWriter().info("Caught Expected exception");
@@ -201,7 +265,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
LogWriterUtils.getLogWriter().info("VERIFY_TX");
orderpr.put(orderId, order);
assertNotNull(orderpr.get(orderId));
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
assertTrue("Unexpected customer value after commit", newCus.equals(pr.get(custId)));
Order commitedOrder = (Order) orderpr.get(orderId);
assertTrue(
@@ -209,26 +273,25 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
order.equals(commitedOrder));
// verify conflict detection
args.set(0, new Integer(VERIFY_TXSTATE_CONFLICT));
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
// verify that the transaction is rolled back
args.set(0, new Integer(VERIFY_ROLLBACK));
LogWriterUtils.getLogWriter().info("VERIFY_ROLLBACK");
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
// verify destroy
args.set(0, new Integer(VERIFY_DESTROY));
LogWriterUtils.getLogWriter().info("VERIFY_DESTROY");
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
// verify invalidate
args.set(0, new Integer(VERIFY_INVALIDATE));
LogWriterUtils.getLogWriter().info("VERIFY_INVALIDATE");
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
return Boolean.TRUE;
}
});
}
protected void createColocatedPRs(int redundantBuckets) {
-
createCacheInAllVms();
redundancy = new Integer(redundantBuckets);
@@ -919,7 +982,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
ArrayList args = new ArrayList();
Function txFunction = new MyTransactionFunction();
FunctionService.registerFunction(txFunction);
- Execution e = FunctionService.onRegion(pr);
+ Execution execution = FunctionService.onRegion(pr);
Set filter = new HashSet();
boolean caughtException = false;
// test transaction non-coLocated operations
@@ -933,7 +996,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
args.add(order);
filter.add(custId);
caughtException = false;
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
return null;
}
});
@@ -943,17 +1006,10 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
@Test
public void testRepeatableRead() throws Exception {
createColocatedPRs(1);
- SerializableCallable registerFunction = new SerializableCallable("register Fn") {
- public Object call() throws Exception {
- Function txFunction = new MyTransactionFunction();
- FunctionService.registerFunction(txFunction);
- return Boolean.TRUE;
- }
- };
- dataStore1.invoke(registerFunction);
- dataStore2.invoke(registerFunction);
- dataStore3.invoke(registerFunction);
+ dataStore1.invoke(() -> registerFunction());
+ dataStore2.invoke(() -> registerFunction());
+ dataStore3.invoke(() -> registerFunction());
accessor.invoke(new SerializableCallable("run function") {
public Object call() throws Exception {
@@ -968,7 +1024,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
ArrayList args = new ArrayList();
Function txFunction = new MyTransactionFunction();
FunctionService.registerFunction(txFunction);
- Execution e = FunctionService.onRegion(pr);
+ Execution execution = FunctionService.onRegion(pr);
Set filter = new HashSet();
filter.clear();
args.clear();
@@ -979,7 +1035,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
args.add(orderId);
args.add(order);
filter.add(custId);
- e.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
+ execution.withFilter(filter).setArguments(args).execute(txFunction.getId()).getResult();
return null;
}
@@ -1013,7 +1069,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
public Object call() throws Exception {
long perfTime = 0;
Region customerPR = basicGetCache().getRegion(CustomerPartitionedRegionName);
- Execution e = FunctionService.onRegion(customerPR);
+ Execution execution = FunctionService.onRegion(customerPR);
// for each customer, update order and shipment
for (int iterations = 1; iterations <= totalIterations; iterations++) {
LogWriterUtils.getLogWriter().info("running perfFunction");
@@ -1036,7 +1092,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
if (iterations > warmupIterations) {
startTime = NanoTimer.getTime();
}
- e.withFilter(filter).setArguments(args).execute("perfFunction").getResult();
+ execution.withFilter(filter).setArguments(args).execute("perfFunction").getResult();
if (startTime > 0) {
perfTime += NanoTimer.getTime() - startTime;
}
@@ -1051,7 +1107,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
public Object call() throws Exception {
long perfTime = 0;
Region customerPR = basicGetCache().getRegion(CustomerPartitionedRegionName);
- Execution e = FunctionService.onRegion(customerPR);
+ Execution execution = FunctionService.onRegion(customerPR);
// for each customer, update order and shipment
for (int iterations = 1; iterations <= totalIterations; iterations++) {
LogWriterUtils.getLogWriter().info("Running perfFunction");
@@ -1074,7 +1130,7 @@ public class PRTransactionDUnitTest extends PRColocationDUnitTest {
if (iterations > warmupIterations) {
startTime = NanoTimer.getTime();
}
- e.withFilter(filter).setArguments(args).execute("perfTxFunction").getResult();
+ execution.withFilter(filter).setArguments(args).execute("perfTxFunction").getResult();
if (startTime > 0) {
perfTime += NanoTimer.getTime() - startTime;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/03e11e87/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommandTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommandTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommandTest.java
new file mode 100644
index 0000000..654be90
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/command/TXFailoverCommandTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.internal.cache.tier.sockets.command;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
+import org.apache.geode.internal.cache.FindRemoteTXMessage;
+import org.apache.geode.internal.cache.FindRemoteTXMessage.FindRemoteTXMessageReplyProcessor;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.TXId;
+import org.apache.geode.internal.cache.TXManagerImpl;
+import org.apache.geode.internal.cache.TXStateProxyImpl;
+import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
+import org.apache.geode.internal.cache.tier.sockets.Message;
+import org.apache.geode.internal.cache.tier.sockets.ServerConnection;
+import org.apache.geode.test.fake.Fakes;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+
+@Category(UnitTest.class)
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore("*.UnitTest")
+@PrepareForTest({FindRemoteTXMessage.class})
+public class TXFailoverCommandTest {
+ @Test
+ public void testTXFailoverSettingTargetNode()
+ throws ClassNotFoundException, IOException, InterruptedException {
+ TXFailoverCommand cmd = mock(TXFailoverCommand.class);
+ Message msg = mock(Message.class);
+ ServerConnection serverConnection = mock(ServerConnection.class);
+ ClientProxyMembershipID clientProxyMembershipID = mock(ClientProxyMembershipID.class);
+ InternalDistributedMember client = mock(InternalDistributedMember.class);
+ TXManagerImpl txMgr = mock(TXManagerImpl.class);
+ InternalCache cache = Fakes.cache();
+ int uniqueId = 1;
+ TXId txId = new TXId(client, uniqueId);
+ TXStateProxyImpl proxy = new TXStateProxyImpl(txMgr, txId, null);
+ FindRemoteTXMessageReplyProcessor processor = mock(FindRemoteTXMessageReplyProcessor.class);
+ InternalDistributedMember host = mock(InternalDistributedMember.class);
+
+ doCallRealMethod().when(cmd).cmdExecute(msg, serverConnection, null, 1);
+ when(serverConnection.getProxyID()).thenReturn(clientProxyMembershipID);
+ when(clientProxyMembershipID.getDistributedMember()).thenReturn(client);
+ when(msg.getTransactionId()).thenReturn(uniqueId);
+ when(serverConnection.getCache()).thenReturn(cache);
+ when(cache.getCacheTransactionManager()).thenReturn(txMgr);
+ when(txMgr.getTXState()).thenReturn(proxy);
+ when(cmd.createTXId(client, uniqueId)).thenReturn(txId);
+ PowerMockito.mockStatic(FindRemoteTXMessage.class);
+ PowerMockito.when(FindRemoteTXMessage.send(cache, txId)).thenReturn(processor);
+ when(processor.getHostingMember()).thenReturn(host);
+ when(proxy.getCache()).thenReturn(cache);
+ when(cache.getDistributedSystem()).thenReturn(mock(DistributedSystem.class));
+
+ cmd.cmdExecute(msg, serverConnection, null, 1);
+ assertNotNull(proxy.getRealDeal(host));
+ assertEquals(proxy.getTarget(), host);
+ }
+}