GEODE-1993: allow LocatorServerStartupRule to save server's ports as well.

* added more tetss


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/5abe957c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/5abe957c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/5abe957c

Branch: refs/heads/feature/GEODE-1874
Commit: 5abe957ca1cd42eeaf82549c275711e6e94dddec
Parents: 1fb0d0a
Author: Jinmei Liao <jil...@pivotal.io>
Authored: Mon Oct 17 08:08:39 2016 -0700
Committer: Jinmei Liao <jil...@pivotal.io>
Committed: Mon Oct 17 08:08:39 2016 -0700

----------------------------------------------------------------------
 .../ClusterConfigWithoutSecurityDUnitTest.java  |   4 +-
 .../security/PeerAuthenticatorDUnitTest.java    |  63 ++++--------
 ...eerSecurityWithEmbeddedLocatorDUnitTest.java | 102 +++++++++++++++++++
 .../SecurityClusterConfigDUnitTest.java         |  10 +-
 .../SecurityWithoutClusterConfigDUnitTest.java  |   2 +-
 .../security/StartServerAuthorizationTest.java  |   4 +-
 .../dunit/rules/LocatorServerStartupRule.java   |  12 ++-
 .../LuceneClusterConfigurationDUnitTest.java    |   2 +-
 8 files changed, 140 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5abe957c/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 72dbd1a..1bbfa0f 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
@@ -71,7 +71,7 @@ public class ClusterConfigWithoutSecurityDUnitTest extends 
JUnit4DistributedTest
 
     // initial security properties should only contain initial set of values
     ServerStarter serverStarter = new ServerStarter(props);
-    serverStarter.startServer(lsRule.getLocatorPort(0));
+    serverStarter.startServer(lsRule.getPort(0));
     DistributedSystem ds = serverStarter.cache.getDistributedSystem();
 
     // after cache is created, the configuration won't chagne
@@ -92,7 +92,7 @@ public class ClusterConfigWithoutSecurityDUnitTest extends 
JUnit4DistributedTest
 
     ServerStarter serverStarter = new ServerStarter(props);
 
-    assertThatThrownBy(() -> 
serverStarter.startServer(lsRule.getLocatorPort(0)))
+    assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
       .isInstanceOf(GemFireConfigException.class)
       
.hasMessage(LocalizedStrings.GEMFIRE_CACHE_SECURITY_MISCONFIGURATION.toLocalizedString());
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5abe957c/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 bb147c7..b12ea43 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,73 +20,50 @@ package org.apache.geode.security;
 import static org.apache.geode.distributed.ConfigurationProperties.*;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import java.io.File;
 import java.util.Properties;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.security.templates.DummyAuthenticator;
