[webbeans-commits] Webbeans SVN: r1504 - ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas and 3 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Fri Feb 13 08:50:46 EST 2009


Author: pete.muir at jboss.org
Date: 2009-02-13 08:50:46 -0500 (Fri, 13 Feb 2009)
New Revision: 1504

Modified:
   ri/trunk/jboss-tck-runner/pom.xml
   ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/AbstractContainersImpl.java
   ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/FileSystemContainersImpl.java
   ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/JBossTestServicesContainersImpl.java
   ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml
   tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Containers.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java
Log:
Start JBoss AS if it's not running...

Modified: ri/trunk/jboss-tck-runner/pom.xml
===================================================================
--- ri/trunk/jboss-tck-runner/pom.xml	2009-02-13 11:52:35 UTC (rev 1503)
+++ ri/trunk/jboss-tck-runner/pom.xml	2009-02-13 13:50:46 UTC (rev 1504)
@@ -140,8 +140,8 @@
                            <value>false</value>
                         </property>
                         <property>
-                           <name>jbossHome</name>
-                           <value>/Applications/jboss-5.0.0.GA</value>
+                           <name>jboss-as.dir</name>
+                           <value>../jboss-as</value>
                         </property>
                         <property>
                            <name>org.jboss.jsr299.tck.libraryDirectory</name>

Modified: ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/AbstractContainersImpl.java
===================================================================
--- ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/AbstractContainersImpl.java	2009-02-13 11:52:35 UTC (rev 1503)
+++ ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/AbstractContainersImpl.java	2009-02-13 13:50:46 UTC (rev 1504)
@@ -1,7 +1,11 @@
 package org.jboss.webbeans.tck.integration.jbossas;
 
+import java.io.BufferedOutputStream;
+import java.io.DataOutputStream;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -14,13 +18,28 @@
 import org.jboss.jsr299.tck.api.Configuration;
 import org.jboss.jsr299.tck.spi.Containers;
 
+/**
+ * 
+ * @author jeffgenender
+ * @author Pete Muir
+ *
+ */
 public abstract class AbstractContainersImpl implements Configurable, Containers
 {
    
+   public static String JAVA_OPTS = "\"-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -ea\"";
+   
+   public static final String JBOSS_HOME_PROPERTY_NAME = "jboss.home";
+   public static final String JBOSS_AS_DIR_PROPERTY_NAME = "jboss-as.dir";
+   public static final String JBOSS_BOOT_TIMEOUT_PROPERTY_NAME = "jboss.boot.timeout";
+   
    private static Logger log = Logger.getLogger(AbstractContainersImpl.class);
    
    private Configuration configuration;
-   protected boolean validated;
+   protected final String jbossHome;
+   private String jbossHttpUrl;
+   private boolean jbossWasStarted;
+   private final long bootTimeout;
 
    protected static void copy(InputStream inputStream, File file) throws IOException
    {
@@ -40,18 +59,50 @@
      }
    }
 
+
+   public AbstractContainersImpl() throws FileNotFoundException, IOException
+   {
+      if (System.getProperty(JBOSS_AS_DIR_PROPERTY_NAME) != null)
+      {
+         File jbossAsDir = new File(System.getProperty(JBOSS_AS_DIR_PROPERTY_NAME));
+         if (jbossAsDir.isDirectory())
+         {
+            File buildProperties = new File(jbossAsDir, "build.properties");
+            if (buildProperties.exists())
+            {
+               System.getProperties().load(new FileReader(buildProperties));
+            }
+            File localBuildProperties = new File(jbossAsDir, "local.build.properties");
+            if (buildProperties.exists())
+            {
+               System.getProperties().load(new FileReader(localBuildProperties));
+            }
+         }            
+      }
+      jbossHome = System.getProperty(JBOSS_HOME_PROPERTY_NAME);
+      if (jbossHome == null)
+      {
+         throw new IllegalArgumentException("-D" + JBOSS_HOME_PROPERTY_NAME + " must be set");
+      }
+      else
+      {
+         log.info("JBoss Home set to " + jbossHome);
+      }
+      this.bootTimeout = Long.getLong(JBOSS_BOOT_TIMEOUT_PROPERTY_NAME, 60000);
+   }   
+   
    public void setConfiguration(Configuration configuration)
    {
       this.configuration = configuration;
+      this.jbossHttpUrl = "http://" + configuration.getHost() + "/";
    }
 
