Repository: incubator-ratis
Updated Branches:
  refs/heads/master c59425465 -> e308cf599


RATIS-374 MetaServer UT fails.

Signed-off-by: Josh Elser <[email protected]>


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

Branch: refs/heads/master
Commit: e308cf599c3f08e12b4781288e9dc0b4eadb777d
Parents: c594254
Author: Sergey Soldatov <[email protected]>
Authored: Thu Oct 25 23:25:52 2018 -0700
Committer: Josh Elser <[email protected]>
Committed: Fri Oct 26 11:17:40 2018 -0400

----------------------------------------------------------------------
 .../ratis/logservice/server/MasterServer.java   |  1 +
 .../logservice/worker/LogServiceWorker.java     | 45 +++++++++++++++++---
 .../ratis/logservice/server/TestMetaServer.java |  5 ++-
 .../logservice/util/LogServiceCluster.java      | 12 ++++--
 4 files changed, 51 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/e308cf59/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/MasterServer.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/MasterServer.java
 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/MasterServer.java
index a0157c3..8e9f7d3 100644
--- 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/MasterServer.java
+++ 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/server/MasterServer.java
@@ -59,6 +59,7 @@ public class MasterServer implements Closeable {
     @Parameter(names = "-port", description = "Port number")
     private int port = 9999;
 
+    @Parameter(names = "-dir", description = "Working directory")
     private String workingDir = null;
 
     private StateMachine metaStateMachine;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/e308cf59/ratis-logservice/src/main/java/org/apache/ratis/logservice/worker/LogServiceWorker.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/worker/LogServiceWorker.java
 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/worker/LogServiceWorker.java
index ac2763e..a805448 100644
--- 
a/ratis-logservice/src/main/java/org/apache/ratis/logservice/worker/LogServiceWorker.java
+++ 
b/ratis-logservice/src/main/java/org/apache/ratis/logservice/worker/LogServiceWorker.java
@@ -18,6 +18,8 @@
 
 package org.apache.ratis.logservice.worker;
 
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.Parameter;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.grpc.GrpcConfigKeys;
@@ -37,20 +39,30 @@ import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.util.Collections;
 import java.util.Set;
-import java.util.UUID;
 
 import static org.apache.ratis.logservice.common.Constants.metaGroupID;
 import static org.apache.ratis.logservice.common.Constants.serversGroupID;
 
 public class LogServiceWorker implements Cloneable{
-    private final int port;
-    String metaIdentity;
+
+    @Parameter(names = "-port", description = "Port number")
+    private int port;
+
+    @Parameter(names = "-dir", description = "Working directory")
+    private  String workingDir;
+
+    @Parameter(names = "-meta", description = "Meta Quorum ID")
+    private  String metaIdentity;
     RaftServer raftServer = null;
     RaftClient metaClient = null;
 
-    public LogServiceWorker(String meta, int port) {
+    public LogServiceWorker() {
+
+    }
+    public LogServiceWorker(String meta, int port, String workingDir) {
         this.metaIdentity = meta;
         this.port = port;
+        this.workingDir = workingDir;
     }
 
     public RaftServer getServer() {
@@ -65,11 +77,13 @@ public class LogServiceWorker implements Cloneable{
         Set<RaftPeer> peers = LogServiceUtils.getPeersFromQuorum(metaIdentity);
         String host = LogServiceUtils.getHostName();
         RaftProperties properties = new RaftProperties();
+        properties.set("raft.client.rpc.request.timeout", "100000");
         GrpcConfigKeys.Server.setPort(properties, port);
         NettyConfigKeys.Server.setPort(properties, port);
         InetSocketAddress addr = new InetSocketAddress(host,port);
-        RaftServerConfigKeys.setStorageDirs(properties,
-                Collections.singletonList(new File("/tmp/logservice/" + 
UUID.randomUUID().toString())));
+        if(workingDir != null) {
+            RaftServerConfigKeys.setStorageDirs(properties, 
Collections.singletonList(new File(workingDir)));
+        }
         String id = host +"_" +  port;
         RaftPeer peer = new RaftPeer(RaftPeerId.valueOf(id), addr);
         RaftGroup all = RaftGroup.valueOf(serversGroupID, peer);
@@ -100,6 +114,18 @@ public class LogServiceWorker implements Cloneable{
         metaClient.send(() -> 
MetaServiceProtoUtil.toPingRequestProto(peer).toByteString());
     }
 
+    public static void main(String[] args) throws IOException {
+        LogServiceWorker worker = new LogServiceWorker();
+        JCommander.newBuilder()
+                .addObject(worker)
+                .build()
+                .parse(args);
+        worker.start();
+
+
+    }
+
+
     public void close() throws IOException {
         raftServer.close();
     }
@@ -107,13 +133,14 @@ public class LogServiceWorker implements Cloneable{
     public static class Builder {
         String meta;
         int port = -1;
+        private String workingDir;
 
         public LogServiceWorker build() {
             if(port == -1) {
                 InetSocketAddress addr = NetUtils.createLocalServerAddress();
                 port = addr.getPort();
             }
-            return new LogServiceWorker(meta, port);
+            return new LogServiceWorker(meta, port, workingDir);
         }
         public Builder setMetaIdentity(String meta) {
             this.meta = meta;
@@ -124,6 +151,10 @@ public class LogServiceWorker implements Cloneable{
             return this;
         }
 
+        public Builder setWorkingDir(String workingDir) {
+            this.workingDir = workingDir;
+            return this;
+        }
 
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/e308cf59/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
index 4eb6eed..c4c5063 100644
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
+++ 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/server/TestMetaServer.java
@@ -40,7 +40,7 @@ import java.util.stream.IntStream;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
-@Ignore
+
 public class TestMetaServer {
 
     static LogServiceCluster cluster = null;
@@ -82,7 +82,7 @@ public class TestMetaServer {
         LogWriter writer = stream.createWriter();
         ByteBuffer testMessage =  ByteBuffer.wrap("Hello world!".getBytes());
         List<LogInfo> listLogs = client.listLogs();
-        assert(listLogs.size() == 1);
+        assert(listLogs.stream().filter(log -> 
log.getLogName().getName().startsWith("testReadWrite")).count() == 1);
         List<LogServiceWorker> workers = cluster.getWorkers();
         for(LogServiceWorker worker : workers) {
              RaftServerImpl server = ((RaftServerProxy)worker.getServer())
@@ -175,6 +175,7 @@ public class TestMetaServer {
 
     }
 
+    @Ignore ("Too heavy for the current implementation")
     @Test
     public void testFinalClieanUp() throws IOException {
         LogServiceClient client = new 
LogServiceClient(cluster.getMetaIdentity());

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/e308cf59/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/LogServiceCluster.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/LogServiceCluster.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/LogServiceCluster.java
index df8155b..cc3bf5c 100644
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/LogServiceCluster.java
+++ 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/LogServiceCluster.java
@@ -20,6 +20,7 @@
 package org.apache.ratis.logservice.util;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.ratis.BaseTest;
 import org.apache.ratis.logservice.api.LogName;
 import org.apache.ratis.logservice.api.LogService;
 import org.apache.ratis.logservice.api.LogInfo;
@@ -27,6 +28,7 @@ import org.apache.ratis.logservice.client.LogServiceClient;
 import org.apache.ratis.logservice.worker.LogServiceWorker;
 import org.apache.ratis.logservice.server.MasterServer;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -40,6 +42,7 @@ import java.util.stream.IntStream;
 public class LogServiceCluster implements AutoCloseable {
     private List<MasterServer> masters;
     private List<LogServiceWorker> workers = new ArrayList<>();
+    private String baseTestDir = BaseTest.getRootTestDir().getAbsolutePath();
 
     /**
      * Create a number of worker nodes with random ports and start them
@@ -48,7 +51,10 @@ public class LogServiceCluster implements AutoCloseable {
     public void createWorkers(int numWorkers) {
         String meta = getMetaIdentity();
         List<LogServiceWorker> newWorkers = IntStream.range(0, 
numWorkers).parallel().mapToObj(i ->
-                
LogServiceWorker.newBuilder().setMetaIdentity(meta).build()).collect(Collectors.toList());
+                LogServiceWorker.newBuilder()
+                        .setMetaIdentity(meta)
+                        .setWorkingDir(baseTestDir + "/workers/" + i)
+                        .build()).collect(Collectors.toList());
         newWorkers.parallelStream().forEach( worker -> {
             try {
                 worker.start();
@@ -78,11 +84,12 @@ public class LogServiceCluster implements AutoCloseable {
                 MasterServer.newBuilder()
                         .setHost(LogServiceUtils.getHostName())
                         .setPort(9000 + i)
-                        .setWorkingDir("/tmp/r" + i)
+                        .setWorkingDir(baseTestDir + "/masters/" + i)
                         .build())
                 .collect(Collectors.toList());
         masters.parallelStream().forEach(master -> {
             try {
+                master.cleanUp();
                 master.start(getMetaIdentity());
             } catch (IOException e) {
                 throw new RuntimeException(e);
@@ -126,7 +133,6 @@ public class LogServiceCluster implements AutoCloseable {
         masters.stream().parallel().forEach(master -> {
             try {
                 master.close();
-                master.cleanUp();
             } catch (IOException e) {
                 e.printStackTrace();
             }

Reply via email to