Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java Thu Sep 15 14:03:05 2016 @@ -17,9 +17,11 @@ package org.apache.jackrabbit.oak.segment.standby.server; +import java.io.IOException; import java.util.UUID; import java.util.concurrent.TimeUnit; +import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.jackrabbit.oak.segment.Segment; import org.apache.jackrabbit.oak.segment.SegmentId; import org.apache.jackrabbit.oak.segment.SegmentNotFoundException; @@ -38,12 +40,27 @@ class DefaultStandbySegmentReader implem } @Override - public Segment readSegment(UUID uuid) { + public byte[] readSegment(String segmentId) { + UUID uuid = UUID.fromString(segmentId); long msb = uuid.getMostSignificantBits(); long lsb = uuid.getLeastSignificantBits(); - SegmentId id = store.newSegmentId(msb, lsb); + Segment segment = readSegment(store.newSegmentId(msb, lsb)); + if (segment == null) { + return null; + } + + try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { + segment.writeTo(stream); + return stream.toByteArray(); + } catch (IOException e) { + log.warn("Error while reading segment content", e); + return null; + } + } + + private Segment readSegment(SegmentId id) { for (int i = 0; i < 10; i++) { try { return store.readSegment(id);
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandler.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandler.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandler.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandler.java Thu Sep 15 14:03:05 2016 @@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.segmen import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; -import org.apache.jackrabbit.oak.api.Blob; import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobRequest; import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobResponse; import org.slf4j.Logger; @@ -39,14 +38,14 @@ class GetBlobRequestHandler extends Simp protected void channelRead0(ChannelHandlerContext ctx, GetBlobRequest msg) throws Exception { log.debug("Reading blob {} for client {}", msg.getBlobId(), msg.getClientId()); - Blob blob = reader.readBlob(msg.getBlobId()); + byte[] data = reader.readBlob(msg.getBlobId()); - if (blob == null) { + if (data == null) { log.debug("Blob {} not found, discarding request from client {}", msg.getBlobId(), msg.getClientId()); return; } - ctx.writeAndFlush(new GetBlobResponse(msg.getClientId(), blob)); + ctx.writeAndFlush(new GetBlobResponse(msg.getClientId(), msg.getBlobId(), data)); } } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandler.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandler.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandler.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandler.java Thu Sep 15 14:03:05 2016 @@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.segmen import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; -import org.apache.jackrabbit.oak.segment.RecordId; import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadRequest; import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponse; import org.slf4j.Logger; @@ -43,7 +42,7 @@ class GetHeadRequestHandler extends Simp protected void channelRead0(ChannelHandlerContext ctx, GetHeadRequest msg) throws Exception { log.debug("Reading head for client {}", msg.getClientId()); - RecordId id = reader.readHeadRecordId(); + String id = reader.readHeadRecordId(); if (id == null) { log.debug("Head not found, discarding request from client {}", msg.getClientId()); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandler.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandler.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandler.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandler.java Thu Sep 15 14:03:05 2016 @@ -39,14 +39,18 @@ class GetSegmentRequestHandler extends S protected void channelRead0(ChannelHandlerContext ctx, GetSegmentRequest msg) throws Exception { log.debug("Reading segment {} for client {}", msg.getSegmentId(), msg.getClientId()); - Segment segment = reader.readSegment(msg.getSegmentId()); + byte[] data = reader.readSegment(msg.getSegmentId()); - if (segment == null) { + if (data == null) { log.debug("Segment {} not found, discarding request from client {}", msg.getSegmentId(), msg.getClientId()); return; } - ctx.writeAndFlush(new GetSegmentResponse(msg.getClientId(), segment)); + ctx.writeAndFlush(new GetSegmentResponse(msg.getClientId(), msg.getSegmentId(), data)); + } + + private String getId(Segment segment) { + return segment.getSegmentId().asUUID().toString(); } } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/ResponseObserverHandler.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/ResponseObserverHandler.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/ResponseObserverHandler.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/ResponseObserverHandler.java Thu Sep 15 14:03:05 2016 @@ -48,11 +48,11 @@ class ResponseObserverHandler extends Ch } private void onGetSegmentResponse(GetSegmentResponse response) { - observer.didSendSegmentBytes(response.getClientId(), response.getSegment().size()); + observer.didSendSegmentBytes(response.getClientId(), response.getSegmentData().length); } private void onGetBlobResponse(GetBlobResponse response) { - observer.didSendBinariesBytes(response.getClientId(), (int) Math.max(0, response.getBlob().length())); + observer.didSendBinariesBytes(response.getClientId(), (int) Math.max(0, response.getBlobData().length)); } } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyBlobReader.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyBlobReader.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyBlobReader.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyBlobReader.java Thu Sep 15 14:03:05 2016 @@ -17,10 +17,8 @@ package org.apache.jackrabbit.oak.segment.standby.server; -import org.apache.jackrabbit.oak.api.Blob; - interface StandbyBlobReader { - Blob readBlob(String blobId); + byte[] readBlob(String blobId); } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyHeadReader.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyHeadReader.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyHeadReader.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyHeadReader.java Thu Sep 15 14:03:05 2016 @@ -17,8 +17,6 @@ package org.apache.jackrabbit.oak.segment.standby.server; -import org.apache.jackrabbit.oak.segment.RecordId; - /** * Read the head record ID. */ @@ -30,6 +28,6 @@ interface StandbyHeadReader { * @return the head record ID or {@code null} if the head record ID can't be * found. */ - RecordId readHeadRecordId(); + String readHeadRecordId(); } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbySegmentReader.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbySegmentReader.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbySegmentReader.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbySegmentReader.java Thu Sep 15 14:03:05 2016 @@ -17,12 +17,8 @@ package org.apache.jackrabbit.oak.segment.standby.server; -import java.util.UUID; - -import org.apache.jackrabbit.oak.segment.Segment; - interface StandbySegmentReader { - Segment readSegment(UUID segmentId); + byte[] readSegment(String segmentId); } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java Thu Sep 15 14:03:05 2016 @@ -46,12 +46,10 @@ import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.util.SelfSignedCertificate; import io.netty.util.CharsetUtil; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobRequestDecoder; import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobResponseEncoder; -import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadRequestDecoder; import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder; -import org.apache.jackrabbit.oak.segment.standby.codec.GetSegmentRequestDecoder; import org.apache.jackrabbit.oak.segment.standby.codec.GetSegmentResponseEncoder; +import org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder; import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean; import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver; import org.slf4j.Logger; @@ -131,9 +129,7 @@ public class StandbyServer implements St p.addLast(new LineBasedFrameDecoder(8192)); p.addLast(new StringDecoder(CharsetUtil.UTF_8)); - p.addLast(new GetHeadRequestDecoder()); - p.addLast(new GetSegmentRequestDecoder()); - p.addLast(new GetBlobRequestDecoder()); + p.addLast(new RequestDecoder()); p.addLast(new StateHandler(newStateConsumer())); p.addLast(new RequestObserverHandler(observer)); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java Thu Sep 15 14:03:05 2016 @@ -38,7 +38,7 @@ import org.apache.jackrabbit.oak.commons import org.apache.jackrabbit.oak.segment.SegmentStore; import org.apache.jackrabbit.oak.segment.SegmentStoreProvider; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.osgi.framework.ServiceRegistration; import org.osgi.service.component.ComponentContext; @@ -95,7 +95,8 @@ public class StandbyStoreService { private FileStore fileStore; private StandbyServer primary = null; - private StandbyClient sync = null; + + private StandbySync sync = null; private ServiceRegistration syncReg = null; @@ -157,7 +158,7 @@ public class StandbyStoreService { int readTimeout = PropertiesUtil.toInteger(props.get(READ_TIMEOUT), READ_TIMEOUT_DEFAULT); boolean clean = PropertiesUtil.toBoolean(props.get(AUTO_CLEAN), AUTO_CLEAN_DEFAULT); - sync = new StandbyClient(host, port, fileStore, secure, readTimeout, clean); + sync = new StandbySync(host, port, fileStore, secure, readTimeout, clean); Dictionary<Object, Object> dictionary = new Hashtable<Object, Object>(); dictionary.put("scheduler.period", interval); dictionary.put("scheduler.concurrent", false); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java Thu Sep 15 14:03:05 2016 @@ -25,7 +25,7 @@ import static org.junit.Assert.assertFal import org.apache.jackrabbit.oak.segment.NetworkErrorProxy; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.junit.After; @@ -126,7 +126,7 @@ public class BrokenNetworkTest extends T addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... - StandbyClient cl = newStandbyClient(storeC, proxyPort, ssl); + StandbySync cl = newStandbySync(storeC, proxyPort, ssl); cl.run(); try { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java Thu Sep 15 14:03:05 2016 @@ -42,7 +42,7 @@ import org.apache.jackrabbit.oak.segment import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; import org.apache.jackrabbit.oak.segment.file.FileStore; import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; @@ -112,7 +112,7 @@ public class DataStoreTestBase extends T byte[] data = addTestContent(store, "server", blobSize); primary.flush(); - StandbyClient cl = newStandbyClient(secondary); + StandbySync cl = newStandbySync(secondary); cl.run(); try { @@ -188,7 +188,7 @@ public class DataStoreTestBase extends T byte[] data = addTestContent(store, "server", blobSize); primary.flush(); - StandbyClient cl = newStandbyClient(secondary, proxyPort); + StandbySync cl = newStandbySync(secondary, proxyPort); cl.run(); try { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java Thu Sep 15 14:03:05 2016 @@ -24,7 +24,7 @@ import static org.junit.Assert.assertEqu import static org.junit.Assert.assertFalse; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.junit.After; @@ -146,7 +146,7 @@ public class FailoverIPRangeTest extends addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... - StandbyClient cl = new StandbyClient(host, port, storeC, false, timeout, false); + StandbySync cl = new StandbySync(host, port, storeC, false, timeout, false); cl.run(); try { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java Thu Sep 15 14:03:05 2016 @@ -23,7 +23,7 @@ import static org.junit.Assert.assertFal import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; import org.apache.jackrabbit.oak.segment.SegmentTestUtils; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.junit.After; @@ -50,8 +50,8 @@ public class FailoverMultipleClientsTest SegmentTestUtils.addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... - StandbyClient cl1 = newStandbyClient(storeC); - StandbyClient cl2 = newStandbyClient(storeC2); + StandbySync cl1 = newStandbySync(storeC); + StandbySync cl2 = newStandbySync(storeC2); try { assertFalse("first client has invalid initial store!", storeS.getHead().equals(storeC.getHead())); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java Thu Sep 15 14:03:05 2016 @@ -24,7 +24,7 @@ import static org.junit.Assert.assertEqu import static org.junit.Assert.assertFalse; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.junit.After; @@ -52,7 +52,7 @@ public class FailoverSslTestIT extends T addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... - StandbyClient cl = newStandbyClient(storeC, port, true); + StandbySync cl = newStandbySync(storeC, port, true); cl.run(); try { @@ -72,7 +72,7 @@ public class FailoverSslTestIT extends T addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... - StandbyClient cl = newStandbyClient(storeC); + StandbySync cl = newStandbySync(storeC); cl.run(); try { @@ -92,7 +92,7 @@ public class FailoverSslTestIT extends T addTestContent(store, "server"); storeS.flush(); // this speeds up the test a little bit... - StandbyClient cl = newStandbyClient(storeC, port, true); + StandbySync cl = newStandbySync(storeC, port, true); cl.run(); try { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanTest.java Thu Sep 15 14:03:05 2016 @@ -30,7 +30,7 @@ import java.util.Set; import javax.management.MBeanServer; import javax.management.ObjectName; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.junit.After; @@ -86,7 +86,7 @@ public class MBeanTest extends TestBase @Test public void testClientEmptyConfigNoServer() throws Exception { - final StandbyClient client = newStandbyClient(storeC); + final StandbySync client = newStandbySync(storeC); client.start(); client.run(); @@ -123,8 +123,8 @@ public class MBeanTest extends TestBase @Test public void testClientNoServer() throws Exception { - System.setProperty(StandbyClient.CLIENT_ID_PROPERTY_NAME, "Foo"); - final StandbyClient client = newStandbyClient(storeC); + System.setProperty(StandbySync.CLIENT_ID_PROPERTY_NAME, "Foo"); + final StandbySync client = newStandbySync(storeC); client.start(); client.run(); @@ -151,8 +151,8 @@ public class MBeanTest extends TestBase final StandbyServer server = new StandbyServer(port, this.storeS); server.start(); - System.setProperty(StandbyClient.CLIENT_ID_PROPERTY_NAME, "Bar"); - final StandbyClient client = newStandbyClient(storeC); + System.setProperty(StandbySync.CLIENT_ID_PROPERTY_NAME, "Bar"); + final StandbySync client = newStandbySync(storeC); client.start(); client.run(); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java Thu Sep 15 14:03:05 2016 @@ -24,7 +24,7 @@ import static org.junit.Assert.assertEqu import static org.junit.Assert.assertFalse; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.junit.After; @@ -55,7 +55,7 @@ public class RecoverTestIT extends TestB addTestContent(store, "server"); storeS.flush(); - StandbyClient cl = newStandbyClient(storeC); + StandbySync cl = newStandbySync(storeC); try { assertFalse("stores are not expected to be equal", storeS.getHead().equals(storeC.getHead())); cl.run(); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java Thu Sep 15 14:03:05 2016 @@ -28,13 +28,14 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.Random; +import com.google.common.io.ByteStreams; import org.apache.jackrabbit.oak.api.Blob; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; @@ -44,8 +45,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.google.common.io.ByteStreams; - public class StandbyTest extends TestBase { @Before @@ -71,7 +70,7 @@ public class StandbyTest extends TestBas byte[] data = addTestContent(store, "server", blobSize, 150); primary.flush(); - StandbyClient cl = newStandbyClient(secondary); + StandbySync cl = newStandbySync(secondary); cl.run(); try { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java Thu Sep 15 14:03:05 2016 @@ -35,7 +35,7 @@ import org.apache.jackrabbit.oak.api.Pro import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; @@ -96,7 +96,7 @@ public class StandbyTestIT extends TestB byte[] data = addTestContent(store, "server", blobSize, dataNodes); primary.flush(); - StandbyClient cl = newStandbyClient(secondary); + StandbySync cl = newStandbySync(secondary); try { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java Thu Sep 15 14:03:05 2016 @@ -30,7 +30,7 @@ import org.apache.commons.lang3.SystemUt import org.apache.jackrabbit.oak.commons.CIHelper; import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; import org.junit.BeforeClass; import org.junit.Rule; @@ -149,18 +149,16 @@ public class TestBase { return timeout; } - public StandbyClient newStandbyClient(FileStore store) throws Exception { - return newStandbyClient(store, port, false); + public StandbySync newStandbySync(FileStore store) throws Exception { + return newStandbySync(store, port, false); } - public StandbyClient newStandbyClient(FileStore store, int port) - throws Exception { - return newStandbyClient(store, port, false); + public StandbySync newStandbySync(FileStore store, int port) throws Exception { + return newStandbySync(store, port, false); } - public StandbyClient newStandbyClient(FileStore store, int port, - boolean secure) throws Exception { - return new StandbyClient(LOCALHOST, port, store, secure, timeout, false); + public StandbySync newStandbySync(FileStore store, int port, boolean secure) throws Exception { + return new StandbySync(LOCALHOST, port, store, secure, timeout, false); } } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java Thu Sep 15 14:03:05 2016 @@ -29,7 +29,7 @@ import java.util.concurrent.ScheduledExe import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; public class BenchmarkBase { @@ -97,16 +97,16 @@ public class BenchmarkBase { return newFileStore(directory, executor); } - public StandbyClient newStandbyClient(FileStore store) throws Exception { + public StandbySync newStandbyClient(FileStore store) throws Exception { return newStandbyClient(store, port, false); } - public StandbyClient newStandbyClient(FileStore store, int port) throws Exception { + public StandbySync newStandbyClient(FileStore store, int port) throws Exception { return newStandbyClient(store, port, false); } - public StandbyClient newStandbyClient(FileStore store, int port, boolean secure) throws Exception { - return new StandbyClient(LOCALHOST, port, store, secure, timeout, false); + public StandbySync newStandbyClient(FileStore store, int port, boolean secure) throws Exception { + return new StandbySync(LOCALHOST, port, store, secure, timeout, false); } private static File createTmpTargetDir(String name) throws IOException { Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BulkTransferBenchmark.java Thu Sep 15 14:03:05 2016 @@ -27,7 +27,7 @@ import javax.management.MBeanServer; import javax.management.ObjectName; import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; -import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.segment.standby.client.StandbySync; import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean; import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; @@ -94,8 +94,8 @@ public class BulkTransferBenchmark exten final StandbyServer server = new StandbyServer(port, storeS, useSSL); server.start(); - System.setProperty(StandbyClient.CLIENT_ID_PROPERTY_NAME, "Bar"); - StandbyClient cl = newStandbyClient(storeC, port, useSSL); + System.setProperty(StandbySync.CLIENT_ID_PROPERTY_NAME, "Bar"); + StandbySync cl = newStandbyClient(storeC, port, useSSL); final MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer(); ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + ",id=*"); Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetBlobResponseEncoderTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetBlobResponseEncoderTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetBlobResponseEncoderTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetBlobResponseEncoderTest.java Thu Sep 15 14:03:05 2016 @@ -19,42 +19,33 @@ package org.apache.jackrabbit.oak.segmen import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.hash; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.ByteArrayInputStream; import com.google.common.base.Charsets; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; -import org.apache.jackrabbit.oak.api.Blob; import org.junit.Test; public class GetBlobResponseEncoderTest { @Test public void encodeResponse() throws Exception { - byte[] data = new byte[] {1, 2, 3}; - - String contentIdentity = "contentIdentity"; - byte[] contentIdentityBytes = contentIdentity.getBytes(Charsets.UTF_8); + byte[] blobData = new byte[] {1, 2, 3}; - Blob blob = mock(Blob.class); - when(blob.getNewStream()).thenReturn(new ByteArrayInputStream(data)); - when(blob.getContentIdentity()).thenReturn(contentIdentity); + String blobId = "blobId"; + byte[] blobIdBytes = blobId.getBytes(Charsets.UTF_8); EmbeddedChannel channel = new EmbeddedChannel(new GetBlobResponseEncoder()); - channel.writeOutbound(new GetBlobResponse("clientId", blob)); + channel.writeOutbound(new GetBlobResponse("clientId", blobId, blobData)); ByteBuf buffer = (ByteBuf) channel.readOutbound(); ByteBuf expected = Unpooled.buffer(); - expected.writeInt(3); + expected.writeInt(1 + 4 + blobIdBytes.length + 8 + blobData.length); expected.writeByte(Messages.HEADER_BLOB); - expected.writeInt(contentIdentityBytes.length); - expected.writeBytes(contentIdentityBytes); - expected.writeLong(hash(data)); - expected.writeBytes(data); + expected.writeInt(blobIdBytes.length); + expected.writeBytes(blobIdBytes); + expected.writeLong(hash(blobData)); + expected.writeBytes(blobData); assertEquals(expected, buffer); } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetHeadResponseEncoderTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetHeadResponseEncoderTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetHeadResponseEncoderTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetHeadResponseEncoderTest.java Thu Sep 15 14:03:05 2016 @@ -17,30 +17,29 @@ package org.apache.jackrabbit.oak.segment.standby.codec; -import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.mockRecordId; import static org.junit.Assert.assertEquals; import com.google.common.base.Charsets; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; -import org.apache.jackrabbit.oak.segment.RecordId; import org.junit.Test; public class GetHeadResponseEncoderTest { @Test public void encodeResponse() throws Exception { - RecordId recordId = mockRecordId(1, 2, 8); + String recordId = "recordId"; + byte[] recordIdBytes = recordId.getBytes(Charsets.UTF_8); EmbeddedChannel channel = new EmbeddedChannel(new GetHeadResponseEncoder()); - channel.writeOutbound(new GetHeadResponse("clientId", recordId)); + channel.writeOutbound(new GetHeadResponse("clientId", "recordId")); ByteBuf buffer = (ByteBuf) channel.readOutbound(); ByteBuf expected = Unpooled.buffer(); - expected.writeInt(recordId.toString().getBytes(Charsets.UTF_8).length + 1); + expected.writeInt(recordIdBytes.length + 1); expected.writeByte(Messages.HEADER_RECORD); - expected.writeBytes(recordId.toString().getBytes(Charsets.UTF_8)); + expected.writeBytes(recordIdBytes); assertEquals(expected, buffer); } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetSegmentResponseEncoderTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetSegmentResponseEncoderTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetSegmentResponseEncoderTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/GetSegmentResponseEncoderTest.java Thu Sep 15 14:03:05 2016 @@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.segment.standby.codec; import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.hash; -import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.mockSegment; import static org.junit.Assert.assertEquals; import java.util.UUID; @@ -26,7 +25,6 @@ import java.util.UUID; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; -import org.apache.jackrabbit.oak.segment.Segment; import org.junit.Test; public class GetSegmentResponseEncoderTest { @@ -35,10 +33,9 @@ public class GetSegmentResponseEncoderTe public void encodeResponse() throws Exception { UUID uuid = new UUID(1, 2); byte[] data = new byte[] {3, 4, 5}; - Segment segment = mockSegment(uuid, data); EmbeddedChannel channel = new EmbeddedChannel(new GetSegmentResponseEncoder()); - channel.writeOutbound(new GetSegmentResponse("clientId", segment)); + channel.writeOutbound(new GetSegmentResponse("clientId", uuid.toString(), data)); ByteBuf buffer = (ByteBuf) channel.readOutbound(); ByteBuf expected = Unpooled.buffer(); Added: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/RequestDecoderTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/RequestDecoderTest.java?rev=1760934&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/RequestDecoderTest.java (added) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/RequestDecoderTest.java Thu Sep 15 14:03:05 2016 @@ -0,0 +1,61 @@ +/* + * 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.jackrabbit.oak.segment.standby.codec; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import io.netty.channel.embedded.EmbeddedChannel; +import org.junit.Test; + +public class RequestDecoderTest { + + @Test + public void shouldDecodeValidGetBlobRequests() throws Exception { + EmbeddedChannel channel = new EmbeddedChannel(new RequestDecoder()); + channel.writeInbound(Messages.newGetBlobRequest("clientId", "blobId", false)); + GetBlobRequest request = (GetBlobRequest) channel.readInbound(); + assertEquals("clientId", request.getClientId()); + assertEquals("blobId", request.getBlobId()); + } + + @Test + public void shouldDecodeValidGetHeadRequests() throws Exception { + EmbeddedChannel channel = new EmbeddedChannel(new RequestDecoder()); + channel.writeInbound(Messages.newGetHeadRequest("clientId", false)); + GetHeadRequest request = (GetHeadRequest) channel.readInbound(); + assertEquals("clientId", request.getClientId()); + } + + @Test + public void shouldDecodeValidGetSegmentRequests() throws Exception { + EmbeddedChannel channel = new EmbeddedChannel(new RequestDecoder()); + channel.writeInbound(Messages.newGetSegmentRequest("clientId", "segmentId", false)); + GetSegmentRequest request = (GetSegmentRequest) channel.readInbound(); + assertEquals("clientId", request.getClientId()); + assertEquals("segmentId", request.getSegmentId()); + } + + @Test + public void shouldDropInvalidMessages() throws Exception { + EmbeddedChannel channel = new EmbeddedChannel(new RequestDecoder()); + channel.writeInbound("Standby-CMD@clientId:z"); + assertNull(channel.readInbound()); + } + +} Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/RequestDecoderTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoderTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoderTest.java?rev=1760934&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoderTest.java (added) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoderTest.java Thu Sep 15 14:03:05 2016 @@ -0,0 +1,142 @@ +/* + * 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.jackrabbit.oak.segment.standby.codec; + +import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.hash; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import java.util.UUID; + +import com.google.common.base.Charsets; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.channel.embedded.EmbeddedChannel; +import org.junit.Test; + +public class ResponseDecoderTest { + + @Test + public void unrecognizedMessagesShouldBeDropped() throws Exception { + ByteBuf buf = Unpooled.buffer(); + buf.writeInt(1); + buf.writeByte(-1); + + EmbeddedChannel channel = new EmbeddedChannel(new ResponseDecoder()); + channel.writeInbound(buf); + assertNull(channel.readInbound()); + } + + @Test + public void shouldDecodeValidGetBlobResponses() throws Exception { + byte[] blobData = new byte[] {1, 2, 3}; + + String blobId = "blobId"; + byte[] blobIdBytes = blobId.getBytes(Charsets.UTF_8); + + ByteBuf buf = Unpooled.buffer(); + buf.writeInt(1 + 4 + blobIdBytes.length + 8 + blobData.length); + buf.writeByte(Messages.HEADER_BLOB); + buf.writeInt(blobIdBytes.length); + buf.writeBytes(blobIdBytes); + buf.writeLong(hash(blobData)); + buf.writeBytes(blobData); + + EmbeddedChannel channel = new EmbeddedChannel(new ResponseDecoder()); + channel.writeInbound(buf); + GetBlobResponse response = (GetBlobResponse) channel.readInbound(); + assertEquals("blobId", response.getBlobId()); + assertArrayEquals(blobData, response.getBlobData()); + } + + @Test + public void shouldDropInvalidGetBlobResponses() throws Exception { + byte[] blobData = new byte[] {1, 2, 3}; + + String blobId = "blobId"; + byte[] blobIdBytes = blobId.getBytes(Charsets.UTF_8); + + ByteBuf buf = Unpooled.buffer(); + buf.writeInt(1 + 4 + blobIdBytes.length + 8 + blobData.length); + buf.writeByte(Messages.HEADER_BLOB); + buf.writeInt(blobIdBytes.length); + buf.writeBytes(blobIdBytes); + buf.writeLong(hash(blobData) + 1); + buf.writeBytes(blobData); + + EmbeddedChannel channel = new EmbeddedChannel(new ResponseDecoder()); + channel.writeInbound(buf); + assertNull(channel.readInbound()); + } + + @Test + public void shouldDecodeValidGetHeadResponses() throws Exception { + String recordId = "recordId"; + byte[] recordIdBytes = recordId.getBytes(Charsets.UTF_8); + + ByteBuf in = Unpooled.buffer(); + in.writeInt(recordIdBytes.length + 1); + in.writeByte(Messages.HEADER_RECORD); + in.writeBytes(recordIdBytes); + + EmbeddedChannel channel = new EmbeddedChannel(new ResponseDecoder()); + channel.writeInbound(in); + GetHeadResponse response = (GetHeadResponse) channel.readInbound(); + assertEquals(recordId, response.getHeadRecordId()); + } + + @Test + public void shouldDecodeValidGetSegmentResponses() throws Exception { + UUID uuid = new UUID(1, 2); + byte[] data = new byte[] {3, 4, 5}; + + ByteBuf buf = Unpooled.buffer(); + buf.writeInt(data.length + 25); + buf.writeByte(Messages.HEADER_SEGMENT); + buf.writeLong(uuid.getMostSignificantBits()); + buf.writeLong(uuid.getLeastSignificantBits()); + buf.writeLong(hash(data)); + buf.writeBytes(data); + + EmbeddedChannel channel = new EmbeddedChannel(new ResponseDecoder()); + channel.writeInbound(buf); + GetSegmentResponse response = (GetSegmentResponse) channel.readInbound(); + assertEquals(uuid, UUID.fromString(response.getSegmentId())); + assertArrayEquals(data, response.getSegmentData()); + } + + @Test + public void shouldDropInvalidGetSegmentResponses() throws Exception { + UUID uuid = new UUID(1, 2); + byte[] data = new byte[] {3, 4, 5}; + + ByteBuf buf = Unpooled.buffer(); + buf.writeInt(data.length + 25); + buf.writeByte(Messages.HEADER_SEGMENT); + buf.writeLong(uuid.getMostSignificantBits()); + buf.writeLong(uuid.getLeastSignificantBits()); + buf.writeLong(hash(data) + 1); + buf.writeBytes(data); + + EmbeddedChannel channel = new EmbeddedChannel(new ResponseDecoder()); + channel.writeInbound(buf); + assertNull(channel.readInbound()); + } + +} Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/codec/ResponseDecoderTest.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandlerTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandlerTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandlerTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetBlobRequestHandlerTest.java Thu Sep 15 14:03:05 2016 @@ -17,14 +17,13 @@ package org.apache.jackrabbit.oak.segment.standby.server; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import io.netty.channel.embedded.EmbeddedChannel; -import org.apache.jackrabbit.oak.api.Blob; import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobRequest; import org.apache.jackrabbit.oak.segment.standby.codec.GetBlobResponse; import org.junit.Test; @@ -33,16 +32,17 @@ public class GetBlobRequestHandlerTest { @Test public void successfulReadsShouldGenerateResponses() throws Exception { - Blob blob = mock(Blob.class); + byte[] blobData = new byte[] {99, 114, 97, 112}; StandbyBlobReader reader = mock(StandbyBlobReader.class); - when(reader.readBlob("blobId")).thenReturn(blob); + when(reader.readBlob("blobId")).thenReturn(blobData); EmbeddedChannel channel = new EmbeddedChannel(new GetBlobRequestHandler(reader)); channel.writeInbound(new GetBlobRequest("clientId", "blobId")); GetBlobResponse response = (GetBlobResponse) channel.readOutbound(); assertEquals("clientId", response.getClientId()); - assertSame(blob, response.getBlob()); + assertEquals("blobId", response.getBlobId()); + assertArrayEquals(blobData, response.getBlobData()); } @Test Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandlerTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandlerTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandlerTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetHeadRequestHandlerTest.java Thu Sep 15 14:03:05 2016 @@ -17,15 +17,12 @@ package org.apache.jackrabbit.oak.segment.standby.server; -import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.mockRecordId; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import io.netty.channel.embedded.EmbeddedChannel; -import org.apache.jackrabbit.oak.segment.RecordId; import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadRequest; import org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponse; import org.junit.Test; @@ -34,15 +31,13 @@ public class GetHeadRequestHandlerTest { @Test public void successfulReadsShouldGenerateResponses() throws Exception { - RecordId headRecordId = mockRecordId(1, 2, 8); - StandbyHeadReader reader = mock(StandbyHeadReader.class); - when(reader.readHeadRecordId()).thenReturn(headRecordId); + when(reader.readHeadRecordId()).thenReturn("recordId"); EmbeddedChannel channel = new EmbeddedChannel(new GetHeadRequestHandler(reader)); channel.writeInbound(new GetHeadRequest("clientId")); GetHeadResponse response = (GetHeadResponse) channel.readOutbound(); - assertSame(headRecordId, response.getHeadRecordId()); + assertEquals("recordId", response.getHeadRecordId()); assertEquals("clientId", response.getClientId()); } Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandlerTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandlerTest.java?rev=1760934&r1=1760933&r2=1760934&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandlerTest.java (original) +++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/GetSegmentRequestHandlerTest.java Thu Sep 15 14:03:05 2016 @@ -17,17 +17,15 @@ package org.apache.jackrabbit.oak.segment.standby.server; -import static org.apache.jackrabbit.oak.segment.standby.StandbyTestUtils.mockSegment; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.UUID; import io.netty.channel.embedded.EmbeddedChannel; -import org.apache.jackrabbit.oak.segment.Segment; import org.apache.jackrabbit.oak.segment.standby.codec.GetSegmentRequest; import org.apache.jackrabbit.oak.segment.standby.codec.GetSegmentResponse; import org.junit.Test; @@ -36,18 +34,17 @@ public class GetSegmentRequestHandlerTes @Test public void successfulReadsShouldGenerateResponses() throws Exception { - UUID uuid = new UUID(1, 2); - - Segment segment = mockSegment(uuid, new byte[] {3, 4, 5}); + byte[] data = new byte[] {3, 4, 5}; StandbySegmentReader reader = mock(StandbySegmentReader.class); - when(reader.readSegment(uuid)).thenReturn(segment); + when(reader.readSegment("segmentId")).thenReturn(data); EmbeddedChannel channel = new EmbeddedChannel(new GetSegmentRequestHandler(reader)); - channel.writeInbound(new GetSegmentRequest("clientId", uuid)); + channel.writeInbound(new GetSegmentRequest("clientId", "segmentId")); GetSegmentResponse response = (GetSegmentResponse) channel.readOutbound(); assertEquals("clientId", response.getClientId()); - assertSame(segment, response.getSegment()); + assertEquals("segmentId", response.getSegmentId()); + assertArrayEquals(data, response.getSegmentData()); } @Test @@ -55,10 +52,10 @@ public class GetSegmentRequestHandlerTes UUID uuid = new UUID(1, 2); StandbySegmentReader reader = mock(StandbySegmentReader.class); - when(reader.readSegment(uuid)).thenReturn(null); + when(reader.readSegment(uuid.toString())).thenReturn(null); EmbeddedChannel channel = new EmbeddedChannel(new GetSegmentRequestHandler(reader)); - channel.writeInbound(new GetSegmentRequest("clientId", uuid)); + channel.writeInbound(new GetSegmentRequest("clientId", uuid.toString())); assertNull(channel.readOutbound()); }
