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(); }
