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);
+ }
}