You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by an...@apache.org on 2018/11/27 08:55:59 UTC
zookeeper git commit: ZOOKEEPER-3193: Flaky:
org.apache.zookeeper.test.SaslAuthFailNotifyTest
Repository: zookeeper
Updated Branches:
refs/heads/master c3babb942 -> 1c488cec0
ZOOKEEPER-3193: Flaky: org.apache.zookeeper.test.SaslAuthFailNotifyTest
1. Refactor SASL auth tests to use single file,
2. Use CountDownLatch to sync with watcher
More context: https://issues.apache.org/jira/browse/ZOOKEEPER-3193
Author: Andor Molnar <an...@apache.org>
Reviewers: andor@apache.org
Closes #706 from anmolnar/ZOOKEEPER-3193
Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/1c488cec
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/1c488cec
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/1c488cec
Branch: refs/heads/master
Commit: 1c488cec08809a76202f6c66be9e46533e7c409c
Parents: c3babb9
Author: Andor Molnar <an...@apache.org>
Authored: Tue Nov 27 09:55:53 2018 +0100
Committer: Andor Molnar <an...@apache.org>
Committed: Tue Nov 27 09:55:53 2018 +0100
----------------------------------------------------------------------
.../zookeeper/test/SaslAuthFailNotifyTest.java | 98 --------------------
.../apache/zookeeper/test/SaslAuthFailTest.java | 46 ++++++---
2 files changed, 32 insertions(+), 112 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/1c488cec/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java
deleted file mode 100644
index 2b00d86..0000000
--- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java
+++ /dev/null
@@ -1,98 +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.zookeeper.test;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.TestableZooKeeper;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.apache.zookeeper.ZooDefs.Ids;
-import org.junit.Test;
-import org.junit.Assert;
-
-public class SaslAuthFailNotifyTest extends ClientBase {
- static {
- System.setProperty("zookeeper.authProvider.1","org.apache.zookeeper.server.auth.SASLAuthenticationProvider");
- System.setProperty("zookeeper.allowSaslFailedClients","true");
-
- try {
- File tmpDir = createTmpDir();
- File saslConfFile = new File(tmpDir, "jaas.conf");
- FileWriter fwriter = new FileWriter(saslConfFile);
-
- fwriter.write("" +
- "Server {\n" +
- " org.apache.zookeeper.server.auth.DigestLoginModule required\n" +
- " user_super=\"test\";\n" +
- "};\n" +
- "Client {\n" +
- " org.apache.zookeeper.server.auth.DigestLoginModule required\n" +
- " username=\"super\"\n" +
- " password=\"test1\";\n" + // NOTE: wrong password ('test' != 'test1') : this is to test SASL authentication failure.
- "};" + "\n");
- fwriter.close();
- System.setProperty("java.security.auth.login.config",saslConfFile.getAbsolutePath());
- }
- catch (IOException e) {
- // could not create tmp directory to hold JAAS conf file.
- }
- }
-
- private AtomicInteger authFailed = new AtomicInteger(0);
-
- @Override
- protected TestableZooKeeper createClient(String hp)
- throws IOException, InterruptedException
- {
- MyWatcher watcher = new MyWatcher();
- return createClient(watcher, hp);
- }
-
- private class MyWatcher extends CountdownWatcher {
- @Override
- public synchronized void process(WatchedEvent event) {
- if (event.getState() == KeeperState.AuthFailed) {
- synchronized(authFailed) {
- authFailed.incrementAndGet();
- authFailed.notify();
- }
- }
- else {
- super.process(event);
- }
- }
- }
-
- @Test
- public void testBadSaslAuthNotifiesWatch() throws Exception {
- ZooKeeper zk = createClient();
- // wait for authFailed event from client's EventThread.
- synchronized(authFailed) {
- authFailed.wait();
- }
- Assert.assertEquals(authFailed.get(),1);
- zk.close();
- }
-}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/1c488cec/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java
----------------------------------------------------------------------
diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java
index 33a505e..d0847fb 100644
--- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java
+++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/SaslAuthFailTest.java
@@ -18,19 +18,18 @@
package org.apache.zookeeper.test;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
-
import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.TestableZooKeeper;
import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
-import org.junit.Test;
+import org.apache.zookeeper.ZooKeeper;
import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.concurrent.CountDownLatch;
public class SaslAuthFailTest extends ClientBase {
static {
@@ -59,18 +58,37 @@ public class SaslAuthFailTest extends ClientBase {
// could not create tmp directory to hold JAAS conf file.
}
}
+
+ private CountDownLatch authFailed = new CountDownLatch(1);
+
+ private class MyWatcher extends CountdownWatcher {
+ @Override
+ public synchronized void process(WatchedEvent event) {
+ if (event.getState() == KeeperState.AuthFailed) {
+ authFailed.countDown();
+ }
+ else {
+ super.process(event);
+ }
+ }
+ }
@Test
- public void testAuthFail() throws Exception {
- ZooKeeper zk = createClient();
- try {
+ public void testAuthFail() {
+ try (ZooKeeper zk = createClient()) {
zk.create("/path1", null, Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);
Assert.fail("Should have gotten exception.");
- } catch(Exception e ) {
+ } catch (Exception e) {
// ok, exception as expected.
LOG.info("Got exception as expected: " + e);
- } finally {
- zk.close();
+ }
+ }
+
+ @Test
+ public void testBadSaslAuthNotifiesWatch() throws Exception {
+ try (ZooKeeper ignored = createClient(new MyWatcher(), hostPort)) {
+ // wait for authFailed event from client's EventThread.
+ authFailed.await();
}
}
}