[jboss-svn-commits] JBoss Common SVN: r3789 - in arquillian/trunk: container-jboss-embedded/src/test and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Nov 25 08:52:52 EST 2009


Author: aslak
Date: 2009-11-25 08:52:51 -0500 (Wed, 25 Nov 2009)
New Revision: 3789

Added:
   arquillian/trunk/container-jboss-embedded/src/test/resources/
Removed:
   arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/ServletMethodExecutor.java
Modified:
   arquillian/trunk/container-jboss-embedded/src/main/java/org/jboss/arquillian/jboss/JbossEmbeddedContainer.java
   arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTest.java
   arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTestBuilder.java
   arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/Deployer.java
   arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/TestResultImpl.java
   arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/container/ContainerDeployer.java
   arquillian/trunk/protocol-servlet/src/main/java/org/jboss/arquillian/protocol/servlet/ServletMethodExecutor.java
   arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeployableContainer.java
Log:
ARQ-23 Changed DeployableContainer to return a ContainerMethodExecutor on deploy(Archive). The Container should return a executor matching the deployed archive.. Setting correct host/port/base url etc etc to be able to call the in-container TestRunner

Modified: arquillian/trunk/container-jboss-embedded/src/main/java/org/jboss/arquillian/jboss/JbossEmbeddedContainer.java
===================================================================
--- arquillian/trunk/container-jboss-embedded/src/main/java/org/jboss/arquillian/jboss/JbossEmbeddedContainer.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/container-jboss-embedded/src/main/java/org/jboss/arquillian/jboss/JbossEmbeddedContainer.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -16,6 +16,10 @@
  */
 package org.jboss.arquillian.jboss;
 
+import java.net.URL;
+
+import org.jboss.arquillian.protocol.servlet.ServletMethodExecutor;
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
 import org.jboss.arquillian.spi.DeployableContainer;
 import org.jboss.arquillian.spi.DeploymentException;
 import org.jboss.arquillian.spi.LifecycleException;
@@ -66,11 +70,19 @@
    }
    
    @Override
