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; + } }
