Repository: incubator-ratis
Updated Branches:
  refs/heads/master 6f3419ad8 -> d28b6493f


RATIS-375 Re-enable LogStream state machine unit tests

Had to fix the API calls after MetadataService introduction.

Signed-off-by: Vladimir Rodionov <[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/d28b6493
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/d28b6493
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/d28b6493

Branch: refs/heads/master
Commit: d28b6493f89887c0b65c5a49a54c63ff2aa033cd
Parents: 6f3419a
Author: Josh Elser <[email protected]>
Authored: Fri Nov 2 16:15:45 2018 -0400
Committer: Josh Elser <[email protected]>
Committed: Tue Nov 13 13:41:33 2018 -0800

----------------------------------------------------------------------
 .../ratis/logservice/LogServiceBaseTest.java    | 92 -------------------
 .../logservice/LogServiceReadWriteBase.java     | 94 ++++++++------------
 .../logservice/TestLogServiceWithGrpc.java      |  4 +-
 .../logservice/TestLogServiceWithNetty.java     |  4 +-
 .../apache/ratis/logservice/util/TestUtils.java | 20 ++++-
 5 files changed, 60 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/d28b6493/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceBaseTest.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceBaseTest.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceBaseTest.java
deleted file mode 100644
index 8c21ecc..0000000
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceBaseTest.java
+++ /dev/null
@@ -1,92 +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.ratis.logservice;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-
-import org.apache.ratis.BaseTest;
-import org.apache.ratis.MiniRaftCluster;
-import org.apache.ratis.RaftTestUtil;
-import org.apache.ratis.client.RaftClient;
-import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.logservice.api.LogName;
-import org.apache.ratis.logservice.api.LogServiceConfiguration;
-import org.apache.ratis.logservice.api.LogStateMachine;
-import org.apache.ratis.logservice.api.LogStream;
-import org.apache.ratis.logservice.api.LogStream.State;
-import org.apache.ratis.statemachine.StateMachine;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-public abstract class LogServiceBaseTest<CLUSTER extends MiniRaftCluster>
-    extends BaseTest
-    implements MiniRaftCluster.Factory.Get<CLUSTER> {
-  public static final Logger LOG = 
LoggerFactory.getLogger(LogServiceBaseTest.class);
-
-  {
-    final RaftProperties p = getProperties();
-    p.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY,
-        LogStateMachine.class, StateMachine.class);
-    LOG.info("Set LogStateMachine OK");
-  }
-
-  static final int NUM_PEERS = 3;
-  CLUSTER cluster;
-
-  @Before
-  public void setUpCluster() throws IOException, InterruptedException {
-    cluster = newCluster(NUM_PEERS);
-    cluster.start();
-    RaftTestUtil.waitForLeader(cluster);
-  }
-
-  @Test
-  public void testLogServiceAdminAPIs() throws Exception {
-//    RaftClient raftClient =
-//        
RaftClient.newBuilder().setProperties(getProperties()).setRaftGroup(cluster.getGroup())
-//            .build();
-//    LogStream logService = 
LogServiceFactory.getInstance().createLogService(raftClient,
-//      new LogServiceConfiguration());
-//    LogName logName = LogName.of("log1");
-//    LogStream logStream = logService.createLog(logName);
-//    assertEquals("log1", logStream.getName().getName());
-//    assertEquals(State.OPEN, logStream.getState());
-//    assertEquals(0, logStream.getSize());
-//    logService.getLog(logName);
-//    assertEquals("log1", logStream.getName().getName());
-//    assertEquals(State.OPEN, logStream.getState());
-//    assertEquals(0, logStream.getSize());
-//    // TODO fix me
-//    //    logStream = logService.listLogs().next();
-//    //    assertEquals("log1", logStream.getName().getName());
-//    //    assertEquals(State.OPEN, logStream.getState());
-//    //    assertEquals(0, logStream.getSize());
-//    State state = logService.getState(logName);
-//    assertEquals(State.OPEN, state);
-  }
-
-  @After
-  public void tearDown() {
-    cluster.shutdown();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/d28b6493/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
index 54ebc69..9585915 100644
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
+++ 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/LogServiceReadWriteBase.java
@@ -21,9 +21,7 @@ import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Random;
 
 import org.apache.ratis.BaseTest;
 import org.apache.ratis.MiniRaftCluster;
@@ -32,11 +30,12 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.logservice.api.LogName;
 import org.apache.ratis.logservice.api.LogReader;
-import org.apache.ratis.logservice.api.LogServiceConfiguration;
 import org.apache.ratis.logservice.api.LogStream;
 import org.apache.ratis.logservice.api.LogStream.State;
 import org.apache.ratis.logservice.api.LogStateMachine;
 import org.apache.ratis.logservice.api.LogWriter;
+import org.apache.ratis.logservice.impl.LogStreamImpl;
+import org.apache.ratis.logservice.util.TestUtils;
 import org.apache.ratis.statemachine.StateMachine;
 import org.junit.After;
 import org.junit.Before;
@@ -68,60 +67,45 @@ public abstract class LogServiceReadWriteBase<CLUSTER 
extends MiniRaftCluster>
 
   @Test
   public void testLogServiceReadWrite() throws Exception {
-//    RaftClient raftClient =
-//        
RaftClient.newBuilder().setProperties(getProperties()).setRaftGroup(cluster.getGroup())
-//            .build();
-//    LogService logService = 
LogServiceFactory.getInstance().createLogService(raftClient,
-//      new LogServiceConfiguration());
-//    LogName logName = LogName.of("log1");
-//    LogStream logStream = logService.createLog(logName);
-//    assertEquals("log1", logStream.getName().getName());
-//    assertEquals(State.OPEN, logStream.getState());
-//    assertEquals(0, logStream.getSize());
-//
-//    LogReader reader = logStream.createReader();
-//    LogWriter writer = logStream.createWriter();
-//
-//    // Check last record id
-//    long lastId = logStream.getLastRecordId();
-//    LOG.info("last id {}", lastId);
-//
-//    // Add some records
-//    List<ByteBuffer> records = getRandomData(100, 10);
-//    long id = writer.write(records);
-//    LOG.info("id {}", id);
-//    // Check log size
-//    long size = logStream.getSize();
-//    assertEquals(10 * 100, size);
-//    LOG.info("size {}", size);
-//
-//    // Check last record id
-//    long lastId2 = logStream.getLastRecordId();
-//    LOG.info("last id {}", lastId2);
-//
-//    // Check first record id
-//    long startId = logStream.getStartRecordId();
-//    LOG.info("start id {}", startId);
-//    //
-//    reader.seek(lastId + 1);
-//    // Read records back
-//    List<ByteBuffer> data = reader.readBulk(1);
-//    assertEquals(1, data.size());
-//
-  }
+    RaftClient raftClient =
+        
RaftClient.newBuilder().setProperties(getProperties()).setRaftGroup(cluster.getGroup())
+            .build();
+    LogName logName = LogName.of("log1");
+    // TODO need API to circumvent metadata service for testing
+    try (LogStream logStream = new LogStreamImpl(logName, raftClient)) {
+      assertEquals("log1", logStream.getName().getName());
+      assertEquals(State.OPEN, logStream.getState());
+      assertEquals(0, logStream.getSize());
 
-  private List<ByteBuffer> getRandomData(int dataSize, int totalRecords) {
-    byte[][] data = new byte[totalRecords][dataSize];
-    Random r = new Random();
-    for(int i=0; i < data.length; i++) {
-      data[i] = new byte[dataSize];
-      r.nextBytes(data[i]);
-    }
-    List<ByteBuffer> list = new ArrayList<ByteBuffer>();
-    for (int i=0; i < data.length; i++) {
-      list.add(ByteBuffer.wrap(data[i]));
+      LogReader reader = logStream.createReader();
+      LogWriter writer = logStream.createWriter();
+
+      // Check last record id
+      long lastId = logStream.getLastRecordId();
+      LOG.info("last id {}", lastId);
+
+      // Add some records
+      List<ByteBuffer> records = TestUtils.getRandomData(100, 10);
+      long id = writer.write(records);
+      LOG.info("id {}", id);
+      // Check log size
+      long size = logStream.getSize();
+      assertEquals(10 * 100, size);
+      LOG.info("size {}", size);
+
+      // Check last record id
+      long lastId2 = logStream.getLastRecordId();
+      LOG.info("last id {}", lastId2);
+
+      // Check first record id
+      long startId = logStream.getStartRecordId();
+      LOG.info("start id {}", startId);
+      //
+      reader.seek(lastId + 1);
+      // Read records back
+      List<ByteBuffer> data = reader.readBulk(1);
+      assertEquals(1, data.size());
     }
-    return list;
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/d28b6493/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithGrpc.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithGrpc.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithGrpc.java
index fdee1bd..6bf55ae 100644
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithGrpc.java
+++ 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithGrpc.java
@@ -18,10 +18,8 @@
 package org.apache.ratis.logservice;
 
 import org.apache.ratis.grpc.MiniRaftClusterWithGrpc;
-import org.junit.Ignore;
 
-@Ignore
-public class TestLogServiceWithGrpc extends 
LogServiceBaseTest<MiniRaftClusterWithGrpc>
+public class TestLogServiceWithGrpc extends 
LogServiceReadWriteBase<MiniRaftClusterWithGrpc>
     implements MiniRaftClusterWithGrpc.FactoryGet {
 
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/d28b6493/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithNetty.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithNetty.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithNetty.java
index 822fae1..606bde6 100644
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithNetty.java
+++ 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/TestLogServiceWithNetty.java
@@ -18,10 +18,8 @@
 package org.apache.ratis.logservice;
 
 import org.apache.ratis.netty.MiniRaftClusterWithNetty;
-import org.junit.Ignore;
 
-@Ignore
 public class TestLogServiceWithNetty
-    extends LogServiceBaseTest<MiniRaftClusterWithNetty>
+    extends LogServiceReadWriteBase<MiniRaftClusterWithNetty>
     implements MiniRaftClusterWithNetty.FactoryGet {
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/d28b6493/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/TestUtils.java
----------------------------------------------------------------------
diff --git 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/TestUtils.java
 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/TestUtils.java
index 0b6a0e0..ba07f18 100644
--- 
a/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/TestUtils.java
+++ 
b/ratis-logservice/src/test/java/org/apache/ratis/logservice/util/TestUtils.java
@@ -17,8 +17,12 @@
  */
 package org.apache.ratis.logservice.util;
 
-public class TestUtils {
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
 
+public class TestUtils {
 
   public static boolean equals(byte[] a, byte[] b) {
     if (a == null || b == null) {
@@ -34,4 +38,18 @@ public class TestUtils {
     }
     return true;
   }
+
+  public static List<ByteBuffer> getRandomData(int dataSize, int totalRecords) 
{
+    byte[][] data = new byte[totalRecords][dataSize];
+    Random r = new Random();
+    for(int i=0; i < data.length; i++) {
+      data[i] = new byte[dataSize];
+      r.nextBytes(data[i]);
+    }
+    List<ByteBuffer> list = new ArrayList<ByteBuffer>();
+    for (int i=0; i < data.length; i++) {
+      list.add(ByteBuffer.wrap(data[i]));
+    }
+    return list;
+  }
 }

Reply via email to