You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ma...@apache.org on 2021/10/10 15:10:04 UTC

[zookeeper] branch master updated: ZOOKEEPER-4349: delete the useless oraclePath directory generated by test suit

This is an automated email from the ASF dual-hosted git repository.

maoling pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new cb89916  ZOOKEEPER-4349: delete the useless oraclePath directory generated by test suit
cb89916 is described below

commit cb899167421d7a24f1e6c3f06aa4a621391df15f
Author: maoling <ma...@apache.org>
AuthorDate: Sun Oct 10 23:09:56 2021 +0800

    ZOOKEEPER-4349: delete the useless oraclePath directory generated by test suit
    
    - when running the `QuorumOracleMajTest` and sub tests of `QuorumBase`(e.g: `MultiOpSessionUpgradeTest`), we generate lots of useless files which are not exempt from `Git`. we should delete them after the finish of one UT.
    ```
    ✗ tree zookeeper-server/tmp/
    zookeeper-server/tmp/
    └── oraclePath
        ├── 0
        │   └── mastership
        │       └── value
        └── 1
            └── mastership
                └── value
    ```
    - fix a typo in the `zookeeperOracleQuorums.md `
    
    Author: maoling <ma...@apache.org>
    
    Reviewers: Ching-Chan Lee <le...@gmail.com>
    
    Closes #1742 from maoling/ZOOKEEPER-4349
---
 .../resources/markdown/zookeeperOracleQuorums.md   |  2 +-
 .../java/org/apache/zookeeper/test/QuorumBase.java | 97 ++++++++++++----------
 .../zookeeper/test/QuorumBaseOracle_2Nodes.java    | 32 ++++---
 .../apache/zookeeper/test/QuorumOracleMajTest.java |  1 +
 4 files changed, 77 insertions(+), 55 deletions(-)

diff --git a/zookeeper-docs/src/main/resources/markdown/zookeeperOracleQuorums.md b/zookeeper-docs/src/main/resources/markdown/zookeeperOracleQuorums.md
index adc5477..0f72d6e 100644
--- a/zookeeper-docs/src/main/resources/markdown/zookeeperOracleQuorums.md
+++ b/zookeeper-docs/src/main/resources/markdown/zookeeperOracleQuorums.md
@@ -23,7 +23,7 @@ in a 2-instance configuration when the other instance is identified as faulty by
 Every instance shall access to a file which contains either 0 or 1 to indicate whether this instance is authorized by the Oracle.
 However, this design can be changed since the fail detector algorithms vary from each other. Therefore, ones can override the method of _askOracle()_ in _QuorumOracleMaj_ to adapt the preferred way of deciphering the message from the Oracle.
 
-## The deployment cotexts
+## The deployment contexts
 The Oracle is designed to increase the availability of a cluster of 2 ZooKeeper instances; thus, the size of the voting member is **2**.
 In other words, the Oracle solves the consensus problem of a possibility of faulty instance in a two-instance ensemble.
 
diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBase.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBase.java
index c2396a6..8f5f17d 100644
--- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBase.java
+++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBase.java
@@ -49,11 +49,12 @@ public class QuorumBase extends ClientBase {
 
     private static final String LOCALADDR = "127.0.0.1";
 
-    private static final String oraclePath_0 = "./tmp/oraclePath/0/mastership/";
-    private static final String oraclePath_1 = "./tmp/oraclePath/1/mastership/";
-    private static final String oraclePath_2 = "./tmp/oraclePath/0/mastership/";
-    private static final String oraclePath_3 = "./tmp/oraclePath/1/mastership/";
-    private static final String oraclePath_4 = "./tmp/oraclePath/0/mastership/";
+    private File oracleDir;
+    private static final String oraclePath_0 = "/oraclePath/0/mastership/";
+    private static final String oraclePath_1 = "/oraclePath/1/mastership/";
+    private static final String oraclePath_2 = "/oraclePath/0/mastership/";
+    private static final String oraclePath_3 = "/oraclePath/1/mastership/";
+    private static final String oraclePath_4 = "/oraclePath/0/mastership/";
     private static final String mastership = "value";
 
     File s1dir, s2dir, s3dir, s4dir, s5dir;
@@ -137,42 +138,42 @@ public class QuorumBase extends ClientBase {
             LOG.info("Initial fdcount is: {}", osMbean.getOpenFileDescriptorCount());
         }
 
-        if (withOracle) {
-            File directory = new File(oraclePath_0);
-            directory.mkdirs();
-            FileWriter fw = new FileWriter(oraclePath_0 + mastership);
-            fw.write("1");
-            fw.close();
-
-            directory = new File(oraclePath_1);
-            directory.mkdirs();
-            fw = new FileWriter(oraclePath_1 + mastership);
-            fw.write("0");
-            fw.close();
-
-            directory = new File(oraclePath_2);
-            directory.mkdirs();
-            fw = new FileWriter(oraclePath_2 + mastership);
-            fw.write("0");
-            fw.close();
-
-            directory = new File(oraclePath_3);
-            directory.mkdirs();
-            fw = new FileWriter(oraclePath_3 + mastership);
-            fw.write("1");
-            fw.close();
-
-            directory = new File(oraclePath_4);
-            directory.mkdirs();
-            fw = new FileWriter(oraclePath_4 + mastership);
-            fw.write("0");
-            fw.close();
-        }
-
-
         LOG.info("Setup finished");
     }
 