-   public void deploy(Archive<?> archive) throws DeploymentException
+   public ContainerMethodExecutor deploy(Archive<?> archive) throws DeploymentException
    {
       try 
       {
          server.deploy(archive);
+         
+         return new ServletMethodExecutor(
+               new URL(
+                     "http",
+                     server.getConfiguration().getBindAddress(),
+                     8080,
+                     "/")
+               );
       }
       catch (Exception e) 
       {

Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTest.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTest.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTest.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -16,11 +16,7 @@
  */
 package org.jboss.arquillian.impl;
 
-import java.lang.reflect.Method;
-
 import org.jboss.arquillian.impl.container.Controlable;
-import org.jboss.arquillian.spi.TestMethodExecutor;
-import org.jboss.arquillian.spi.util.TestEnrichers;
 import org.jboss.shrinkwrap.api.Archive;
 
 /**
@@ -69,35 +65,11 @@
       {
          return new NullArtifactGenerator();
       }
-      return new UserCreatedArchiveGenerator();
+      return new DeploymentAppenderArchiveGenerator(new UserCreatedArchiveGenerator());
    }
 
    public Archive<?> generateArchive(Class<?> testCase) 
    {
       return getArchiveGenerator().generateArchive(testCase);
    }
-
-
-   public void run(TestMethodExecutor executor) throws Throwable 
-   {
-      if(DeployableTest.isInContainer()) 
-      {
-         injectClass(executor.getInstance());
-         executor.invoke();
-      } 
-      else 
-      {
-         new ServletMethodExecutor(executor).invoke();
-      }
-   }
-   
-   private void injectClass(Object testCase) 
-   {
-      TestEnrichers.enrich(testCase);
-   }
-   
-   private void invokeMethod(Method testMethod, Class<?> testCase) 
-   {
-   }
-
 }

Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTestBuilder.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTestBuilder.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/DeployableTestBuilder.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -16,15 +16,18 @@
  */
 package org.jboss.arquillian.impl;
 
-import javax.security.auth.login.Configuration;
-
 import org.jboss.arquillian.impl.container.ContainerController;
 import org.jboss.arquillian.impl.container.ContainerDeployer;
 import org.jboss.arquillian.impl.container.Controlable;
 import org.jboss.arquillian.impl.container.DeployableContainers;
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
 import org.jboss.arquillian.spi.DeployableContainer;
 import org.jboss.arquillian.spi.DeploymentException;
 import org.jboss.arquillian.spi.LifecycleException;
+import org.jboss.arquillian.spi.TestMethodExecutor;
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.spi.TestResult.Status;
+import org.jboss.arquillian.spi.util.TestEnrichers;
 import org.jboss.shrinkwrap.api.Archive;
 
 /**
@@ -38,7 +41,7 @@
    private DeployableTestBuilder() {}
    
    // TODO: lookup/load container, setup DeployableTest
-   public static DeployableTest build(Configuration config) 
+   public static DeployableTest build(Object config) 
    {
       Controlable controller = null;
       Deployer deployer = null;
@@ -74,8 +77,27 @@
       }
 
       @Override
-      public void deploy(Archive<?> archive) throws DeploymentException
+      public ContainerMethodExecutor deploy(Archive<?> archive) throws DeploymentException
       {
+         return new ContainerMethodExecutor()
+         {
+            @Override
+            public TestResult invoke(TestMethodExecutor testMethodExecutor)
+            {
+               try 
+               {
+                  TestEnrichers.enrich(testMethodExecutor.getInstance());
+                  testMethodExecutor.getMethod().invoke(
+                        testMethodExecutor.getInstance());
+                  
+                  return new TestResultImpl(Status.PASSED);
+               } 
+               catch (Exception e) 
+               {
+                  return new TestResultImpl(Status.FAILED, e);
+               }
+            }
+         };
       }
 
       @Override

Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/Deployer.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/Deployer.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/Deployer.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -16,6 +16,7 @@
  */
 package org.jboss.arquillian.impl;
 
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
 import org.jboss.arquillian.spi.DeploymentException;
 import org.jboss.shrinkwrap.api.Archive;
 
@@ -28,7 +29,7 @@
 public interface Deployer
 {
 
-   void deploy(Archive<?> archive) throws DeploymentException;
+   ContainerMethodExecutor deploy(Archive<?> archive) throws DeploymentException;
    void undeploy(Archive<?> archive) throws DeploymentException;
 
 }

Deleted: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/ServletMethodExecutor.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/ServletMethodExecutor.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/ServletMethodExecutor.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -1,127 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.arquillian.impl;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.lang.reflect.Method;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.jboss.arquillian.spi.TestMethodExecutor;
-import org.jboss.arquillian.spi.TestResult;
-
-/**
- * ServletMethodExecutor
- *
- * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
- * @version $Revision: $
- */
-public class ServletMethodExecutor implements TestMethodExecutor
-{
-   private TestMethodExecutor originalExecutor;
-   
-   public ServletMethodExecutor(TestMethodExecutor originalExecutor)
-   {
-      this.originalExecutor = originalExecutor;
-   }
-   
-   @Override
-   public Object getInstance()
-   {
-      return originalExecutor.getInstance();
-   }
-   
-   @Override
-   public Method getMethod()
-   {
-      return originalExecutor.getMethod();
-   }
-   
-   @Override
-   public void invoke() throws Throwable
-   {
-      Class<?> testClass = getInstance().getClass();
-      String url = "http://localhost:8080/test/?outputMode=serializedObject&className=" + testClass.getName() + "&methodName=" + getMethod().getName();
-      long timeoutTime = System.currentTimeMillis() + 1000;
-      boolean interrupted = false;
-      while (timeoutTime > System.currentTimeMillis())
-      {
-         URLConnection connection = new URL(url).openConnection();
-         if (!(connection instanceof HttpURLConnection))
-         {
-            throw new IllegalStateException("Not an http connection! " + connection);
-         }
-         HttpURLConnection httpConnection = (HttpURLConnection) connection;
-         httpConnection.setUseCaches(false);
-         httpConnection.setDefaultUseCaches(false);
-         try
-         {
-            httpConnection.connect();
-            if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
-            {
-               ObjectInputStream ois = new ObjectInputStream(httpConnection.getInputStream());
-               Object o;
-               try
-               {
-                  o = ois.readObject();
-               }
-               catch (ClassNotFoundException e)
-               {
-                  IOException ioException = new IOException();
-                  ioException.initCause(e);
-                  throw ioException;
-               }
-               ois.close();
-               if (!(o instanceof TestResult))
-               {
-                  throw new IllegalStateException("Error reading test results - expected a TestResult but got " + o);
-               }
-               TestResult result = (TestResult) o;
-               
-               if(result.getThrowable() != null) {
-                  throw result.getThrowable();
-               }
-               return;
-            }
-            else if (httpConnection.getResponseCode() != HttpURLConnection.HTTP_NOT_FOUND)
-            {
-               throw new IllegalStateException("Error launching test " + testClass.getName() + " at " + url + ". Got " + httpConnection.getResponseCode() + " ("+ httpConnection.getResponseMessage() + ")");
-            }
-            try
-            {
-               Thread.sleep(200);
-            }
-            catch (InterruptedException e)
-            {
-               interrupted = true;
-            }
-         }
-         finally
-         {
-            httpConnection.disconnect();
-         }
-      }
-      if (interrupted)
-      {
-         Thread.currentThread().interrupt();
-      }
-      throw new IllegalStateException("Error launching test " + testClass.getName() + " at " + url + ". Kept on getting 404s.");
-   }
-   
-}

Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/TestResultImpl.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/TestResultImpl.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/TestResultImpl.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -31,6 +31,10 @@
    private Status status;
    private Throwable throwable;
 
+   public TestResultImpl(Status status) {
+      this(status, null);
+   }
+   
    public TestResultImpl(Status status, Throwable throwable)
    {
       this.status = status;

Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/container/ContainerDeployer.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/container/ContainerDeployer.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/container/ContainerDeployer.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -17,6 +17,7 @@
 package org.jboss.arquillian.impl.container;
 
 import org.jboss.arquillian.impl.Deployer;
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
 import org.jboss.arquillian.spi.DeployableContainer;
 import org.jboss.arquillian.spi.DeploymentException;
 import org.jboss.shrinkwrap.api.Archive;
@@ -36,13 +37,13 @@
       this.container = container;
    }
 
-   public void deploy(Archive<?> archive) throws DeploymentException
+   public ContainerMethodExecutor deploy(Archive<?> archive) throws DeploymentException
    {
       if(archive == null) 
       {
          throw new IllegalArgumentException("Can not deploy null artifact");
       }
-      container.deploy(archive);
+      return container.deploy(archive);
    }
 
    public void undeploy(Archive<?> archive) throws DeploymentException

Modified: arquillian/trunk/protocol-servlet/src/main/java/org/jboss/arquillian/protocol/servlet/ServletMethodExecutor.java
===================================================================
--- arquillian/trunk/protocol-servlet/src/main/java/org/jboss/arquillian/protocol/servlet/ServletMethodExecutor.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/protocol-servlet/src/main/java/org/jboss/arquillian/protocol/servlet/ServletMethodExecutor.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -49,7 +49,7 @@
       }
       
       Class<?> testClass = testMethodExecutor.getInstance().getClass();
-      String url = baseURL.toExternalForm() + 
+      String url = baseURL.toExternalForm() + "protocol/" +  
                         "?outputMode=serializedObject&className=" + testClass.getName() + 
                         "&methodName=" + testMethodExecutor.getMethod().getName();
       

Modified: arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeployableContainer.java
===================================================================
--- arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeployableContainer.java	2009-11-25 13:49:11 UTC (rev 3788)
+++ arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeployableContainer.java	2009-11-25 13:52:51 UTC (rev 3789)
@@ -31,7 +31,7 @@
    
    void stop() throws LifecycleException;
    
-   void deploy(Archive<?> archive) throws DeploymentException;
+   ContainerMethodExecutor deploy(Archive<?> archive) throws DeploymentException;
    
    void undeploy(Archive<?> archive) throws DeploymentException;
 



More information about the jboss-svn-commits mailing list