You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/04/11 21:04:05 UTC
svn commit: r1324917 - in /openejb/trunk/openejb/itests: ./ failover-ejb/
failover/ openejb-itests-app/ openejb-itests-beans/ openejb-itests-client/
openejb-itests-interceptor-beans/ openejb-itests-servlets/
openejb-itests-web/ openejb-tomee-itest/ ope...
Author: rmannibucau
Date: Wed Apr 11 19:04:04 2012
New Revision: 1324917
URL: http://svn.apache.org/viewvc?rev=1324917&view=rev
Log:
adding openejb-tomee-itest
Added:
openejb/trunk/openejb/itests/openejb-tomee-itest/
openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml
openejb/trunk/openejb/itests/openejb-tomee-itest/src/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Artifact.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITRuntimeException.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Repository.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ServerTweaker.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Servers.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/
openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/MultipleServerTest.java
Modified:
openejb/trunk/openejb/itests/failover-ejb/pom.xml
openejb/trunk/openejb/itests/failover/pom.xml
openejb/trunk/openejb/itests/openejb-itests-app/pom.xml
openejb/trunk/openejb/itests/openejb-itests-beans/pom.xml
openejb/trunk/openejb/itests/openejb-itests-client/pom.xml
openejb/trunk/openejb/itests/openejb-itests-interceptor-beans/pom.xml
openejb/trunk/openejb/itests/openejb-itests-servlets/pom.xml
openejb/trunk/openejb/itests/openejb-itests-web/pom.xml
openejb/trunk/openejb/itests/pom.xml
Modified: openejb/trunk/openejb/itests/failover-ejb/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/failover-ejb/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/failover-ejb/pom.xml (original)
+++ openejb/trunk/openejb/itests/failover-ejb/pom.xml Wed Apr 11 19:04:04 2012
@@ -26,7 +26,7 @@
<groupId>org.apache.openejb.itests</groupId>
<artifactId>failover-ejb</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests Failover EJB</name>
+ <name>OpenEJB :: iTests :: Failover EJB</name>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
Modified: openejb/trunk/openejb/itests/failover/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/failover/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/failover/pom.xml (original)
+++ openejb/trunk/openejb/itests/failover/pom.xml Wed Apr 11 19:04:04 2012
@@ -26,7 +26,7 @@
<groupId>org.apache.openejb.itests</groupId>
<artifactId>failover</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests Failover</name>
+ <name>OpenEJB :: iTests :: Failover</name>
<build>
<plugins>
<plugin>
Modified: openejb/trunk/openejb/itests/openejb-itests-app/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-itests-app/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-itests-app/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-itests-app/pom.xml Wed Apr 11 19:04:04 2012
@@ -28,7 +28,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>openejb-itests-app</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests App</name>
+ <name>OpenEJB :: iTests :: App</name>
<build>
<plugins>
<plugin>
Modified: openejb/trunk/openejb/itests/openejb-itests-beans/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-itests-beans/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-itests-beans/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-itests-beans/pom.xml Wed Apr 11 19:04:04 2012
@@ -25,7 +25,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>openejb-itests-beans</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests Beans</name>
+ <name>OpenEJB :: iTests :: Beans</name>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
Modified: openejb/trunk/openejb/itests/openejb-itests-client/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-itests-client/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-itests-client/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-itests-client/pom.xml Wed Apr 11 19:04:04 2012
@@ -28,7 +28,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>openejb-itests-client</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests Client</name>
+ <name>OpenEJB :: iTests :: Client</name>
<build>
<resources>
<resource>
Modified: openejb/trunk/openejb/itests/openejb-itests-interceptor-beans/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-itests-interceptor-beans/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-itests-interceptor-beans/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-itests-interceptor-beans/pom.xml Wed Apr 11 19:04:04 2012
@@ -29,7 +29,7 @@
<artifactId>openejb-itests-interceptor-beans</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests Interceptor Beans</name>
+ <name>OpenEJB :: iTests :: Interceptor Beans</name>
<dependencies>
<dependency>
Modified: openejb/trunk/openejb/itests/openejb-itests-servlets/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-itests-servlets/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-itests-servlets/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-itests-servlets/pom.xml Wed Apr 11 19:04:04 2012
@@ -25,7 +25,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>openejb-itests-servlets</artifactId>
<packaging>jar</packaging>
- <name>OpenEJB :: iTests Servlets</name>
+ <name>OpenEJB :: iTests :: Servlets</name>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
Modified: openejb/trunk/openejb/itests/openejb-itests-web/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-itests-web/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/openejb-itests-web/pom.xml (original)
+++ openejb/trunk/openejb/itests/openejb-itests-web/pom.xml Wed Apr 11 19:04:04 2012
@@ -28,7 +28,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>openejb-itests-web</artifactId>
<packaging>war</packaging>
- <name>OpenEJB :: iTests Web</name>
+ <name>OpenEJB :: iTests :: Web</name>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/pom.xml Wed Apr 11 19:04:04 2012
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>itests</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>4.0.0-beta-3-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>openejb-tomee-itest</artifactId>
+ <name>OpenEJB :: iTests :: TomEE Helper</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-provisionning</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>arquillian-tomee-common</artifactId>
+ <version>1.0.0-beta-3-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency> <!-- just to avoid bad dependency relationship in our build -->
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>apache-tomee</artifactId>
+ <version>1.0.0-beta-3-SNAPSHOT</version>
+ <type>zip</type>
+ <classifier>webprofile</classifier>
+ </dependency>
+ </dependencies>
+</project>
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Artifact.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Artifact.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Artifact.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Artifact.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,17 @@
+package org.apache.openejb.itest.tomee;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target({ TYPE })
+@Retention(RUNTIME)
+public @interface Artifact {
+ String groupId() default "org.apache.openejb";
+ String artifactId() default "apache-tomee";
+ String version() default "1.0.0-beta-3-SNAPSHOT";
+ String classifier() default "webprofile";
+ String type() default "zip";
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITRuntimeException.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITRuntimeException.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITRuntimeException.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITRuntimeException.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,7 @@
+package org.apache.openejb.itest.tomee;
+
+public class ITRuntimeException extends RuntimeException {
+ public ITRuntimeException(final Throwable e) {
+ super(e);
+ }
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ITTomEERunner.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,199 @@
+package org.apache.openejb.itest.tomee;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.openejb.arquillian.common.Setup;
+import org.apache.openejb.arquillian.common.TomEEConfiguration;
+import org.apache.openejb.config.RemoteServer;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.Zips;
+import org.apache.openejb.util.NetworkUtil;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.junit.runners.model.InitializationError;
+import org.junit.runners.model.Statement;
+
+public class ITTomEERunner extends BlockJUnit4ClassRunner {
+ public static final String TOMEE_TEST_IT_WORKING_DIR = "tomee.test.it.working-dir";
+ public static final String TOMEE_TEST_IT_RETRIES = "tomee.test.it.retries";
+ public static final String HTTP_PROP_PREFIX = "tomee.it.";
+ public static final String HTTP_PROP_SUFFIX = ".http";
+
+ private static final String WORKING_DIR = System.getProperty(TOMEE_TEST_IT_WORKING_DIR, "target/it-working-dir");
+ private static final String OPENEJB_HOME = "openejb.home";
+ private static final String SERVER_SHUTDOWN_PORT = "server.shutdown.port";
+
+ private final List<ServerInfo> servers;
+ private final RemoteServer[] remoteServers;
+
+ public ITTomEERunner(final Class<?> klass) throws InitializationError {
+ super(klass);
+
+ servers = new ArrayList<ServerInfo>();
+
+ final Servers serversAnnotation = klass.getAnnotation(Servers.class);
+ if (serversAnnotation != null) {
+ for (Server server : serversAnnotation.value()) {
+ addServer(server);
+ }
+ }
+
+ final Server serverAnnotation = klass.getAnnotation(Server.class);
+ if (serverAnnotation != null) {
+ addServer(serverAnnotation);
+ }
+
+ remoteServers = new RemoteServer[servers.size()];
+ }
+
+ private void addServer(final Server server) throws InitializationError {
+ final ServerInfo info = new ServerInfo();
+
+ info.name = server.name();
+ if (info.name == null || info.name.isEmpty()) {
+ info.name = getTestClass().getJavaClass().getSimpleName();
+ }
+
+ info.configurationDir = server.configurationDir();
+ if (info.configurationDir == null || info.configurationDir.isEmpty()) {
+ info.configurationDir = info.name;
+ }
+
+ info.clean = server.cleanWebapp();
+ info.httpPort = server.http();
+ info.shutdownPort = server.shutdown();
+ info.ajpPort = server.ajp();
+
+ final Class<? extends ServerTweaker> tweaker = server.tweaker();
+ try {
+ info.tweaker = tweaker.newInstance();
+ } catch (InstantiationException e) {
+ throw new InitializationError(e);
+ } catch (IllegalAccessException e) {
+ throw new InitializationError(e);
+ }
+
+ final Artifact art = server.artifact();
+ info.server = Repository.getArtifact(art.groupId(), art.artifactId(), art.version(), art.type(), art.classifier());
+
+ servers.add(info);
+ }
+
+ @Override
+ protected Statement withBeforeClasses(final Statement statement) {
+ return new BeforeClassStatement(super.withBeforeClasses(statement));
+ }
+
+ @Override
+ protected Statement withAfterClasses(final Statement statement) {
+ return new AfterClassStatement(super.withAfterClasses(statement));
+ }
+
+ private class BeforeClassStatement extends Statement {
+ private final Statement delegate;
+
+ public BeforeClassStatement(final Statement statement) {
+ delegate = statement;
+ }
+
+ @Override
+ public void evaluate() throws Throwable {
+ final String oldOpenEJBHome = System.getProperty(OPENEJB_HOME);
+ final String oldShutdownPort = System.getProperty(SERVER_SHUTDOWN_PORT);
+
+ int i = 0;
+ for (ServerInfo info : servers) {
+ final File tomee = new File(WORKING_DIR, info.name);
+ Files.mkdirs(tomee);
+ Zips.unzip(info.server, tomee, true);
+
+ final TomEEConfiguration config = new TomEEConfiguration();
+ if (info.httpPort <= 0) {
+ info.httpPort = NetworkUtil.getNextAvailablePort();
+ }
+ config.setHttpPort(info.httpPort);
+
+ if (info.shutdownPort <= 0) {
+ info.shutdownPort = info.httpPort + 1;
+ }
+ config.setStopPort(NetworkUtil.getNextAvailablePort());
+
+ if (info.ajpPort <= 0) {
+ info.ajpPort = info.shutdownPort + 1;
+ }
+ config.setAjpPort(NetworkUtil.getNextAvailablePort());
+
+ Setup.updateServerXml(tomee, config, 8080, 8005, 8009);
+
+ if (info.clean) { // speed up a bit
+ Setup.removeUselessWebapps(tomee);
+ }
+
+ final File conf = new File(info.configurationDir);
+ if (conf.exists() && conf.isDirectory()) {
+ IO.copyDirectory(conf, new File(tomee, "conf"));
+ }
+
+ info.tweaker.tweak(tomee);
+
+ // start the server
+ System.setProperty(OPENEJB_HOME, tomee.getCanonicalPath());
+ System.setProperty(SERVER_SHUTDOWN_PORT, Integer.toString(config.getStopPort()));
+ remoteServers[i] = new RemoteServer(Integer.getInteger(TOMEE_TEST_IT_RETRIES, 100), true);
+ remoteServers[i].start();
+
+ System.setProperty(HTTP_PROP_PREFIX + info.name + HTTP_PROP_SUFFIX, Integer.toString(info.httpPort));
+
+ i++;
+ }
+ try {
+ delegate.evaluate();
+ } finally {
+ resetSystemProperty(OPENEJB_HOME, oldOpenEJBHome);
+ resetSystemProperty(SERVER_SHUTDOWN_PORT, oldShutdownPort);
+ }
+ }
+
+ private void resetSystemProperty(final String key, final String old) {
+ if (old != null) {
+ System.setProperty(key, old);
+ } else {
+ System.clearProperty(key);
+ }
+ }
+ }
+
+ private class AfterClassStatement extends Statement {
+ private final Statement delegate;
+
+ public AfterClassStatement(final Statement statement) {
+ delegate = statement;
+ }
+
+ @Override
+ public void evaluate() throws Throwable {
+ delegate.evaluate();
+
+ if (servers != null) {
+ for (RemoteServer server : remoteServers) {
+ if (server != null) {
+ server.stop();
+ }
+ }
+ }
+ Files.delete(new File(WORKING_DIR));
+ }
+ }
+
+ private static class ServerInfo {
+ private String name;
+ private String configurationDir;
+ private int httpPort;
+ private int shutdownPort;
+ private int ajpPort;
+ private boolean clean;
+ private ServerTweaker tweaker;
+ private File server;
+ }
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Repository.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Repository.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Repository.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Repository.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,36 @@
+package org.apache.openejb.itest.tomee;
+
+import java.io.File;
+import org.apache.openejb.resolver.Resolver;
+
+import static org.apache.openejb.loader.ProvisioningUtil.OPENEJB_DEPLOYER_CACHE_FOLDER;
+
+public class Repository {
+ private static final Resolver RESOLVER = new Resolver();
+
+ public static File getArtifact(final String groupId, final String artifactId, final String version, final String type, final String classifier) {
+ final String oldCache = System.getProperty(OPENEJB_DEPLOYER_CACHE_FOLDER);
+ System.setProperty(OPENEJB_DEPLOYER_CACHE_FOLDER, System.getProperty("tomee.test.it.cache", "target/cache"));
+
+ final StringBuilder builder = new StringBuilder("mvn:")
+ .append(groupId).append(":").append(artifactId).append(":")
+ .append(version).append(":")
+ .append(type);
+
+ if (classifier != null) {
+ builder.append(":").append(classifier);
+ }
+
+ try {
+ return new File(RESOLVER.resolve(builder.toString()));
+ } catch (Exception e) {
+ throw new ITRuntimeException(e);
+ } finally {
+ if (oldCache == null) {
+ System.clearProperty(OPENEJB_DEPLOYER_CACHE_FOLDER);
+ } else {
+ System.setProperty(OPENEJB_DEPLOYER_CACHE_FOLDER, oldCache);
+ }
+ }
+ }
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Server.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,20 @@
+package org.apache.openejb.itest.tomee;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target({ TYPE })
+@Retention(RUNTIME)
+public @interface Server {
+ String name() default ""; // name
+ String configurationDir() default "";
+ int http() default -1;
+ int shutdown() default -1;
+ int ajp() default -1;
+ Class<? extends ServerTweaker> tweaker() default SimpleTweaker.class;
+ boolean cleanWebapp() default true;
+ Artifact artifact() default @Artifact;
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ServerTweaker.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ServerTweaker.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ServerTweaker.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/ServerTweaker.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,7 @@
+package org.apache.openejb.itest.tomee;
+
+import java.io.File;
+
+public interface ServerTweaker {
+ void tweak(File home);
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Servers.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Servers.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Servers.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/Servers.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,13 @@
+package org.apache.openejb.itest.tomee;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target({ TYPE })
+@Retention(RUNTIME)
+public @interface Servers {
+ Server[] value() default {};
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/main/java/org/apache/openejb/itest/tomee/SimpleTweaker.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,38 @@
+package org.apache.openejb.itest.tomee;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.openejb.loader.IO;
+
+public class SimpleTweaker implements ServerTweaker {
+ @Override
+ public void tweak(final File home) {
+ // no-op
+ }
+
+ protected void addLib(final File home, final String groupId, final String artifactId, final String version) {
+ final File jar = findJar(groupId, artifactId, version);
+ copy(jar, new File(home, "lib/" + jar.getName()));
+ }
+
+ protected void addWebapp(final File home, final String groupId, final String artifactId, final String version) {
+ final File war = findWebapp(groupId, artifactId, version);
+ copy(war, new File(home, "webapps/" + war.getName()));
+ }
+
+ protected File findJar(final String groupId, final String artifactId, final String version) {
+ return Repository.getArtifact(groupId, artifactId, version, "jar", null);
+ }
+
+ protected File findWebapp(final String groupId, final String artifactId, final String version) {
+ return Repository.getArtifact(groupId, artifactId, version, "war", null);
+ }
+
+ protected void copy(final File from, final File to) {
+ try {
+ IO.copy(from, to);
+ } catch (IOException e) {
+ throw new ITRuntimeException(e);
+ }
+ }
+}
Added: openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/MultipleServerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/MultipleServerTest.java?rev=1324917&view=auto
==============================================================================
--- openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/MultipleServerTest.java (added)
+++ openejb/trunk/openejb/itests/openejb-tomee-itest/src/test/java/org/apache/openejb/itest/tomee/MultipleServerTest.java Wed Apr 11 19:04:04 2012
@@ -0,0 +1,30 @@
+package org.apache.openejb.itest.tomee;
+
+import java.net.URL;
+import org.apache.openejb.loader.IO;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+
+@Servers({
+ @Server(name = "tomee1"),
+ @Server(name = "tomee2"),
+ @Server(name = "tomee3")
+})
+@RunWith(ITTomEERunner.class)
+public class MultipleServerTest {
+ @Test // any client test
+ public void checkServersAreOn() throws Exception {
+ for (int i = 1; i <= 3; i++) {
+ final URL url = new URL("http://localhost:" + System.getProperty("tomee.it.tomee" + i + ".http") + "/tomee");
+ final String str = IO.slurp(url);
+
+ assertNotNull(str);
+ assertThat(str, containsString("Welcome to Apache TomEE"));
+ }
+ }
+}
+
Modified: openejb/trunk/openejb/itests/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/itests/pom.xml?rev=1324917&r1=1324916&r2=1324917&view=diff
==============================================================================
--- openejb/trunk/openejb/itests/pom.xml (original)
+++ openejb/trunk/openejb/itests/pom.xml Wed Apr 11 19:04:04 2012
@@ -36,6 +36,7 @@
<module>openejb-itests-interceptor-beans</module>
<module>openejb-itests-app</module>
<module>openejb-itests-web</module>
+ <module>openejb-tomee-itest</module>
<module>failover</module>
<module>failover-ejb</module>
</modules>