[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