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