+    private void createOraclePath() throws IOException {
+        oracleDir = ClientBase.createTmpDir();
+        File directory = new File(oracleDir, oraclePath_0);
+        directory.mkdirs();
+        FileWriter fw = new FileWriter(oracleDir.getAbsolutePath() + oraclePath_0 + mastership);
+        fw.write("1");
+        fw.close();
+
+        directory = new File(oracleDir, oraclePath_1);
+        directory.mkdirs();
+        fw = new FileWriter(oracleDir.getAbsolutePath() + oraclePath_1 + mastership);
+        fw.write("0");
+        fw.close();
+
+        directory = new File(oracleDir, oraclePath_2);
+        directory.mkdirs();
+        fw = new FileWriter(oracleDir.getAbsolutePath() + oraclePath_2 + mastership);
+        fw.write("0");
+        fw.close();
+
+        directory = new File(oracleDir, oraclePath_3);
+        directory.mkdirs();
+        fw = new FileWriter(oracleDir.getAbsolutePath() + oraclePath_3 + mastership);
+        fw.write("1");
+        fw.close();
+
+        directory = new File(oracleDir, oraclePath_4);
+        directory.mkdirs();
+        fw = new FileWriter(oracleDir.getAbsolutePath()  + oraclePath_4 + mastership);
+        fw.write("0");
+        fw.close();
+    }
+
     void startServers() throws Exception {
         startServers(false, true);
     }
@@ -211,20 +212,27 @@ public class QuorumBase extends ClientBase {
             s5 = new QuorumPeer(peers, s5dir, s5dir, portClient5, 3, 5, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit);
             assertEquals(portClient5, s5.getClientPort());
         } else {
+            createOraclePath();
+
             LOG.info("creating QuorumPeer 1 port {}", portClient1);
-            s1 = new QuorumPeer(peers, s1dir, s1dir, portClient1, 3, 1, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_0 + mastership);
+            s1 = new QuorumPeer(peers, s1dir, s1dir, portClient1, 3, 1, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                    .getAbsolutePath()  + oraclePath_0 + mastership);
             assertEquals(portClient1, s1.getClientPort());
             LOG.info("creating QuorumPeer 2 port {}", portClient2);
-            s2 = new QuorumPeer(peers, s2dir, s2dir, portClient2, 3, 2, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_1 + mastership);
+            s2 = new QuorumPeer(peers, s2dir, s2dir, portClient2, 3, 2, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                    .getAbsolutePath()  + oraclePath_1 + mastership);
             assertEquals(portClient2, s2.getClientPort());
             LOG.info("creating QuorumPeer 3 port {}", portClient3);
-            s3 = new QuorumPeer(peers, s3dir, s3dir, portClient3, 3, 3, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_2 + mastership);
+            s3 = new QuorumPeer(peers, s3dir, s3dir, portClient3, 3, 3, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                    .getAbsolutePath()  + oraclePath_2 + mastership);
             assertEquals(portClient3, s3.getClientPort());
             LOG.info("creating QuorumPeer 4 port {}", portClient4);
-            s4 = new QuorumPeer(peers, s4dir, s4dir, portClient4, 3, 4, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_3 + mastership);
+            s4 = new QuorumPeer(peers, s4dir, s4dir, portClient4, 3, 4, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                    .getAbsolutePath()  + oraclePath_3 + mastership);
             assertEquals(portClient4, s4.getClientPort());
             LOG.info("creating QuorumPeer 5 port {}", portClient5);
-            s5 = new QuorumPeer(peers, s5dir, s5dir, portClient5, 3, 5, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_4 + mastership);
+            s5 = new QuorumPeer(peers, s5dir, s5dir, portClient5, 3, 5, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                    .getAbsolutePath()  + oraclePath_4 + mastership);
             assertEquals(portClient5, s5.getClientPort());
         }
 
