This is an automated email from the ASF dual-hosted git repository.

sai_boorlagadda pushed a commit to branch feature/GEODE-5787-dunit-internal
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to 
refs/heads/feature/GEODE-5787-dunit-internal by this push:
     new 2a89d1b  GEODE-5787: Add ProcessHolder to VM
2a89d1b is described below

commit 2a89d1b483faa3c7935ee1ae7c348b862b97e54c
Author: Sai Boorlagadda <[email protected]>
AuthorDate: Wed Oct 3 09:56:30 2018 -0700

    GEODE-5787: Add ProcessHolder to VM
    
    Signed-off-by: Kirk Lund <[email protected]>
---
 .../src/main/java/org/apache/geode/test/dunit/Host.java      |  9 +++++----
 .../src/main/java/org/apache/geode/test/dunit/VM.java        | 12 +++++++++---
 .../org/apache/geode/test/dunit/standalone/DUnitHost.java    | 12 +++++++-----
 .../apache/geode/test/dunit/standalone/ProcessManager.java   |  4 ++++
 4 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java
index 18f17c3..283ee33 100755
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java
@@ -18,6 +18,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.geode.test.dunit.standalone.ProcessHolder;
 import org.apache.geode.test.dunit.standalone.RemoteDUnitVMIF;
 import org.apache.geode.test.dunit.standalone.VersionManager;
 
@@ -162,8 +163,8 @@ public abstract class Host implements Serializable {
   /**
    * Adds a VM to this {@code Host} with the given process id and client 
record.
    */
-  protected void addVM(int vmid, RemoteDUnitVMIF client) {
-    VM vm = new VM(this, vmid, client);
+  protected void addVM(int vmid, RemoteDUnitVMIF client, ProcessHolder 
processHolder) {
+    VM vm = new VM(this, vmid, client, processHolder);
     vms.add(vm);
   }
 
@@ -175,8 +176,8 @@ public abstract class Host implements Serializable {
     locator = l;
   }
 
-  protected void addLocator(int vmid, RemoteDUnitVMIF client) {
-    setLocator(new VM(this, vmid, client));
+  protected void addLocator(int vmid, RemoteDUnitVMIF client, ProcessHolder 
processHolder) {
+    setLocator(new VM(this, vmid, client, processHolder));
   }
 
   @Override
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java
index 74f618a..51726bd 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java
@@ -27,6 +27,7 @@ import java.util.concurrent.Callable;
 import org.apache.geode.internal.process.ProcessUtils;
 import org.apache.geode.test.dunit.standalone.BounceResult;
 import org.apache.geode.test.dunit.standalone.MethExecutorResult;
+import org.apache.geode.test.dunit.standalone.ProcessHolder;
 import org.apache.geode.test.dunit.standalone.RemoteDUnitVMIF;
 import org.apache.geode.test.dunit.standalone.StandAloneDUnitEnv;
 import org.apache.geode.test.dunit.standalone.VersionManager;
@@ -56,6 +57,8 @@ public class VM implements Serializable {
   /** The state of this VM */
   private volatile boolean available;
 
+  private transient volatile ProcessHolder processHolder;
+
   /**
    * Returns the {@code VM} identity. For {@link StandAloneDUnitEnv} the 
number returned is a
    * zero-based sequence representing the order in with the DUnit {@code VM}s 
were launched.
@@ -146,15 +149,18 @@ public class VM implements Serializable {
   /**
    * Creates a new {@code VM} that runs on a given host with a given process 
id.
    */
-  public VM(final Host host, final int id, final RemoteDUnitVMIF client) {
-    this(host, VersionManager.CURRENT_VERSION, id, client);
+  public VM(final Host host, final int id, final RemoteDUnitVMIF client,
+      final ProcessHolder processHolder) {
+    this(host, VersionManager.CURRENT_VERSION, id, client, processHolder);
   }
 
-  public VM(final Host host, final String version, final int id, final 
RemoteDUnitVMIF client) {
+  public VM(final Host host, final String version, final int id, final 
RemoteDUnitVMIF client,
+      final ProcessHolder processHolder) {
     this.host = host;
     this.id = id;
     this.version = version;
     this.client = client;
+    this.processHolder = processHolder;
     available = true;
   }
 
diff --git 
a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitHost.java
 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitHost.java
index 46f3e24..94f5f04 100644
--- 
a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitHost.java
+++ 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitHost.java
@@ -18,7 +18,7 @@ class DUnitHost extends Host {
 
   public DUnitHost(String hostName, ProcessManager processManager) throws 
RemoteException {
     super(hostName);
-    this.debuggingVM = new VM(this, -1, new RemoteDUnitVM());
+    this.debuggingVM = new VM(this, -1, new RemoteDUnitVM(), null);
     this.processManager = processManager;
   }
 
@@ -26,10 +26,12 @@ class DUnitHost extends Host {
       throws AccessException, RemoteException, NotBoundException, 
InterruptedException {
     for (int i = 0; i < numVMs; i++) {
       RemoteDUnitVMIF remote = processManager.getStub(i);
-      addVM(i, remote);
+      ProcessHolder processHolder = processManager.getProcessHolder(i);
+      addVM(i, remote, processHolder);
     }
 
-    addLocator(DUnitLauncher.LOCATOR_VM_NUM, 
processManager.getStub(DUnitLauncher.LOCATOR_VM_NUM));
+    addLocator(DUnitLauncher.LOCATOR_VM_NUM, 
processManager.getStub(DUnitLauncher.LOCATOR_VM_NUM),
+        processManager.getProcessHolder(DUnitLauncher.LOCATOR_VM_NUM));
 
     addHost(this);
   }
@@ -81,13 +83,13 @@ class DUnitHost extends Host {
         processManager.waitForVMs(DUnitLauncher.STARTUP_TIMEOUT);
 
         for (int i = oldVMCount; i < n; i++) {
-          addVM(i, processManager.getStub(i));
+          addVM(i, processManager.getStub(i), 
processManager.getProcessHolder(i));
         }
 
         // now create the one we really want
         processManager.launchVM(version, n, false);
         processManager.waitForVMs(DUnitLauncher.STARTUP_TIMEOUT);
-        addVM(n, processManager.getStub(n));
+        addVM(n, processManager.getStub(n), 
processManager.getProcessHolder(n));
 
       } catch (IOException | InterruptedException | NotBoundException e) {
         throw new RuntimeException("Could not dynamically launch vm + " + n, 
e);
diff --git 
a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
index 799da96..c4ba4d8 100755
--- 
a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
+++ 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
@@ -338,4 +338,8 @@ class ProcessManager {
     waitForVMs(DUnitLauncher.STARTUP_TIMEOUT);
     return (RemoteDUnitVMIF) registry.lookup("vm" + i);
   }
+
+  public ProcessHolder getProcessHolder(int i) {
+    return processes.get(i);
+  }
 }

Reply via email to