Repository: kudu
Updated Branches:
  refs/heads/master 7e54a17ec -> 9bc0d9e3f


[java] fix the regression test for KUDU-2267/KUDU-2319

In the previous commit 0f0e42144, a regression test was added to ensure
a client with valid authn token but without valid Kerberos credentials
should be able to connect to all the masters. However, the test was not
correct. This patch fixes that.

Change-Id: I5e827586fe549f6a0c927ce8a4f8eca954bfe690
Reviewed-on: http://gerrit.cloudera.org:8080/9388
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <aser...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/9bc0d9e3
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/9bc0d9e3
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/9bc0d9e3

Branch: refs/heads/master
Commit: 9bc0d9e3f2d1483f7f51399500f8121fd39d12e1
Parents: 7e54a17
Author: hahao <hao....@cloudera.com>
Authored: Wed Feb 21 16:47:53 2018 -0800
Committer: Hao Hao <hao....@cloudera.com>
Committed: Fri Mar 2 23:18:59 2018 +0000

----------------------------------------------------------------------
 .../org/apache/kudu/client/ConnectToCluster.java  | 12 ++++++++----
 .../java/org/apache/kudu/client/TestSecurity.java | 18 ++++++++++++++----
 2 files changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/9bc0d9e3/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
----------------------------------------------------------------------
diff --git 
a/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java 
b/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
index f3341a7..3e925c5 100644
--- 
a/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
+++ 
b/java/kudu-client/src/main/java/org/apache/kudu/client/ConnectToCluster.java
@@ -159,13 +159,15 @@ final class ConnectToCluster {
   }
 
   @VisibleForTesting
-  void connectToMasters(KuduTable masterTable,
-                        KuduRpc<?> parentRpc,
-                        long defaultTimeoutMs,
-                        Connection.CredentialsPolicy credentialsPolicy) {
+  List<Deferred<ConnectToMasterResponsePB>> connectToMasters(
+      KuduTable masterTable,
+      KuduRpc<?> parentRpc,
+      long defaultTimeoutMs,
+      Connection.CredentialsPolicy credentialsPolicy) {
     // Try to connect to each master. The ConnectToCluster instance
     // waits until it gets a good response before firing the returned
     // deferred.
+    List<Deferred<ConnectToMasterResponsePB>> deferreds = new ArrayList<>();
     for (HostAndPort hostAndPort : masterAddrs) {
       Deferred<ConnectToMasterResponsePB> d;
       RpcProxy proxy = masterTable.getAsyncClient().newMasterRpcProxy(
@@ -179,7 +181,9 @@ final class ConnectToCluster {
         d = Deferred.fromError(new NonRecoverableException(statusIOE));
       }
       d.addCallbacks(callbackForNode(hostAndPort), 
errbackForNode(hostAndPort));
+      deferreds.add(d);
     }
+    return deferreds;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/kudu/blob/9bc0d9e3/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java
----------------------------------------------------------------------
diff --git 
a/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java 
b/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java
index 863ed03..290526b 100644
--- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java
+++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java
@@ -18,10 +18,14 @@ import static org.junit.Assert.assertNotNull;
 
 import java.util.List;
 
+import com.stumbleupon.async.Deferred;
+
+import org.apache.kudu.master.Master.ConnectToMasterResponsePB;
 import org.apache.kudu.util.AssertHelpers.BooleanExpression;
 import org.apache.kudu.util.SecurityUtil;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class TestSecurity extends BaseKuduTest {
@@ -76,8 +80,10 @@ public class TestSecurity extends BaseKuduTest {
   }
 
   /**
-   * Regression test for KUDU-2267, client with valid token but without valid
-   * Kerberos credentials should be able to connect to all the masters.
+   * Regression test for KUDU-2267 and KUDU-2319.
+   *
+   * A client with valid token but without valid Kerberos credentials
+   * should be able to connect to all the masters.
    */
   @Test
   public void testKudu2267() throws Exception {
@@ -96,9 +102,13 @@ public class TestSecurity extends BaseKuduTest {
             @Override
             public boolean get() throws Exception {
               ConnectToCluster connector = new 
ConnectToCluster(masterHostPorts);
-              
connector.connectToMasters(newClient.asyncClient.getMasterTable(), null,
+              List<Deferred<ConnectToMasterResponsePB>> deferreds =
+                      
connector.connectToMasters(newClient.asyncClient.getMasterTable(), null,
                       DEFAULT_SLEEP, 
Connection.CredentialsPolicy.ANY_CREDENTIALS);
-              connector.getDeferred().join();
+              // Wait for all Deferreds are called back.
+              for (Deferred<ConnectToMasterResponsePB> deferred : deferreds) {
+                deferred.join();
+              }
               List<Exception> s = connector.getExceptionsReceived();
               return s.size() == 0;
             }

Reply via email to