From dc8b70c1244482e5ae9645a5637362c91aaca0e5 Mon Sep 17 00:00:00 2001 From: leventov Date: Tue, 28 Jul 2015 19:14:21 +0300 Subject: [PATCH] Improved reclamation in TestReplication class in attempt to overcome test inference issues on TC --- .../chronicle/map/TestReplication.java | 75 +++++++++---------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/src/test/java/net/openhft/chronicle/map/TestReplication.java b/src/test/java/net/openhft/chronicle/map/TestReplication.java index 356f9e633..8c83a0161 100644 --- a/src/test/java/net/openhft/chronicle/map/TestReplication.java +++ b/src/test/java/net/openhft/chronicle/map/TestReplication.java @@ -29,11 +29,8 @@ import java.net.InetSocketAddress; */ public class TestReplication { - @Test public void testAllDataGetsReplicated() throws InterruptedException { - - TcpTransportAndNetworkConfig tcpConfigServer1 = TcpTransportAndNetworkConfig.of(8092); @@ -41,29 +38,27 @@ public class TestReplication { TcpTransportAndNetworkConfig.of(8093, new InetSocketAddress("localhost", 8092)); - final ChronicleMap map2 = ChronicleMapBuilder.of(Integer.class, - Integer.class) + try (ChronicleMap map2 = ChronicleMapBuilder + .of(Integer.class, Integer.class) .replication((byte) 2, tcpConfigServer2) .create(); + ChronicleMap map1 = ChronicleMapBuilder + .of(Integer.class, Integer.class) + .replication((byte) 3, tcpConfigServer1) + .create()) { + for (int i = 0; i < 70000; i++) { + map1.put(i, i); + } - final ChronicleMap map1 = ChronicleMapBuilder.of(Integer.class, - Integer.class) - .replication((byte) 3, tcpConfigServer1) - .create(); + for (int i = 0; i < 10; i++) { + Thread.sleep(100); + System.out.println(map2.size()); + } - for (int i = 0; i < 70000; i++) { - map1.put(i, i); + Assert.assertEquals(map1.size(), map2.size()); } - - for (int i = 0; i < 10; i++) { - Thread.sleep(100); - System.out.println(map2.size()); - } - - - Assert.assertEquals(map1.size(),map2.size()); - + System.gc(); } /** @@ -74,6 +69,7 @@ public class TestReplication { public void testReplicationUsingAProxyMapThatsUpdatedViaSharedMemory() throws IOException { ChronicleMap server1 = null; + ChronicleMap forServer1Replication = null; ChronicleMap server2 = null; // server 1 - for this test server1 and server 2 are on the same localhost but different @@ -83,14 +79,12 @@ public class TestReplication { server1 = ChronicleMapBuilder.of(String.class, String.class) - .replication( - (byte) 1).createPersistedTo - (tempFile); + .replication((byte) 1).createPersistedTo(tempFile); TcpTransportAndNetworkConfig serverConfig = TcpTransportAndNetworkConfig.of(8088); // user for replication only - ChronicleMapBuilder.of(String.class, String.class) + forServer1Replication = ChronicleMapBuilder.of(String.class, String.class) .replication((byte) 1, serverConfig).createPersistedTo(tempFile); } @@ -101,28 +95,29 @@ public class TestReplication { TcpTransportAndNetworkConfig server2Config = TcpTransportAndNetworkConfig.of(8090, new InetSocketAddress("localhost", 8088)); - server2 = ChronicleMapBuilder.of(String.class, String - .class).replication((byte) 2, server2Config).create(); + server2 = ChronicleMapBuilder.of(String.class, String.class) + .replication((byte) 2, server2Config).create(); } - final String expected = "value"; - server1.put("key", expected); + try (ChronicleMap s1 = server1; + ChronicleMap r = forServer1Replication; + ChronicleMap s2 = server2) { + + final String expected = "value"; + server1.put("key", expected); - String actual; + String actual; - // we have a while loop here as we have to wait a few seconds for the data to replicate - do { - actual = server2.get("key"); + // we have a while loop here as we have to wait a few seconds for the data to replicate + do { + actual = server2.get("key"); + } + while (actual == null); + + Assert.assertEquals(expected, actual); } - while (actual == null); - - Assert.assertEquals(expected, actual); - + System.gc(); } - - - - }