You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by fr...@apache.org on 2016/12/20 14:56:43 UTC

svn commit: r1775295 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/segment/standby/server/ test/java/org/apache/jackrabbit/oak/segment/standby/server/

Author: frm
Date: Tue Dec 20 14:56:43 2016
New Revision: 1775295

URL: http://svn.apache.org/viewvc?rev=1775295&view=rev
Log:
OAK-5350 - Add unit tests for DefaultStandbyBlobReader

Added:
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReaderTest.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReader.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReader.java?rev=1775295&r1=1775294&r2=1775295&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReader.java Tue Dec 20 14:56:43 2016
@@ -21,8 +21,6 @@ import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob;
-import org.apache.jackrabbit.oak.segment.file.FileStore;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,23 +29,21 @@ class DefaultStandbyBlobReader implement
 
     private final Logger log = LoggerFactory.getLogger(DefaultStandbyBlobReader.class);
 
-    private final FileStore store;
+    private final BlobStore store;
 
-    DefaultStandbyBlobReader(FileStore store) {
+    DefaultStandbyBlobReader(BlobStore store) {
         this.store = store;
     }
 
     @Override
     public byte[] readBlob(String blobId) {
-        BlobStore blobStore = store.getBlobStore();
-
-        if (blobStore == null) {
+        if (store == null) {
             return null;
         }
 
         byte[] bytes = null;
 
-        try (InputStream s = new BlobStoreBlob(blobStore, blobId).getNewStream()) {
+        try (InputStream s = store.getInputStream(blobId)) {
             bytes = IOUtils.toByteArray(s);
         } catch (IOException e) {
             log.warn("Error while reading blob content", e);

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=1775295&r1=1775294&r2=1775295&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 Tue Dec 20 14:56:43 2016
@@ -173,7 +173,7 @@ class StandbyServer implements AutoClose
 
                 p.addLast(new GetHeadRequestHandler(new DefaultStandbyHeadReader(store)));
                 p.addLast(new GetSegmentRequestHandler(new DefaultStandbySegmentReader(store)));
-                p.addLast(new GetBlobRequestHandler(new DefaultStandbyBlobReader(store)));
+                p.addLast(new GetBlobRequestHandler(new DefaultStandbyBlobReader(store.getBlobStore())));
                 p.addLast(new GetReferencesRequestHandler(new DefaultStandbyReferencesReader(store)));
 
                 // Exception handler

Added: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReaderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReaderTest.java?rev=1775295&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReaderTest.java (added)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReaderTest.java Tue Dec 20 14:56:43 2016
@@ -0,0 +1,75 @@
+/*
+ * 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.server;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.jackrabbit.oak.spi.blob.BlobStore;
+import org.junit.Test;
+
+public class DefaultStandbyBlobReaderTest {
+
+    private static InputStream newFailingInputStream() {
+        return new InputStream() {
+
+            @Override
+            public int read() throws IOException {
+                throw new IOException("generic error");
+            }
+
+        };
+    }
+
+    @Test
+    public void shouldAlwaysReturnNullWithoutBlobStore() throws Exception {
+        DefaultStandbyBlobReader r = new DefaultStandbyBlobReader(null);
+        assertNull(r.readBlob("id"));
+    }
+
+    @Test
+    public void shouldReturnNullIfBlobDoesNotExist() throws Exception {
+        BlobStore s = mock(BlobStore.class);
+        when(s.getInputStream("id")).thenThrow(new IOException("blob not found"));
+        DefaultStandbyBlobReader r = new DefaultStandbyBlobReader(s);
+        assertNull(r.readBlob("id"));
+    }
+
+    @Test
+    public void shouldReturnNullIfBlobIsUnreadable() throws Exception {
+        BlobStore s = mock(BlobStore.class);
+        when(s.getInputStream("id")).thenReturn(newFailingInputStream());
+        DefaultStandbyBlobReader r = new DefaultStandbyBlobReader(s);
+        assertNull(r.readBlob("id"));
+    }
+
+    @Test
+    public void shouldReturnBlobContent() throws Exception {
+        BlobStore s = mock(BlobStore.class);
+        when(s.getInputStream("id")).thenReturn(new ByteArrayInputStream(new byte[]{1, 2, 3}));
+        DefaultStandbyBlobReader r = new DefaultStandbyBlobReader(s);
+        assertArrayEquals(new byte[]{1, 2, 3}, r.readBlob("id"));
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbyBlobReaderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native