-   protected void validate()
+   protected boolean checkJBossUp()
    {
       // Check that JBoss is up!
-      String url = "http://" + configuration.getHost() + "/";
       try
       {
-         URLConnection connection = new URL(url).openConnection();
+         URLConnection connection = new URL(jbossHttpUrl).openConnection();
          if (!(connection instanceof HttpURLConnection))
          {
             throw new IllegalStateException("Not an http connection! " + connection);
@@ -60,20 +111,115 @@
          httpConnection.connect();
          if (httpConnection.getResponseCode() != HttpURLConnection.HTTP_OK)
          {
-            throw new IllegalStateException("Error connecting to JBoss AS at " + url);
+            return false;
          }
       }
       catch (Exception e) 
       {
-         throw new IllegalStateException("Cannot connect to JBoss AS", e);
+         return false;
       }
-      log.info("Successfully connected to JBoss AS at " + url);
-      
+      log.info("Successfully connected to JBoss AS at " + jbossHttpUrl);
+      return true;
    }
+   
+   public void setup() throws IOException
+   {
+      if (!checkJBossUp())
+      {
+         jbossWasStarted = true;
+         launch(jbossHome, "run", "");
+         log.info("Starting JBoss AS");
+         // Wait for JBoss to come up
+         long timeoutTime = System.currentTimeMillis() + bootTimeout;
+         boolean interrupted = false;
+         while (timeoutTime > System.currentTimeMillis())
+         {
+            if (checkJBossUp()) 
+            {
+               log.info("Started JBoss AS");
+               return;
+            }
+            try
+            {
+               Thread.sleep(1000);
+            }
+            catch (InterruptedException e)
+            {
+               interrupted = true;
+            }
+         }
+         if (interrupted)
+         {
+            Thread.currentThread().interrupt();
+         }
+      }
+      // After trying to start automatically, try the connection again
+      if (!checkJBossUp())
+      {
+         throw new IllegalStateException("Error connecting to JBoss AS at " + jbossHttpUrl);
+      }
+   }
+   
+   public void cleanup() throws IOException
+   {
+      if (jbossWasStarted)
+      {
+         launch(jbossHome, "shutdown", "-S");
+      }
+   }
+   
+   private static void launch(String jbossHome, String scriptFileName, String params) throws IOException
+   {
+      String osName = System.getProperty("os.name");
+      Runtime runtime = Runtime.getRuntime();
 
-   public AbstractContainersImpl()
+      Process p = null;
+      if (osName.startsWith("Windows")) 
+      {
+          String command[] = {
+                "cmd.exe",
+                "/C",
+                "set JAVA_OPTS=" + JAVA_OPTS + " & cd " + jbossHome + "\\bin & " + scriptFileName + ".bat " + params
+          };
+          p = runtime.exec(command);
+      }
+      else 
+      {
+          String command[] = {
+                "sh",
+                "-c",
+                "cd " + jbossHome + "/bin; JAVA_OPTS=" + JAVA_OPTS + " ./" + scriptFileName + ".sh " + params
+                };
+          p = runtime.exec(command);
+      }
+      dump(p.getErrorStream());
+      dump(p.getInputStream());
+   }
+
+   protected static void dump(final InputStream is) 
    {
-      super();
+      new Thread(new Runnable() 
+      {
+          public void run() 
+          {
+             try 
+             {
+                DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("/tmp/jboss.log")));
+                int c;
+                while((c = is.read()) != -1) 
+                {
+                   out.writeByte(c);
+                }
+                is.close();
+                out.close();
+             }
+             catch(IOException e) 
+             {
+                System.err.println("Error Writing/Reading Streams.");
+             }
+          }
+      }).start();
    }
+
    
 }
\ No newline at end of file

Modified: ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/FileSystemContainersImpl.java
===================================================================
--- ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/FileSystemContainersImpl.java	2009-02-13 11:52:35 UTC (rev 1503)
+++ ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/FileSystemContainersImpl.java	2009-02-13 13:50:46 UTC (rev 1504)
@@ -4,8 +4,6 @@
 import java.io.InputStream;
 
 import org.apache.log4j.Logger;
-import org.jboss.jsr299.tck.api.Configurable;
-import org.jboss.jsr299.tck.spi.Containers;
 
 
 public class FileSystemContainersImpl extends AbstractContainersImpl
@@ -13,17 +11,10 @@
    
    private static Logger log = Logger.getLogger(FileSystemContainersImpl.class);
    
