From be351fc85687a3e2e27351a4b2bf390526119200 Mon Sep 17 00:00:00 2001 From: Peter Lawrey Date: Tue, 5 Jun 2018 11:32:48 +0100 Subject: [PATCH] Add a test case for externalizable --- .../externalizable/ExternalizableTest.java | 32 +++++++++++++++++++ .../map/externalizable/SomeClass.java | 32 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100755 src/test/java/net/openhft/chronicle/map/externalizable/ExternalizableTest.java create mode 100755 src/test/java/net/openhft/chronicle/map/externalizable/SomeClass.java diff --git a/src/test/java/net/openhft/chronicle/map/externalizable/ExternalizableTest.java b/src/test/java/net/openhft/chronicle/map/externalizable/ExternalizableTest.java new file mode 100755 index 000000000..cce349ad8 --- /dev/null +++ b/src/test/java/net/openhft/chronicle/map/externalizable/ExternalizableTest.java @@ -0,0 +1,32 @@ +package net.openhft.chronicle.map.externalizable; + +import net.openhft.chronicle.core.OS; +import net.openhft.chronicle.map.ChronicleMap; +import net.openhft.chronicle.map.ChronicleMapBuilder; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +public class ExternalizableTest { + @Test + public void externalizable() throws IOException { + String path = OS.TARGET + "/test-" + System.nanoTime() + ".map"; + new File(path).deleteOnExit(); + try (ChronicleMap storage = ChronicleMapBuilder + .of(Long.class, SomeClass.class) + .averageValueSize(128) + .entries(128) + .createPersistedTo(new File(path))) { + SomeClass value = new SomeClass(); + value.hits.add("one"); + value.hits.add("two"); + storage.put(1L, value); + + SomeClass value2 = storage.get(1L); + assertEquals(value.hits, value2.hits); + } + } +} diff --git a/src/test/java/net/openhft/chronicle/map/externalizable/SomeClass.java b/src/test/java/net/openhft/chronicle/map/externalizable/SomeClass.java new file mode 100755 index 000000000..c1616a99d --- /dev/null +++ b/src/test/java/net/openhft/chronicle/map/externalizable/SomeClass.java @@ -0,0 +1,32 @@ +package net.openhft.chronicle.map.externalizable; + +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.ArrayList; +import java.util.List; + +public class SomeClass implements Externalizable { + + final List hits = new ArrayList<>(); + private long id; + + @Override + public void writeExternal(ObjectOutput out) throws IOException { + out.writeLong(id); + out.writeInt(hits.size()); + for (int i = 0; i < hits.size(); i++) { + out.writeObject(hits.get(i)); + } + } + + @Override + public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + id = in.readLong(); + int size = in.readInt(); + for (int i = 0; i < size; i++) { + hits.add((String) in.readObject()); + } + } +} \ No newline at end of file