You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2016/10/28 21:41:49 UTC
[95/98] [abbrv] incubator-geode git commit: GEODE-1912: make
ServerStarter and LocatorStarter as regular rules so that it's easier to use
them in a RuleChain
GEODE-1912: make ServerStarter and LocatorStarter as regular rules so that it's easier to use them in a RuleChain
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/fa88520b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/fa88520b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/fa88520b
Branch: refs/heads/feature/GEM-983
Commit: fa88520b658dbf8ec74a83a63190bca8dc2bcff5
Parents: 6ec3f88
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Thu Oct 27 10:24:07 2016 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Fri Oct 28 08:56:49 2016 -0700
----------------------------------------------------------------------
.../web/RestSecurityIntegrationTest.java | 5 +-
.../rest/internal/web/RestServersJUnitTest.java | 5 +-
.../internal/web/SwaggerVerificationTest.java | 10 +-
.../management/internal/cli/GfshParser.java | 42 ++++---
.../CacheServerMBeanShiroJUnitTest.java | 29 +++--
.../security/CacheServerStartupRule.java | 6 +-
.../security/GfshCommandsPostProcessorTest.java | 26 +++--
.../security/GfshCommandsSecurityTest.java | 48 +++++---
.../security/GfshShellConnectionRule.java | 113 -------------------
.../security/JavaRmiServerNameTest.java | 22 ++--
.../security/AbstractSecureServerDUnitTest.java | 27 +++--
.../ClusterConfigWithoutSecurityDUnitTest.java | 6 +-
.../security/PeerAuthenticatorDUnitTest.java | 4 +-
...eerSecurityWithEmbeddedLocatorDUnitTest.java | 6 +-
.../SecurityClusterConfigDUnitTest.java | 12 +-
.../SecurityWithoutClusterConfigDUnitTest.java | 4 +-
.../security/StartServerAuthorizationTest.java | 6 +-
.../dunit/rules/GfshShellConnectionRule.java | 111 ++++++++++++++++++
.../dunit/rules/LocatorServerStartupRule.java | 25 ++--
.../geode/test/dunit/rules/LocatorStarter.java | 72 ------------
.../test/dunit/rules/LocatorStarterRule.java | 75 ++++++++++++
.../geode/test/dunit/rules/ServerStarter.java | 97 ----------------
.../test/dunit/rules/ServerStarterRule.java | 110 ++++++++++++++++++
.../GfshCommandsOverHttpSecurityTest.java | 3 +-
24 files changed, 441 insertions(+), 423 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
index 2dffcb7..aee2560 100644
--- a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
+++ b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
@@ -25,7 +25,7 @@ import static org.junit.Assert.assertTrue;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.security.templates.SampleSecurityManager;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.http.HttpResponse;
@@ -58,12 +58,11 @@ public class RestSecurityIntegrationTest {
};
@ClassRule
- public static ServerStarter serverStarter = new ServerStarter(properties);
+ public static ServerStarterRule serverStarter = new ServerStarterRule(properties);
private final GeodeRestClient restClient = new GeodeRestClient("localhost", restPort);
@BeforeClass
public static void before() throws Exception {
- serverStarter.startServer();
serverStarter.cache.createRegionFactory(RegionShortcut.REPLICATE).create(REGION_NAME);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestServersJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestServersJUnitTest.java b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestServersJUnitTest.java
index 552a184..b49e6ca 100644
--- a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestServersJUnitTest.java
+++ b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestServersJUnitTest.java
@@ -19,7 +19,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_
import static org.apache.geode.distributed.ConfigurationProperties.START_DEV_REST_API;
import org.apache.geode.test.dunit.Assert;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.http.HttpResponse;
import org.json.JSONArray;
@@ -42,12 +42,11 @@ public class RestServersJUnitTest {
};
@ClassRule
- public static ServerStarter serverStarter = new ServerStarter(properties);
+ public static ServerStarterRule serverStarter = new ServerStarterRule(properties);
private static GeodeRestClient restClient;
@BeforeClass
public static void before() throws Exception {
- serverStarter.startServer();
restClient = new GeodeRestClient("localhost", defaultPort);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/SwaggerVerificationTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/SwaggerVerificationTest.java b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/SwaggerVerificationTest.java
index b550e11..e706b0e 100644
--- a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/SwaggerVerificationTest.java
+++ b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/SwaggerVerificationTest.java
@@ -24,12 +24,11 @@ import static org.junit.Assert.assertThat;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.security.templates.SimpleSecurityManager;
-import org.apache.geode.test.dunit.rules.ServerStarter;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.http.HttpResponse;
import org.json.JSONObject;
-import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -51,14 +50,9 @@ public class SwaggerVerificationTest {
};
@ClassRule
- public static ServerStarter serverStarter = new ServerStarter(properties);
+ public static ServerStarterRule serverStarter = new ServerStarterRule(properties);
private final GeodeRestClient restClient = new GeodeRestClient("localhost", restPort);
- @BeforeClass
- public static void before() throws Exception {
- serverStarter.startServer();
- }
-
@Test
public void isSwaggerRunning() throws Exception {
// Check the UI
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
index bc25567..a1d03e4 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
@@ -14,28 +14,7 @@
*/
package org.apache.geode.management.internal.cli;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.logging.Logger;
-import java.util.regex.Pattern;
-
import org.apache.commons.lang.StringUtils;
-import org.springframework.shell.core.AbstractShell;
-import org.springframework.shell.core.Completion;
-import org.springframework.shell.core.Converter;
-import org.springframework.shell.core.MethodTarget;
-import org.springframework.shell.core.Parser;
-import org.springframework.shell.event.ParseResult;
-
import org.apache.geode.management.cli.CommandProcessingException;
import org.apache.geode.management.internal.cli.exceptions.CliCommandMultiModeOptionException;
import org.apache.geode.management.internal.cli.exceptions.CliCommandOptionException;
@@ -60,6 +39,26 @@ import org.apache.geode.management.internal.cli.parser.preprocessor.Preprocessor
import org.apache.geode.management.internal.cli.parser.preprocessor.TrimmedInput;
import org.apache.geode.management.internal.cli.shell.Gfsh;
import org.apache.geode.management.internal.cli.util.CLIConsoleBufferUtil;
+import org.springframework.shell.core.AbstractShell;
+import org.springframework.shell.core.Completion;
+import org.springframework.shell.core.Converter;
+import org.springframework.shell.core.MethodTarget;
+import org.springframework.shell.core.Parser;
+import org.springframework.shell.event.ParseResult;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.logging.Logger;
+import java.util.regex.Pattern;
/**
* Implementation of the {@link Parser} interface for GemFire SHell (gfsh) requirements.
@@ -927,7 +926,6 @@ public class GfshParser implements Parser {
}
} else {
if (targets.size() == 1) {
-
OptionSet parse = null;
List<MethodParameter> parameters = new ArrayList<MethodParameter>();
Map<String, String> paramValMap = new HashMap<String, String>();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerMBeanShiroJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerMBeanShiroJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerMBeanShiroJUnitTest.java
index 992c27d..3183aaf 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerMBeanShiroJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerMBeanShiroJUnitTest.java
@@ -14,24 +14,24 @@
*/
package org.apache.geode.management.internal.security;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.Properties;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_SHIRO_INIT;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.management.CacheServerMXBean;
import org.apache.geode.test.dunit.rules.ConnectionConfiguration;
import org.apache.geode.test.dunit.rules.MBeanServerConnectionRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.junit.categories.SecurityTest;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.util.Properties;
@Category({IntegrationTest.class, SecurityTest.class})
public class CacheServerMBeanShiroJUnitTest {
@@ -45,11 +45,8 @@ public class CacheServerMBeanShiroJUnitTest {
private CacheServerMXBean bean;
- @BeforeClass
- public static void before() throws Exception {
- ServerStarter serverStarter = new ServerStarter(properties);
- serverStarter.startServer();
- }
+ @ClassRule
+ public static ServerStarterRule serverStarter = new ServerStarterRule(properties);
@Rule
public MBeanServerConnectionRule connectionRule = new MBeanServerConnectionRule(jmxManagerPort);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerStartupRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerStartupRule.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerStartupRule.java
index c9ae997..03f4e84 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerStartupRule.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/CacheServerStartupRule.java
@@ -26,14 +26,14 @@ import org.junit.rules.ExternalResource;
import org.apache.geode.cache.Cache;
import org.apache.geode.security.templates.SampleSecurityManager;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
/**
* this rule would help you start up a cache server with the given properties in the current VM
*/
public class CacheServerStartupRule extends ExternalResource implements Serializable {
- private ServerStarter serverStarter;
+ private ServerStarterRule serverStarter;
public static CacheServerStartupRule withDefaultSecurityJson(int jmxManagerPort) {
return new CacheServerStartupRule(jmxManagerPort,
@@ -49,7 +49,7 @@ public class CacheServerStartupRule extends ExternalResource implements Serializ
properties.put(SECURITY_MANAGER, SampleSecurityManager.class.getName());
properties.put(SampleSecurityManager.SECURITY_JSON, jsonFile);
}
- serverStarter = new ServerStarter(properties);
+ serverStarter = new ServerStarterRule(properties);
}
@Before
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsPostProcessorTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsPostProcessorTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsPostProcessorTest.java
index 60f58da..d3390ba 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsPostProcessorTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsPostProcessorTest.java
@@ -14,16 +14,10 @@
*/
package org.apache.geode.management.internal.security;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.internal.Assert.*;
-
-import java.util.Properties;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_POST_PROCESSOR;
+import static org.apache.geode.internal.Assert.assertTrue;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.internal.AvailablePortHelper;
@@ -31,9 +25,17 @@ import org.apache.geode.management.internal.cli.HeadlessGfsh;
import org.apache.geode.security.templates.SamplePostProcessor;
import org.apache.geode.security.templates.SampleSecurityManager;
import org.apache.geode.test.dunit.rules.ConnectionConfiguration;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.junit.categories.SecurityTest;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.util.Properties;
@Category({IntegrationTest.class, SecurityTest.class})
public class GfshCommandsPostProcessorTest {
@@ -53,7 +55,7 @@ public class GfshCommandsPostProcessorTest {
@BeforeClass
public static void beforeClass() throws Exception {
- ServerStarter serverStarter = new ServerStarter(properties);
+ ServerStarterRule serverStarter = new ServerStarterRule(properties);
serverStarter.startServer();
serverStarter.cache.createRegionFactory(RegionShortcut.REPLICATE).create("region1");
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsSecurityTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsSecurityTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsSecurityTest.java
index ce9c21c..b2dc6fe 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsSecurityTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshCommandsSecurityTest.java
@@ -14,18 +14,14 @@
*/
package org.apache.geode.management.internal.security;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
-
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.shiro.authz.permission.WildcardPermission;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.internal.AvailablePortHelper;
@@ -37,17 +33,38 @@ import org.apache.geode.management.internal.cli.result.ErrorResultData;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.security.templates.SampleSecurityManager;
import org.apache.geode.test.dunit.rules.ConnectionConfiguration;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.junit.categories.SecurityTest;
+import org.apache.shiro.authz.permission.WildcardPermission;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.util.List;
+import java.util.Properties;
@Category({IntegrationTest.class, SecurityTest.class})
+// @RunWith(Parameterized.class)
+// @Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
public class GfshCommandsSecurityTest {
protected static int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);
protected static int jmxPort = ports[0];
protected static int httpPort = ports[1];
+ // can't do parameterized tests here since useHttp tests needs to be in geode-web project
+ // @Parameterized.Parameters
+ // public static Collection<Object> data() {
+ // return Arrays.asList(new Object[] {true, false});
+ // }
+ //
+ // @Parameterized.Parameter
+ // public boolean useHttp;
+
static Properties properties = new Properties() {
{
setProperty(JMX_MANAGER_PORT, jmxPort + "");
@@ -62,14 +79,13 @@ public class GfshCommandsSecurityTest {
@BeforeClass
public static void beforeClass() throws Exception {
- ServerStarter serverStarter = new ServerStarter(properties);
+ ServerStarterRule serverStarter = new ServerStarterRule(properties);
serverStarter.startServer();
serverStarter.cache.createRegionFactory(RegionShortcut.REPLICATE).create("region1");
}
@Rule
- public GfshShellConnectionRule gfshConnection =
- new GfshShellConnectionRule(jmxPort, httpPort, false);
+ public GfshShellConnectionRule gfshConnection = new GfshShellConnectionRule(jmxPort);
@Before
public void before() {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshShellConnectionRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshShellConnectionRule.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshShellConnectionRule.java
deleted file mode 100644
index e7724f7..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/GfshShellConnectionRule.java
+++ /dev/null
@@ -1,113 +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.security;
-
-import org.junit.runner.Description;
-
-import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.HeadlessGfsh;
-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.ErrorResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
-import org.apache.geode.test.dunit.rules.ConnectionConfiguration;
-import org.apache.geode.test.junit.rules.DescribedExternalResource;
-
-/**
- * Class which eases the creation of MBeans for security testing. When combined with
- * {@link ConnectionConfiguration} it allows for the creation of per-test connections with different
- * user/password combinations.
- */
-public class GfshShellConnectionRule extends DescribedExternalResource {
-
- private int jmxPort = 0;
- private int httpPort = 0;
- private boolean useHttp = false;
- private HeadlessGfsh gfsh;
- private boolean authenticated;
-
- /**
- * Rule constructor
- */
- public GfshShellConnectionRule(int jmxPort, int httpPort, boolean useHttp) {
- this.jmxPort = jmxPort;
- this.httpPort = httpPort;
- this.useHttp = useHttp;
- }
-
- public GfshShellConnectionRule(int jmxPort) {
- this.jmxPort = jmxPort;
- }
-
- protected void before(Description description) throws Throwable {
- ConnectionConfiguration config = description.getAnnotation(ConnectionConfiguration.class);
- if (config == null)
- return;
-
- CliUtil.isGfshVM = true;
- String shellId = getClass().getSimpleName() + "_" + description.getMethodName();
- gfsh = new HeadlessGfsh(shellId, 30, "gfsh_files"); // TODO: move to TemporaryFolder
-
- final CommandStringBuilder connectCommand = new CommandStringBuilder(CliStrings.CONNECT);
- connectCommand.addOption(CliStrings.CONNECT__USERNAME, config.user());
- connectCommand.addOption(CliStrings.CONNECT__PASSWORD, config.password());
-
- String endpoint;
- if (useHttp) {
- endpoint = "http://localhost:" + httpPort + "/gemfire/v1";
- connectCommand.addOption(CliStrings.CONNECT__USE_HTTP, Boolean.TRUE.toString());
- connectCommand.addOption(CliStrings.CONNECT__URL, endpoint);
- } else {
- endpoint = "localhost[" + jmxPort + "]";
- connectCommand.addOption(CliStrings.CONNECT__JMX_MANAGER, endpoint);
- }
- System.out.println(getClass().getSimpleName() + " using endpoint: " + endpoint);
-
- gfsh.executeCommand(connectCommand.toString());
-
- CommandResult result = (CommandResult) gfsh.getResult();
- if (result.getResultData() instanceof ErrorResultData) {
- ErrorResultData errorResultData = (ErrorResultData) result.getResultData();
- this.authenticated =
- !(errorResultData.getErrorCode() == ResultBuilder.ERRORCODE_CONNECTION_ERROR);
- } else {
- this.authenticated = true;
- }
- }
-
- /**
- * Override to tear down your specific external resource.
- */
- protected void after(Description description) throws Throwable {
- if (gfsh != null) {
- gfsh.clearEvents();
- gfsh.executeCommand("disconnect");
- gfsh.executeCommand("exit");
- gfsh.terminate();
- gfsh.setThreadLocalInstance();
- gfsh = null;
- }
- CliUtil.isGfshVM = false;
- }
-
- public HeadlessGfsh getGfsh() {
- return gfsh;
- }
-
- public boolean isAuthenticated() {
- return authenticated;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
index f754f2e..2ae6140 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
@@ -16,19 +16,18 @@
package org.apache.geode.management.internal.security;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
-
-import java.util.Properties;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.junit.Assert.assertEquals;
+import org.apache.geode.internal.AvailablePort;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
+import org.apache.geode.test.junit.categories.IntegrationTest;
import org.junit.After;
-import org.junit.BeforeClass;
+import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.internal.AvailablePort;
-import org.apache.geode.test.dunit.rules.ServerStarter;
-import org.apache.geode.test.junit.categories.IntegrationTest;
+import java.util.Properties;
@Category(IntegrationTest.class)
public class JavaRmiServerNameTest {
@@ -44,11 +43,8 @@ public class JavaRmiServerNameTest {
}
};
- @BeforeClass
- public static void beforeClass() throws Exception {
- ServerStarter serverStarter = new ServerStarter(properties);
- serverStarter.startServer();
- }
+ @ClassRule
+ public static ServerStarterRule serverStarter = new ServerStarterRule(properties);
// https://issues.apache.org/jira/browse/GEODE-1548
@Test
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/AbstractSecureServerDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/AbstractSecureServerDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/AbstractSecureServerDUnitTest.java
index b9efe07..f43191d 100644
--- a/geode-core/src/test/java/org/apache/geode/security/AbstractSecureServerDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/AbstractSecureServerDUnitTest.java
@@ -15,16 +15,12 @@
package org.apache.geode.security;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
-import org.junit.Before;
+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.SECURITY_CLIENT_AUTH_INIT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionShortcut;
@@ -37,7 +33,14 @@ import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
+import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
+import org.junit.Before;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
public abstract class AbstractSecureServerDUnitTest extends JUnit4DistributedTestCase {
@@ -71,7 +74,7 @@ public abstract class AbstractSecureServerDUnitTest extends JUnit4DistributedTes
@Before
public void before() throws Exception {
- ServerStarter serverStarter = new ServerStarter(getProperties());
+ ServerStarterRule serverStarter = new ServerStarterRule(getProperties());
serverStarter.startServer(0, pdxPersistent);
serverPort = serverStarter.server.getPort();
Region region =
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/ClusterConfigWithoutSecurityDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClusterConfigWithoutSecurityDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/ClusterConfigWithoutSecurityDUnitTest.java
index cbe4a3b..32a92a2 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClusterConfigWithoutSecurityDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClusterConfigWithoutSecurityDUnitTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.*;
import java.util.Properties;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -34,7 +35,6 @@ import org.apache.geode.security.templates.SimpleSecurityManager;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -71,7 +71,7 @@ public class ClusterConfigWithoutSecurityDUnitTest extends JUnit4DistributedTest
props.setProperty("use-cluster-configuration", "false");
// initial security properties should only contain initial set of values
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
serverStarter.startServer(lsRule.getPort(0));
DistributedSystem ds = serverStarter.cache.getDistributedSystem();
@@ -91,7 +91,7 @@ public class ClusterConfigWithoutSecurityDUnitTest extends JUnit4DistributedTest
props.setProperty("security-manager", "mySecurityManager");
props.setProperty("use-cluster-configuration", "true");
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
.isInstanceOf(GemFireConfigException.class)
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/PeerAuthenticatorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/PeerAuthenticatorDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/PeerAuthenticatorDUnitTest.java
index 84a4dd4..90cc6f1 100644
--- a/geode-core/src/test/java/org/apache/geode/security/PeerAuthenticatorDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/PeerAuthenticatorDUnitTest.java
@@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.Properties;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -29,7 +30,6 @@ import org.apache.geode.security.templates.DummyAuthenticator;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -61,7 +61,7 @@ public class PeerAuthenticatorDUnitTest extends JUnit4DistributedTestCase {
VM server2 = lsRule.getNodeVM(2);
server2.invoke(() -> {
- ServerStarter serverStarter = new ServerStarter(server2Props);
+ ServerStarterRule serverStarter = new ServerStarterRule(server2Props);
assertThatThrownBy(() -> serverStarter.startServer(locatorPort))
.isInstanceOf(GemFireSecurityException.class).hasMessageContaining("Invalid user name");
});
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/PeerSecurityWithEmbeddedLocatorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/PeerSecurityWithEmbeddedLocatorDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/PeerSecurityWithEmbeddedLocatorDUnitTest.java
index 577a7a1..fbbbf2b 100644
--- a/geode-core/src/test/java/org/apache/geode/security/PeerSecurityWithEmbeddedLocatorDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/PeerSecurityWithEmbeddedLocatorDUnitTest.java
@@ -30,7 +30,7 @@ import org.apache.geode.security.templates.SimpleSecurityManager;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -62,7 +62,7 @@ public class PeerSecurityWithEmbeddedLocatorDUnitTest extends JUnit4DistributedT
VM server2 = lsRule.getNodeVM(2);
server2.invoke(() -> {
- ServerStarter serverStarter = new ServerStarter(server2Props);
+ ServerStarterRule serverStarter = new ServerStarterRule(server2Props);
assertThatThrownBy(() -> serverStarter.startServer(locatorPort))
.isInstanceOf(GemFireSecurityException.class)
.hasMessageContaining("Security check failed. Authentication error");
@@ -90,7 +90,7 @@ public class PeerSecurityWithEmbeddedLocatorDUnitTest extends JUnit4DistributedT
VM server2 = lsRule.getNodeVM(2);
server2.invoke(() -> {
- ServerStarter serverStarter = new ServerStarter(server2Props);
+ ServerStarterRule serverStarter = new ServerStarterRule(server2Props);
assertThatThrownBy(() -> serverStarter.startServer(locatorPort))
.isInstanceOf(GemFireSecurityException.class).hasMessageContaining("Invalid user name");
});
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/SecurityClusterConfigDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/SecurityClusterConfigDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/SecurityClusterConfigDUnitTest.java
index a4b25f5..cce4fdb 100644
--- a/geode-core/src/test/java/org/apache/geode/security/SecurityClusterConfigDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/SecurityClusterConfigDUnitTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.*;
import java.util.Properties;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -33,7 +34,6 @@ import org.apache.geode.security.templates.SimpleSecurityManager;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -67,7 +67,7 @@ public class SecurityClusterConfigDUnitTest extends JUnit4DistributedTestCase {
props.setProperty("use-cluster-configuration", "true");
// initial security properties should only contain initial set of values
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
serverStarter.startServer(lsRule.getPort(0));
DistributedSystem ds = serverStarter.cache.getDistributedSystem();
@@ -89,7 +89,7 @@ public class SecurityClusterConfigDUnitTest extends JUnit4DistributedTestCase {
props.setProperty(SECURITY_MANAGER, SimpleSecurityManager.class.getName());
// initial security properties should only contain initial set of values
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
serverStarter.startServer(lsRule.getPort(0));
DistributedSystem ds = serverStarter.cache.getDistributedSystem();
@@ -110,7 +110,7 @@ public class SecurityClusterConfigDUnitTest extends JUnit4DistributedTestCase {
props.setProperty("use-cluster-configuration", "true");
// initial security properties should only contain initial set of values
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
.isInstanceOf(GemFireConfigException.class)
@@ -129,7 +129,7 @@ public class SecurityClusterConfigDUnitTest extends JUnit4DistributedTestCase {
props.setProperty("use-cluster-configuration", "true");
// initial security properties should only contain initial set of values
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
.isInstanceOf(GemFireConfigException.class)
@@ -147,7 +147,7 @@ public class SecurityClusterConfigDUnitTest extends JUnit4DistributedTestCase {
props.setProperty("security-manager", "mySecurityManager");
props.setProperty("use-cluster-configuration", "false");
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
.isInstanceOf(GemFireConfigException.class)
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/SecurityWithoutClusterConfigDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/SecurityWithoutClusterConfigDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/SecurityWithoutClusterConfigDUnitTest.java
index 87314ed..7af5d93 100644
--- a/geode-core/src/test/java/org/apache/geode/security/SecurityWithoutClusterConfigDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/SecurityWithoutClusterConfigDUnitTest.java
@@ -32,7 +32,7 @@ import org.apache.geode.security.templates.SimpleSecurityManager;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -70,7 +70,7 @@ public class SecurityWithoutClusterConfigDUnitTest extends JUnit4DistributedTest
props.setProperty("use-cluster-configuration", "true");
// initial security properties should only contain initial set of values
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
serverStarter.startServer(lsRule.getPort(0));
DistributedSystem ds = serverStarter.cache.getDistributedSystem();
assertEquals(3, ds.getSecurityProperties().size());
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/security/StartServerAuthorizationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/security/StartServerAuthorizationTest.java b/geode-core/src/test/java/org/apache/geode/security/StartServerAuthorizationTest.java
index 3cafdac..ed64f40 100644
--- a/geode-core/src/test/java/org/apache/geode/security/StartServerAuthorizationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/StartServerAuthorizationTest.java
@@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.*;
import java.util.Properties;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -29,7 +30,6 @@ import org.apache.geode.security.templates.SimpleSecurityManager;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
-import org.apache.geode.test.dunit.rules.ServerStarter;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -55,7 +55,7 @@ public class StartServerAuthorizationTest extends JUnit4DistributedTestCase {
VM server = lsRule.getNodeVM(1);
server.invoke(() -> {
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
.isInstanceOf(GemFireSecurityException.class).hasMessageContaining(
"Security check failed. Authentication error. Please check your credentials");
@@ -72,7 +72,7 @@ public class StartServerAuthorizationTest extends JUnit4DistributedTestCase {
VM server = lsRule.getNodeVM(1);
server.invoke(() -> {
- ServerStarter serverStarter = new ServerStarter(props);
+ ServerStarterRule serverStarter = new ServerStarterRule(props);
assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
.isInstanceOf(GemFireSecurityException.class)
.hasMessageContaining("user not authorized for CLUSTER:MANAGE");
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/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
new file mode 100644
index 0000000..25780e6
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
@@ -0,0 +1,111 @@
+/*
+ * 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.test.dunit.rules;
+
+import org.apache.geode.management.internal.cli.CliUtil;
+import org.apache.geode.management.internal.cli.HeadlessGfsh;
+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.ErrorResultData;
+import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
+import org.apache.geode.test.junit.rules.DescribedExternalResource;
+import org.junit.runner.Description;
+
+/**
+ * Class which eases the connection to the jmxManager {@link ConnectionConfiguration} it allows for
+ * the creation of per-test connections with different user/password combinations, or no username
+ * and password
+ */
+public class GfshShellConnectionRule extends DescribedExternalResource {
+
+ private int port = 0;
+ private boolean useHttp = false;
+ private HeadlessGfsh gfsh;
+ private boolean authenticated;
+
+ /**
+ * Rule constructor
+ */
+
+ public GfshShellConnectionRule(int port) {
+ this.useHttp = false;
+ this.port = port;
+ }
+
+ public GfshShellConnectionRule(int port, boolean useHttp) {
+ this.useHttp = useHttp;
+ this.port = port;
+ }
+
+ protected void before(Description description) throws Throwable {
+ CliUtil.isGfshVM = true;
+ String shellId = getClass().getSimpleName() + "_" + description.getMethodName();
+ gfsh = new HeadlessGfsh(shellId, 30, "gfsh_files"); // TODO: move to TemporaryFolder
+
+ final CommandStringBuilder connectCommand = new CommandStringBuilder(CliStrings.CONNECT);
+
+ ConnectionConfiguration config = description.getAnnotation(ConnectionConfiguration.class);
+ if (config != null) {
+ connectCommand.addOption(CliStrings.CONNECT__USERNAME, config.user());
+ connectCommand.addOption(CliStrings.CONNECT__PASSWORD, config.password());
+ }
+
+ String endpoint;
+ if (useHttp) {
+ endpoint = "http://localhost:" + port + "/gemfire/v1";
+ connectCommand.addOption(CliStrings.CONNECT__USE_HTTP, Boolean.TRUE.toString());
+ connectCommand.addOption(CliStrings.CONNECT__URL, endpoint);
+ } else {
+ endpoint = "localhost[" + port + "]";
+ connectCommand.addOption(CliStrings.CONNECT__JMX_MANAGER, endpoint);
+ }
+ System.out.println(getClass().getSimpleName() + " using endpoint: " + endpoint);
+
+ gfsh.executeCommand(connectCommand.toString());
+
+ CommandResult result = (CommandResult) gfsh.getResult();
+ if (result.getResultData() instanceof ErrorResultData) {
+ ErrorResultData errorResultData = (ErrorResultData) result.getResultData();
+ this.authenticated =
+ !(errorResultData.getErrorCode() == ResultBuilder.ERRORCODE_CONNECTION_ERROR);
+ } else {
+ this.authenticated = true;
+ }
+ }
+
+ /**
+ * Override to tear down your specific external resource.
+ */
+ protected void after(Description description) throws Throwable {
+ if (gfsh != null) {
+ gfsh.clearEvents();
+ gfsh.executeCommand("disconnect");
+ gfsh.executeCommand("exit");
+ gfsh.terminate();
+ gfsh.setThreadLocalInstance();
+ gfsh = null;
+ }
+ CliUtil.isGfshVM = false;
+ }
+
+ public HeadlessGfsh getGfsh() {
+ return gfsh;
+ }
+
+ public boolean isAuthenticated() {
+ return authenticated;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
index ba78fdc..4e10b0a 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
@@ -15,20 +15,19 @@
package org.apache.geode.test.dunit.rules;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Host.*;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Properties;
+import static org.apache.geode.distributed.ConfigurationProperties.NAME;
+import static org.apache.geode.test.dunit.Host.getHost;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.Invoke;
+import org.apache.geode.test.dunit.VM;
import org.junit.After;
import org.junit.Before;
import org.junit.rules.ExternalResource;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.Invoke;
-import org.apache.geode.test.dunit.VM;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Properties;
/**
@@ -43,8 +42,8 @@ public class LocatorServerStartupRule extends ExternalResource implements Serial
// these are only avaialbe in each VM
- public static ServerStarter serverStarter;
- public static LocatorStarter locatorStarter;
+ public static ServerStarterRule serverStarter;
+ public static LocatorStarterRule locatorStarter;
@Before
public void before() {
@@ -69,7 +68,7 @@ public class LocatorServerStartupRule extends ExternalResource implements Serial
public VM getLocatorVM(int index, Properties locatorProperties) throws IOException {
VM locatorVM = host.getVM(index);
int locatorPort = locatorVM.invoke(() -> {
- locatorStarter = new LocatorStarter(locatorProperties);
+ locatorStarter = new LocatorStarterRule(locatorProperties);
locatorStarter.startLocator();
return locatorStarter.locator.getPort();
});
@@ -99,7 +98,7 @@ public class LocatorServerStartupRule extends ExternalResource implements Serial
VM nodeVM = getNodeVM(index);
properties.setProperty(NAME, "server-" + index);
int port = nodeVM.invoke(() -> {
- serverStarter = new ServerStarter(properties);
+ serverStarter = new ServerStarterRule(properties);
serverStarter.startServer(locatorPort);
return serverStarter.server.getPort();
});
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarter.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarter.java
deleted file mode 100644
index 216acef..0000000
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarter.java
+++ /dev/null
@@ -1,72 +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.test.dunit.rules;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
-
-import java.io.Serializable;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-import com.jayway.awaitility.Awaitility;
-import org.junit.rules.ExternalResource;
-
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.InternalLocator;
-
-/**
- * This is a rule to start up a locator in your current VM. It's useful for your Integration Tests.
- *
- * If you need a rule to start a server/locator in different VM for Distribution tests, You should
- * use LocatorServerStartupRule
- *
- * This rule does not have a before(), because you may choose to start a locator in different time
- * of your tests. You may choose to use this class not as a rule or use it in your own rule, (see
- * LocatorServerStartupRule) you will need to call after() manually in that case.
- */
-
-public class LocatorStarter extends ExternalResource implements Serializable {
-
- public InternalLocator locator;
-
- private Properties properties;
-
- public LocatorStarter(Properties properties) {
- this.properties = properties;
- }
-
- public void startLocator() throws Exception {
- if (!properties.containsKey(MCAST_PORT)) {
- properties.setProperty(MCAST_PORT, "0");
- }
- locator = (InternalLocator) Locator.startLocatorAndDS(0, null, properties);
- int locatorPort = locator.getPort();
- locator.resetInternalLocatorFileNamesWithCorrectPortNumber(locatorPort);
-
- if (locator.getConfig().getEnableClusterConfiguration()) {
- Awaitility.await().atMost(65, TimeUnit.SECONDS)
- .until(() -> assertTrue(locator.isSharedConfigurationRunning()));
- }
- }
-
- @Override
- public void after() {
- if (locator != null) {
- locator.stop();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java
new file mode 100644
index 0000000..72627a0
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.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.test.dunit.rules;
+
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.junit.Assert.assertTrue;
+
+import com.jayway.awaitility.Awaitility;
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.InternalLocator;
+import org.junit.rules.ExternalResource;
+
+import java.io.Serializable;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * This is a rule to start up a locator in your current VM. It's useful for your Integration Tests.
+ *
+ * If you need a rule to start a server/locator in different VM for Distribution tests, You should
+ * use LocatorServerStartupRule
+ *
+ * You may choose to use this class not as a rule or use it in your own rule, (see
+ * LocatorServerStartupRule) you will need to call startLocator() and after() manually in that case.
+ */
+
+public class LocatorStarterRule extends ExternalResource implements Serializable {
+
+ public InternalLocator locator;
+
+ private Properties properties;
+
+ public LocatorStarterRule(Properties properties) {
+ this.properties = properties;
+ }
+
+ public void startLocator() throws Exception {
+ if (!properties.containsKey(MCAST_PORT)) {
+ properties.setProperty(MCAST_PORT, "0");
+ }
+ locator = (InternalLocator) Locator.startLocatorAndDS(0, null, properties);
+ int locatorPort = locator.getPort();
+ locator.resetInternalLocatorFileNamesWithCorrectPortNumber(locatorPort);
+
+ if (locator.getConfig().getEnableClusterConfiguration()) {
+ Awaitility.await().atMost(65, TimeUnit.SECONDS)
+ .until(() -> assertTrue(locator.isSharedConfigurationRunning()));
+ }
+ }
+
+ @Override
+ protected void before() throws Throwable {
+ startLocator();
+ }
+
+ @Override
+ protected void after() {
+ if (locator != null) {
+ locator.stop();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarter.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarter.java
deleted file mode 100644
index 22d3c56..0000000
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarter.java
+++ /dev/null
@@ -1,97 +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.test.dunit.rules;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-
-import java.io.Serializable;
-import java.util.Properties;
-
-import org.junit.rules.ExternalResource;
-
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.cache.server.CacheServer;
-
-
-/**
- * This is a rule to start up a server in your current VM. It's useful for your Integration Tests.
- *
- * If you need a rule to start a server/locator in different VM for Distribution tests, You should
- * use LocatorServerStartupRule
- *
- * This rule does not have a before(), because you may choose to start a server in different time of
- * your tests. You may choose to use this class not as a rule or use it in your own rule, (see
- * LocatorServerStartupRule) you will need to call after() manually in that case.
- */
-public class ServerStarter extends ExternalResource implements Serializable {
-
- public Cache cache;
- public CacheServer server;
-
- private Properties properties;
-
- public ServerStarter(Properties properties) {
- this.properties = properties;
- }
-
- public void startServer() throws Exception {
- startServer(0, false);
- }
-
- public void startServer(int locatorPort) throws Exception {
- startServer(locatorPort, false);
- }
-
- public void startServer(int locatorPort, boolean pdxPersistent) throws Exception {
- if (!properties.containsKey(MCAST_PORT)) {
- properties.setProperty(MCAST_PORT, "0");
- }
- if (!properties.containsKey(NAME)) {
- properties.setProperty(NAME, this.getClass().getName());
- }
- if (locatorPort > 0) {
- properties.setProperty(LOCATORS, "localhost[" + locatorPort + "]");
- } else {
- properties.setProperty(LOCATORS, "");
- }
- if (properties.containsKey(JMX_MANAGER_PORT)) {
- int jmxPort = Integer.parseInt(properties.getProperty(JMX_MANAGER_PORT));
- if (jmxPort > 0) {
- if (!properties.containsKey(JMX_MANAGER))
- properties.put(JMX_MANAGER, "true");
- if (!properties.containsKey(JMX_MANAGER_START))
- properties.put(JMX_MANAGER_START, "true");
- }
- }
-
- CacheFactory cf = new CacheFactory(properties);
- cf.setPdxReadSerialized(pdxPersistent);
- cf.setPdxPersistent(pdxPersistent);
-
- cache = cf.create();
- server = cache.addCacheServer();
- server.setPort(0);
- server.start();
- }
-
- public void after() {
- if (cache != null)
- cache.close();
- if (server != null)
- server.stop();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
new file mode 100644
index 0000000..8da0778
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ServerStarterRule.java
@@ -0,0 +1,110 @@
+/*
+ * 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.test.dunit.rules;
+
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.NAME;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.server.CacheServer;
+import org.junit.rules.ExternalResource;
+
+import java.io.Serializable;
+import java.util.Properties;
+
+
+/**
+ * This is a rule to start up a server in your current VM. It's useful for your Integration Tests.
+ *
+ * If you need a rule to start a server/locator in different VM for Distribution tests, You should
+ * use LocatorServerStartupRule
+ *
+ * You may choose to use this class not as a rule or use it in your own rule, (see
+ * LocatorServerStartupRule) you will need to call startServer and after() manually in that case.
+ */
+public class ServerStarterRule extends ExternalResource implements Serializable {
+
+ public Cache cache;
+ public CacheServer server;
+
+ private Properties properties;
+
+ public ServerStarterRule(Properties properties) {
+ this.properties = properties;
+ }
+
+ public void startServer() throws Exception {
+ startServer(0, false);
+ }
+
+ public void startServer(int locatorPort) throws Exception {
+ startServer(locatorPort, false);
+ }
+
+ public void startServer(int locatorPort, boolean pdxPersistent) throws Exception {
+ if (!properties.containsKey(MCAST_PORT)) {
+ properties.setProperty(MCAST_PORT, "0");
+ }
+ if (!properties.containsKey(NAME)) {
+ properties.setProperty(NAME, this.getClass().getName());
+ }
+ if (locatorPort > 0) {
+ properties.setProperty(LOCATORS, "localhost[" + locatorPort + "]");
+ } else {
+ properties.setProperty(LOCATORS, "");
+ }
+ if (properties.containsKey(JMX_MANAGER_PORT)) {
+ int jmxPort = Integer.parseInt(properties.getProperty(JMX_MANAGER_PORT));
+ if (jmxPort > 0) {
+ if (!properties.containsKey(JMX_MANAGER))
+ properties.put(JMX_MANAGER, "true");
+ if (!properties.containsKey(JMX_MANAGER_START))
+ properties.put(JMX_MANAGER_START, "true");
+ }
+ }
+
+ CacheFactory cf = new CacheFactory(properties);
+ cf.setPdxReadSerialized(pdxPersistent);
+ cf.setPdxPersistent(pdxPersistent);
+
+ cache = cf.create();
+ server = cache.addCacheServer();
+ server.setPort(0);
+ server.start();
+ }
+
+ /**
+ * if you use this class as a rule, the default startServer will be called in the before. You need
+ * to make sure your properties to start the server with has the locator information it needs to
+ * connect to, otherwise, this server won't connect to any locator
+ */
+ protected void before() throws Throwable {
+ startServer();
+ }
+
+ @Override
+ public void after() {
+ if (cache != null)
+ cache.close();
+ if (server != null)
+ server.stop();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/fa88520b/geode-web/src/test/java/org/apache/geode/management/internal/security/GfshCommandsOverHttpSecurityTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/org/apache/geode/management/internal/security/GfshCommandsOverHttpSecurityTest.java b/geode-web/src/test/java/org/apache/geode/management/internal/security/GfshCommandsOverHttpSecurityTest.java
index a4162fd..d477565 100644
--- a/geode-web/src/test/java/org/apache/geode/management/internal/security/GfshCommandsOverHttpSecurityTest.java
+++ b/geode-web/src/test/java/org/apache/geode/management/internal/security/GfshCommandsOverHttpSecurityTest.java
@@ -15,6 +15,7 @@
package org.apache.geode.management.internal.security;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
import org.apache.geode.test.junit.categories.IntegrationTest;
import org.apache.geode.test.junit.categories.SecurityTest;
@@ -23,6 +24,6 @@ import org.junit.experimental.categories.Category;
@Category({IntegrationTest.class, SecurityTest.class})
public class GfshCommandsOverHttpSecurityTest extends GfshCommandsSecurityTest {
public GfshCommandsOverHttpSecurityTest() {
- gfshConnection = new GfshShellConnectionRule(jmxPort, httpPort, true);
+ gfshConnection = new GfshShellConnectionRule(httpPort, true);
}
}