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 md...@apache.org on 2016/07/25 09:03:44 UTC
svn commit: r1753965 - in /jackrabbit/oak/trunk/oak-segment-tar/src:
main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java
test/java/org/apache/jackrabbit/oak/segment/SegmentCacheTest.java
Author: mduerig
Date: Mon Jul 25 09:03:44 2016
New Revision: 1753965
URL: http://svn.apache.org/viewvc?rev=1753965&view=rev
Log:
OAK-4474: Finalise SegmentCache
Tests
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCacheTest.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java?rev=1753965&r1=1753964&r2=1753965&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java Mon Jul 25 09:03:44 2016
@@ -29,10 +29,7 @@ import com.google.common.cache.Weigher;
import org.apache.jackrabbit.oak.cache.CacheLIRS;
import org.apache.jackrabbit.oak.cache.CacheLIRS.EvictionCallback;
import org.apache.jackrabbit.oak.cache.CacheStats;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-// FIXME OAK-4474: Finalise SegmentCache: document, add monitoring, management, tests, logging
/**
* A cache for {@link Segment} instances by their {@link SegmentId}.
* <p>
@@ -47,8 +44,6 @@ import org.slf4j.LoggerFactory;
* which always reports a {@link CacheStats#getMissRate() miss rate} of 1.
*/
public class SegmentCache {
- private static final Logger LOG = LoggerFactory.getLogger(SegmentCache.class);
-
public static final int DEFAULT_SEGMENT_CACHE_MB = 256;
private final Weigher<SegmentId, Segment> weigher = new Weigher<SegmentId, Segment>() {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCacheTest.java?rev=1753965&r1=1753964&r2=1753965&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCacheTest.java Mon Jul 25 09:03:44 2016
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.segmen
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.util.concurrent.Callable;
@@ -27,6 +28,36 @@ import org.apache.jackrabbit.oak.cache.C
import org.junit.Test;
public class SegmentCacheTest {
+ @Test
+ public void putTest() {
+ SegmentId id = new SegmentId(mock(SegmentStore.class), -1, -1);
+ Segment segment = mock(Segment.class);
+ when(segment.getSegmentId()).thenReturn(id);
+ SegmentCache cache = new SegmentCache(1);
+
+ cache.putSegment(segment);
+ assertEquals(segment, id.getSegment());
+ }
+
+ @Test
+ public void invalidateTests() {
+ Segment segment1 = mock(Segment.class);
+ Segment segment2 = mock(Segment.class);
+ SegmentStore store = mock(SegmentStore.class);
+ SegmentId id = new SegmentId(store, -1, -1);
+ when(segment1.getSegmentId()).thenReturn(id);
+ SegmentCache cache = new SegmentCache(1);
+
+ cache.putSegment(segment1);
+ assertEquals(segment1, id.getSegment());
+
+ // Clearing the cache should cause an eviction call back for id
+ cache.clear();
+
+ // Check that this was the case by loading a different segment
+ when(store.readSegment(id)).thenReturn(segment2);
+ assertEquals(segment2, id.getSegment());
+ }
@Test
public void statsTest() throws Exception {