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 2016/09/09 18:18:25 UTC
tomee git commit: TOMEE-1926 TomEEEmbeddedSingleRunner programmatic
configuration
Repository: tomee
Updated Branches:
refs/heads/master 50c0d734b -> f0718d1ad
TOMEE-1926 TomEEEmbeddedSingleRunner programmatic configuration
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/f0718d1a
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/f0718d1a
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/f0718d1a
Branch: refs/heads/master
Commit: f0718d1adac7f9c51f5026235be249717e681d7f
Parents: 50c0d73
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Fri Sep 9 20:16:58 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Fri Sep 9 20:18:15 2016 +0200
----------------------------------------------------------------------
tomee/tomee-embedded/pom.xml | 28 ++++++++++++++++++++
.../junit/TomEEEmbeddedSingleRunner.java | 21 +++++++++++++--
.../embedded/SingleInstanceRunnerTest.java | 11 +++++++-
3 files changed, 57 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/f0718d1a/tomee/tomee-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/pom.xml b/tomee/tomee-embedded/pom.xml
index d66d7dc..19fd351 100644
--- a/tomee/tomee-embedded/pom.xml
+++ b/tomee/tomee-embedded/pom.xml
@@ -200,6 +200,34 @@
</filters>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-test</id>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <excludes>
+ <exclude>**/SingleInstanceRunnerTest*</exclude>
+ </excludes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>single-server</id>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <includes>
+ <include>**/SingleInstanceRunnerTest*</include>
+ </includes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
http://git-wip-us.apache.org/repos/asf/tomee/blob/f0718d1a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
index 4a7f5fc..fd3d824 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
@@ -16,7 +16,6 @@
*/
package org.apache.tomee.embedded.junit;
-import org.apache.openejb.config.sys.Openejb;
import org.apache.openejb.testing.Application;
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.ContainerProperties;
@@ -198,7 +197,6 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
}
}
- Openejb openejb = null;
final List<Method> annotatedMethods = finder.findAnnotatedMethods(org.apache.openejb.testing.Configuration.class);
if (annotatedMethods.size() > 1) {
throw new IllegalArgumentException("Only one @Configuration is supported: " + annotatedMethods);
@@ -244,9 +242,18 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
configuration.randomHttpPort();
}
+ // at least after LifecycleTasks to inherit from potential states (system properties to get a port etc...)
+ final Configurers configurers = appClass.getAnnotation(Configurers.class);
+ if (tasks != null) {
+ for (final Class<? extends Configurer> type : configurers.value()) {
+ type.newInstance().configure(configuration);
+ }
+ }
+
final Classes classes = appClass.getAnnotation(Classes.class);
String context = classes != null ? classes.context() : "";
context = !context.isEmpty() && context.startsWith("/") ? context.substring(1) : context;
+ // TODO: potentially respect classes() giving to deployClasspath a built Finder
final WebResource resources = appClass.getAnnotation(WebResource.class);
if (resources != null && resources.value().length > 1) {
@@ -382,4 +389,14 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
public @interface LifecycleTasks {
Class<? extends org.apache.tomee.embedded.LifecycleTask>[] value();
}
+
+ @Retention(RUNTIME)
+ @Target(TYPE)
+ public @interface Configurers {
+ Class<? extends Configurer>[] value();
+ }
+
+ public interface Configurer {
+ void configure(Configuration configuration);
+ }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/f0718d1a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
index 295d7cc..94031ea 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertTrue;
// just a manual test to check it works, can't be executed with the rest of the suite,
// we could use a different surefire execution if we want to add it to the default run
-@Ignore("can't run with by test containers")
+//@Ignore("can't run with by test containers")
@RunWith(TomEEEmbeddedSingleRunner.class)
public class SingleInstanceRunnerTest {
@Application // app can have several injections/helpers
@@ -55,6 +55,7 @@ public class SingleInstanceRunnerTest {
assertEquals("set", SystemInstance.get().getProperty("t"));
assertEquals("p", SystemInstance.get().getProperty("prog"));
assertEquals("128463", SystemInstance.get().getProperty("my.server.port"));
+ assertEquals("true", SystemInstance.get().getProperty("configurer"));
assertNotEquals(8080, app.port);
assertTrue(app.base.toExternalForm().endsWith("/app"));
assertEquals(app.port, port);
@@ -64,6 +65,7 @@ public class SingleInstanceRunnerTest {
@Classes(context = "app")
@ContainerProperties(@ContainerProperties.Property(name = "t", value = "set"))
@TomEEEmbeddedSingleRunner.LifecycleTasks(MyTask.class) // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
+ @TomEEEmbeddedSingleRunner.Configurers(SetMyProperty.class)
public static class TheApp {
@RandomPort("http")
private int port;
@@ -90,4 +92,11 @@ public class SingleInstanceRunnerTest {
};
}
}
+
+ public static class SetMyProperty implements TomEEEmbeddedSingleRunner.Configurer {
+ @Override
+ public void configure(final Configuration configuration) {
+ configuration.property("configurer", "true");
+ }
+ }
}