package org.caffinitas.ohc; import java.util.HashSet; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.nio.ByteBuffer; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; public class OHCacheBuilderTest { @AfterMethod public void clearProperties() { for (Object k : new HashSet(System.getProperties().keySet())) { String key = (String)k; if (key.startsWith("org.caffinitas.ohc.")) System.getProperties().remove(key); } } @Test public void testHashTableSize() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getHashTableSize(), 8192); builder.hashTableSize(12345); Assert.assertEquals(builder.getHashTableSize(), 12345); System.setProperty("org.caffinitas.ohc.hashTableSize", "98765"); builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getHashTableSize(), 98765); } @Test public void testChunkSize() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getChunkSize(), 0); builder.chunkSize(12345); Assert.assertEquals(builder.getChunkSize(), 12345); System.setProperty("org.caffinitas.ohc.chunkSize", "98765"); builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getChunkSize(), 98765); } @Test public void testCapacity() throws Exception { int cpus = Runtime.getRuntime().availableProcessors(); OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getCapacity(), Math.min(cpus * 16, 64) * 1024 * 1024); builder.capacity(12345); Assert.assertEquals(builder.getCapacity(), 12345); System.setProperty("org.caffinitas.ohc.capacity", "98765"); builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getCapacity(), 98765); } @Test public void testSegmentCount() throws Exception { int cpus = Runtime.getRuntime().availableProcessors(); int segments = cpus * 2; while (Integer.bitCount(segments) != 1) segments++; OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getSegmentCount(), segments); builder.segmentCount(12345); Assert.assertEquals(builder.getSegmentCount(), 12345); System.setProperty("org.caffinitas.ohc.segmentCount", "98765"); builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getSegmentCount(), 98765); } @Test public void testLoadFactor() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getLoadFactor(), .75f); builder.loadFactor(12345); Assert.assertEquals(builder.getLoadFactor(), 12345.0f); System.setProperty("org.caffinitas.ohc.loadFactor", "98765"); builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getLoadFactor(), 98765.0f); } @Test public void testMaxEntrySize() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getMaxEntrySize(), 0L); builder.maxEntrySize(12345); Assert.assertEquals(builder.getMaxEntrySize(), 12345); System.setProperty("org.caffinitas.ohc.maxEntrySize", "98765"); builder = OHCacheBuilder.newBuilder(); Assert.assertEquals(builder.getMaxEntrySize(), 98765); } @Test public void testThrowOOME() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertFalse(builder.isThrowOOME()); builder.throwOOME(true); Assert.assertTrue(builder.isThrowOOME()); System.setProperty("org.caffinitas.ohc.throwOOME", "true"); builder = OHCacheBuilder.newBuilder(); Assert.assertTrue(builder.isThrowOOME()); } @Test public void testExecutorService() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertNull(builder.getExecutorService()); ScheduledExecutorService es = Executors.newScheduledThreadPool(1); builder.executorService(es); es.shutdown(); Assert.assertSame(builder.getExecutorService(), es); } @Test public void testKeySerializer() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertNull(builder.getKeySerializer()); CacheSerializer<String> inst = new CacheSerializer<String>() { public void serialize(String s, ByteBuffer out) { } public String deserialize(ByteBuffer in) { return null; } public int serializedSize(String s) { return 0; } }; builder.keySerializer(inst); Assert.assertSame(builder.getKeySerializer(), inst); } @Test public void testValueSerializer() throws Exception { OHCacheBuilder<String, String> builder = OHCacheBuilder.newBuilder(); Assert.assertNull(builder.getValueSerializer()); CacheSerializer<String> inst = new CacheSerializer<String>() { public void serialize(String s, ByteBuffer out) { } public String deserialize(ByteBuffer in) { return null; } public int serializedSize(String s) { return 0; } }; builder.valueSerializer(inst); Assert.assertSame(builder.getValueSerializer(), inst); } }