You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2015/05/12 16:46:04 UTC
[7/8] tomee git commit: TOMEE-1581 endorsed and javaagent for tomee
remote arquillian adapter
TOMEE-1581 endorsed and javaagent for tomee remote arquillian adapter
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/25207a09
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/25207a09
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/25207a09
Branch: refs/heads/fb_tomee2_owb16
Commit: 25207a096c397ab885fb8d260c4a6fd688063cf8
Parents: 515d875
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Mon May 11 09:44:08 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Mon May 11 09:44:08 2015 +0200
----------------------------------------------------------------------
.../apache/openejb/arquillian/common/Setup.java | 33 ++++++++++++--
.../remote/RemoteTomEEConfiguration.java | 20 ++++++++
.../arquillian/remote/RemoteTomEEContainer.java | 27 +++++++++--
.../openejb/arquillian/AdditionalLibsTest.java | 6 +--
.../arquillian/javaagent/JavaagentTest.java | 48 ++++++++++++++++++++
.../src/test/resources/arquillian.xml | 5 +-
6 files changed, 125 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/25207a09/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
index e57fc70..c390190 100644
--- a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
+++ b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
@@ -42,6 +42,8 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import static java.util.Collections.emptyMap;
+
/**
* @version $Rev$ $Date$
*/
@@ -357,13 +359,13 @@ public class Setup {
Files.delete(destination);
}
- public static void addTomEELibraries(final File tomeeHome, final String additionalLibs) {
+ public static Map<File, String> addTomEELibraries(final File libFolder, final String additionalLibs, final boolean parseArgs) {
if (additionalLibs == null) {
- return;
+ return emptyMap();
}
final String libs = additionalLibs.trim();
if (libs.isEmpty()) {
- return;
+ return emptyMap();
}
try { // initializing the SystemInstance because we'll need it for configuration
@@ -374,22 +376,43 @@ public class Setup {
// no-op
}
- final File libFolder = new File(tomeeHome, "lib");
+ final Map<File, String> configs = new HashMap<>();
for (final String lib : libs.split("\n")) {
final String trim = lib.trim();
if (trim.isEmpty() || trim.startsWith("#")) {
continue;
}
+
+ final String args;
+ if (parseArgs) { // javaagent friendly
+ int argsIdx = trim.indexOf('=');
+ if (argsIdx < 0) {
+ argsIdx = trim.indexOf('?');
+ }
+ if (argsIdx > 0) {
+ args = trim.substring(argsIdx);
+ } else {
+ args = "";
+ }
+ } else {
+ args = null;
+ }
+
final Set<String> locations = ProvisioningUtil.realLocation(trim);
for (final String location : locations) {
final File from = new File(location);
try {
- org.apache.openejb.loader.IO.copy(from, new File(libFolder, from.getName()));
+ final File to = new File(libFolder, from.getName());
+ org.apache.openejb.loader.IO.copy(from, to);
+ if (args != null) {
+ configs.put(to, args);
+ }
} catch (final IOException e) {
throw new IllegalArgumentException(e);
}
}
}
+ return configs;
}
private static class TrueFilter implements FileFilter {
http://git-wip-us.apache.org/repos/asf/tomee/blob/25207a09/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java b/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
index 8ed1fe1..63e78f0 100644
--- a/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
+++ b/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
@@ -39,6 +39,8 @@ public class RemoteTomEEConfiguration extends TomEEConfiguration {
private String conf;
private String bin;
private String lib;
+ private String endorsed;
+ private String javaagent;
private String additionalLibs;
private boolean cleanOnStartUp;
private boolean debug;
@@ -94,6 +96,24 @@ public class RemoteTomEEConfiguration extends TomEEConfiguration {
return additionalLibs;
}
+ public String getEndorsed() {
+ return endorsed;
+ }
+
+ public String getJavaagent() {
+ return javaagent;
+ }
+
+ @Multiline
+ public void setEndorsed(final String endorsed) {
+ this.endorsed = endorsed;
+ }
+
+ @Multiline
+ public void setJavaagent(final String javaagent) {
+ this.javaagent = javaagent;
+ }
+
@Multiline
public void setAdditionalLibs(final String additionalLibs) {
this.additionalLibs = additionalLibs;
http://git-wip-us.apache.org/repos/asf/tomee/blob/25207a09/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java b/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
index 15fb446..ce953f7 100644
--- a/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
+++ b/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
@@ -30,7 +30,6 @@ import org.jboss.arquillian.container.spi.client.container.LifecycleException;
import org.jboss.arquillian.protocol.servlet.ServletMethodExecutor;
import org.jboss.shrinkwrap.api.Archive;
-import javax.naming.NamingException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -44,6 +43,7 @@ import java.util.Properties;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.naming.NamingException;
public class RemoteTomEEContainer extends TomEEContainer<RemoteTomEEConfiguration> {
private static final Logger logger = Logger.getLogger(RemoteTomEEContainer.class.getName());
@@ -214,14 +214,33 @@ public class RemoteTomEEContainer extends TomEEContainer<RemoteTomEEConfiguratio
Setup.synchronizeFolder(tomeeHome, configuration.getConf(), "conf");
Setup.synchronizeFolder(tomeeHome, configuration.getBin(), "bin");
Setup.synchronizeFolder(tomeeHome, configuration.getLib(), "lib");
- Setup.addTomEELibraries(tomeeHome, configuration.getAdditionalLibs());
+ Setup.addTomEELibraries(new File(tomeeHome, "lib"), configuration.getAdditionalLibs(), false);
+ if (configuration.getEndorsed() != null && !configuration.getEndorsed().isEmpty()) {
+ final File endorsed = new File(tomeeHome, "endorsed");
+ Files.mkdir(endorsed);
+ Setup.addTomEELibraries(endorsed, configuration.getEndorsed(), false);
+ }
+
+ String opts = configuration.getCatalina_opts();
+ if (configuration.getJavaagent() != null && !configuration.getJavaagent().isEmpty()) {
+ final File javaagent = new File(tomeeHome, "javaagent");
+ Files.mkdir(javaagent);
+ final Map<File, String> agents = Setup.addTomEELibraries(javaagent, configuration.getJavaagent(), true);
+ if (!agents.isEmpty()) {
+ if (opts == null) {
+ opts = "";
+ }
+ for (final Map.Entry<File, String> entry : agents.entrySet()) {
+ opts += " \"-javaagent:" + entry.getKey().getAbsolutePath() + entry.getValue() + "\"";
+ }
+ }
+ configuration.setCatalina_opts(opts);
+ }
Setup.configureServerXml(tomeeHome, configuration);
Setup.configureSystemProperties(tomeeHome, configuration);
- final String opts = configuration.getCatalina_opts();
-
Setup.exportProperties(tomeeHome, configuration, opts == null || (!opts.contains("-Xm") && !opts.matches(".*-XX:[^=]*Size=.*")));
Setup.installArquillianBeanDiscoverer(tomeeHome);
http://git-wip-us.apache.org/repos/asf/tomee/blob/25207a09/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java b/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
index 0b4bb19..6dcd604 100644
--- a/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
+++ b/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
@@ -16,7 +16,7 @@
*/
package org.apache.openejb.arquillian;
-import org.apache.sirona.repositories.Repository;
+import org.apache.sirona.web.servlet.SironaFilter;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
@@ -47,9 +47,9 @@ public class AdditionalLibsTest {
return name.startsWith("sirona-");
}
});
- assertEquals(3, sirona.length); // core, web, aop
+ assertEquals(1, sirona.length); // web
- assertNotNull(Repository.INSTANCE); // would fail if libs are missing
+ assertNotNull(new SironaFilter()); // would fail if libs are missing
}
private static class Tester {
http://git-wip-us.apache.org/repos/asf/tomee/blob/25207a09/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/javaagent/JavaagentTest.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/javaagent/JavaagentTest.java b/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/javaagent/JavaagentTest.java
new file mode 100644
index 0000000..6ef2951
--- /dev/null
+++ b/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/javaagent/JavaagentTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openejb.arquillian.javaagent;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.lang.management.ManagementFactory;
+
+import static org.junit.Assert.fail;
+
+@RunWith(Arquillian.class)
+public class JavaagentTest {
+ @Deployment
+ public static Archive<?> empty() {
+ return ShrinkWrap.create(WebArchive.class, "javaagent.war").addAsResource(EmptyAsset.INSTANCE, "foo");
+ }
+
+ @Test
+ public void checkAgent() {
+ for (final String arg : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
+ if (arg.startsWith("-javaagent") && arg.endsWith("sirona-javaagent-0.2-incubating-shaded.jar")) {
+ return;
+ }
+ }
+ fail("didnt find sirona as javaagent");
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/25207a09/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml b/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
index cb7fc55..2478713 100644
--- a/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
+++ b/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
@@ -28,10 +28,11 @@
<property name="ajpPort">-1</property>
<property name="dir">target/apache-tomee-remote</property>
<property name="additionalLibs">
- mvn:org.apache.sirona:sirona-core:0.2-incubating
- mvn:org.apache.sirona:sirona-aop:0.2-incubating
mvn:org.apache.sirona:sirona-web:0.2-incubating
</property>
+ <property name="javaagent">
+ mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
+ </property>
<property name="appWorkingDir">target/arquillian-test-working-dir</property>
<property name="properties">
openejb.classloader.forced-load=org.apache.openejb