mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-167 works with a small number of entries, there is a bug if we have a large number of entries
This commit is contained in:
@@ -25,6 +25,7 @@ import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static net.openhft.chronicle.common.StatelessBuilder.remoteAddress;
|
||||
|
||||
@@ -35,7 +36,55 @@ import static net.openhft.chronicle.common.StatelessBuilder.remoteAddress;
|
||||
public class StatelessClientTest {
|
||||
|
||||
|
||||
public static final int SIZE = 10000;
|
||||
public static final int SIZE = 100;
|
||||
|
||||
|
||||
@Test
|
||||
public void testBufferOverFlowPutAllAndEntrySet() throws IOException, InterruptedException {
|
||||
|
||||
final ChronicleMap<Integer, CharSequence> serverMap;
|
||||
final ChronicleMap<Integer, CharSequence> statelessMap;
|
||||
|
||||
|
||||
// stateless client
|
||||
{
|
||||
statelessMap = ChronicleMapBuilder.of(Integer
|
||||
.class, CharSequence.class)
|
||||
.stateless(remoteAddress(new InetSocketAddress("localhost", 8076))).create();
|
||||
}
|
||||
|
||||
// server
|
||||
{
|
||||
serverMap = ChronicleMapBuilder.of(Integer.class, CharSequence.class)
|
||||
.replicators((byte) 2, TcpReplicationConfig.of(8076)).create();
|
||||
}
|
||||
|
||||
|
||||
Map<Integer, CharSequence> payload = new HashMap<Integer, CharSequence>();
|
||||
|
||||
for (int i = 0; i < SIZE; i++) {
|
||||
payload.put(i, "some value=" + i);
|
||||
}
|
||||
|
||||
|
||||
statelessMap.putAll(payload);
|
||||
|
||||
|
||||
Set<Map.Entry<Integer, CharSequence>> entries = statelessMap.entrySet();
|
||||
|
||||
|
||||
|
||||
Map.Entry<Integer, CharSequence> next = entries.iterator().next();
|
||||
|
||||
Assert.assertEquals("some value=" + next.getKey(), next.getValue());
|
||||
|
||||
|
||||
serverMap.close();
|
||||
statelessMap.close();
|
||||
|
||||
// System.out.print("" + entries);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() throws IOException, InterruptedException {
|
||||
@@ -80,8 +129,6 @@ public class StatelessClientTest {
|
||||
statelessMap = ChronicleMapBuilder.of(Integer
|
||||
.class, CharSequence.class)
|
||||
.stateless(remoteAddress(new InetSocketAddress("localhost", 8076))).create();
|
||||
|
||||
|
||||
}
|
||||
|
||||
// server
|
||||
@@ -132,7 +179,9 @@ public class StatelessClientTest {
|
||||
|
||||
statelessMap.putAll(payload);
|
||||
|
||||
Assert.assertEquals("some value=10", statelessMap.get(10));
|
||||
int value = SIZE - 10;
|
||||
|
||||
Assert.assertEquals("some value=" + value, statelessMap.get(value));
|
||||
Assert.assertEquals(SIZE, statelessMap.size());
|
||||
|
||||
serverMap.close();
|
||||
@@ -141,6 +190,9 @@ public class StatelessClientTest {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testEquals() throws IOException, InterruptedException {
|
||||
|
||||
@@ -171,18 +223,17 @@ public class StatelessClientTest {
|
||||
|
||||
Map<Integer, CharSequence> payload = new HashMap<Integer, CharSequence>();
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
// todo still fails for large values
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
payload.put(i, "some value=" + i);
|
||||
}
|
||||
|
||||
|
||||
statelessMap1.putAll(payload);
|
||||
statelessMap2.putAll(payload);
|
||||
|
||||
Assert.assertTrue(statelessMap1.equals(statelessMap2));
|
||||
|
||||
Assert.assertTrue(statelessMap1.equals(payload));
|
||||
Assert.assertTrue(statelessMap2.equals(payload));
|
||||
|
||||
|
||||
statelessMap1.close();
|
||||
statelessMap1.close();
|
||||
|
||||
Reference in New Issue
Block a user