-import org.apache.geode.test.dunit.Host;
 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;
 
 @Category({ DistributedTest.class, SecurityTest.class })
 public class PeerAuthenticatorDUnitTest extends JUnit4DistributedTestCase {
-  protected VM locator = null;
-  protected VM server = null;
-  protected VM server1 = null;
+  @Rule
+  public LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
 
   @Before
   public void before() throws Exception {
-    final Host host = Host.getHost(0);
-    this.locator = host.getVM(0);
-    this.server = host.getVM(1);
-    this.server1 = host.getVM(2);
+    Properties props = new Properties();
+    props.setProperty(SECURITY_PEER_AUTHENTICATOR, 
DummyAuthenticator.class.getName());
+    lsRule.getLocatorVM(0, props);
   }
-
   @Test
   public void testPeerAuthenticator() throws Exception{
-    int locatorPort = locator.invoke(()->{
-      Properties props = new Properties();
-      props.setProperty(SECURITY_PEER_AUTHENTICATOR, 
DummyAuthenticator.class.getName());
-      props.setProperty(MCAST_PORT, "0");
-      props.put(JMX_MANAGER, "true");
-      props.put(JMX_MANAGER_START, "true");
-      props.put(JMX_MANAGER_PORT, "0");
-      Locator locatorObj = Locator.startLocatorAndDS(0, new 
File("locator.log"), props);
-      return locatorObj.getPort();
-    });
 
-    // set up server with security
-    String locators = "localhost[" + locatorPort + "]";
-    server.invoke(()->{
-      Properties props = new Properties();
-      props.setProperty(MCAST_PORT, "0");
-      props.setProperty(LOCATORS, locators);
-
-      // the following are needed for peer-to-peer authentication
-      props.setProperty("security-username", "user");
-      props.setProperty("security-password", "user");
-      // this should execute without exception
-      InternalDistributedSystem ds = getSystem(props);
-    });
+    int locatorPort = lsRule.getPort(0);
+    Properties server1Props = new Properties();
+    server1Props.setProperty("security-username", "user");
+    server1Props.setProperty("security-password", "user");
+    lsRule.getServerVM(1, server1Props, locatorPort);
 
-    server1.invoke(()->{
-      Properties props = new Properties();
-      props.setProperty(MCAST_PORT, "0");
-      props.setProperty(LOCATORS, locators);
 
-      // the following are needed for peer-to-peer authentication
-      props.setProperty("security-username", "bogus");
-      props.setProperty("security-password", "user");
+    Properties server2Props = new Properties();
+    server2Props.setProperty("security-username", "bogus");
+    server2Props.setProperty("security-password", "user");
+    VM server2 = lsRule.getNodeVM(2);
 
-      
assertThatThrownBy(()->getSystem(props)).isInstanceOf(GemFireSecurityException.class);
+    server2.invoke(()->{
+      ServerStarter serverStarter = new ServerStarter(server2Props);
+      
assertThatThrownBy(()->serverStarter.startServer(locatorPort)).isInstanceOf(GemFireSecurityException.class).hasMessageContaining("Invalid
 user name");
     });
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5abe957c/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
new file mode 100644
index 0000000..a42f6db
--- /dev/null
+++ 
b/geode-core/src/test/java/org/apache/geode/security/PeerSecurityWithEmbeddedLocatorDUnitTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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.security;
+
+import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.util.Properties;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.security.templates.DummyAuthenticator;
+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;
+
+@Category({ DistributedTest.class, SecurityTest.class })
+public class PeerSecurityWithEmbeddedLocatorDUnitTest extends 
JUnit4DistributedTestCase {
+
+  @Rule
+  public LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
+
+
+  @Test
+  public void testPeerSecurityManager() throws Exception{
+    int locatorPort = AvailablePortHelper.getRandomAvailableTCPPort();
+
+    Properties server0Props = new Properties();
+    server0Props.setProperty(SECURITY_MANAGER, 
SimpleSecurityManager.class.getName());
+    server0Props.setProperty("start-locator", "localhost["+locatorPort+"]");
+    lsRule.getServerVM(0, server0Props);
+
+
+    Properties server1Props = new Properties();
+    server1Props.setProperty("security-username", "cluster");
+    server1Props.setProperty("security-password", "cluster");
+    lsRule.getServerVM(1, server1Props, locatorPort);
+
+    Properties server2Props = new Properties();
+    server2Props.setProperty("security-username", "user");
+    server2Props.setProperty("security-password", "wrongPwd");
+
+    VM server2 = lsRule.getNodeVM(2);
+    server2.invoke(()->{
+      ServerStarter serverStarter = new ServerStarter(server2Props);
+      assertThatThrownBy(()->serverStarter.startServer(locatorPort))
+        .isInstanceOf(GemFireSecurityException.class)
+        .hasMessageContaining("Security check failed. Authentication error");
+    });
+  }
+
+  @Test
+  public void testPeerAuthenticator() throws Exception{
+    int locatorPort = AvailablePortHelper.getRandomAvailableTCPPort();
+
+    Properties server0Props = new Properties();
+    server0Props.setProperty(SECURITY_PEER_AUTHENTICATOR, 
DummyAuthenticator.class.getName());
+    server0Props.setProperty("start-locator", "localhost["+locatorPort+"]");
+    lsRule.getServerVM(0, server0Props);
+
+
+    Properties server1Props = new Properties();
+    server1Props.setProperty("security-username", "user");
+    server1Props.setProperty("security-password", "user");
+    lsRule.getServerVM(1, server1Props, locatorPort);
+
+    Properties server2Props = new Properties();
+    server2Props.setProperty("security-username", "bogus");
+    server2Props.setProperty("security-password", "user");
+
+    VM server2 = lsRule.getNodeVM(2);
+    server2.invoke(()->{
+      ServerStarter serverStarter = new ServerStarter(server2Props);
+      assertThatThrownBy(()->serverStarter.startServer(locatorPort))
+        .isInstanceOf(GemFireSecurityException.class)
+        .hasMessageContaining("Invalid user name");
+    });
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5abe957c/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 5364c91..07ac8be 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
@@ -68,7 +68,7 @@ public class SecurityClusterConfigDUnitTest extends 
JUnit4DistributedTestCase {
 
     // initial security properties should only contain initial set of values
     ServerStarter serverStarter = new ServerStarter(props);
-    serverStarter.startServer(lsRule.getLocatorPort(0));
+    serverStarter.startServer(lsRule.getPort(0));
     DistributedSystem ds = serverStarter.cache.getDistributedSystem();
 
     // after cache is created, we got the security props passed in by cluster 
config
@@ -90,7 +90,7 @@ public class SecurityClusterConfigDUnitTest extends 
JUnit4DistributedTestCase {
 
     // initial security properties should only contain initial set of values
     ServerStarter serverStarter = new ServerStarter(props);
-    serverStarter.startServer(lsRule.getLocatorPort(0));
+    serverStarter.startServer(lsRule.getPort(0));
     DistributedSystem ds = serverStarter.cache.getDistributedSystem();
 
     // after cache is created, we got the security props passed in by cluster 
config
@@ -112,7 +112,7 @@ public class SecurityClusterConfigDUnitTest extends 
JUnit4DistributedTestCase {
     // initial security properties should only contain initial set of values
     ServerStarter serverStarter = new ServerStarter(props);
 
-    assertThatThrownBy(() -> 
serverStarter.startServer(lsRule.getLocatorPort(0)))
+    assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
       .isInstanceOf(GemFireConfigException.class)
       .hasMessage(LocalizedStrings.GEMFIRE_CACHE_SECURITY_MISCONFIGURATION
         .toLocalizedString());
@@ -132,7 +132,7 @@ public class SecurityClusterConfigDUnitTest extends 
JUnit4DistributedTestCase {
     // initial security properties should only contain initial set of values
     ServerStarter serverStarter = new ServerStarter(props);
 
-    assertThatThrownBy(() -> 
serverStarter.startServer(lsRule.getLocatorPort(0)))
+    assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
       .isInstanceOf(GemFireConfigException.class)
       .hasMessage(LocalizedStrings.GEMFIRE_CACHE_SECURITY_MISCONFIGURATION
                                                        .toLocalizedString());
@@ -151,7 +151,7 @@ public class SecurityClusterConfigDUnitTest extends 
JUnit4DistributedTestCase {
 
     ServerStarter serverStarter = new ServerStarter(props);
 
-    assertThatThrownBy(() -> 
serverStarter.startServer(lsRule.getLocatorPort(0)))
+    assertThatThrownBy(() -> serverStarter.startServer(lsRule.getPort(0)))
       .isInstanceOf(GemFireConfigException.class)
       .hasMessage(LocalizedStrings.GEMFIRE_CACHE_SECURITY_MISCONFIGURATION_2
                                                        .toLocalizedString());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5abe957c/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 d3ed823..f715cb2 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
@@ -70,7 +70,7 @@ public class SecurityWithoutClusterConfigDUnitTest extends 
JUnit4DistributedTest
 
     // initial security properties should only contain initial set of values
     ServerStarter serverStarter = new ServerStarter(props);
-    serverStarter.startServer(lsRule.getLocatorPort(0));
+    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/5abe957c/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 f6928bf..a001493 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
@@ -58,7 +58,7 @@ public class StartServerAuthorizationTest extends 
JUnit4DistributedTestCase {
     VM server = lsRule.getNodeVM(1);
     server.invoke(()->{
       ServerStarter serverStarter = new ServerStarter(props);
-      
assertThatThrownBy(()->serverStarter.startServer(lsRule.getLocatorPort(0))).isInstanceOf(GemFireSecurityException.class).hasMessageContaining("Security
 check failed. Authentication error. Please check your credentials");
+      
assertThatThrownBy(()->serverStarter.startServer(lsRule.getPort(0))).isInstanceOf(GemFireSecurityException.class).hasMessageContaining("Security
 check failed. Authentication error. Please check your credentials");
     });
   }
 
@@ -73,7 +73,7 @@ public class StartServerAuthorizationTest extends 
JUnit4DistributedTestCase {
     VM server = lsRule.getNodeVM(1);
     server.invoke(()->{
       ServerStarter serverStarter = new ServerStarter(props);
-      
assertThatThrownBy(()->serverStarter.startServer(lsRule.getLocatorPort(0))).isInstanceOf(GemFireSecurityException.class).hasMessageContaining("user
 not authorized for CLUSTER:MANAGE");
+      
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/5abe957c/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 71894c8..41326e0 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
@@ -41,7 +41,7 @@ public class LocatorServerStartupRule extends 
ExternalResource implements Serial
 
   private Host host = getHost(0);
 
-  public int[] locatorPorts = new int[4];
+  public int[] ports = new int[4];
 
 
   // these are only avaialbe in each VM
@@ -75,7 +75,7 @@ public class LocatorServerStartupRule extends 
ExternalResource implements Serial
       locatorStarter.startLocator();
       return locatorStarter.locator.getPort();
     });
-    locatorPorts[index] = locatorPort;
+    ports[index] = locatorPort;
     return locatorVM;
   }
 
@@ -98,10 +98,12 @@ public class LocatorServerStartupRule extends 
ExternalResource implements Serial
   public VM getServerVM(int index, Properties properties, int locatorPort) {
     VM nodeVM = getNodeVM(index);
     properties.setProperty(NAME, "server-"+index);
-    nodeVM.invoke(() -> {
+    int port = nodeVM.invoke(() -> {
       serverStarter = new ServerStarter(properties);
       serverStarter.startServer(locatorPort);
+      return serverStarter.server.getPort();
     });
+    ports[index] = port;
     return nodeVM;
   }
 
@@ -116,8 +118,8 @@ public class LocatorServerStartupRule extends 
ExternalResource implements Serial
     return host.getVM(index);
   }
 
-  public int getLocatorPort(int index){
-    return locatorPorts[index];
+  public int getPort(int index){
+    return ports[index];
   }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5abe957c/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/configuration/LuceneClusterConfigurationDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/configuration/LuceneClusterConfigurationDUnitTest.java
 
b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/configuration/LuceneClusterConfigurationDUnitTest.java
index bcc5ab3..8dc5e0f 100755
--- 
a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/configuration/LuceneClusterConfigurationDUnitTest.java
+++ 
b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/configuration/LuceneClusterConfigurationDUnitTest.java
@@ -241,7 +241,7 @@ public class LuceneClusterConfigurationDUnitTest extends 
CliCommandTestBase {
     if (addGroup) {
       nodeProperties.setProperty(GROUPS, groupName);
     }
-    return ls.getServerVM(vmIndex, nodeProperties, ls.getLocatorPort(0));
+    return ls.getServerVM(vmIndex, nodeProperties, ls.getPort(0));
   }
 
   private VM startLocatorWithClusterConfigurationEnabled() throws Exception {

Reply via email to