mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-234 fixing CHMUseCaseTest
This commit is contained in:
@@ -17,7 +17,7 @@ import static org.junit.Assert.*;
|
||||
*/
|
||||
// TODO Test for persisted map.
|
||||
// TODO Test for stateless map.
|
||||
@Ignore
|
||||
|
||||
public class CHMUseCasesTest {
|
||||
/**
|
||||
* String is not as efficient as CharSequence as a key or value but easier to use The key can
|
||||
@@ -53,6 +53,28 @@ public class CHMUseCasesTest {
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testStringStringMapMutableValue() throws ExecutionException, InterruptedException {
|
||||
/* TODO run the same test for multiple types of map stores
|
||||
for(ChronicleMapBuilder<String, String> chmb : Arrays.asList(
|
||||
ChronicleMapBuilder.of(String.class, String.class),
|
||||
ChronicleMapBuilder.of(String.class, String.class).file(TMP_FILE),
|
||||
ChronicleMapBuilder.of(String.class, String.class).statelessClient(CONFIG)
|
||||
)) {
|
||||
try (ChronicleMap<String, String> map = chmb.create()) {
|
||||
*/
|
||||
try (ChronicleMap<String, String> map = ChronicleMapBuilder
|
||||
.of(String.class, String.class)
|
||||
.checkSerializedValues() // for testing purposes only
|
||||
.create()) {
|
||||
map.put("Hello", "World");
|
||||
|
||||
try {
|
||||
map.updateForKey("Hello", new Mutator<String, String>() {
|
||||
@Override
|
||||
@@ -60,9 +82,12 @@ public class CHMUseCasesTest {
|
||||
return "New " + s;
|
||||
}
|
||||
});
|
||||
fail("Operation not supported as value is not mutable");
|
||||
|
||||
|
||||
//I disagree the fail - you should be able to put into a string - Rob
|
||||
// fail("Operation not supported as value is not mutable");
|
||||
} catch (Exception ignored) {
|
||||
// TODO replace with the specific exception.
|
||||
ignored.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -73,7 +98,6 @@ public class CHMUseCasesTest {
|
||||
* and variable length serialised.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("Not yet implemented")
|
||||
public void testCharSequenceCharSequenceMap() throws ExecutionException, InterruptedException {
|
||||
try (ChronicleMap<CharSequence, CharSequence> map = ChronicleMapBuilder
|
||||
.of(CharSequence.class, CharSequence.class)
|
||||
@@ -92,38 +116,42 @@ public class CHMUseCasesTest {
|
||||
assertEquals("value-1", value.toString());
|
||||
map.remove("key-1");
|
||||
assertNull(map.getUsing(key, value));
|
||||
map.close();
|
||||
|
||||
assertEquals("New World", map.mapForKey("Hello", new Function<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence apply(CharSequence s) {
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
assertEquals(null, map.mapForKey("No key", new Function<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence apply(CharSequence s) {
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
|
||||
assertEquals("New World !!", map.updateForKey("Hello", new Mutator<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence update(CharSequence s) {
|
||||
((StringBuilder) s).append("!!");
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
assertEquals("New World", map.mapForKey(new StringBuilder("Hello"), new
|
||||
Function<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence apply(CharSequence s) {
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
assertEquals(null, map.mapForKey(new StringBuilder("No key"), new
|
||||
Function<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence apply(CharSequence s) {
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
|
||||
assertEquals("New World !!", map.updateForKey(new StringBuilder("Hello"), new
|
||||
Mutator<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence update(CharSequence s) {
|
||||
((StringBuilder) s).append(" !!");
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
|
||||
assertEquals("New World !!", map.get("Hello").toString());
|
||||
|
||||
assertEquals(null, map.updateForKey("no-key", new Mutator<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence update(CharSequence s) {
|
||||
((StringBuilder) s).append("!!");
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
assertEquals(null, map.updateForKey(new StringBuilder("no-key"), new
|
||||
Mutator<CharSequence, CharSequence>() {
|
||||
@Override
|
||||
public CharSequence update(CharSequence s) {
|
||||
((StringBuilder) s).append("!!");
|
||||
return "New " + s;
|
||||
}
|
||||
}));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -562,17 +590,16 @@ public class CHMUseCasesTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testIntValueIntValueMap() {
|
||||
try (ChronicleMap<IntValue, IntValue> 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);
|
||||
IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue value1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue value2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(11);
|
||||
@@ -645,17 +672,16 @@ public class CHMUseCasesTest {
|
||||
* For unsigned int -> unsigned int entries, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testUnsignedIntValueUnsignedIntValueMap() {
|
||||
try (ChronicleMap<UnsignedIntValue, UnsignedIntValue> 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);
|
||||
UnsignedIntValue key1 = ChronicleMapBuilder.newInstance(UnsignedIntValue.class, true);
|
||||
UnsignedIntValue key2 = ChronicleMapBuilder.newInstance(UnsignedIntValue.class, true);
|
||||
UnsignedIntValue value1 = ChronicleMapBuilder.newInstance(UnsignedIntValue.class, false);
|
||||
UnsignedIntValue value2 = ChronicleMapBuilder.newInstance(UnsignedIntValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(11);
|
||||
@@ -735,10 +761,10 @@ public class CHMUseCasesTest {
|
||||
.disableOversizedEntries(true) // disabled for testing purposes only.
|
||||
.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);
|
||||
IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
ShortValue value1 = ChronicleMapBuilder.newInstance(ShortValue.class, false);
|
||||
ShortValue value2 = ChronicleMapBuilder.newInstance(ShortValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue((short) 11);
|
||||
@@ -811,17 +837,18 @@ public class CHMUseCasesTest {
|
||||
* For int -> unsigned short values, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testIntValueUnsignedShortValueMap() {
|
||||
try (ChronicleMap<IntValue, UnsignedShortValue> 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);
|
||||
IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
UnsignedShortValue value1 = ChronicleMapBuilder.newInstance(UnsignedShortValue.class, false);
|
||||
UnsignedShortValue value2 = ChronicleMapBuilder.newInstance(UnsignedShortValue.class, false);
|
||||
|
||||
//key direct instance, rather direct ref
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(11);
|
||||
@@ -894,17 +921,16 @@ public class CHMUseCasesTest {
|
||||
* For int values, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testIntValueCharValueMap() {
|
||||
try (ChronicleMap<IntValue, CharValue> 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);
|
||||
IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
CharValue value1 = ChronicleMapBuilder.newInstance(CharValue.class, false);
|
||||
CharValue value2 = ChronicleMapBuilder.newInstance(CharValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue((char) 11);
|
||||
@@ -977,17 +1003,16 @@ public class CHMUseCasesTest {
|
||||
* For int-> byte entries, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testIntValueUnsignedByteMap() {
|
||||
try (ChronicleMap<IntValue, UnsignedByteValue> 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);
|
||||
IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
UnsignedByteValue value1 = ChronicleMapBuilder.newInstance(UnsignedByteValue.class, false);
|
||||
UnsignedByteValue value2 = ChronicleMapBuilder.newInstance(UnsignedByteValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(11);
|
||||
@@ -1060,17 +1085,16 @@ public class CHMUseCasesTest {
|
||||
* For int values, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testIntValueBooleanValueMap() {
|
||||
try (ChronicleMap<IntValue, BooleanValue> 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);
|
||||
IntValue key1 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
IntValue key2 = ChronicleMapBuilder.newInstance(IntValue.class, false);
|
||||
BooleanValue value1 = ChronicleMapBuilder.newInstance(BooleanValue.class, false);
|
||||
BooleanValue value2 = ChronicleMapBuilder.newInstance(BooleanValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(true);
|
||||
@@ -1143,17 +1167,16 @@ public class CHMUseCasesTest {
|
||||
* For float values, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testFloatValueFloatValueMap() {
|
||||
try (ChronicleMap<FloatValue, FloatValue> 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);
|
||||
FloatValue key1 = ChronicleMapBuilder.newInstance(FloatValue.class, false);
|
||||
FloatValue key2 = ChronicleMapBuilder.newInstance(FloatValue.class, false);
|
||||
FloatValue value1 = ChronicleMapBuilder.newInstance(FloatValue.class, false);
|
||||
FloatValue value2 = ChronicleMapBuilder.newInstance(FloatValue.class, false);
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(11);
|
||||
@@ -1226,17 +1249,16 @@ public class CHMUseCasesTest {
|
||||
* For double values, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-225 Add support for heap and native object in the same map")
|
||||
public void testDoubleValueDoubleValueMap() {
|
||||
try (ChronicleMap<DoubleValue, DoubleValue> 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);
|
||||
DoubleValue key1 = ChronicleMapBuilder.newInstance(DoubleValue.class, false);
|
||||
DoubleValue key2 = ChronicleMapBuilder.newInstance(DoubleValue.class, false);
|
||||
DoubleValue value1 = ChronicleMapBuilder.newInstance(DoubleValue.class, false);
|
||||
DoubleValue value2 = ChronicleMapBuilder.newInstance(DoubleValue.class, false);
|
||||
|
||||
|
||||
key1.setValue(1);
|
||||
@@ -1312,21 +1334,22 @@ public class CHMUseCasesTest {
|
||||
* For long values, the key can be on heap or off heap.
|
||||
*/
|
||||
@Test
|
||||
@Ignore("HCOLL-226 implement disableOversizedEntries()")
|
||||
public void testLongValueLongValueMap() {
|
||||
try (ChronicleMap<LongValue, LongValue> 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);
|
||||
LongValue key1 = ChronicleMapBuilder.newInstance(LongValue.class, false);
|
||||
LongValue key2 = ChronicleMapBuilder.newInstance(LongValue.class, false);
|
||||
LongValue value1 = ChronicleMapBuilder.newInstance(LongValue.class, false);
|
||||
LongValue value2 = ChronicleMapBuilder.newInstance(LongValue.class, false);
|
||||
|
||||
|
||||
key1.setValue(1);
|
||||
value1.setValue(11);
|
||||
assertEquals(value1, map.get(key1));
|
||||
assertEquals(null, map.get(key1));
|
||||
map.put(key1, value1);
|
||||
|
||||
key2.setValue(2);
|
||||
value2.setValue(22);
|
||||
@@ -1408,25 +1431,35 @@ public class CHMUseCasesTest {
|
||||
|
||||
List<String> list1 = new ArrayList<>();
|
||||
try (WriteContext wc = map.acquireUsingLocked("1", list1)) {
|
||||
assertEquals(Collections.EMPTY_LIST, list1);
|
||||
list1.add("one");
|
||||
assertEquals(Arrays.asList("one"), list1);
|
||||
}
|
||||
|
||||
List<String> list2 = new ArrayList<>();
|
||||
try (ReadContext rc = map.getUsingLocked("1", list2)) {
|
||||
assertTrue(rc.present());
|
||||
assertEquals(Arrays.asList("one"), list2);
|
||||
}
|
||||
|
||||
try (ReadContext rc = map.getUsingLocked("2", list2)) {
|
||||
assertTrue(rc.present());
|
||||
list2.add("two-B"); // this is not written as it only a read context
|
||||
assertEquals(Arrays.asList("two-A", "two-B"), list2);
|
||||
}
|
||||
|
||||
try (WriteContext wc = map.acquireUsingLocked("2", list1)) {
|
||||
list1.add("two-C");
|
||||
assertEquals(Arrays.asList("two-A", "two-C"), list1);
|
||||
}
|
||||
|
||||
try (ReadContext rc = map.getUsingLocked("2", list2)) {
|
||||
assertTrue(rc.present());
|
||||
assertEquals(Arrays.asList("two-A"), list2);
|
||||
assertEquals(Arrays.asList("two-A", "two-C"), list2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("Fix LinkedHashSet Marshaller")
|
||||
public void testSetValue() {
|
||||
try (ChronicleMap<String, Set<String>> map = ChronicleMapBuilder
|
||||
.of(String.class, (Class<Set<String>>) (Class) Set.class)
|
||||
@@ -1447,7 +1480,7 @@ public class CHMUseCasesTest {
|
||||
}
|
||||
try (WriteContext wc = map.acquireUsingLocked("2", list1)) {
|
||||
list1.add("three");
|
||||
assertEquals(new LinkedHashSet<String>(Arrays.asList("three")), list1);
|
||||
assertEquals(new LinkedHashSet<String>(Arrays.asList("one", "three")), list1);
|
||||
}
|
||||
try (ReadContext rc = map.getUsingLocked("2", list2)) {
|
||||
assertTrue(rc.present());
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
package net.openhft.chronicle.map;
|
||||
|
||||
import net.openhft.lang.io.serialization.JDKZObjectSerializer;
|
||||
import net.openhft.lang.io.serialization.JDKObjectSerializer;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.*;
|
||||
@@ -35,7 +35,7 @@ public class RecursiveRefereneChMapTest {
|
||||
file.deleteOnExit();
|
||||
Map<String, StupidCycle> map = ChronicleMapBuilder.of(String.class, StupidCycle.class)
|
||||
.entries(64)
|
||||
.objectSerializer(JDKZObjectSerializer.INSTANCE).create();
|
||||
.objectSerializer(JDKObjectSerializer.INSTANCE).create();
|
||||
map.put("Test", new StupidCycle());
|
||||
map.put("Test2", new StupidCycle2());
|
||||
StupidCycle cycle = (StupidCycle) map.get("Test");
|
||||
|
||||
Reference in New Issue
Block a user