Skip to content

Commit

Permalink
Simplify core coördinates (#519)
Browse files Browse the repository at this point in the history
  • Loading branch information
basil committed Apr 11, 2023
1 parent 26baa91 commit df344cd
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 47 deletions.
45 changes: 17 additions & 28 deletions src/main/java/org/jenkins/tools/test/PluginCompatTester.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.exception.PluginCompatibilityTesterException;
import org.jenkins.tools.test.exception.PluginSourcesUnavailableException;
Expand Down Expand Up @@ -128,14 +127,10 @@ && localCheckoutProvided()
data.plugins.put(artifactId, extracted);
}

Dependency coreCoordinates = new Dependency();
coreCoordinates.setGroupId("org.jenkins-ci.main");
coreCoordinates.setArtifactId("jenkins-war");
coreCoordinates.setVersion(data.core.version);
coreCoordinates.setType("executable-war");
String coreVersion = data.core.version;

PluginCompatibilityTesterException lastException = null;
LOGGER.log(Level.INFO, "Starting plugin tests on core coordinates {0}", coreCoordinates);
LOGGER.log(Level.INFO, "Starting plugin tests on core version {0}", coreVersion);
for (UpdateSite.Plugin plugin : data.plugins.values()) {
if (!config.getIncludePlugins().isEmpty()
&& !config.getIncludePlugins().contains(plugin.name.toLowerCase())) {
Expand Down Expand Up @@ -171,7 +166,7 @@ && localCheckoutProvided()

try {
Model model = remote.retrieveModel();
testPluginAgainst(coreCoordinates, plugin, model, pcth);
testPluginAgainst(coreVersion, plugin, model, pcth);
} catch (PluginCompatibilityTesterException e) {
if (lastException != null) {
e.addSuppressed(lastException);
Expand All @@ -184,7 +179,7 @@ && localCheckoutProvided()
Level.SEVERE,
String.format(
"Internal error while executing a test for core %s and plugin %s at version %s.",
coreCoordinates.getVersion(), plugin.getDisplayName(), plugin.version),
coreVersion, plugin.getDisplayName(), plugin.version),
e);
}
}
Expand All @@ -205,43 +200,37 @@ private UpdateSite.Plugin extractFromLocalCheckout() throws PluginSourcesUnavail
}

private static File createBuildLogFile(
File workDirectory, String pluginName, String pluginVersion, Dependency coreCoords) {
File workDirectory, String pluginName, String pluginVersion, String coreVersion) {
return new File(workDirectory.getAbsolutePath()
+ File.separator
+ createBuildLogFilePathFor(pluginName, pluginVersion, coreCoords));
+ createBuildLogFilePathFor(pluginName, pluginVersion, coreVersion));
}

private static String createBuildLogFilePathFor(String pluginName, String pluginVersion, Dependency coreCoords) {
return String.format(
"logs/%s/v%s_against_%s_%s_%s.log",
pluginName,
pluginVersion,
coreCoords.getGroupId(),
coreCoords.getArtifactId(),
coreCoords.getVersion());
private static String createBuildLogFilePathFor(String pluginName, String pluginVersion, String coreVersion) {
return String.format("logs/%s/v%s_against_core_version_%s.log", pluginName, pluginVersion, coreVersion);
}

private void testPluginAgainst(
Dependency coreCoordinates, UpdateSite.Plugin plugin, Model model, PluginCompatTesterHooks pcth)
String coreVersion, UpdateSite.Plugin plugin, Model model, PluginCompatTesterHooks pcth)
throws PluginCompatibilityTesterException {
LOGGER.log(
Level.INFO,
"\n\n\n\n\n\n"
+ "#############################################\n"
+ "#############################################\n"
+ "##\n"
+ "## Starting to test {0} {1} against {2}\n"
+ "## Starting to test {0} {1} against core version {2}\n"
+ "##\n"
+ "#############################################\n"
+ "#############################################\n\n\n\n\n",
new Object[] {plugin.name, plugin.version, coreCoordinates});
new Object[] {plugin.name, plugin.version, coreVersion});

File pluginCheckoutDir =
new File(config.getWorkingDir().getAbsolutePath() + File.separator + plugin.name + File.separator);
String parentFolder = null;

// Run any precheckout hooks
BeforeCheckoutContext beforeCheckout = new BeforeCheckoutContext(plugin, model, coreCoordinates, config);
BeforeCheckoutContext beforeCheckout = new BeforeCheckoutContext(plugin, model, coreVersion, config);
pcth.runBeforeCheckout(beforeCheckout);

if (!beforeCheckout.ranCheckout()) {
Expand Down Expand Up @@ -322,7 +311,7 @@ private void testPluginAgainst(
"The plugin has already been checked out, likely due to a multi-module" + " situation; continuing");
}

