You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2016/03/21 21:39:47 UTC

[16/54] [abbrv] incubator-geode git commit: GEODE-1097 allow Lambda invocations to be named so that they show up in test logs

GEODE-1097 allow Lambda invocations to be named so that they show up in test logs

This adds variants of VM.invoke() and VM.invokeAsync() that take a String name
for the invocation that will be logged during dunit testing.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/22ab2706
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/22ab2706
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/22ab2706

Branch: refs/heads/feature/GEODE-17-2
Commit: 22ab27067c74eae5b2af799d6453dad461f98eec
Parents: ce8d087
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Mar 15 10:58:06 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Mar 15 10:59:17 2016 -0700

----------------------------------------------------------------------
 .../cache30/ClientMembershipDUnitTest.java      | 14 +++--
 .../gemfire/test/dunit/NamedCallable.java       | 26 +++++++++
 .../gemfire/test/dunit/NamedRunnable.java       | 26 +++++++++
 .../com/gemstone/gemfire/test/dunit/VM.java     | 61 ++++++++++++++++++++
 .../test/dunit/tests/BasicDUnitTest.java        | 24 ++++++++
 5 files changed, 146 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index d4678ca..19ce28d 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@ -804,10 +804,11 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     });
     
     // gather details for later creation of ConnectionPool...
-    ports[0] = vm0.invoke(() -> ClientMembershipDUnitTest.getTestClientMembershipEventsInClient_port());
+    ports[0] = vm0.invoke("getTestClientMembershipEventsInClient_port",
+        () -> ClientMembershipDUnitTest.getTestClientMembershipEventsInClient_port());
     assertTrue(ports[0] != 0);
 
-    DistributedMember serverMember = (DistributedMember) vm0.invoke(() -> ClientMembershipDUnitTest.getDistributedMember());
+    DistributedMember serverMember = (DistributedMember) vm0.invoke("get distributed member", () -> ClientMembershipDUnitTest.getDistributedMember());
 
     String serverMemberId = serverMember.toString();
 
@@ -1440,7 +1441,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
             getDistributedMember());
         }
       });
-      ports[whichVM] = vm.invoke(() -> ClientMembershipDUnitTest.getTestGetConnectedServers_port());
+      ports[whichVM] = vm.invoke("getTestGetConnectedServers_port",
+          () -> ClientMembershipDUnitTest.getTestGetConnectedServers_port());
       assertTrue(ports[whichVM] != 0);
     }
     
@@ -1555,7 +1557,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
             getMemberId());
         }
       });
-      ports[whichVM] = vm.invoke(() -> ClientMembershipDUnitTest.getTestGetNotifiedClients_port());
+      ports[whichVM] = vm.invoke("getTestGetNotifiedClients_port",
+          () -> ClientMembershipDUnitTest.getTestGetNotifiedClients_port());
       assertTrue(ports[whichVM] != 0);
     }
     
@@ -1599,7 +1602,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
           }
         }
       });
