You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2016/02/22 22:43:41 UTC

[053/100] [abbrv] incubator-geode git commit: GEODE-929: Do not use AvailablePort.getRandomAvailablePort in this test to avoid intermittent PortNotAvailable error.

GEODE-929: Do not use AvailablePort.getRandomAvailablePort in this test to avoid intermittent PortNotAvailable error.


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

Branch: refs/heads/feature/GEODE-870
Commit: 53b6319e4b2c0c08d7c592b797f728f2a3ba0f50
Parents: 53510e5
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Fri Feb 19 08:48:42 2016 -0800
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Fri Feb 19 13:13:52 2016 -0800

----------------------------------------------------------------------
 .../security/ClientMultiUserAuthzDUnitTest.java | 288 +++++++++----------
 .../gemfire/security/SecurityTestUtil.java      |   2 +-
 2 files changed, 144 insertions(+), 146 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/53b6319e/gemfire-core/src/test/java/com/gemstone/gemfire/security/ClientMultiUserAuthzDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/security/ClientMultiUserAuthzDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/security/ClientMultiUserAuthzDUnitTest.java
index 74260ed..dc03990 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/security/ClientMultiUserAuthzDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/security/ClientMultiUserAuthzDUnitTest.java
@@ -24,6 +24,7 @@ package com.gemstone.gemfire.security;
 import java.util.Iterator;
 import java.util.Properties;
 
+import com.gemstone.gemfire.test.dunit.VM;
 import security.AuthzCredentialGenerator;
 import security.CredentialGenerator;
 
@@ -81,37 +82,37 @@ public class ClientMultiUserAuthzDUnitTest extends ClientAuthorizationTestBase {
       // Start servers with all required properties
       Properties serverProps = buildProperties(authenticator, accessor, false,
           extraAuthProps, extraAuthzProps);
-      Integer port1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-      Integer port2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-      createCacheServers(javaProps, serverProps, port1, port2);
+
+      Integer port1 = createCacheServerOnVM(server1, javaProps, serverProps);
+      Integer port2 = createCacheServerOnVM(server2, javaProps, serverProps);
 
       if (!prepareClientsForOps(gen, cGen, new OperationCode[] {
-          OperationCode.PUT, OperationCode.PUT}, new OperationCode[] {
-          OperationCode.GET, OperationCode.GET}, javaProps, authInit, port1,
+              OperationCode.PUT, OperationCode.PUT}, new OperationCode[] {
+              OperationCode.GET, OperationCode.GET}, javaProps, authInit, port1,
           port2)) {
         continue;
       }
       verifyPutsGets();
 
       if (!prepareClientsForOps(gen, cGen, new OperationCode[] {
-          OperationCode.PUT, OperationCode.CONTAINS_KEY}, new OperationCode[] {
-          OperationCode.DESTROY, OperationCode.DESTROY},
+              OperationCode.PUT, OperationCode.CONTAINS_KEY}, new OperationCode[] {
+              OperationCode.DESTROY, OperationCode.DESTROY},
           javaProps, authInit, port1, port2)) {
         continue;
       }
       verifyContainsKeyDestroys();
 
       if (!prepareClientsForOps(gen, cGen, new OperationCode[] {
-          OperationCode.PUT, OperationCode.CONTAINS_KEY}, new OperationCode[] {
-          OperationCode.INVALIDATE, OperationCode.INVALIDATE},
+              OperationCode.PUT, OperationCode.CONTAINS_KEY}, new OperationCode[] {
+              OperationCode.INVALIDATE, OperationCode.INVALIDATE},
           javaProps, authInit, port1, port2)) {
         continue;
       }
       verifyContainsKeyInvalidates();
 
       if (!prepareClientsForOps(gen, cGen, new OperationCode[] {
-          OperationCode.GET, OperationCode.GET}, new OperationCode[] {
-          OperationCode.REGION_DESTROY, OperationCode.REGION_DESTROY},
+              OperationCode.GET, OperationCode.GET}, new OperationCode[] {
+              OperationCode.REGION_DESTROY, OperationCode.REGION_DESTROY},
           javaProps, authInit, port1, port2)) {
         continue;
       }
