diff --git a/pom.xml b/pom.xml
index 37a8a3c..519418c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
3.6.2
${project.basedir}
5.10.2
- 1.9.0-M14
+ 1.9.0-M17
1.6.13
3.12.0
diff --git a/src/main/java/io/gatling/mojo/AbstractEnterprisePluginMojo.java b/src/main/java/io/gatling/mojo/AbstractEnterprisePluginMojo.java
index ea9b166..ad979fe 100644
--- a/src/main/java/io/gatling/mojo/AbstractEnterprisePluginMojo.java
+++ b/src/main/java/io/gatling/mojo/AbstractEnterprisePluginMojo.java
@@ -17,13 +17,13 @@
package io.gatling.mojo;
import io.gatling.plugin.*;
-import io.gatling.plugin.client.EnterpriseClient;
-import io.gatling.plugin.client.HttpEnterpriseClient;
+import io.gatling.plugin.exceptions.EnterprisePluginException;
import io.gatling.plugin.exceptions.UnsupportedClientException;
import io.gatling.plugin.io.JavaPluginScanner;
import io.gatling.plugin.io.PluginIO;
import io.gatling.plugin.io.PluginLogger;
import io.gatling.plugin.io.PluginScanner;
+import io.gatling.plugin.model.BuildTool;
import java.net.URL;
import java.util.Scanner;
import org.apache.maven.plugin.MojoFailureException;
@@ -81,16 +81,8 @@ public PluginScanner getScanner() {
}
};
- protected BatchEnterprisePlugin initBatchEnterprisePlugin() throws MojoFailureException {
- return new BatchEnterprisePluginClient(initEnterpriseClient(), pluginLogger);
- }
-
- protected InteractiveEnterprisePlugin initInteractiveEnterprisePlugin()
+ private PluginConfiguration pluginConfiguration(Boolean forceBatchMode)
throws MojoFailureException {
- return new InteractiveEnterprisePluginClient(initEnterpriseClient(), pluginIO);
- }
-
- private EnterpriseClient initEnterpriseClient() throws MojoFailureException {
if (apiToken == null) {
final String msg =
"Missing API token\n"
@@ -103,21 +95,33 @@ private EnterpriseClient initEnterpriseClient() throws MojoFailureException {
"MY_API_TOKEN_VALUE");
throw new MojoFailureException(msg);
}
- final String pluginTitle = getClass().getPackage().getImplementationTitle();
- final String pluginVersion = getClass().getPackage().getImplementationVersion();
- if (pluginTitle == null || pluginVersion == null) {
- // Should no happen if the plugin is built and packaged properly
- throw new IllegalStateException("Gatling plugin title and version not found");
+ return new PluginConfiguration(
+ enterpriseUrl,
+ apiToken,
+ controlPlaneUrl,
+ BuildTool.MAVEN,
+ pluginVersion(),
+ forceBatchMode,
+ pluginIO);
+ }
+
+ protected BatchEnterprisePlugin initBatchEnterprisePlugin() throws MojoFailureException {
+ try {
+ return EnterprisePluginProvider.getBatchInstance(pluginConfiguration(true));
+ } catch (UnsupportedClientException e) {
+ throw new UnsupportedClientMojoException(e);
+ } catch (EnterprisePluginException e) {
+ throw new MojoFailureException(e.getMessage(), e);
}
+ }
+ protected EnterprisePlugin initEnterprisePlugin(Boolean forceBatchMode)
+ throws MojoFailureException {
try {
- return new HttpEnterpriseClient(
- enterpriseUrl, apiToken, pluginTitle, pluginVersion, controlPlaneUrl);
+ return EnterprisePluginProvider.getInstance(pluginConfiguration(forceBatchMode));
} catch (UnsupportedClientException e) {
- throw new MojoFailureException(
- "Please update the Gatling Maven plugin to the latest version for compatibility with Gatling Enterprise. See https://gatling.io/docs/gatling/reference/current/extensions/maven_plugin/ for more information about this plugin.",
- e);
- } catch (Exception e) {
+ throw new UnsupportedClientMojoException(e);
+ } catch (EnterprisePluginException e) {
throw new MojoFailureException(e.getMessage(), e);
}
}
diff --git a/src/main/java/io/gatling/mojo/AbstractGatlingMojo.java b/src/main/java/io/gatling/mojo/AbstractGatlingMojo.java
index ade1c70..f25ff68 100644
--- a/src/main/java/io/gatling/mojo/AbstractGatlingMojo.java
+++ b/src/main/java/io/gatling/mojo/AbstractGatlingMojo.java
@@ -17,6 +17,7 @@
package io.gatling.mojo;
import io.gatling.plugin.io.PluginLogger;
+import io.gatling.plugin.model.BuildTool;
import io.gatling.plugin.util.Fork;
import io.gatling.plugin.util.ForkMain;
import io.gatling.plugin.util.JavaLocator;
@@ -48,18 +49,19 @@ public abstract class AbstractGatlingMojo extends AbstractMojo {
/** Maven's repository. */
@Component protected RepositorySystem repository;
- /**
- * Uses 2 different mechanisms to detect if the plugin is in interactive mode:
- *
- *
- * - the kind-of standard CI env var on CI tools
- *
- the standard maven option -B,--batch-mode Run in non-interactive (batch), see mvn:help
- *
- *
- * @return if the plugin is in interactive mode
- */
- protected boolean interactive() {
- return session.getRequest().isInteractiveMode() && !Boolean.parseBoolean(System.getenv("CI"));
+ protected BuildTool buildTool = BuildTool.MAVEN;
+
+ protected String pluginVersion() {
+ final String pluginVersion = getClass().getPackage().getImplementationVersion();
+ if (pluginVersion == null) {
+ // Should not happen if the plugin is built and packaged properly
+ throw new IllegalStateException("Gatling plugin title and version not found");
+ }
+ return pluginVersion;
+ }
+
+ protected Boolean requireBatchMode() {
+ return !session.getRequest().isInteractiveMode();
}
protected List buildTestClasspath() throws Exception {
diff --git a/src/main/java/io/gatling/mojo/CommonLogMessage.java b/src/main/java/io/gatling/mojo/CommonLogMessage.java
index d273490..94d4f4b 100644
--- a/src/main/java/io/gatling/mojo/CommonLogMessage.java
+++ b/src/main/java/io/gatling/mojo/CommonLogMessage.java
@@ -23,7 +23,9 @@ public final class CommonLogMessage {
private CommonLogMessage() {}
public static String simulationStartSuccess(URL enterpriseUrl, String reportsPath) {
- return "Simulation successfully started; reports are available at " + enterpriseUrl + reportsPath;
+ return "Simulation successfully started; reports are available at "
+ + enterpriseUrl
+ + reportsPath;
}
/**
diff --git a/src/main/java/io/gatling/mojo/EnterpriseDeployMojo.java b/src/main/java/io/gatling/mojo/EnterpriseDeployMojo.java
index b23a11c..450c071 100644
--- a/src/main/java/io/gatling/mojo/EnterpriseDeployMojo.java
+++ b/src/main/java/io/gatling/mojo/EnterpriseDeployMojo.java
@@ -19,7 +19,6 @@
import io.gatling.plugin.BatchEnterprisePlugin;
import io.gatling.plugin.deployment.DeploymentConfiguration;
import io.gatling.plugin.exceptions.EnterprisePluginException;
-import io.gatling.plugin.model.BuildTool;
import io.gatling.plugin.model.DeploymentInfo;
import java.io.File;
import org.apache.maven.plugin.MojoFailureException;
@@ -45,9 +44,7 @@ public void execute() throws MojoFailureException {
deploymentFile,
packageFile,
mavenProject.getArtifactId(),
- isPrivateRepositoryEnabled,
- BuildTool.MAVEN,
- getClass().getPackage().getImplementationVersion());
+ isPrivateRepositoryEnabled);
getPluginContext().put(CONTEXT_ENTERPRISE_DEPLOY_INFO, deploymentInfo);
} catch (EnterprisePluginException e) {
diff --git a/src/main/java/io/gatling/mojo/EnterpriseStartMojo.java b/src/main/java/io/gatling/mojo/EnterpriseStartMojo.java
index 90fd2d4..66277a4 100644
--- a/src/main/java/io/gatling/mojo/EnterpriseStartMojo.java
+++ b/src/main/java/io/gatling/mojo/EnterpriseStartMojo.java
@@ -59,7 +59,7 @@ public void execute() throws MojoFailureException {
final Map context = getPluginContext();
final DeploymentInfo deploymentInfo =
(DeploymentInfo) context.get(EnterpriseDeployMojo.CONTEXT_ENTERPRISE_DEPLOY_INFO);
- final EnterprisePlugin plugin = initEnterprisePlugin(interactive());
+ final EnterprisePlugin plugin = initEnterprisePlugin(requireBatchMode());
try {
RunSummary runSummary = plugin.startSimulation(simulationName, deploymentInfo);
@@ -71,10 +71,6 @@ public void execute() throws MojoFailureException {
}
}
- private EnterprisePlugin initEnterprisePlugin(boolean isInteractive) throws MojoFailureException {
- return isInteractive ? initInteractiveEnterprisePlugin() : initBatchEnterprisePlugin();
- }
-
private void waitForRunEnd(EnterprisePlugin plugin, RunSummary startedRun)
throws MojoFailureException {
if (waitForRunEnd) {
diff --git a/src/main/java/io/gatling/mojo/GatlingMojo.java b/src/main/java/io/gatling/mojo/GatlingMojo.java
index 9ac350c..aac0b65 100644
--- a/src/main/java/io/gatling/mojo/GatlingMojo.java
+++ b/src/main/java/io/gatling/mojo/GatlingMojo.java
@@ -22,6 +22,7 @@
import io.gatling.plugin.GatlingConstants;
import io.gatling.plugin.SimulationSelector;
+import io.gatling.plugin.model.BuildPlugin;
import io.gatling.plugin.util.Fork;
import java.io.BufferedWriter;
import java.io.File;
@@ -354,7 +355,7 @@ private List simulations() throws MojoFailureException {
includes,
excludes,
runMultipleSimulations,
- interactive());
+ BuildPlugin.getInstance(buildTool, pluginVersion(), requireBatchMode()).interactive);
SimulationSelector.Result.Error error = result.error;
diff --git a/src/main/java/io/gatling/mojo/RecoverEnterprisePluginException.java b/src/main/java/io/gatling/mojo/RecoverEnterprisePluginException.java
index 6825e52..2eb4872 100644
--- a/src/main/java/io/gatling/mojo/RecoverEnterprisePluginException.java
+++ b/src/main/java/io/gatling/mojo/RecoverEnterprisePluginException.java
@@ -16,7 +16,6 @@
*/
package io.gatling.mojo;
-import io.gatling.plugin.EmptyChoicesException;
import io.gatling.plugin.exceptions.EnterprisePluginException;
import io.gatling.plugin.exceptions.UnsupportedJavaVersionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -46,8 +45,6 @@ static R handle(EnterprisePluginExceptionFunction f, Log log) throws Mojo
+ e.supportedVersion
+ " or lower.";
throw new MojoFailureException(msg);
- } catch (EmptyChoicesException e) {
- throw new MojoFailureException(e.getMessage(), e);
} catch (EnterprisePluginException e) {
throw new MojoFailureException(
"Unhandled Gatling Enterprise plugin exception: " + e.getMessage(), e);
diff --git a/src/main/java/io/gatling/mojo/UnsupportedClientMojoException.java b/src/main/java/io/gatling/mojo/UnsupportedClientMojoException.java
new file mode 100644
index 0000000..0c7932e
--- /dev/null
+++ b/src/main/java/io/gatling/mojo/UnsupportedClientMojoException.java
@@ -0,0 +1,28 @@
+
+/*
+ * Copyright 2011-2022 GatlingCorp (https://gatling.io)
+ *
+ * Licensed 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 io.gatling.mojo;
+
+import io.gatling.plugin.exceptions.UnsupportedClientException;
+import org.apache.maven.plugin.MojoFailureException;
+
+public class UnsupportedClientMojoException extends MojoFailureException {
+ public UnsupportedClientMojoException(UnsupportedClientException e) {
+ super(
+ "Please update the Gatling Maven plugin to the latest version for compatibility with Gatling Enterprise. See https://gatling.io/docs/gatling/reference/current/extensions/maven_plugin/ for more information about this plugin.",
+ e);
+ }
+}