You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2022/07/29 19:13:03 UTC
[activemq-artemis] branch main updated: NO-JIRA Improving dependency-scan for compatibility-tests
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push:
new 71b781d919 NO-JIRA Improving dependency-scan for compatibility-tests
71b781d919 is described below
commit 71b781d9193c64e34e9d986939af40745ea9740b
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Fri Jul 29 09:20:02 2022 -0400
NO-JIRA Improving dependency-scan for compatibility-tests
---
.../artemis/maven/ArtemisAbstractPlugin.java | 2 +-
.../artemis/maven/ArtemisDependencyScanPlugin.java | 32 ++++-
tests/compatibility-tests/pom.xml | 132 +++------------------
.../tests/compatibility/base/ClasspathBase.java | 26 ++--
4 files changed, 56 insertions(+), 136 deletions(-)
diff --git a/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisAbstractPlugin.java b/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisAbstractPlugin.java
index 304df892a9..6668ff1a45 100644
--- a/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisAbstractPlugin.java
+++ b/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisAbstractPlugin.java
@@ -150,7 +150,7 @@ public abstract class ArtemisAbstractPlugin extends AbstractMojo {
}
});
}
- getLog().info(writer.toString());
+ getLog().debug(writer.toString());
return dependencies;
}
diff --git a/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisDependencyScanPlugin.java b/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisDependencyScanPlugin.java
index 9091535ca7..00da6055f2 100644
--- a/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisDependencyScanPlugin.java
+++ b/artemis-maven-plugin/src/main/java/org/apache/activemq/artemis/maven/ArtemisDependencyScanPlugin.java
@@ -16,7 +16,10 @@
*/
package org.apache.activemq.artemis.maven;
+import java.io.BufferedOutputStream;
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
@@ -56,6 +59,9 @@ public class ArtemisDependencyScanPlugin extends ArtemisAbstractPlugin {
@Parameter
private String variableName;
+ @Parameter
+ private String file;
+
@Parameter
private String pathSeparator = File.pathSeparator;
@@ -85,23 +91,23 @@ public class ArtemisDependencyScanPlugin extends ArtemisAbstractPlugin {
remoteRepos.add(repo);
}
}
- getLog().info("Local " + localRepository);
+ getLog().debug("Local " + localRepository);
project = (MavenProject) getPluginContext().get("project");
Map properties = getPluginContext();
Set<Map.Entry> entries = properties.entrySet();
- getLog().info("Entries.size " + entries.size());
+ getLog().debug("Entries.size " + entries.size());
for (Map.Entry entry : entries) {
- getLog().info("... key=" + entry.getKey() + " = " + entry.getValue());
+ getLog().debug("... key=" + entry.getKey() + " = " + entry.getValue());
}
try {
StringBuffer buffer = new StringBuffer();
Set<File> filesSet = resolveDependencies(libListWithDeps, libList);
- if (variableName != null) {
+ if (variableName != null || file != null) {
String separatorUsed = "";
for (File f : filesSet) {
buffer.append(separatorUsed);
@@ -111,6 +117,22 @@ public class ArtemisDependencyScanPlugin extends ArtemisAbstractPlugin {
String classPathGenerated = buffer.toString();
setVariable(classPathGenerated);
+
+ if (file != null) {
+ File fileOutput = new File(file);
+ try {
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Generating file " + file + " with classpath output for " + variableName);
+ getLog().debug(classPathGenerated);
+ }
+ PrintStream printStream = new PrintStream(new BufferedOutputStream(new FileOutputStream(fileOutput)));
+ printStream.print(classPathGenerated);
+ printStream.close();
+ } catch (Exception e) {
+ getLog().error("could not generate file with classpath", e);
+ }
+ }
+
}
if (targetFolder != null) {
@@ -138,7 +160,7 @@ public class ArtemisDependencyScanPlugin extends ArtemisAbstractPlugin {
private void setVariable(String classPathGenerated) {
if (variableName != null) {
project.getProperties().setProperty(variableName, classPathGenerated);
- getLog().info("dependency-scan setting: -D" + variableName + "=\"" + classPathGenerated + "\"");
+ getLog().debug("dependency-scan setting: -D" + variableName + "=\"" + classPathGenerated + "\"");
}
}
diff --git a/tests/compatibility-tests/pom.xml b/tests/compatibility-tests/pom.xml
index f86066c81a..d608faee8b 100644
--- a/tests/compatibility-tests/pom.xml
+++ b/tests/compatibility-tests/pom.xml
@@ -286,6 +286,7 @@
<plugin>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-maven-plugin</artifactId>
+ <version>${project.version}</version>
<executions>
<!-- The executions of dependency-scan will calculate dependencies for each specific version used here on this testsuite. -->
<execution>
@@ -307,7 +308,7 @@
<libList>
<arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
</libList>
- <variableName>ARTEMIS-SNAPSHOT</variableName>
+ <file>${basedir}/target/ARTEMIS-SNAPSHOT.cp</file>
</configuration>
</execution><!-- The executions of dependency-scan will calculate dependencies for each specific version used here on this testsuite. -->
<execution>
@@ -335,7 +336,7 @@
<arg>org.apache.activemq:artemis-jakarta-service-extensions:${project.version}</arg>
<arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
</libList>
- <variableName>ARTEMIS-JAKARTAEE</variableName>
+ <file>${basedir}/target/ARTEMIS-JAKARTAEE.cp</file>
</configuration>
</execution>
<execution>
@@ -359,7 +360,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-263</variableName>
+ <file>${basedir}/target/ARTEMIS-263.cp</file>
</configuration>
</execution>
<execution>
@@ -383,7 +384,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-270</variableName>
+ <file>${basedir}/target/ARTEMIS-270.cp</file>
</configuration>
</execution>
<execution>
@@ -409,7 +410,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-2_10_0</variableName>
+ <file>${basedir}/target/ARTEMIS-2_10_0.cp</file>
</configuration>
</execution>
<execution>
@@ -435,7 +436,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-2_17_0</variableName>
+ <file>${basedir}/target/ARTEMIS-2_17_0.cp</file>
</configuration>
</execution> <execution>
<phase>compile</phase>
@@ -460,7 +461,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-2_18_0</variableName>
+ <file>${basedir}/target/ARTEMIS-2_18_0.cp</file>
</configuration>
</execution>
@@ -487,7 +488,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-2_22_0</variableName>
+ <file>${basedir}/target/ARTEMIS-2_22_0.cp</file>
</configuration>
</execution>
<execution>
@@ -512,7 +513,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-240</variableName>
+ <file>${basedir}/target/ARTEMIS-240.cp</file>
</configuration>
</execution>
<execution>
@@ -537,7 +538,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-210</variableName>
+ <file>${basedir}/target/ARTEMIS-210.cp</file>
</configuration>
</execution>
<execution>
@@ -562,7 +563,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-200</variableName>
+ <file>${basedir}/target/ARTEMIS-200.cp</file>
</configuration>
</execution>
<execution>
@@ -586,7 +587,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-140</variableName>
+ <file>${basedir}/target/ARTEMIS-140.cp</file>
</configuration>
</execution>
<execution>
@@ -611,7 +612,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>ARTEMIS-155</variableName>
+ <file>${basedir}/target/ARTEMIS-155.cp</file>
</configuration>
</execution>
<execution>
@@ -636,7 +637,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>HORNETQ-235</variableName>
+ <file>${basedir}/target/HORNETQ-235.cp</file>
</configuration>
</execution>
<execution>
@@ -661,7 +662,7 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>HORNETQ-247</variableName>
+ <file>${basedir}/target/HORNETQ-247.cp</file>
</configuration>
</execution>
@@ -682,110 +683,11 @@
</libList>
<!-- for future maintainers, notice that if you add new variables you also need to add the system property
otherwise this is not captured, search for the word @@@@ on this pom where I left anothr comment -->
- <variableName>AMQ_5_11</variableName>
+ <file>${basedir}/target/AMQ_5_11.cp</file>
</configuration>
</execution>
</executions>
</plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <!-- @@@@ as I stated above, you also need to define the system property here otherwise the property won't be captured
- by the execution.
- I couldn't find a better way to define this inside the maven plugin, perhaps there's an easier way,
- if you know a way to get rid of this it would be a nice improvement -->
- <systemProperties>
- <property>
- <name>ARTEMIS-SNAPSHOT</name>
- <value>${ARTEMIS-SNAPSHOT}</value>
- </property>
- <property>
- <name>ARTEMIS-200</name>
- <value>${ARTEMIS-200}</value>
- </property>
- <property>
- <name>ARTEMIS-210</name> <!-- 2.1.0 -->
- <value>${ARTEMIS-210}</value>
- </property>
- <property>
- <name>ARTEMIS-2_10_0</name> <!-- 2.10.0 -->
- <value>${ARTEMIS-2_10_0}</value>
- </property>
- <property>
- <name>ARTEMIS-2_17_0</name>
- <value>${ARTEMIS-2_17_0}</value>
- </property>
- <property>
- <name>ARTEMIS-2_18_0</name>
- <value>${ARTEMIS-2_18_0}</value>
- </property>
- <property>
- <name>ARTEMIS-2_22_0</name>
- <value>${ARTEMIS-2_22_0}</value>
- </property>
- <property>
- <name>ARTEMIS-240</name>
- <value>${ARTEMIS-240}</value>
- </property>
- <property>
- <name>ARTEMIS-155</name>
- <value>${ARTEMIS-155}</value>
- </property>
- <property>
- <name>ARTEMIS-140</name>
- <value>${ARTEMIS-140}</value>
- </property>
- <property>
- <name>HORNETQ-235</name>
- <value>${HORNETQ-235}</value>
- </property>
- <property>
- <name>HORNETQ-247</name>
- <value>${HORNETQ-247}</value>
- </property>
- <property>
- <name>ARTEMIS-263</name>
- <value>${ARTEMIS-263}</value>
- </property>
- <property>
- <name>ARTEMIS-270</name>
- <value>${ARTEMIS-270}</value>
- </property>
- <property>
- <name>ARTEMIS-JAKARTAEE</name>
- <value>${ARTEMIS-JAKARTAEE}</value>
- </property>
- <property>
- <name>AMQ_5_11</name>
- <value>${AMQ_5_11}</value>
- </property>
- <variableName>AMQ_5_11</variableName>
- </systemProperties>
- <skipTests>${skipCompatibilityTests}</skipTests>
- <argLine>${modular.jdk.surefire.arg} -Djgroups.bind_addr=::1 ${activemq-surefire-argline}</argLine>
- </configuration>
- </plugin>
- <!-- during testing and debugging, it may be useful to add all the classpath variables to your IDE settings and run compatibility tests manually.
- uncomment this next group so you will have a big line to add to your test setting -->
- <!-- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <phase>compile</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <tasks>
- <echo>You can use this line to include into your tests runnings</echo>
- <echo>-DARTEMIS-200="${ARTEMIS-200}" -DARTEMIS-210="${ARTEMIS-210}" -DARTEMIS-263="${ARTEMIS-263}" -DARTEMIS-240="${ARTEMIS-240}" -DARTEMIS-155="${ARTEMIS-155}" -DARTEMIS-140="${ARTEMIS-140}" -DHORNETQ-235="${HORNETQ-235}" -DHORNETQ-247="${HORNETQ-247}" -DARTEMIS-270="${ARTEMIS-270}" -DARTEMIS-240="${ARTEMIS-240}" -DARTEMIS-155="${ARTEMIS-155}" -DARTEMIS-140="${ARTEMIS-140}"</echo>
- </tasks>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
<plugin>
<groupId>org.apache.servicemix.tooling</groupId>
<artifactId>depends-maven-plugin</artifactId>
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/base/ClasspathBase.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/base/ClasspathBase.java
index 3fd4554e47..eb504b3a94 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/base/ClasspathBase.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/base/ClasspathBase.java
@@ -20,6 +20,7 @@ package org.apache.activemq.artemis.tests.compatibility.base;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
+import java.nio.file.Files;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -27,6 +28,7 @@ import java.util.Map;
import org.apache.activemq.artemis.tests.compatibility.GroovyRun;
import org.jboss.logging.Logger;
import org.junit.AfterClass;
+import org.junit.Assert;
import org.junit.Assume;
import org.junit.ClassRule;
import org.junit.Rule;
@@ -166,23 +168,17 @@ public class ClasspathBase {
}
}
- String value = System.getProperty(name);
-
- if (!printed.contains(name)) {
- boolean ok = value != null && !value.trim().isEmpty();
- if (!ok) {
- System.out.println("Add \"-D" + name + "=\'CLASSPATH\'\" into your VM settings");
- System.out.println("You will see it in the output from mvn install at the compatibility-tests");
- System.out.println("... look for output from dependency-scan");
-
- // our dependency scan used at the pom under compatibility-tests/pom.xml will generate these, example:
- // [INFO] dependency-scan setting: -DARTEMIS-140="/Users/someuser/....."
- // copy that into your IDE setting and you should be able to debug it
- }
- Assume.assumeTrue("Cannot run these tests, no classpath found", ok);
+ String classPathValue = null;
+ File file = new File("./target/" + name + ".cp");
+ if (file.exists()) {
+ StringBuffer buffer = new StringBuffer();
+ Files.lines(file.toPath()).forEach((str) -> buffer.append(str));
+ classPathValue = buffer.toString();
}
- ClassLoader loader = defineClassLoader(value);
+ Assert.assertTrue("Cannot run compatibility tests, no classpath found on ./target/" + name + ".cp", classPathValue != null && !classPathValue.trim().equals(""));
+
+ ClassLoader loader = defineClassLoader(classPathValue);
if (!forceNew) {
// if we are forcing a new one, there's no point in caching it
loaderMap.put(name, loader);