File buildLogFile = createBuildLogFile(config.getWorkingDir(), plugin.name, plugin.version, coreCoordinates);
File buildLogFile = createBuildLogFile(config.getWorkingDir(), plugin.name, plugin.version, coreVersion);
try {
FileUtils.forceMkdir(buildLogFile.getParentFile()); // Creating log directory
FileUtils.touch(buildLogFile); // Creating log file
Expand All @@ -332,7 +321,7 @@ private void testPluginAgainst(

// Ran the BeforeCompileHooks
BeforeCompilationContext beforeCompile =
new BeforeCompilationContext(plugin, model, coreCoordinates, config, pluginCheckoutDir, parentFolder);
new BeforeCompilationContext(plugin, model, coreVersion, config, pluginCheckoutDir, parentFolder);
pcth.runBeforeCompilation(beforeCompile);

// First build against the original POM. This defends against source incompatibilities
Expand All @@ -357,7 +346,7 @@ private void testPluginAgainst(
BeforeExecutionContext forExecutionHooks = new BeforeExecutionContext(
plugin,
model,
coreCoordinates,
coreVersion,
config,
pluginCheckoutDir,
parentFolder,
Expand All @@ -367,9 +356,9 @@ private void testPluginAgainst(

Map<String, String> properties = new LinkedHashMap<>(config.getMavenProperties());
properties.put("overrideWar", config.getWar().toString());
properties.put("jenkins.version", coreCoordinates.getVersion());
properties.put("jenkins.version", coreVersion);
properties.put("useUpperBounds", "true");
if (new VersionNumber(coreCoordinates.getVersion()).isOlderThan(new VersionNumber("2.382"))) {
if (new VersionNumber(coreVersion).isOlderThan(new VersionNumber("2.382"))) {
/*
* Versions of Jenkins prior to 2.382 are susceptible to JENKINS-68696, in which
* javax.servlet:servlet-api comes from core at version 0. This is an intentional trick
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,7 @@ public boolean check(@NonNull BeforeCompilationContext context) {
(PluginCompatTesterHook<BeforeCheckoutContext>) hook;
if (checkoutHook instanceof AbstractMultiParentHook
&& checkoutHook.check(new BeforeCheckoutContext(
context.getPlugin(),
context.getModel(),
context.getCoreCoordinates(),
context.getConfig()))) {
context.getPlugin(), context.getModel(), context.getCoreVersion(), context.getConfig()))) {
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.io.File;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
import org.jenkins.tools.test.model.UpdateSite;
Expand All @@ -24,9 +23,9 @@ public final class BeforeCheckoutContext extends StageContext {
public BeforeCheckoutContext(
@NonNull UpdateSite.Plugin plugin,
@NonNull Model model,
@NonNull Dependency coreCoordinates,
@NonNull String coreVersion,
@NonNull PluginCompatTesterConfig config) {
super(Stage.CHECKOUT, plugin, model, coreCoordinates, config);
super(Stage.CHECKOUT, plugin, model, coreVersion, config);
}

public boolean ranCheckout() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import edu.umd.cs.findbugs.annotations.CheckForNull;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.io.File;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
import org.jenkins.tools.test.model.UpdateSite;
Expand All @@ -21,11 +20,11 @@ public final class BeforeCompilationContext extends StageContext {
public BeforeCompilationContext(
@NonNull UpdateSite.Plugin plugin,
@NonNull Model model,
@NonNull Dependency coreCoordinates,
@NonNull String coreVersion,
@NonNull PluginCompatTesterConfig config,
@CheckForNull File pluginDir,
@CheckForNull String parentFolder) {
super(Stage.COMPILATION, plugin, model, coreCoordinates, config);
super(Stage.COMPILATION, plugin, model, coreVersion, config);
this.pluginDir = pluginDir;
this.parentFolder = parentFolder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import edu.umd.cs.findbugs.annotations.NonNull;
import java.io.File;
import java.util.List;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.MavenPom;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
Expand All @@ -27,13 +26,13 @@ public final class BeforeExecutionContext extends StageContext {
public BeforeExecutionContext(
@NonNull UpdateSite.Plugin plugin,
@NonNull Model model,
@NonNull Dependency coreCoordinates,
@NonNull String coreVersion,
@NonNull PluginCompatTesterConfig config,
@CheckForNull File pluginDir,
@CheckForNull String parentFolder,
@NonNull List<String> args,
@NonNull MavenPom pom) {
super(Stage.EXECUTION, plugin, model, coreCoordinates, config);
super(Stage.EXECUTION, plugin, model, coreVersion, config);
this.pluginDir = pluginDir;
this.parentFolder = parentFolder;
this.args = args;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.jenkins.tools.test.model.hook;

import edu.umd.cs.findbugs.annotations.NonNull;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
import org.jenkins.tools.test.model.UpdateSite;
Expand All @@ -18,7 +17,7 @@ public abstract class StageContext {
private final Model model;

@NonNull
private final Dependency coreCoordinates;
private final String coreVersion;

@NonNull
private final PluginCompatTesterConfig config;
Expand All @@ -27,12 +26,12 @@ public StageContext(
@NonNull Stage stage,
@NonNull UpdateSite.Plugin plugin,
@NonNull Model model,
@NonNull Dependency coreCoordinates,
@NonNull String coreVersion,
@NonNull PluginCompatTesterConfig config) {
this.stage = stage;
this.plugin = plugin;
this.model = model;
this.coreCoordinates = coreCoordinates;
this.coreVersion = coreVersion;
this.config = config;
}

Expand All @@ -52,8 +51,8 @@ public Model getModel() {
}

@NonNull
public Dependency getCoreCoordinates() {
return coreCoordinates;
public String getCoreVersion() {
return coreVersion;
}

@NonNull
Expand Down

0 comments on commit df344cd

Please sign in to comment.