From 50a337af0de2b8bc43e4917553272f3561d758ad Mon Sep 17 00:00:00 2001 From: Peter Lawrey Date: Sun, 30 Nov 2014 13:44:59 +0200 Subject: [PATCH] HCOLL-211 Add marshallers for List and Set. --- pom.xml | 2 +- .../chronicle/map/ChronicleMapBuilder.java | 8 + .../chronicle/map/CHMUseCasesTest.java | 1613 +++++++++-------- .../chronicle/map/ChronicleMapTest.java | 3 +- 4 files changed, 859 insertions(+), 767 deletions(-) diff --git a/pom.xml b/pom.xml index bb0f87d3f..2c53d7373 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ net.openhft lang - 6.4.14-SNAPSHOT + 6.4.15-SNAPSHOT diff --git a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java index ce4326803..e499fc74d 100755 --- a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java @@ -523,4 +523,12 @@ public final class ChronicleMapBuilder implements ChronicleMapBuilderI checkSerializedValues() { + throw new UnsupportedOperationException("Not implemented"); + } + + public ChronicleMapBuilder disableOversizedEntries(boolean disableOversizedEntries) { + // throw an exception rather than use oversized entries to test the size is as expected. + throw new UnsupportedOperationException("Not implemented"); + } } diff --git a/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java b/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java index 4cb7648fb..68affabf2 100644 --- a/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java +++ b/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java @@ -1,8 +1,8 @@ package net.openhft.chronicle.map; +import net.openhft.lang.io.serialization.impl.*; import net.openhft.lang.model.DataValueClasses; import net.openhft.lang.values.*; -import org.junit.Ignore; import org.junit.Test; import java.nio.ByteBuffer; @@ -22,7 +22,6 @@ public class CHMUseCasesTest { * variable length serialised. */ @Test - @Ignore public void testStringStringMap() throws ExecutionException, InterruptedException { /* TODO run the same test for multiple types of map stores for(ChronicleMapBuilder chmb : Arrays.asList( @@ -35,7 +34,7 @@ public class CHMUseCasesTest { */ try (ChronicleMap map = ChronicleMapBuilder .of(String.class, String.class) -// TODO .checkSerializedValues() + .checkSerializedValues() // for testng purposes only .create()) { map.put("Hello", "World"); assertEquals("World", map.get("Hello")); @@ -76,10 +75,10 @@ public class CHMUseCasesTest { * serialised. */ @Test - @Ignore public void testCharSequenceCharSequenceMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(CharSequence.class, CharSequence.class) + .checkSerializedValues() // for testng purposes only .create()) { map.put("Hello", "World"); StringBuilder key = new StringBuilder(); @@ -138,10 +137,10 @@ public class CHMUseCasesTest { * StringValue represents any bean which contains a String Value */ @Test - @Ignore public void testStringValueStringValueMap() { try (ChronicleMap map = ChronicleMapBuilder .of(StringValue.class, StringValue.class) + .checkSerializedValues() // for testng purposes only .create()) { StringValue key1 = DataValueClasses.newDirectInstance(StringValue.class); @@ -230,12 +229,11 @@ public class CHMUseCasesTest { } @Test - @Ignore public void testIntegerIntegerMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(Integer.class, Integer.class) .entrySize(8) - // TODO .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries(true) // disabled for testing purposes only. .create()) { Integer key1; Integer key2; @@ -290,12 +288,11 @@ public class CHMUseCasesTest { } @Test - @Ignore public void testLongLongMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(Long.class, Long.class) .entrySize(16) - // TODO .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries(true) // disabled for testing purposes only. .create()) { map.put(1L, 11L); @@ -340,11 +337,10 @@ public class CHMUseCasesTest { } @Test - @Ignore public void testDoubleDoubleMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(Double.class, Double.class) - // TODO .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries(true) // disabled for testing purposes only. .entrySize(16) .create()) { @@ -390,11 +386,10 @@ public class CHMUseCasesTest { } @Test - @Ignore public void testByteArrayByteArrayMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(byte[].class, byte[].class) - // TODO .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries(true) // disabled for testing purposes only. .entrySize(12) .create()) { byte[] key1 = {1, 1, 1, 1}; @@ -441,11 +436,10 @@ public class CHMUseCasesTest { } @Test - @Ignore public void testByteBufferByteBufferMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(ByteBuffer.class, ByteBuffer.class) - // TODO .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries(true) // disabled for testing purposes only. .entrySize(12) .create()) { ByteBuffer key1 = ByteBuffer.wrap(new byte[]{1, 1, 1, 1}); @@ -465,6 +459,8 @@ public class CHMUseCasesTest { return slice; } }; + + map.put(key1, value1); assertBBEquals(ByteBuffer.wrap(new byte[]{11, 11}), map.mapForKey(key1, function)); assertEquals(null, map.mapForKey(key2, function)); @@ -479,6 +475,51 @@ public class CHMUseCasesTest { assertBBEquals(ByteBuffer.wrap(new byte[]{12, 10, 11, 11}), map.get(key1)); + + map.put(key1, value1); + map.put(key2, value2); + ByteBuffer valueA = ByteBuffer.allocateDirect(8); + ByteBuffer valueB = ByteBuffer.allocate(8); + try (ReadContext rc = map.getUsingLocked(key1, valueA)) { + assertTrue(rc.present()); + assertBBEquals(value1, valueA); + } + try (ReadContext rc = map.getUsingLocked(key2, valueA)) { + assertTrue(rc.present()); + assertBBEquals(value2, valueA); + } + + try (ReadContext rc = map.getUsingLocked(key1, valueB)) { + assertTrue(rc.present()); + assertBBEquals(value1, valueB); + } + try (ReadContext rc = map.getUsingLocked(key2, valueB)) { + assertTrue(rc.present()); + assertBBEquals(value2, valueB); + } + + + try (WriteContext wc = map.acquireUsingLocked(key1, valueA)) { + assertBBEquals(value1, valueA); + appendMode(valueA); + valueA.putInt(12345); + valueA.flip(); + } + try (WriteContext wc = map.acquireUsingLocked(key1, valueB)) { + assertBBEquals(value1, valueB); + appendMode(valueB); + valueB.putShort((short) 12345); + valueB.flip(); + } + try (ReadContext rc = map.getUsingLocked(key1, valueA)) { + assertTrue(rc.present()); + ByteBuffer bb1 = ByteBuffer.allocate(8); + bb1.put(value1); + bb1.putInt(12345); + bb1.flip(); + assertBBEquals(bb1, valueA); + } + ByteBuffer key3 = ByteBuffer.wrap(new byte[]{3, 3, 3, 3}); ByteBuffer value3 = ByteBuffer.wrap(new byte[]{4, 4, 4, 4}); @@ -489,12 +530,16 @@ public class CHMUseCasesTest { } } + private static void appendMode(ByteBuffer valueA) { + valueA.position(valueA.limit()); + valueA.limit(valueA.capacity()); + } + @Test - @Ignore public void testByteBufferDirectByteBufferMap() throws ExecutionException, InterruptedException { try (ChronicleMap map = ChronicleMapBuilder .of(ByteBuffer.class, ByteBuffer.class) - // TODO .disableOversizedEntries(true) // disabled for testing purposes only. + .disableOversizedEntries(true) // disabled for testing purposes only. .entrySize(12) .create()) { ByteBuffer key1 = ByteBuffer.wrap(new byte[]{1, 1, 1, 1}); @@ -552,788 +597,818 @@ public class CHMUseCasesTest { } @Test - @Ignore public void testIntValueIntValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(IntValue.class, IntValue.class).entrySize(8).create(); - IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue key2 = DataValueClasses.newInstance(IntValue.class); - IntValue value1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue value2 = DataValueClasses.newInstance(IntValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(IntValue.class, IntValue.class) + .disableOversizedEntries(true) // disabled for testing purposes only. + .entrySize(8) + .create()) { + IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue key2 = DataValueClasses.newInstance(IntValue.class); + IntValue value1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue value2 = DataValueClasses.newInstance(IntValue.class); - key1.setValue(1); - value1.setValue(11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue()); - value1.addValue(123); - assertEquals(123, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue()); - value2.addValue(1230 - 123); - assertEquals(1230, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue()); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue()); + value1.addValue(123); + assertEquals(123, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue()); + value2.addValue(1230 - 123); + assertEquals(1230, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue()); - value2.addValue(123); - assertEquals(123, value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue()); + value2.addValue(123); + assertEquals(123, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue()); + value1.addValue(1230 - 123); + assertEquals(1230, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue()); - value1.addValue(1230 - 123); - assertEquals(1230, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue()); - } - map.close(); } /** * For unsigned int -> unsigned int entries, the key can be on heap or off heap. */ @Test - @Ignore public void testUnsignedIntValueUnsignedIntValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(UnsignedIntValue.class, UnsignedIntValue.class).entrySize(8).create(); - UnsignedIntValue key1 = DataValueClasses.newDirectInstance(UnsignedIntValue.class); - UnsignedIntValue key2 = DataValueClasses.newInstance(UnsignedIntValue.class); - UnsignedIntValue value1 = DataValueClasses.newDirectInstance(UnsignedIntValue.class); - UnsignedIntValue value2 = DataValueClasses.newInstance(UnsignedIntValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(UnsignedIntValue.class, UnsignedIntValue.class) + .disableOversizedEntries(true) // disabled for testing purposes only. + .entrySize(8) + .create()) { + UnsignedIntValue key1 = DataValueClasses.newDirectInstance(UnsignedIntValue.class); + UnsignedIntValue key2 = DataValueClasses.newInstance(UnsignedIntValue.class); + UnsignedIntValue value1 = DataValueClasses.newDirectInstance(UnsignedIntValue.class); + UnsignedIntValue value2 = DataValueClasses.newInstance(UnsignedIntValue.class); - key1.setValue(1); - value1.setValue(11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue()); - value1.addValue(123); - assertEquals(123, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue()); - value2.addValue(1230 - 123); - assertEquals(1230, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue()); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue()); + value1.addValue(123); + assertEquals(123, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue()); + value2.addValue(1230 - 123); + assertEquals(1230, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue()); - value2.addValue(123); - assertEquals(123, value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue()); + value2.addValue(123); + assertEquals(123, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue()); + value1.addValue(1230 - 123); + assertEquals(1230, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue()); - value1.addValue(1230 - 123); - assertEquals(1230, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue()); - } - map.close(); } /** * For int values, the key can be on heap or off heap. */ @Test - @Ignore public void testIntValueShortValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(IntValue.class, ShortValue.class).entrySize(6).create(); - IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue key2 = DataValueClasses.newInstance(IntValue.class); - ShortValue value1 = DataValueClasses.newDirectInstance(ShortValue.class); - ShortValue value2 = DataValueClasses.newInstance(ShortValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(IntValue.class, ShortValue.class) + .disableOversizedEntries(true) // disabled for testing purposes only. + .entrySize(6) + .create()) { - key1.setValue(1); - value1.setValue((short) 11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue key2 = DataValueClasses.newInstance(IntValue.class); + ShortValue value1 = DataValueClasses.newDirectInstance(ShortValue.class); + ShortValue value2 = DataValueClasses.newInstance(ShortValue.class); - key2.setValue(2); - value2.setValue((short) 22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key1.setValue(1); + value1.setValue((short) 11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + key2.setValue(2); + value2.setValue((short) 22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue()); - value1.addValue((short) 123); - assertEquals(123, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue()); - value2.addValue((short) (1230 - 123)); - assertEquals(1230, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue()); - value2.addValue((short) 123); - assertEquals(123, value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue()); + value1.addValue((short) 123); + assertEquals(123, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue()); + value2.addValue((short) (1230 - 123)); + assertEquals(1230, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue()); + } + + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue()); + value2.addValue((short) 123); + assertEquals(123, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue()); + value1.addValue((short) (1230 - 123)); + assertEquals(1230, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue()); - value1.addValue((short) (1230 - 123)); - assertEquals(1230, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue()); - } - map.close(); } /** * For int -> unsigned short values, the key can be on heap or off heap. */ @Test - @Ignore public void testIntValueUnsignedShortValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(IntValue.class, UnsignedShortValue.class).entrySize(6).create(); - IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue key2 = DataValueClasses.newInstance(IntValue.class); - UnsignedShortValue value1 = DataValueClasses.newDirectInstance(UnsignedShortValue.class); - UnsignedShortValue value2 = DataValueClasses.newInstance(UnsignedShortValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(IntValue.class, UnsignedShortValue.class) + .entrySize(6) + .disableOversizedEntries(true) // disabled for testing purposes only. + .create()) { + IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue key2 = DataValueClasses.newInstance(IntValue.class); + UnsignedShortValue value1 = DataValueClasses.newDirectInstance(UnsignedShortValue.class); + UnsignedShortValue value2 = DataValueClasses.newInstance(UnsignedShortValue.class); - key1.setValue(1); - value1.setValue(11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue()); - value1.addValue(123); - assertEquals(123, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue()); - value2.addValue(1230 - 123); - assertEquals(1230, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue()); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue()); + value1.addValue(123); + assertEquals(123, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue()); + value2.addValue(1230 - 123); + assertEquals(1230, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue()); - value2.addValue(123); - assertEquals(123, value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue()); + value2.addValue(123); + assertEquals(123, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue()); + value1.addValue(1230 - 123); + assertEquals(1230, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue()); - value1.addValue(1230 - 123); - assertEquals(1230, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue()); - } - map.close(); } /** * For int values, the key can be on heap or off heap. */ @Test - @Ignore public void testIntValueCharValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(IntValue.class, CharValue.class).entrySize(6).create(); - IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue key2 = DataValueClasses.newInstance(IntValue.class); - CharValue value1 = DataValueClasses.newDirectInstance(CharValue.class); - CharValue value2 = DataValueClasses.newInstance(CharValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(IntValue.class, CharValue.class) + .disableOversizedEntries(true) // disabled for testing purposes only. + .entrySize(6) + .create()) { + IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue key2 = DataValueClasses.newInstance(IntValue.class); + CharValue value1 = DataValueClasses.newDirectInstance(CharValue.class); + CharValue value2 = DataValueClasses.newInstance(CharValue.class); - key1.setValue(1); - value1.setValue((char) 11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue((char) 11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue((char) 22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue((char) 22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals('\0', value1.getValue()); - value1.setValue('@'); - assertEquals('@', value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals('@', value2.getValue()); - value2.setValue('#'); - assertEquals('#', value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals('#', value1.getValue()); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals('\0', value1.getValue()); + value1.setValue('@'); + assertEquals('@', value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals('@', value2.getValue()); + value2.setValue('#'); + assertEquals('#', value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals('#', value1.getValue()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals('\0', value2.getValue()); - value2.setValue(';'); - assertEquals(';', value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals('\0', value2.getValue()); + value2.setValue(';'); + assertEquals(';', value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(';', value1.getValue()); + value1.setValue('['); + assertEquals('[', value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals('[', value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(';', value1.getValue()); - value1.setValue('['); - assertEquals('[', value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals('[', value2.getValue()); - } - map.close(); } /** * For int-> byte entries, the key can be on heap or off heap. */ @Test - @Ignore public void testIntValueUnsignedByteMap() { - ChronicleMap map = ChronicleMapBuilder.of(IntValue.class, UnsignedByteValue.class).entrySize(5).create(); - IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue key2 = DataValueClasses.newInstance(IntValue.class); - UnsignedByteValue value1 = DataValueClasses.newDirectInstance(UnsignedByteValue.class); - UnsignedByteValue value2 = DataValueClasses.newInstance(UnsignedByteValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(IntValue.class, UnsignedByteValue.class) + .entrySize(5) + .disableOversizedEntries(true) // disabled for testing purposes only. + .create()) { + IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue key2 = DataValueClasses.newInstance(IntValue.class); + UnsignedByteValue value1 = DataValueClasses.newDirectInstance(UnsignedByteValue.class); + UnsignedByteValue value2 = DataValueClasses.newInstance(UnsignedByteValue.class); - key1.setValue(1); - value1.setValue(11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue()); - value1.addValue(234); - assertEquals(234, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(234, value2.getValue()); - value2.addValue(-100); - assertEquals(134, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(134, value1.getValue()); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue()); + value1.addValue(234); + assertEquals(234, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(234, value2.getValue()); + value2.addValue(-100); + assertEquals(134, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(134, value1.getValue()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue()); - value2.addValue((byte) 123); - assertEquals(123, value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue()); + value2.addValue((byte) 123); + assertEquals(123, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue()); + value1.addValue((byte) -111); + assertEquals(12, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(12, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue()); - value1.addValue((byte) -111); - assertEquals(12, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(12, value2.getValue()); - } - map.close(); } /** * For int values, the key can be on heap or off heap. */ @Test - @Ignore public void testIntValueBooleanValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(IntValue.class, BooleanValue.class).entrySize(5).create(); - IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); - IntValue key2 = DataValueClasses.newInstance(IntValue.class); - BooleanValue value1 = DataValueClasses.newDirectInstance(BooleanValue.class); - BooleanValue value2 = DataValueClasses.newInstance(BooleanValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(IntValue.class, BooleanValue.class) + .disableOversizedEntries(true) // disabled for testing purposes only. + .entrySize(5) + .create()) { + IntValue key1 = DataValueClasses.newDirectInstance(IntValue.class); + IntValue key2 = DataValueClasses.newInstance(IntValue.class); + BooleanValue value1 = DataValueClasses.newDirectInstance(BooleanValue.class); + BooleanValue value2 = DataValueClasses.newInstance(BooleanValue.class); - key1.setValue(1); - value1.setValue(true); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); - - key2.setValue(2); - value2.setValue(false); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); - - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(true, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(false, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(true, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(false, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } - - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(false, value1.getValue()); + key1.setValue(1); value1.setValue(true); - assertEquals(true, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(true, value2.getValue()); - value2.setValue(false); - assertEquals(false, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(false, value1.getValue()); - } + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(false, value2.getValue()); - value2.setValue(true); - assertEquals(true, value2.getValue()); + key2.setValue(2); + value2.setValue(false); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); + + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(true, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(false, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(true, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(false, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } + + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(false, value1.getValue()); + value1.setValue(true); + assertEquals(true, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(true, value2.getValue()); + value2.setValue(false); + assertEquals(false, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(false, value1.getValue()); + } + + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(false, value2.getValue()); + value2.setValue(true); + assertEquals(true, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(true, value1.getValue()); + value1.setValue(false); + assertEquals(false, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(false, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(true, value1.getValue()); - value1.setValue(false); - assertEquals(false, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(false, value2.getValue()); - } - map.close(); } /** * For float values, the key can be on heap or off heap. */ @Test - @Ignore public void testFloatValueFloatValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(FloatValue.class, FloatValue.class).entrySize(8).create(); - FloatValue key1 = DataValueClasses.newDirectInstance(FloatValue.class); - FloatValue key2 = DataValueClasses.newInstance(FloatValue.class); - FloatValue value1 = DataValueClasses.newDirectInstance(FloatValue.class); - FloatValue value2 = DataValueClasses.newInstance(FloatValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(FloatValue.class, FloatValue.class) + .entrySize(8) + .disableOversizedEntries(true) // disabled for testing purposes only. + .create()) { + FloatValue key1 = DataValueClasses.newDirectInstance(FloatValue.class); + FloatValue key2 = DataValueClasses.newInstance(FloatValue.class); + FloatValue value1 = DataValueClasses.newDirectInstance(FloatValue.class); + FloatValue value2 = DataValueClasses.newInstance(FloatValue.class); - key1.setValue(1); - value1.setValue(11); - map.put(key1, value1); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + map.put(key1, value1); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue(), 0); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue(), 0); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue(), 0); - value1.addValue(123); - assertEquals(123, value1.getValue(), 0); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue(), 0); - value2.addValue(1230 - 123); - assertEquals(1230, value2.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue(), 0); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue(), 0); + value1.addValue(123); + assertEquals(123, value1.getValue(), 0); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue(), 0); + value2.addValue(1230 - 123); + assertEquals(1230, value2.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue(), 0); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue(), 0); - value2.addValue(123); - assertEquals(123, value2.getValue(), 0); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue(), 0); + value2.addValue(123); + assertEquals(123, value2.getValue(), 0); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue(), 0); + value1.addValue(1230 - 123); + assertEquals(1230, value1.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue(), 0); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue(), 0); - value1.addValue(1230 - 123); - assertEquals(1230, value1.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue(), 0); - } - map.close(); } /** * For double values, the key can be on heap or off heap. */ @Test - @Ignore public void testDoubleValueDoubleValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(DoubleValue.class, DoubleValue.class).entrySize(16).create(); - DoubleValue key1 = DataValueClasses.newDirectInstance(DoubleValue.class); - DoubleValue key2 = DataValueClasses.newInstance(DoubleValue.class); - DoubleValue value1 = DataValueClasses.newDirectInstance(DoubleValue.class); - DoubleValue value2 = DataValueClasses.newInstance(DoubleValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(DoubleValue.class, DoubleValue.class) + .entrySize(16) + .create()) { + DoubleValue key1 = DataValueClasses.newDirectInstance(DoubleValue.class); + DoubleValue key2 = DataValueClasses.newInstance(DoubleValue.class); + DoubleValue value1 = DataValueClasses.newDirectInstance(DoubleValue.class); + DoubleValue value2 = DataValueClasses.newInstance(DoubleValue.class); - key1.setValue(1); - value1.setValue(11); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue(), 0); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue(), 0); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue(), 0); - value1.addValue(123); - assertEquals(123, value1.getValue(), 0); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue(), 0); - value2.addValue(1230 - 123); - assertEquals(1230, value2.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue(), 0); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue(), 0); + value1.addValue(123); + assertEquals(123, value1.getValue(), 0); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue(), 0); + value2.addValue(1230 - 123); + assertEquals(1230, value2.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue(), 0); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue(), 0); - value2.addValue(123); - assertEquals(123, value2.getValue(), 0); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue(), 0); + value2.addValue(123); + assertEquals(123, value2.getValue(), 0); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue(), 0); + value1.addValue(1230 - 123); + assertEquals(1230, value1.getValue(), 0); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue(), 0); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue(), 0); - value1.addValue(1230 - 123); - assertEquals(1230, value1.getValue(), 0); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue(), 0); - } - map.close(); } /** * For long values, the key can be on heap or off heap. */ @Test - @Ignore public void testLongValueLongValueMap() { - ChronicleMap map = ChronicleMapBuilder.of(LongValue.class, LongValue.class).entrySize(16).create(); - LongValue key1 = DataValueClasses.newDirectInstance(LongValue.class); - LongValue key2 = DataValueClasses.newInstance(LongValue.class); - LongValue value1 = DataValueClasses.newDirectInstance(LongValue.class); - LongValue value2 = DataValueClasses.newInstance(LongValue.class); + try (ChronicleMap map = ChronicleMapBuilder + .of(LongValue.class, LongValue.class) + .entrySize(16) + .disableOversizedEntries(true) // disabled for testing purposes only. + .create()) { + LongValue key1 = DataValueClasses.newDirectInstance(LongValue.class); + LongValue key2 = DataValueClasses.newInstance(LongValue.class); + LongValue value1 = DataValueClasses.newDirectInstance(LongValue.class); + LongValue value2 = DataValueClasses.newInstance(LongValue.class); - key1.setValue(1); - value1.setValue(11); - assertEquals(value1, map.get(key1)); + key1.setValue(1); + value1.setValue(11); + assertEquals(value1, map.get(key1)); - key2.setValue(2); - value2.setValue(22); - map.put(key2, value2); - assertEquals(value2, map.get(key2)); + key2.setValue(2); + value2.setValue(22); + map.put(key2, value2); + assertEquals(value2, map.get(key2)); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(11, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value1)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value2)) { - assertTrue(rc.present()); - assertEquals(11, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(22, value2.getValue()); - } - key1.setValue(3); - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertFalse(rc.present()); - } - key2.setValue(4); - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertFalse(rc.present()); - } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(11, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value1)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value2)) { + assertTrue(rc.present()); + assertEquals(11, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(22, value2.getValue()); + } + key1.setValue(3); + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertFalse(rc.present()); + } + key2.setValue(4); + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertFalse(rc.present()); + } - try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { - assertEquals(0, value1.getValue()); - value1.addValue(123); - assertEquals(123, value1.getValue()); - } - try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { - assertEquals(123, value2.getValue()); - value2.addValue(1230 - 123); - assertEquals(1230, value2.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key1, value1)) { - assertTrue(rc.present()); - assertEquals(1230, value1.getValue()); - } + try (WriteContext wc = map.acquireUsingLocked(key1, value1)) { + assertEquals(0, value1.getValue()); + value1.addValue(123); + assertEquals(123, value1.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key1, value2)) { + assertEquals(123, value2.getValue()); + value2.addValue(1230 - 123); + assertEquals(1230, value2.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key1, value1)) { + assertTrue(rc.present()); + assertEquals(1230, value1.getValue()); + } - try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { - assertEquals(0, value2.getValue()); - value2.addValue(123); - assertEquals(123, value2.getValue()); + try (WriteContext wc = map.acquireUsingLocked(key2, value2)) { + assertEquals(0, value2.getValue()); + value2.addValue(123); + assertEquals(123, value2.getValue()); + } + try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { + assertEquals(123, value1.getValue()); + value1.addValue(1230 - 123); + assertEquals(1230, value1.getValue()); + } + try (ReadContext rc = map.getUsingLocked(key2, value2)) { + assertTrue(rc.present()); + assertEquals(1230, value2.getValue()); + } } - try (WriteContext wc = map.acquireUsingLocked(key2, value1)) { - assertEquals(123, value1.getValue()); - value1.addValue(1230 - 123); - assertEquals(1230, value1.getValue()); - } - try (ReadContext rc = map.getUsingLocked(key2, value2)) { - assertTrue(rc.present()); - assertEquals(1230, value2.getValue()); - } - map.close(); } /** @@ -1346,119 +1421,127 @@ public class CHMUseCasesTest { @Test - @Ignore public void testListValue() { - ChronicleMap> map = ChronicleMapBuilder.of(String.class, (Class>) (Class) List.class).create(); + try (ChronicleMap> map = ChronicleMapBuilder + .of(String.class, (Class>) (Class) List.class) + .valueMarshaller(ListMarshaller.of(new StringMarshaller(8))) + .create()) { - map.put("1", Collections.emptyList()); - map.put("2", Arrays.asList("one")); + map.put("1", Collections.emptyList()); + map.put("2", Arrays.asList("one")); - List list1 = new ArrayList<>(); - try (WriteContext wc = map.acquireUsingLocked("1", list1)) { - list1.add("two"); - assertEquals(Arrays.asList("two"), list1); + List list1 = new ArrayList<>(); + try (WriteContext wc = map.acquireUsingLocked("1", list1)) { + list1.add("two"); + assertEquals(Arrays.asList("two"), list1); + } + List list2 = new ArrayList<>(); + try (ReadContext rc = map.getUsingLocked("1", list2)) { + assertTrue(rc.present()); + assertEquals(Arrays.asList("two"), list2); + } + try (WriteContext wc = map.acquireUsingLocked("2", list1)) { + list1.add("three"); + assertEquals(Arrays.asList("three"), list1); + } + try (ReadContext rc = map.getUsingLocked("2", list2)) { + assertTrue(rc.present()); + assertEquals(Arrays.asList("one", "three"), list2); + } } - List list2 = new ArrayList<>(); - try (ReadContext rc = map.getUsingLocked("1", list2)) { - assertTrue(rc.present()); - assertEquals(Arrays.asList("two"), list2); - } - try (WriteContext wc = map.acquireUsingLocked("2", list1)) { - list1.add("three"); - assertEquals(Arrays.asList("three"), list1); - } - try (ReadContext rc = map.getUsingLocked("2", list2)) { - assertTrue(rc.present()); - assertEquals(Arrays.asList("one", "three"), list2); - } - map.close(); } @Test - @Ignore public void testSetValue() { - ChronicleMap> map = ChronicleMapBuilder.of(String.class, (Class>) (Class) Set.class).create(); + try (ChronicleMap> map = ChronicleMapBuilder + .of(String.class, (Class>) (Class) Set.class) + .valueMarshaller(SetMarshaller.of(new StringMarshaller(8))) + .create()) { - map.put("1", Collections.emptySet()); - map.put("2", new LinkedHashSet(Arrays.asList("one"))); + map.put("1", Collections.emptySet()); + map.put("2", new LinkedHashSet(Arrays.asList("one"))); - Set list1 = new LinkedHashSet<>(); - try (WriteContext wc = map.acquireUsingLocked("1", list1)) { - list1.add("two"); - assertEquals(new LinkedHashSet(Arrays.asList("two")), list1); + Set list1 = new LinkedHashSet<>(); + try (WriteContext wc = map.acquireUsingLocked("1", list1)) { + list1.add("two"); + assertEquals(new LinkedHashSet(Arrays.asList("two")), list1); + } + Set list2 = new LinkedHashSet<>(); + try (ReadContext rc = map.getUsingLocked("1", list2)) { + assertTrue(rc.present()); + assertEquals(new LinkedHashSet(Arrays.asList("two")), list2); + } + try (WriteContext wc = map.acquireUsingLocked("2", list1)) { + list1.add("three"); + assertEquals(new LinkedHashSet(Arrays.asList("three")), list1); + } + try (ReadContext rc = map.getUsingLocked("2", list2)) { + assertTrue(rc.present()); + assertEquals(new LinkedHashSet(Arrays.asList("one", "three")), list2); + } } - Set list2 = new LinkedHashSet<>(); - try (ReadContext rc = map.getUsingLocked("1", list2)) { - assertTrue(rc.present()); - assertEquals(new LinkedHashSet(Arrays.asList("two")), list2); - } - try (WriteContext wc = map.acquireUsingLocked("2", list1)) { - list1.add("three"); - assertEquals(new LinkedHashSet(Arrays.asList("three")), list1); - } - try (ReadContext rc = map.getUsingLocked("2", list2)) { - assertTrue(rc.present()); - assertEquals(new LinkedHashSet(Arrays.asList("one", "three")), list2); - } - map.close(); } @Test - @Ignore public void testMapStringStringValue() { - ChronicleMap> map = ChronicleMapBuilder.of(String.class, (Class>) (Class) Map.class).create(); + try (ChronicleMap> map = ChronicleMapBuilder + .of(String.class, (Class>) (Class) Map.class) + .valueMarshaller(MapMarshaller.of(new StringMarshaller(16), new StringMarshaller(16))) + .create()) { - map.put("1", Collections.emptyMap()); - map.put("2", mapOf("one", "uni")); + map.put("1", Collections.emptyMap()); + map.put("2", mapOf("one", "uni")); - Map map1 = new LinkedHashMap<>(); - try (WriteContext wc = map.acquireUsingLocked("1", map1)) { - map1.put("two", "bi"); - assertEquals(mapOf("two", "bi"), map1); + Map map1 = new LinkedHashMap<>(); + try (WriteContext wc = map.acquireUsingLocked("1", map1)) { + map1.put("two", "bi"); + assertEquals(mapOf("two", "bi"), map1); + } + Map map2 = new LinkedHashMap<>(); + try (ReadContext rc = map.getUsingLocked("1", map2)) { + assertTrue(rc.present()); + assertEquals(mapOf("two", "bi"), map2); + } + try (WriteContext wc = map.acquireUsingLocked("2", map1)) { + map1.put("three", "tri"); + assertEquals(mapOf("one", "uni", "three", "tri"), map1); + } + try (ReadContext rc = map.getUsingLocked("2", map2)) { + assertTrue(rc.present()); + assertEquals(mapOf("one", "uni", "three", "tri"), map2); + } } - Map map2 = new LinkedHashMap<>(); - try (ReadContext rc = map.getUsingLocked("1", map2)) { - assertTrue(rc.present()); - assertEquals(mapOf("two", "bi"), map2); - } - try (WriteContext wc = map.acquireUsingLocked("2", map1)) { - map1.put("three", "tri"); - assertEquals(mapOf("one", "uni", "three", "tri"), map1); - } - try (ReadContext rc = map.getUsingLocked("2", map2)) { - assertTrue(rc.present()); - assertEquals(mapOf("one", "uni", "three", "tri"), map2); - } - map.close(); } @Test - @Ignore public void testMapStringIntegerValue() { - ChronicleMap> map = ChronicleMapBuilder.of(String.class, (Class>) (Class) Map.class).create(); + try (ChronicleMap> map = ChronicleMapBuilder + .of(String.class, (Class>) (Class) Map.class) + .valueMarshaller(MapMarshaller.of(new StringMarshaller(16), new GenericEnumMarshaller(Integer.class, 16))) + .create()) { - map.put("1", Collections.emptyMap()); - map.put("2", mapOf("one", 1)); + map.put("1", Collections.emptyMap()); + map.put("2", mapOf("one", 1)); - Map map1 = new LinkedHashMap<>(); - try (WriteContext wc = map.acquireUsingLocked("1", map1)) { - map1.put("two", 2); - assertEquals(mapOf("two", 2), map1); + Map map1 = new LinkedHashMap<>(); + try (WriteContext wc = map.acquireUsingLocked("1", map1)) { + map1.put("two", 2); + assertEquals(mapOf("two", 2), map1); + } + Map map2 = new LinkedHashMap<>(); + try (ReadContext rc = map.getUsingLocked("1", map2)) { + assertTrue(rc.present()); + assertEquals(mapOf("two", 2), map2); + } + try (WriteContext wc = map.acquireUsingLocked("2", map1)) { + map1.put("three", 3); + assertEquals(mapOf("one", 1, "three", 3), map1); + } + try (ReadContext rc = map.getUsingLocked("2", map2)) { + assertTrue(rc.present()); + assertEquals(mapOf("one", 1, "three", 3), map2); + } } - Map map2 = new LinkedHashMap<>(); - try (ReadContext rc = map.getUsingLocked("1", map2)) { - assertTrue(rc.present()); - assertEquals(mapOf("two", 2), map2); - } - try (WriteContext wc = map.acquireUsingLocked("2", map1)) { - map1.put("three", 3); - assertEquals(mapOf("one", 1, "three", 3), map1); - } - try (ReadContext rc = map.getUsingLocked("2", map2)) { - assertTrue(rc.present()); - assertEquals(mapOf("one", 1, "three", 3), map2); - } - map.close(); } public static Map mapOf(K k, V v, Object... keysAndValues) { diff --git a/src/test/java/net/openhft/chronicle/map/ChronicleMapTest.java b/src/test/java/net/openhft/chronicle/map/ChronicleMapTest.java index 7623304c2..5d0e96998 100755 --- a/src/test/java/net/openhft/chronicle/map/ChronicleMapTest.java +++ b/src/test/java/net/openhft/chronicle/map/ChronicleMapTest.java @@ -136,7 +136,8 @@ public class ChronicleMapTest { public void testRemoveWithKey() throws Exception { final ChronicleMap map = - ChronicleMapBuilder.of(CharSequence.class, CharSequence.class) + ChronicleMapBuilder + .of(CharSequence.class, CharSequence.class) .minSegments(2).create(); assertFalse(map.containsKey("key3"));