You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2014/07/09 10:17:14 UTC

svn commit: r1609054 - in /tomee/tomee/trunk: ./ itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java

Author: andygumbrecht
Date: Wed Jul  9 08:17:13 2014
New Revision: 1609054

URL: http://svn.apache.org/r1609054
Log:
Wait for RemoteTestServer

Modified:
    tomee/tomee/trunk/   (props changed)
    tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java

Propchange: tomee/tomee/trunk/
------------------------------------------------------------------------------
  Merged /tomee/tomee/branches/tomee-1.7.x:r1609053

Modified: tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java?rev=1609054&r1=1609053&r2=1609054&view=diff
==============================================================================
--- tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java (original)
+++ tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java Wed Jul  9 08:17:13 2014
@@ -28,17 +28,15 @@ public class RemoteTestServer implements
         System.setProperty("noBanner", "true");
     }
 
-    /**
-     * Has the remote server's instance been already running ?
-     */
-    private boolean serverHasAlreadyBeenStarted = true;
-
+    private boolean serverRunning = false;
+    private Process serverProcess = null;
     private Properties properties;
 
     @Override
     public void init(final Properties props) {
         properties = props;
-        if (props.contains("java.naming.security.principal")) throw new IllegalArgumentException("Not allowed 'java.naming.security.principal'");
+        if (props.contains("java.naming.security.principal"))
+            throw new IllegalArgumentException("Not allowed 'java.naming.security.principal'");
 //        props.put("test.server.class","org.apache.openejb.test.RemoteTestServer");
         props.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
         props.put("java.naming.provider.url", "127.0.0.1:4201");
@@ -47,7 +45,7 @@ public class RemoteTestServer implements
     }
 
     @Override
-    public void start() {
+    public synchronized void start() {
         if (!connect()) {
             try {
                 System.out.println("[] START SERVER");
@@ -59,7 +57,6 @@ public class RemoteTestServer implements
                 final String systemInfo = "Java " + System.getProperty("java.version") + "; " + System.getProperty("os.name") + "/" + System.getProperty("os.version");
                 System.out.println("SYSTEM_INFO  = " + systemInfo);
 
-                serverHasAlreadyBeenStarted = false;
 
                 File openejbJar = null;
                 final File lib = new File(home, "lib");
@@ -85,33 +82,35 @@ public class RemoteTestServer implements
                 //DMB: If you don't use an array, you get problems with jar paths containing spaces
                 // the command won't parse correctly
                 final String[] args = {(isWindows ? "java.exe" : "java"), "-jar", openejbJar.getAbsolutePath(), "start"};
-                final Process server = Runtime.getRuntime().exec(args);
+                this.serverProcess = Runtime.getRuntime().exec(args);
 
                 // Pipe the processes STDOUT to ours
-                final InputStream out = server.getInputStream();
+                final InputStream out = serverProcess.getInputStream();
                 final Thread serverOut = new Thread(new Pipe(out, System.out));
 
                 serverOut.setDaemon(true);
                 serverOut.start();
 
                 // Pipe the processes STDERR to ours
-                final InputStream err = server.getErrorStream();
+                final InputStream err = serverProcess.getErrorStream();
                 final Thread serverErr = new Thread(new Pipe(err, System.err));
 
                 serverErr.setDaemon(true);
                 serverErr.start();
-            } catch (Exception e) {
+
+                connect(10);
+
+                serverRunning = true;
+
+            } catch (final Exception e) {
                 throw (RuntimeException) new RuntimeException("Cannot start the server.").initCause(e);
             }
-            connect(10);
-        } else {
-            //System.out.println("[] SERVER STARTED");
         }
     }
 
     @Override
-    public void stop() {
-        if (!serverHasAlreadyBeenStarted) {
+    public synchronized void stop() {
+        if (serverRunning) {
             try {
                 System.out.println("[] STOP SERVER");
 
@@ -124,6 +123,14 @@ public class RemoteTestServer implements
                 e.printStackTrace();
             }
         }
+
+        if (null != serverProcess) {
+            try {
+                serverProcess.waitFor();
+            } catch (final Exception e) {
+                //Ignore
+            }
+        }
     }
 
     @Override