-   public static final String JBOSS_HOME_PROPERTY_NAME = "jbossHome";
-   
    private File deployDir;
    
    public FileSystemContainersImpl() throws IOException
    {
-      String jbossHome = System.getProperty(JBOSS_HOME_PROPERTY_NAME);
-      if (jbossHome == null)
-      {
-         throw new IllegalArgumentException("-DjbossHome must be set");
-      }
       deployDir = new File(jbossHome, "server/default/deploy");
       if (!deployDir.isDirectory())
       {
@@ -34,10 +25,6 @@
    
    public void deploy(InputStream archive, String name) throws IOException
    {
-      if (!validated)
-      {
-         validate();
-      }
       File file = new File(deployDir, name);
       log.info("Deploying test " + name);
       file.createNewFile();

Modified: ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/JBossTestServicesContainersImpl.java
===================================================================
--- ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/JBossTestServicesContainersImpl.java	2009-02-13 11:52:35 UTC (rev 1503)
+++ ri/trunk/jboss-tck-runner/src/main/java/org/jboss/webbeans/tck/integration/jbossas/JBossTestServicesContainersImpl.java	2009-02-13 13:50:46 UTC (rev 1504)
@@ -26,10 +26,6 @@
    
    public void deploy(InputStream archiveStream, String name) throws Exception
    {
-      if (!validated)
-      {
-         validate();
-      }
       File archive = new File(tmpdir, name);
       archive.deleteOnExit();
       copy(archiveStream, archive);

Modified: ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml
===================================================================
--- ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml	2009-02-13 11:52:35 UTC (rev 1503)
+++ ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml	2009-02-13 13:50:46 UTC (rev 1504)
@@ -52,8 +52,12 @@
         <priority value="WARN"/>
     </category>
     
+    <category name="org.jboss.webbeans.tck">
+        <priority value="INFO"/>
+    </category>
+    
     <category name="org.jboss.jsr299">
-        <priority value="WARN"/>
+        <priority value="INFO"/>
     </category>
     
     <root>

Modified: tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Containers.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Containers.java	2009-02-13 11:52:35 UTC (rev 1503)
+++ tck/trunk/api/src/main/java/org/jboss/jsr299/tck/spi/Containers.java	2009-02-13 13:50:46 UTC (rev 1504)
@@ -19,5 +19,9 @@
    public void deploy(InputStream archive, String name) throws Exception, IOException;
    
    public void undeploy(String name) throws Exception, IOException;
+   
+   public void setup() throws IOException;
+   
+   public void cleanup() throws IOException;
       
 }
\ No newline at end of file

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java	2009-02-13 11:52:35 UTC (rev 1503)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/AbstractTest.java	2009-02-13 13:50:46 UTC (rev 1504)
@@ -33,6 +33,7 @@
 import org.testng.ITestResult;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.AfterMethod;
+import org.testng.annotations.AfterSuite;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.BeforeSuite;
@@ -88,11 +89,15 @@
    
    protected Manager manager;
    private TCKArtifactDescriptor artifact;
-   private Configuration configuration;
    
    @BeforeSuite
-   public void beforeSuite()
+   public void beforeSuite() throws Exception
    {
+      Configuration configuration = ConfigurationImpl.get();
+      if (!isInContainer() && (!configuration.isStandalone() || configuration.isRunIntegrationTests()))
+      {
+         configuration.getContainers().setup();
+      }
       // Check that assertions are enabled!
       boolean assertionsEnabled = false;
       try
@@ -112,7 +117,7 @@
    @BeforeClass
    public final void beforeClass() throws Exception
    {
-      configuration = ConfigurationImpl.get();
+      Configuration configuration = ConfigurationImpl.get();
       if (!isInContainer())
       {
          ArtifactGenerator generator = new ArtifactGenerator(configuration);
@@ -127,6 +132,7 @@
    @BeforeMethod
    public final void beforeMethod(Method method)
    {      
+      Configuration configuration = ConfigurationImpl.get();
       if (configuration.isStandalone() && !isInContainer())
       {
          if (artifact != null)
@@ -166,12 +172,23 @@
    @AfterClass
    public void afterClass() throws Exception
    {
+      Configuration configuration = ConfigurationImpl.get();
       if (artifact != null&& !(configuration.isStandalone() && artifact.isUnit()) && !isInContainer())
       {
          configuration.getContainers().undeploy(artifact.getDefaultName());
       }
       this.artifact = null;
    }
+   
+   @AfterSuite
+   public void afterSuite() throws Exception
+   {
+      Configuration configuration = ConfigurationImpl.get();
+      if (!isInContainer() && (!configuration.isStandalone() || configuration.isRunIntegrationTests()))
+      {
+         configuration.getContainers().cleanup();
+      }
+   }
 
    @Deprecated
    public <T> Bean<T> createSimpleBean(Class<T> beanClass)
@@ -207,6 +224,7 @@
    @Deprecated
    protected void deployBeans(Class<?>... classes)
    {
+      Configuration configuration = ConfigurationImpl.get();
       if (getEnabledDeploymentTypes().size() > 0)
       {
          manager = configuration.getStandaloneContainers().deploy(getEnabledDeploymentTypes(), classes);
@@ -291,6 +309,7 @@
 
    public void run(IHookCallBack callback, ITestResult testResult)
    {
+      Configuration configuration = ConfigurationImpl.get();
       if (artifact== null || isInContainer() || (artifact.isUnit() && configuration.isStandalone()))
       {
          callback.runTestMethod(testResult);




More information about the weld-commits mailing list