You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by ta...@apache.org on 2016/07/05 06:15:55 UTC

reef git commit: [REEF-68] Make Wake unit tests robust to port conflicts

Repository: reef
Updated Branches:
  refs/heads/master 50b002946 -> 684774b9c


[REEF-68] Make Wake unit tests robust to port conflicts

This addressed the issue by
  * Giving 0 for port numbers which leads to using random numbers as port numbers,
  * Getting port numbers with getListeningPort() for reuse.
  * Using getMyIdentifer() to directly get remote identifiers.

JIRA:
  [REEF-68](https://issues.apache.org/jira/browse/REEF-68)

Pull Request:
  Closes #1068


Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/684774b9
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/684774b9
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/684774b9

Branch: refs/heads/master
Commit: 684774b9c359ace5dd499dc3ceba4e7ccd65f65b
Parents: 50b0029
Author: Eunhyang Kim <ga...@gmail.com>
Authored: Mon Jul 4 16:20:45 2016 +0900
Committer: taegeonum <ta...@gmail.com>
Committed: Tue Jul 5 15:11:00 2016 +0900

----------------------------------------------------------------------
 .../reef/wake/test/remote/LargeMsgTest.java     |  4 ++--
 .../remote/RemoteIdentifierFactoryTest.java     |  3 +--
 .../wake/test/remote/RemoteManagerTest.java     | 23 +++++++-------------
 .../reef/wake/test/remote/RemoteTest.java       |  8 +++----
 .../wake/test/remote/SmallMessagesTest.java     |  8 +++----
 .../reef/wake/test/remote/TestRemote.java       | 15 +++----------
 .../wake/test/remote/TransportRaceTest.java     |  5 ++---
 .../reef/wake/test/remote/TransportTest.java    |  8 +++----
 8 files changed, 28 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/LargeMsgTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/LargeMsgTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/LargeMsgTest.java
index a78e964..3a9fa2f 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/LargeMsgTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/LargeMsgTest.java
@@ -90,8 +90,8 @@ public class LargeMsgTest {
         new ServerHandler(monitor, dataSize), 1, new LoggingEventHandler<Throwable>());
 
     final String hostAddress = this.localAddressProvider.getLocalAddress();
-    final int port = 7001;
-    final Transport transport = tpFactory.newInstance(hostAddress, port, clientStage, serverStage, 1, 10000);
+    final Transport transport = tpFactory.newInstance(hostAddress, 0, clientStage, serverStage, 1, 10000);
+    final int port = transport.getListeningPort();
     final Link<byte[]> link = transport.open(new InetSocketAddress(hostAddress, port), new PassThroughEncoder(), null);
     final EStage<byte[]> writeSubmitter = new ThreadPoolStage<>("Submitter", new EventHandler<byte[]>() {
 

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteIdentifierFactoryTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteIdentifierFactoryTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteIdentifierFactoryTest.java
index 67e2a69..126316f 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteIdentifierFactoryTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteIdentifierFactoryTest.java
@@ -65,14 +65,13 @@ public class RemoteIdentifierFactoryTest {
     final RemoteManagerFactory remoteManagerFactory = Tang.Factory.getTang().newInjector()
         .getInstance(RemoteManagerFactory.class);
 
-    final int port = 9100;
     final Map<Class<?>, Codec<?>> clazzToCodecMap = new HashMap<>();
     clazzToCodecMap.put(TestEvent.class, new TestEventCodec());
     final Codec<?> codec = new MultiCodec<Object>(clazzToCodecMap);
 
 
     try (final RemoteManager rm =
-             remoteManagerFactory.getInstance("TestRemoteManager", port, codec, new LoggingEventHandler<Throwable>())) {
+             remoteManagerFactory.getInstance("TestRemoteManager", 0, codec, new LoggingEventHandler<Throwable>())) {
       final RemoteIdentifier id = rm.getMyIdentifier();
 
       final IdentifierFactory factory = new DefaultIdentifierFactory();

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteManagerTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteManagerTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteManagerTest.java
index 196d7d6..08426c0 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteManagerTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteManagerTest.java
@@ -67,7 +67,6 @@ public class RemoteManagerTest {
   public final TestName name = new TestName();
 
   private static final String LOG_PREFIX = "TEST ";
-  private static final int PORT = 9100;
 
   @Test
   public void testRemoteManagerTest() throws Exception {
@@ -87,11 +86,10 @@ public class RemoteManagerTest {
     final String hostAddress = localAddressProvider.getLocalAddress();
 
     final RemoteManager rm = this.remoteManagerFactory.getInstance(
-        "name", hostAddress, PORT, codec, new LoggingEventHandler<Throwable>(), false, 3, 10000,
+        "name", hostAddress, 0, codec, new LoggingEventHandler<Throwable>(), false, 3, 10000,
         localAddressProvider, Tang.Factory.getTang().newInjector().getInstance(TcpPortProvider.class));
 
-    final RemoteIdentifierFactory factory = new DefaultRemoteIdentifierFactoryImplementation();
-    final RemoteIdentifier remoteId = factory.getNewInstance("socket://" + hostAddress + ":" + PORT);
+    final RemoteIdentifier remoteId = rm.getMyIdentifier();
     Assert.assertTrue(rm.getMyIdentifier().equals(remoteId));
 
     final EventHandler<StartEvent> proxyConnection = rm.getHandler(remoteId, StartEvent.class);
@@ -191,11 +189,10 @@ public class RemoteManagerTest {
     final String hostAddress = localAddressProvider.getLocalAddress();
 
     final RemoteManager rm = this.remoteManagerFactory.getInstance(
-        "name", hostAddress, PORT, codec, new LoggingEventHandler<Throwable>(), true, 3, 10000,
+        "name", hostAddress, 0, codec, new LoggingEventHandler<Throwable>(), true, 3, 10000,
         localAddressProvider, Tang.Factory.getTang().newInjector().getInstance(TcpPortProvider.class));
 
-    final RemoteIdentifierFactory factory = new DefaultRemoteIdentifierFactoryImplementation();
-    final RemoteIdentifier remoteId = factory.getNewInstance("socket://" + hostAddress + ":" + PORT);
+    final RemoteIdentifier remoteId = rm.getMyIdentifier();
 
     final EventHandler<StartEvent> proxyConnection = rm.getHandler(remoteId, StartEvent.class);
     final EventHandler<TestEvent1> proxyHandler1 = rm.getHandler(remoteId, TestEvent1.class);
@@ -235,11 +232,10 @@ public class RemoteManagerTest {
     final String hostAddress = localAddressProvider.getLocalAddress();
 
     final RemoteManager rm = this.remoteManagerFactory.getInstance(
-        "name", hostAddress, PORT, codec, new LoggingEventHandler<Throwable>(), false, 3, 10000,
+        "name", hostAddress, 0, codec, new LoggingEventHandler<Throwable>(), false, 3, 10000,
         localAddressProvider, Tang.Factory.getTang().newInjector().getInstance(TcpPortProvider.class));
 
-    final RemoteIdentifierFactory factory = new DefaultRemoteIdentifierFactoryImplementation();
-    final RemoteIdentifier remoteId = factory.getNewInstance("socket://" + hostAddress + ":" + PORT);
+    final RemoteIdentifier remoteId = rm.getMyIdentifier();
 
     final EventHandler<TestEvent> proxyHandler = rm.getHandler(remoteId, TestEvent.class);
 
@@ -270,13 +266,10 @@ public class RemoteManagerTest {
     clazzToCodecMap.put(TestEvent.class, new ObjectSerializableCodec<TestEvent>());
     final Codec<?> codec = new MultiCodec<Object>(clazzToCodecMap);
 
-    final String hostAddress = localAddressProvider.getLocalAddress();
-
     final ExceptionHandler errorHandler = new ExceptionHandler(monitor);
 
-    try (final RemoteManager rm = remoteManagerFactory.getInstance("name", PORT, codec, errorHandler)) {
-      final RemoteIdentifierFactory factory = new DefaultRemoteIdentifierFactoryImplementation();
-      final RemoteIdentifier remoteId = factory.getNewInstance("socket://" + hostAddress + ":" + PORT);
+    try (final RemoteManager rm = remoteManagerFactory.getInstance("name", 0, codec, errorHandler)) {
+      final RemoteIdentifier remoteId = rm.getMyIdentifier();
 
       final EventHandler<StartEvent> proxyConnection = rm.getHandler(remoteId, StartEvent.class);
       rm.registerHandler(StartEvent.class, new ExceptionGenEventHandler<StartEvent>("recvExceptionGen"));

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteTest.java
index bd5d472..1b88fa1 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/RemoteTest.java
@@ -117,9 +117,6 @@ public class RemoteTest {
     final Monitor monitor = new Monitor();
     final TimerStage timer = new TimerStage(new TimeoutHandler(monitor), 5000, 5000);
 
-    // port
-    final int port = 9101;
-
     // receiver stage
     // decoder map
     final Map<Class<?>, Decoder<?>> clazzToDecoderMap = new HashMap<>();
@@ -142,7 +139,10 @@ public class RemoteTest {
     final String hostAddress = this.localAddressProvider.getLocalAddress();
 
     // transport
-    final Transport transport = tpFactory.newInstance(hostAddress, port, reRecvStage, reRecvStage, 1, 10000);
+    final Transport transport = tpFactory.newInstance(hostAddress, 0, reRecvStage, reRecvStage, 1, 10000);
+
+    // port
+    final int port = transport.getListeningPort();
 
     // mux encoder with encoder map
     final Map<Class<?>, Encoder<?>> clazzToEncoderMap = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/SmallMessagesTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/SmallMessagesTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/SmallMessagesTest.java
index a2086d8..adedfdc 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/SmallMessagesTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/SmallMessagesTest.java
@@ -69,9 +69,6 @@ public class SmallMessagesTest {
     final Monitor monitor = new Monitor();
     final TimerStage timer = new TimerStage(new TimeoutHandler(monitor), 60000, 60000);
 
-    // port
-    final int port = 9101;
-
     // receiver stage
     // decoder map
     final Map<Class<?>, Decoder<?>> clazzToDecoderMap = new HashMap<>();
@@ -94,7 +91,10 @@ public class SmallMessagesTest {
     final String hostAddress = this.localAddressProvider.getLocalAddress();
 
     // transport
-    final Transport transport = tpFactory.newInstance(hostAddress, port, reRecvStage, reRecvStage, 1, 10000);
+    final Transport transport = tpFactory.newInstance(hostAddress, 0, reRecvStage, reRecvStage, 1, 10000);
+
+    // port
+    final int port = transport.getListeningPort();
 
     // mux encoder with encoder map
     final Map<Class<?>, Encoder<?>> clazzToEncoderMap = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TestRemote.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TestRemote.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TestRemote.java
index f7f40bc..69bb7dd 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TestRemote.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TestRemote.java
@@ -23,8 +23,6 @@ import org.apache.reef.tang.exceptions.InjectionException;
 import org.apache.reef.wake.EventHandler;
 import org.apache.reef.wake.impl.LoggingEventHandler;
 import org.apache.reef.wake.remote.*;
-import org.apache.reef.wake.remote.address.LocalAddressProvider;
-import org.apache.reef.wake.remote.impl.DefaultRemoteIdentifierFactoryImplementation;
 
 import javax.inject.Inject;
 import java.net.UnknownHostException;
@@ -34,26 +32,19 @@ import java.net.UnknownHostException;
  */
 public class TestRemote implements Runnable {
   private final RemoteManagerFactory remoteManagerFactory;
-  private final LocalAddressProvider localAddressProvider;
 
   @Inject
-  public TestRemote(final LocalAddressProvider localAddressProvider,
-                    final RemoteManagerFactory remoteManagerFactory) {
-    this.localAddressProvider = localAddressProvider;
+  public TestRemote(final RemoteManagerFactory remoteManagerFactory) {
     this.remoteManagerFactory = remoteManagerFactory;
   }
 
   @Override
   public void run() {
-    final String hostAddress = localAddressProvider.getLocalAddress();
-    final int myPort = 10011;
-    final int remotePort = 10001;
     final Codec<TestEvent> codec = new TestEventCodec();
     try (RemoteManager rm =
-             remoteManagerFactory.getInstance("name", myPort, codec, new LoggingEventHandler<Throwable>())) {
+             remoteManagerFactory.getInstance("name", 0, codec, new LoggingEventHandler<Throwable>())) {
       // proxy handler
-      final RemoteIdentifierFactory factory = new DefaultRemoteIdentifierFactoryImplementation();
-      final RemoteIdentifier remoteId = factory.getNewInstance("socket://" + hostAddress + ":" + remotePort);
+      final RemoteIdentifier remoteId = rm.getMyIdentifier();
       final EventHandler<TestEvent> proxyHandler = rm.getHandler(remoteId, TestEvent.class);
 
       proxyHandler.onNext(new TestEvent("hello", 1.0));

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportRaceTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportRaceTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportRaceTest.java
index 1a76f4e..8c78ed6 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportRaceTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportRaceTest.java
@@ -68,9 +68,8 @@ public class TransportRaceTest {
     final EStage<TransportEvent> serverStage = new ThreadPoolStage<>("server@7001",
         serverHandler, 1, new LoggingEventHandler<Throwable>());
     final String hostAddress = this.localAddressProvider.getLocalAddress();
-    final int port = 7001;
-    final Transport transport = tpFactory.newInstance(
-        hostAddress, port, clientStage, serverStage, 1, 10000);
+    final Transport transport = tpFactory.newInstance(hostAddress, 0, clientStage, serverStage, 1, 10000);
+    final int port = transport.getListeningPort();
 
     final String value = "Test Race";
 

http://git-wip-us.apache.org/repos/asf/reef/blob/684774b9/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportTest.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportTest.java b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportTest.java
index 1fbb5d9..5d5d4d7 100644
--- a/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportTest.java
+++ b/lang/java/reef-wake/wake/src/test/java/org/apache/reef/wake/test/remote/TransportTest.java
@@ -71,12 +71,12 @@ public class TransportTest {
 
     final int expected = 2;
     final String hostAddress = this.localAddressProvider.getLocalAddress();
-    final int port = 9100;
 
     // Codec<String>
     final ReceiverStage<String> stage =
         new ReceiverStage<>(new ObjectSerializableCodec<String>(), monitor, expected);
-    final Transport transport = tpFactory.newInstance(hostAddress, port, stage, stage, 1, 10000);
+    final Transport transport = tpFactory.newInstance(hostAddress, 0, stage, stage, 1, 10000);
+    final int port = transport.getListeningPort();
 
     // sending side
     final Link<String> link = transport.open(
@@ -103,12 +103,12 @@ public class TransportTest {
 
     final int expected = 2;
     final String hostAddress = this.localAddressProvider.getLocalAddress();
-    final int port = 9100;
 
     // Codec<TestEvent>
     final ReceiverStage<TestEvent> stage =
         new ReceiverStage<>(new ObjectSerializableCodec<TestEvent>(), monitor, expected);
-    final Transport transport = tpFactory.newInstance(hostAddress, port, stage, stage, 1, 10000);
+    final Transport transport = tpFactory.newInstance(hostAddress, 0, stage, stage, 1, 10000);
+    final int port = transport.getListeningPort();
 
     // sending side
     final Link<TestEvent> link = transport.open(