-      clientCounts[whichVM] = vm.invoke(() -> ClientMembershipDUnitTest.getTestGetNotifiedClients_clientCount());
+      clientCounts[whichVM] = vm.invoke("getTestGetNotifiedClients_clientCount",
+          () -> ClientMembershipDUnitTest.getTestGetNotifiedClients_clientCount());
     }
     
     // only one server should have a notifier for this client...

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
new file mode 100755
index 0000000..66a3f38
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
@@ -0,0 +1,26 @@
+package com.gemstone.gemfire.test.dunit;
+
+
+public class NamedCallable<T> implements SerializableCallableIF<T> {
+
+  private static final long serialVersionUID = -4417299628656632541L;
+
+  String name;
+  SerializableCallableIF<T> delegate;
+  
+  public NamedCallable(String name, SerializableCallableIF<T> delegate) {
+    this.name = name;
+    this.delegate = delegate;
+  }
+  
+  @Override
+  public T call() throws Exception {
+    return delegate.call();
+  }
+  
+  @Override
+  public String toString() {
+    return ("callable("+name+")");
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
new file mode 100755
index 0000000..8a7fe28
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
@@ -0,0 +1,26 @@
+package com.gemstone.gemfire.test.dunit;
+
+
+public class NamedRunnable implements SerializableRunnableIF {
+
+  private static final long serialVersionUID = -2786841298145567914L;
+
+  String name;
+  SerializableRunnableIF delegate;
+  
+  public NamedRunnable(String name, SerializableRunnableIF delegate) {
+    this.name = name;
+    this.delegate = delegate;
+  }
+  
+  @Override
+  public void run() throws Exception {
+    delegate.run();
+  }
+  
+  @Override
+  public String toString() {
+    return ("runnable("+name+")");
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
index 122aa0e..8e408dc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
@@ -246,6 +246,37 @@ public class VM implements Serializable {
   }
   
   /**
+   * Invokes the <code>run</code> method of a {@link Runnable} in this
+   * VM.  Recall that <code>run</code> takes no arguments and has no
+   * return value.  The Runnable is wrapped in a NamedRunnable having
+   * the given name so it shows up in dunit logs.
+   *
+   * @param r
+   *        The <code>Runnable</code> to be run
+   * @param name the name of the runnable, which will be logged in dunit output
+   *
+   * @see SerializableRunnable
+   */
+  public AsyncInvocation invokeAsync(String name, SerializableRunnableIF r) {
+    NamedRunnable nr = new NamedRunnable(name, r);
+    return invokeAsync(r, "run", new Object[0]);
+  }
+  
+  /**
+   * Invokes the <code>call</code> method of a {@link Runnable} in this
+   * VM.  
+   *
+   * @param c
+   *        The <code>Callable</code> to be run
+   * @param name the name of the callable, which will be logged in dunit output
+   *
+   * @see SerializableCallable
+   */
+  public <T> AsyncInvocation<T> invokeAsync(String name, SerializableCallableIF<T> c) {
+    return invokeAsync(new NamedCallable(name, c), "call", new Object[0]);
+  }
+
+  /**
    * Invokes the <code>call</code> method of a {@link Runnable} in this
    * VM.  
    *
@@ -265,6 +296,21 @@ public class VM implements Serializable {
    *
    * @param r
    *        The <code>Runnable</code> to be run
+   * @param name the name of the runnable, which will be logged in dunit output
+   *
+   * @see SerializableRunnable
+   */
+  public void invoke(String name, SerializableRunnableIF r) {
+    invoke(new NamedRunnable(name, r), "run");
+  }
+
+  /**
+   * Invokes the <code>run</code> method of a {@link Runnable} in this
+   * VM.  Recall that <code>run</code> takes no arguments and has no
+   * return value.
+   *
+   * @param r
+   *        The <code>Runnable</code> to be run
    *
    * @see SerializableRunnable
    */
@@ -279,6 +325,21 @@ public class VM implements Serializable {
    *
    * @param c
    *        The <code>Callable</code> to be run
+   * @param name the name of the callable, which will be logged in dunit output
+   *
+   * @see SerializableCallable
+   */
+  public <T>  T invoke(String name, SerializableCallableIF<T> c) {
+    return (T) invoke(new NamedCallable(name, c), "call");
+  }
+  
+  /**
+   * Invokes the <code>run</code> method of a {@link Runnable} in this
+   * VM.  Recall that <code>run</code> takes no arguments and has no
+   * return value.
+   *
+   * @param c
+   *        The <code>Callable</code> to be run
    *
    * @see SerializableCallable
    */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
index 068e81b..195d5f4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
@@ -83,6 +83,30 @@ public class BasicDUnitTest extends DistributedTestCase {
     
   }
 
+  public void testInvokeWithNamedLambda() {
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    VM vm1 = host.getVM(1);
+    
+    int vm0Num = vm0.invoke("getVMID", () -> DUnitEnv.get().getVMID());
+    int vm1Num = vm1.invoke("getVMID", () -> DUnitEnv.get().getVMID());
+    
+    assertEquals(0, vm0Num);
+    assertEquals(1, vm1Num);
+    
+  }
+  
+  public void testInvokeNamedLambdaAsync() throws Throwable {
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    
+    AsyncInvocation<Integer> async0 = vm0.invokeAsync("getVMID", () -> DUnitEnv.get().getVMID());
+    int vm0num = async0.getResult();
+    
+    assertEquals(0, vm0num);
+    
+  }
+
   static class BasicTestException extends RuntimeException {
     BasicTestException() {
       this("Test exception.  Please ignore.");