You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ju...@apache.org on 2026/07/19 14:46:02 UTC
(tomee-tck) 06/08: Run the smoke suite through a free-port-selecting wrapper script
This is an automated email from the ASF dual-hosted git repository.
jungm pushed a commit to branch ee11
in repository https://gitbox.apache.org/repos/asf/tomee-tck.git
commit c62154d86c7050affbbd9818754cd1cec498e764
Author: Markus Jung <ju...@apache.org>
AuthorDate: Sun Jul 19 16:29:34 2026 +0200
Run the smoke suite through a free-port-selecting wrapper script
run-smoke-suite.sh selects free http/shutdown ports and passes them as
-Dtomee.http.port/-Dtomee.shutdown.port; the smoke pom defines those
properties, filters them into arquillian.xml and the failsafe
webServerPort, and asserts the effective ports free at validate so the
guard covers caller overrides and runs right before TomEE binds. The
Jenkinsfile Smoke step uses the wrapper and lints the two new scripts.
---
Jenkinsfile | 10 ++++---
runner-smoke/pom.xml | 36 +++++++++++++++++++++++++-
runner-smoke/run-smoke-suite.sh | 27 +++++++++++++++++++
runner-smoke/src/test/resources/arquillian.xml | 4 +--
4 files changed, 71 insertions(+), 6 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 3d6bc47..7d0b1c3 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -39,10 +39,12 @@ pipeline {
sh -n environment/database/require-derby-port-free.sh
sh -n environment/database/wait-for-derby.sh
sh -n environment/tomee/require-tomee-ports-free.sh
+ sh -n environment/ports/select-free-port.sh
sh -n environment/certificates/generate-test-certificates.sh
sh -n runner-webprofile/run-platform-suite.sh
sh -n runner-standalone/run-standalone-suite.sh
sh -n runner-standalone/verify-invoker-result.sh
+ sh -n runner-smoke/run-smoke-suite.sh
'''
sh '''python3 -c '
from pathlib import Path
@@ -64,8 +66,10 @@ from xml.etree import ElementTree
}
}
- // Each branch requests a single-executor ephemeral agent. TomEE and Derby
- // use fixed localhost ports, so two partitions must never share a host.
+ // Each branch requests a single-executor ephemeral agent. The runner
+ // scripts select free localhost ports at branch start and the
+ // require-*-free guards assert the chosen ports right before the servers
+ // bind them.
stage('Smoke') {
matrix {
axes {
@@ -82,7 +86,7 @@ from xml.etree import ElementTree
steps {
deleteDir()
unstash 'source'
- sh './mvnw -B -ntp -pl runner-smoke -am verify'
+ sh 'runner-smoke/run-smoke-suite.sh'
}
post {
always {
diff --git a/runner-smoke/pom.xml b/runner-smoke/pom.xml
index 296db26..45bca4c 100644
--- a/runner-smoke/pom.xml
+++ b/runner-smoke/pom.xml
@@ -18,6 +18,10 @@
<properties>
<!-- A small Web Profile test which creates and deploys one JAX-RS WAR. -->
<smoke.test>com.sun.ts.tests.jaxrs.platform.servletconfig.JAXRSClientIT</smoke.test>
+ <!-- Container bind ports; run-smoke-suite.sh overrides these with
+ free ports selected at branch start. -->
+ <tomee.http.port>8080</tomee.http.port>
+ <tomee.shutdown.port>8005</tomee.shutdown.port>
</properties>
<dependencies>
@@ -65,6 +69,36 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <!-- Assert the effective container ports are free
+ inside the build, immediately before the remote
+ adapter starts TomEE. This asserts ${tomee.*.port}
+ as Maven resolves them, so a caller -D override
+ (last-wins on the mvnw command line) is guarded on
+ its actual value, and the check runs after the
+ reactor build rather than in the wrapper script, so
+ a daemon binding the port during the build cannot
+ slip past. Without it the adapter would silently
+ attach to a foreign server already on the port. -->
+ <id>require-free-tomee-ports</id>
+ <phase>validate</phase>
+ <goals><goal>exec</goal></goals>
+ <configuration>
+ <executable>sh</executable>
+ <arguments>
+ <argument>${maven.multiModuleProjectDirectory}/environment/tomee/require-tomee-ports-free.sh</argument>
+ <argument>${tomee.http.port}</argument>
+ <argument></argument>
+ <argument>${tomee.shutdown.port}</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
@@ -92,7 +126,7 @@
</includes>
<systemPropertyVariables>
<webServerHost>localhost</webServerHost>
- <webServerPort>8080</webServerPort>
+ <webServerPort>${tomee.http.port}</webServerPort>
<junit.log.traceflag>true</junit.log.traceflag>
</systemPropertyVariables>
</configuration>
diff --git a/runner-smoke/run-smoke-suite.sh b/runner-smoke/run-smoke-suite.sh
new file mode 100755
index 0000000..1187be4
--- /dev/null
+++ b/runner-smoke/run-smoke-suite.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# 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.
+
+# Selects free HTTP and shutdown ports and runs the smoke suite on them. The
+# stock plume distribution ships the TLS and AJP connectors commented out, so
+# the smoke run binds only these two host ports.
+
+set -eu
+
+SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
+ROOT_DIR=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
+SELECT_PORT="$ROOT_DIR/environment/ports/select-free-port.sh"
+TOMEE_HTTP_PORT=$(sh "$SELECT_PORT" 8080)
+TOMEE_SHUTDOWN_PORT=$(sh "$SELECT_PORT" 8005 "$TOMEE_HTTP_PORT")
+echo "Using ports: http=$TOMEE_HTTP_PORT shutdown=$TOMEE_SHUTDOWN_PORT"
+
+# Final assertion on the chosen ports: the Arquillian adapter otherwise
+# attaches to whatever already answers on the HTTP port. The empty second arg
+# skips the HTTPS check via the guard's [ -n "$port" ] handling.
+sh "$ROOT_DIR/environment/tomee/require-tomee-ports-free.sh" "$TOMEE_HTTP_PORT" "" "$TOMEE_SHUTDOWN_PORT"
+
+exec "$ROOT_DIR/mvnw" -B -ntp -pl runner-smoke -am verify \
+ "-Dtomee.http.port=$TOMEE_HTTP_PORT" "-Dtomee.shutdown.port=$TOMEE_SHUTDOWN_PORT" "$@"
diff --git a/runner-smoke/src/test/resources/arquillian.xml b/runner-smoke/src/test/resources/arquillian.xml
index e719f1b..e72fdcd 100644
--- a/runner-smoke/src/test/resources/arquillian.xml
+++ b/runner-smoke/src/test/resources/arquillian.xml
@@ -14,8 +14,8 @@
<property name="classifier">${tomee.classifier}</property>
<property name="type">zip</property>
<property name="host">localhost</property>
- <property name="httpPort">8080</property>
- <property name="stopPort">8005</property>
+ <property name="httpPort">${tomee.http.port}</property>
+ <property name="stopPort">${tomee.shutdown.port}</property>
<property name="ajpPort">8009</property>
<property name="cleanOnStartUp">true</property>
<property name="removeUnusedWebapps">true</property>