@@ -451,6 +459,9 @@ public class QuorumBase extends ClientBase {
     @Override
     public void tearDown() throws Exception {
         LOG.info("TearDown started");
+        if (oracleDir != null) {
+            ClientBase.recursiveDelete(oracleDir);
+        }
 
         OSMXBean osMbean = new OSMXBean();
         if (osMbean.getUnix()) {
diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBaseOracle_2Nodes.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBaseOracle_2Nodes.java
index 482027d..d32af99 100644
--- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBaseOracle_2Nodes.java
+++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumBaseOracle_2Nodes.java
@@ -47,8 +47,9 @@ public class QuorumBaseOracle_2Nodes extends ClientBase{
 
     private static final String LOCALADDR = "127.0.0.1";
 
-    private static final String oraclePath_0 = "./tmp/oraclePath/0/mastership/";
-    private static final String oraclePath_1 = "./tmp/oraclePath/1/mastership/";
+    private File oracleDir;
+    private static String oraclePath_0 = "/oraclePath/0/mastership/";
+    private static String oraclePath_1 = "/oraclePath/1/mastership/";
 
     private static final String mastership = "value";
 
@@ -96,6 +97,8 @@ public class QuorumBaseOracle_2Nodes extends ClientBase{
         s1dir = ClientBase.createTmpDir();
         s2dir = ClientBase.createTmpDir();
 
+        createOraclePath();
+
         startServers();
 
         OSMXBean osMbean = new OSMXBean();
@@ -103,20 +106,22 @@ public class QuorumBaseOracle_2Nodes extends ClientBase{
             LOG.info("Initial fdcount is: {}", osMbean.getOpenFileDescriptorCount());
         }
 
-        File directory = new File(oraclePath_0);
+        LOG.info("Setup finished");
+    }
+
+    private void createOraclePath() throws IOException {
+        oracleDir = ClientBase.createTmpDir();
+        File directory = new File(oracleDir, oraclePath_0);
         directory.mkdirs();
-        FileWriter fw = new FileWriter(oraclePath_0 + mastership);
+        FileWriter fw = new FileWriter(oracleDir.getAbsolutePath() + oraclePath_0 + mastership);
         fw.write("0");
         fw.close();
 
-        directory = new File(oraclePath_1);
+        directory = new File(oracleDir, oraclePath_1);
         directory.mkdirs();
-        fw = new FileWriter(oraclePath_1 + mastership);
+        fw = new FileWriter(oracleDir.getAbsolutePath() + oraclePath_1 + mastership);
         fw.write("1");
         fw.close();
-
-
-        LOG.info("Setup finished");
     }
 
     void startServers() throws Exception {
@@ -129,10 +134,12 @@ public class QuorumBaseOracle_2Nodes extends ClientBase{
         peers.put(Long.valueOf(2), new QuorumPeer.QuorumServer(2, new InetSocketAddress(LOCALADDR, port2), new InetSocketAddress(LOCALADDR, portLE2), new InetSocketAddress(LOCALADDR, portClient2), QuorumPeer.LearnerType.PARTICIPANT));
 
         LOG.info("creating QuorumPeer 1 port {}", portClient1);
-        s1 = new QuorumPeer(peers, s1dir, s1dir, portClient1, 3, 1, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_0 + mastership);
+        s1 = new QuorumPeer(peers, s1dir, s1dir, portClient1, 3, 1, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                .getAbsolutePath() + oraclePath_0 + mastership);
         assertEquals(portClient1, s1.getClientPort());
         LOG.info("creating QuorumPeer 2 port {}", portClient2);
-        s2 = new QuorumPeer(peers, s2dir, s2dir, portClient2, 3, 2, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oraclePath_1 + mastership);
+        s2 = new QuorumPeer(peers, s2dir, s2dir, portClient2, 3, 2, tickTime, initLimit, syncLimit, connectToLearnerMasterLimit, oracleDir
+                .getAbsolutePath() + oraclePath_1 + mastership);
         assertEquals(portClient2, s2.getClientPort());
 
 
@@ -286,6 +293,9 @@ public class QuorumBaseOracle_2Nodes extends ClientBase{
     @Override
     public void tearDown() throws Exception {
         LOG.info("TearDown started");
+        if (oracleDir != null) {
+            ClientBase.recursiveDelete(oracleDir);
+        }
 
         OSMXBean osMbean = new OSMXBean();
         if (osMbean.getUnix()) {
diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumOracleMajTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumOracleMajTest.java
index 1b1fb31..2a079e2 100644
--- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumOracleMajTest.java
+++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/QuorumOracleMajTest.java
@@ -56,6 +56,7 @@ public class QuorumOracleMajTest extends QuorumBaseOracle_2Nodes {
             assertTrue(electionTimeTaken >= 0, "Wrong electionTimeTaken value!");
         }
 
+        tearDown();
         //setup servers 1-2 to be followers
         // id=1, oracle is false; id=2, oracle is true
         setUp();