@@ -219,11 +220,11 @@ public class ClientMultiUserAuthzDUnitTest extends ClientAuthorizationTestBase {
 
     // Verify that the gets succeed/fail
     if (isMultiuser) {
-    client2.invoke(SecurityTestUtil.class, "doMultiUserGets", new Object[] {
-        Integer.valueOf(2),
-        Integer.valueOf(2),
-        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-            SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
+      client2.invoke(SecurityTestUtil.class, "doMultiUserGets", new Object[] {
+          Integer.valueOf(2),
+          Integer.valueOf(2),
+          new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+              SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
     } else {
       int expectedResult = (opAllowed) ? SecurityTestUtil.NO_EXCEPTION
           : SecurityTestUtil.NOTAUTHZ_EXCEPTION;
@@ -310,17 +311,17 @@ public class ClientMultiUserAuthzDUnitTest extends ClientAuthorizationTestBase {
   private void verifyGetAllInTX() {
     server1.invoke(() -> ClientMultiUserAuthzDUnitTest.doPuts());
     client1.invoke(SecurityTestUtil.class, "doMultiUserGetAll", new Object[] {
-      Integer.valueOf(2),
-      new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-          SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Boolean.TRUE/*use TX*/});
+        Integer.valueOf(2),
+        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+            SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Boolean.TRUE/*use TX*/});
   }
 
   private void verifyGetAllRegionDestroys() {
     server1.invoke(() -> ClientMultiUserAuthzDUnitTest.doPuts());
     client1.invoke(SecurityTestUtil.class, "doMultiUserGetAll", new Object[] {
-      Integer.valueOf(2),
-      new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-          SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
+        Integer.valueOf(2),
+        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+            SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
 
     // Verify that the region destroys succeed/fail
     client2.invoke(SecurityTestUtil.class, "doMultiUserRegionDestroys",
@@ -329,7 +330,7 @@ public class ClientMultiUserAuthzDUnitTest extends ClientAuthorizationTestBase {
             new Integer[] {SecurityTestUtil.NO_EXCEPTION,
                 SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
   }
-  
+
   public static void doPuts() {
     Region region = GemFireCacheImpl.getInstance().getRegion(SecurityTestUtil.regionName);
     region.put("key1", "value1");
@@ -338,134 +339,132 @@ public class ClientMultiUserAuthzDUnitTest extends ClientAuthorizationTestBase {
 
   // Test query/function execute
   public void testOps2() throws Exception {
-      AuthzCredentialGenerator gen = getXmlAuthzGenerator();
-      CredentialGenerator cGen = gen.getCredentialGenerator();
-      Properties extraAuthProps = cGen.getSystemProperties();
-      Properties javaProps = cGen.getJavaProperties();
-      Properties extraAuthzProps = gen.getSystemProperties();
-      String authenticator = cGen.getAuthenticator();
-      String authInit = cGen.getAuthInit();
-      String accessor = gen.getAuthorizationCallback();
+    AuthzCredentialGenerator gen = getXmlAuthzGenerator();
+    CredentialGenerator cGen = gen.getCredentialGenerator();
+    Properties extraAuthProps = cGen.getSystemProperties();
+    Properties javaProps = cGen.getJavaProperties();
+    Properties extraAuthzProps = gen.getSystemProperties();
+    String authenticator = cGen.getAuthenticator();
+    String authInit = cGen.getAuthInit();
+    String accessor = gen.getAuthorizationCallback();
+
+    LogWriterUtils.getLogWriter().info("testOps2: Using authinit: " + authInit);
+    LogWriterUtils.getLogWriter().info("testOps2: Using authenticator: " + authenticator);
+    LogWriterUtils.getLogWriter().info("testOps2: Using accessor: " + accessor);
+
+    // Start servers with all required properties
+    Properties serverProps = buildProperties(authenticator, accessor, false,
+        extraAuthProps, extraAuthzProps);
+    Integer port1 = createCacheServerOnVM(server1, javaProps, serverProps);
+    Integer port2 = createCacheServerOnVM(server2, javaProps, serverProps);
+
+    // Start client1 with valid/invalid QUERY credentials
+    Properties[] client1Credentials = new Properties[] {
+        gen.getAllowedCredentials(
+            new OperationCode[] {OperationCode.PUT, OperationCode.QUERY},
+            new String[] {regionName},
+            1),
+        gen.getDisallowedCredentials(
+            new OperationCode[] {OperationCode.PUT, OperationCode.QUERY},
+            new String[] {regionName},
+            1)
+    };
 
-      LogWriterUtils.getLogWriter().info("testOps2: Using authinit: " + authInit);
-      LogWriterUtils.getLogWriter().info("testOps2: Using authenticator: " + authenticator);
-      LogWriterUtils.getLogWriter().info("testOps2: Using accessor: " + accessor);
+    javaProps = cGen.getJavaProperties();
+    LogWriterUtils.getLogWriter().info(
+        "testOps2: For first client credentials: " + client1Credentials[0]
+            + "\n" + client1Credentials[1]);
+    client1.invoke(SecurityTestUtil.class,
+        "createCacheClientForMultiUserMode", new Object[] {
+            Integer.valueOf(2), authInit, client1Credentials, javaProps,
+            new Integer[] {port1, port2}, null, Boolean.FALSE,
+            SecurityTestUtil.NO_EXCEPTION});
 
-      // Start servers with all required properties
-      Properties serverProps = buildProperties(authenticator, accessor, false,
-          extraAuthProps, extraAuthzProps);
-      Integer port1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-      Integer port2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-      createCacheServers(javaProps, serverProps, port1, port2);
-
-      // Start client1 with valid/invalid QUERY credentials
-      Properties[] client1Credentials = new Properties[] {
-          gen.getAllowedCredentials(
-                  new OperationCode[] {OperationCode.PUT, OperationCode.QUERY},
-                  new String[] {regionName},
-                  1),
-          gen.getDisallowedCredentials(
-                  new OperationCode[] {OperationCode.PUT, OperationCode.QUERY},
-                  new String[] {regionName},
-                  1)
-      };
-
-      javaProps = cGen.getJavaProperties();
-      LogWriterUtils.getLogWriter().info(
-          "testOps2: For first client credentials: " + client1Credentials[0]
-              + "\n" + client1Credentials[1]);
-      client1.invoke(SecurityTestUtil.class,
-          "createCacheClientForMultiUserMode", new Object[] {
-              Integer.valueOf(2), authInit, client1Credentials, javaProps,
-              new Integer[] {port1, port2}, null, Boolean.FALSE,
-              SecurityTestUtil.NO_EXCEPTION});
+    // Start client2 with valid/invalid EXECUTE_FUNCTION credentials
+    Properties[] client2Credentials = new Properties[] {
+        gen.getAllowedCredentials(new OperationCode[] {OperationCode.EXECUTE_FUNCTION},
+            new String[] {regionName}, 2),
+        gen.getDisallowedCredentials(new OperationCode[] {OperationCode.EXECUTE_FUNCTION},
+            new String[] {regionName}, 9)};
 
-      // Start client2 with valid/invalid EXECUTE_FUNCTION credentials
-      Properties[] client2Credentials = new Properties[] {
-          gen.getAllowedCredentials(new OperationCode[] {OperationCode.EXECUTE_FUNCTION},
-              new String[] {regionName}, 2),
-          gen.getDisallowedCredentials(new OperationCode[] {OperationCode.EXECUTE_FUNCTION},
-              new String[] {regionName}, 9)};
+    javaProps = cGen.getJavaProperties();
+    LogWriterUtils.getLogWriter().info(
+        "testOps2: For second client credentials: " + client2Credentials[0]
+            + "\n" + client2Credentials[1]);
+    client2.invoke(SecurityTestUtil.class,
+        "createCacheClientForMultiUserMode", new Object[] {
+            Integer.valueOf(2), authInit, client2Credentials, javaProps,
+            new Integer[] {port1, port2}, null, Boolean.FALSE,
+            SecurityTestUtil.NO_EXCEPTION});
+    Function function = new TestFunction(true,TestFunction.TEST_FUNCTION1);
+    server1.invoke(PRClientServerTestBase.class,
+        "registerFunction", new Object []{function});
 
-      javaProps = cGen.getJavaProperties();
-      LogWriterUtils.getLogWriter().info(
-          "testOps2: For second client credentials: " + client2Credentials[0]
-              + "\n" + client2Credentials[1]);
-      client2.invoke(SecurityTestUtil.class,
-          "createCacheClientForMultiUserMode", new Object[] {
-              Integer.valueOf(2), authInit, client2Credentials, javaProps,
-              new Integer[] {port1, port2}, null, Boolean.FALSE,
-              SecurityTestUtil.NO_EXCEPTION});
-      Function function = new TestFunction(true,TestFunction.TEST_FUNCTION1);
-      server1.invoke(PRClientServerTestBase.class,
-          "registerFunction", new Object []{function});
-      
-      server2.invoke(PRClientServerTestBase.class,
-          "registerFunction", new Object []{function});
-      
-      // Perform some put operations before verifying queries
-      client1.invoke(SecurityTestUtil.class, "doMultiUserPuts", new Object[] {
-          Integer.valueOf(4),
-          Integer.valueOf(2),
-          new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-              SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
-      client1.invoke(SecurityTestUtil.class, "doMultiUserQueries",
-          new Object[] {
-              Integer.valueOf(2),
-              new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-                  SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
-      client1.invoke(SecurityTestUtil.class, "doMultiUserQueryExecute",
-          new Object[] {
-              Integer.valueOf(2),
-              new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-                  SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
+    server2.invoke(PRClientServerTestBase.class,
+        "registerFunction", new Object []{function});
 
-      // Verify that the FE succeeds/fails
-      client2.invoke(SecurityTestUtil.class, "doMultiUserFE", new Object[] {
-          Integer.valueOf(2),
-          function,
-          new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-              SecurityTestUtil.NOTAUTHZ_EXCEPTION}, new Object[] {null, null},
-          Boolean.FALSE});
+    // Perform some put operations before verifying queries
+    client1.invoke(SecurityTestUtil.class, "doMultiUserPuts", new Object[] {
+        Integer.valueOf(4),
+        Integer.valueOf(2),
+        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+            SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
+    client1.invoke(SecurityTestUtil.class, "doMultiUserQueries",
+        new Object[] {
+            Integer.valueOf(2),
+            new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+                SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
+    client1.invoke(SecurityTestUtil.class, "doMultiUserQueryExecute",
+        new Object[] {
+            Integer.valueOf(2),
+            new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+                SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
 
-      // Failover
-      server1.invoke(() -> SecurityTestUtil.closeCache());
-      Thread.sleep(2000);
+    // Verify that the FE succeeds/fails
+    client2.invoke(SecurityTestUtil.class, "doMultiUserFE", new Object[] {
+        Integer.valueOf(2),
+        function,
+        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+            SecurityTestUtil.NOTAUTHZ_EXCEPTION}, new Object[] {null, null},
+        Boolean.FALSE});
 
-      client1.invoke(SecurityTestUtil.class, "doMultiUserPuts", new Object[] {
-          Integer.valueOf(4),
-          Integer.valueOf(2),
-          new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-              SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
+    // Failover
+    server1.invoke(() -> SecurityTestUtil.closeCache());
+    Thread.sleep(2000);
 
-      client1.invoke(SecurityTestUtil.class, "doMultiUserQueries",
-          new Object[] {
-              Integer.valueOf(2),
-              new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-                  SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
-      client1.invoke(SecurityTestUtil.class, "doMultiUserQueryExecute",
-          new Object[] {
-              Integer.valueOf(2),
-              new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-                  SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
+    client1.invoke(SecurityTestUtil.class, "doMultiUserPuts", new Object[] {
+        Integer.valueOf(4),
+        Integer.valueOf(2),
+        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+            SecurityTestUtil.NOTAUTHZ_EXCEPTION}});
 
-      // Verify that the FE succeeds/fails
-      client2.invoke(SecurityTestUtil.class, "doMultiUserFE", new Object[] {
-          Integer.valueOf(2),
-          function,
-          new Integer[] {SecurityTestUtil.NO_EXCEPTION,
-              SecurityTestUtil.NOTAUTHZ_EXCEPTION}, new Object[] {null, null},
-          Boolean.TRUE});
+    client1.invoke(SecurityTestUtil.class, "doMultiUserQueries",
+        new Object[] {
+            Integer.valueOf(2),
+            new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+                SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
+    client1.invoke(SecurityTestUtil.class, "doMultiUserQueryExecute",
+        new Object[] {
+            Integer.valueOf(2),
+            new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+                SecurityTestUtil.NOTAUTHZ_EXCEPTION}, Integer.valueOf(4)});
+
+    // Verify that the FE succeeds/fails
+    client2.invoke(SecurityTestUtil.class, "doMultiUserFE", new Object[] {
+        Integer.valueOf(2),
+        function,
+        new Integer[] {SecurityTestUtil.NO_EXCEPTION,
+            SecurityTestUtil.NOTAUTHZ_EXCEPTION}, new Object[] {null, null},
+        Boolean.TRUE});
 
 
   }
 
-  protected void createCacheServers(Properties javaProps,
-      Properties serverProps, Integer port1, Integer port2) {
-    server1.invoke(() -> ClientAuthorizationTestBase.createCacheServer(SecurityTestUtil.getLocatorPort(), port1, serverProps,
-            javaProps));
-    server2.invoke(() -> ClientAuthorizationTestBase.createCacheServer(SecurityTestUtil.getLocatorPort(), port2, serverProps,
-            javaProps));
+
+  protected Integer createCacheServerOnVM(VM server, Properties javaProps, Properties serverProps) {
+    return (Integer)server.invoke(() -> ClientAuthorizationTestBase.createCacheServer(SecurityTestUtil.getLocatorPort(), serverProps,
+        javaProps));
+
   }
 
   public void testOpsWithClientsInDifferentModes() throws Exception {
@@ -488,21 +487,20 @@ public class ClientMultiUserAuthzDUnitTest extends ClientAuthorizationTestBase {
       // Start servers with all required properties
       Properties serverProps = buildProperties(authenticator, accessor, false,
           extraAuthProps, extraAuthzProps);
-      Integer port1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-      Integer port2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-      createCacheServers(javaProps, serverProps, port1, port2);
+      Integer port1 = createCacheServerOnVM(server1, javaProps, serverProps);
+      Integer port2 = createCacheServerOnVM(server2, javaProps, serverProps);
 
       if (!prepareClientsForOps(gen, cGen, new OperationCode[] {
-          OperationCode.PUT, OperationCode.PUT}, new OperationCode[] {
-          OperationCode.GET, OperationCode.GET}, javaProps, authInit, port1,
+              OperationCode.PUT, OperationCode.PUT}, new OperationCode[] {
+              OperationCode.GET, OperationCode.GET}, javaProps, authInit, port1,
           port2, Boolean.FALSE, Boolean.TRUE)) {
         continue;
       }
       verifyPutsGets(false, true);
 
       if (!prepareClientsForOps(gen, cGen, new OperationCode[] {
-          OperationCode.PUT, OperationCode.CONTAINS_KEY}, new OperationCode[] {
-          OperationCode.DESTROY, OperationCode.DESTROY},
+              OperationCode.PUT, OperationCode.CONTAINS_KEY}, new OperationCode[] {
+              OperationCode.DESTROY, OperationCode.DESTROY},
           javaProps, authInit, port1, port2, Boolean.FALSE, Boolean.FALSE)) {
         continue;
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/53b6319e/gemfire-core/src/test/java/com/gemstone/gemfire/security/SecurityTestUtil.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/security/SecurityTestUtil.java b/gemfire-core/src/test/java/com/gemstone/gemfire/security/SecurityTestUtil.java
index 6e24398..ad9b3e1 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/security/SecurityTestUtil.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/security/SecurityTestUtil.java
@@ -341,7 +341,7 @@ public class SecurityTestUtil extends DistributedTestCase {
     cache.createRegion(regionName, attrs);
     int port;
     if (serverPort == null || serverPort.intValue() <= 0) {
-      port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+      port = 0;
     }
     else {
       port = serverPort.intValue();