diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d0697acff560..ad9747d3b64a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -60,7 +60,7 @@ jobs:
run: |
ant -noinput echoproperties deploy embed test-nio test-status
env:
- ANT_OPTS: -Dtest.openssl.exists=false -Dtest.excludePerformance=true -Dtest.exclude=jakarta/servlet/http/TestHttpServletResponseSendError.java,org/apache/catalina/authenticator/TestFormAuthenticatorA.java,org/apache/catalina/authenticator/TestFormAuthenticatorB.java,org/apache/catalina/authenticator/TestFormAuthenticatorC.java,org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java,org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java,org/apache/catalina/core/TestAsyncContextImpl.java,org/apache/catalina/core/TestAsyncContextStateChanges.java,org/apache/catalina/core/TestStandardContextResources.java,org/apache/catalina/core/TestStandardWrapper.java,org/apache/catalina/loader/TestVirtualContext.java,org/apache/catalina/mapper/TestMapperWebapps.java,org/apache/catalina/nonblocking/TestNonBlockingAPI.java,org/apache/catalina/servlets/TestDefaultServletEncodingPassThroughBom.java,org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java,org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java,org/apache/catalina/servlets/TestDefaultServletIfMatchRequests.java,org/apache/catalina/servlets/TestDefaultServlet.java,org/apache/catalina/servlets/TestDefaultServletOptions.java,org/apache/catalina/servlets/TestWebdavServletOptionsFile.java,org/apache/catalina/startup/TestContextConfig.java,org/apache/catalina/startup/TestHostConfigAutomaticDeploymentA.java,org/apache/catalina/startup/TestHostConfigAutomaticDeploymentB.java,org/apache/catalina/startup/TestHostConfigAutomaticDeploymentC.java,org/apache/catalina/valves/rewrite/TestRewriteValve.java,org/apache/catalina/valves/TestStuckThreadDetectionValve.java,org/apache/coyote/ajp/TestAbstractAjpProcessor.java,org/apache/coyote/http11/filters/TestChunkedInputFilter.java,org/apache/coyote/http11/TestHttp11InputBufferCRLF.java,org/apache/coyote/http11/TestHttp11InputBuffer.java,org/apache/coyote/http11/TestHttp11Processor.java,org/apache/coyote/http2/TestAsync.java,org/apache/coyote/http2/TestHttp2ConnectionTimeouts.java,org/apache/coyote/http2/TestHttp2Limits.java,org/apache/coyote/http2/TestHttp2Section_6_8.java,org/apache/coyote/http2/TestHttp2Timeouts.java,org/apache/coyote/http2/TestStreamQueryString.java,org/apache/el/TestELInJsp.java,org/apache/jasper/compiler/TestCompiler.java,org/apache/jasper/compiler/TestEncodingDetector.java,org/apache/jasper/compiler/TestGenerator.java,org/apache/jasper/compiler/TestJspConfig.java,org/apache/jasper/compiler/TestJspDocumentParser.java,org/apache/jasper/compiler/TestValidator.java,org/apache/jasper/optimizations/TestELInterpreterTagSetters.java,org/apache/jasper/optimizations/TestStringInterpreterTagSetters.java,org/apache/jasper/runtime/TestCustomHttpJspPage.java,org/apache/jasper/runtime/TestJspContextWrapper.java,org/apache/jasper/runtime/TestJspRuntimeLibrary.java,org/apache/jasper/runtime/TestPageContextImpl.java,org/apache/jasper/servlet/TestTldScanner.java,org/apache/naming/resources/TestWarDirContext.java,org/apache/naming/TestEnvEntry.java,org/apache/tomcat/util/net/TestClientCert.java,org/apache/tomcat/util/net/TestCustomSslTrustManager.java,org/apache/tomcat/util/net/TestSSLHostConfigCompat.java,org/apache/tomcat/util/net/TestSsl.java,org/apache/tomcat/websocket/server/TestSlowClient.java,org/apache/tomcat/websocket/server/TestWsRemoteEndpointImplServerDeadlock.java,org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java,org/apache/tomcat/websocket/TestWsWebSocketContainer.java,org/apache/tomcat/websocket/TestWsWebSocketContainerTimeoutServer.java,org/apache/catalina/tribes/group/interceptors/TestTcpFailureDetector.java,org/apache/catalina/filters/TestRateLimitFilter.java,jakarta/servlet/http/TestHttpServletDoHeadInvalidWrite*.java,jakarta/servlet/http/TestHttpServletDoHeadValidWrite*.java
+ ANT_OPTS: -Dtest.openssl.exists=false -Dtest.excludePerformance=true -Dtest.profile=smoke
- name: Upload logs
if: ${{ !cancelled() }}
diff --git a/build.xml b/build.xml
index e773724134bd..0dba1d5125de 100644
--- a/build.xml
+++ b/build.xml
@@ -198,7 +198,7 @@
-
+
@@ -1942,14 +1942,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ depends="-test-name-default,test-nio,coverage-report,test-status" />
+ depends="clean-classes,-test-name-default,test-nio,coverage-report,test-status" />
+ depends="-test-name-default,test-only-nio,test-status" />
@@ -2092,14 +2182,14 @@
-
-
+
+
-
-
+
+
diff --git a/test-profiles.properties.default b/test-profiles.properties.default
new file mode 100644
index 000000000000..6f73385b3870
--- /dev/null
+++ b/test-profiles.properties.default
@@ -0,0 +1,109 @@
+# -----------------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------------
+# test-profiles.properties
+#
+# This file contains test profile pattern definitions for ant test targets.
+# These patterns are used by the test profile system in build.xml.
+#
+# To add a new profile:
+# 1. Add the property: test.profile.myprofile=pattern
+# 2. Add a condition in build.xml's set-profile-pattern macro
+#
+# -----------------------------------------------------------------------------
+
+# Smoke test profile
+test.profile.smoke=\
+jakarta/servlet/http/TestHttpServletResponseSendError.java,\
+org/apache/catalina/authenticator/TestFormAuthenticatorA.java,\
+org/apache/catalina/authenticator/TestFormAuthenticatorB.java,\
+org/apache/catalina/authenticator/TestFormAuthenticatorC.java,\
+org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java,\
+org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java,\
+org/apache/catalina/core/TestAsyncContextImpl.java,\
+org/apache/catalina/core/TestAsyncContextStateChanges.java,\
+org/apache/catalina/core/TestStandardContextResources.java,\
+org/apache/catalina/core/TestStandardWrapper.java,\
+org/apache/catalina/loader/TestVirtualContext.java,\
+org/apache/catalina/mapper/TestMapperWebapps.java,\
+org/apache/catalina/nonblocking/TestNonBlockingAPI.java,\
+org/apache/catalina/servlets/TestDefaultServletEncodingPassThroughBom.java,\
+org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java,\
+org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java,\
+org/apache/catalina/servlets/TestDefaultServletIfMatchRequests.java,\
+org/apache/catalina/servlets/TestDefaultServlet.java,\
+org/apache/catalina/servlets/TestDefaultServletOptions.java,\
+org/apache/catalina/servlets/TestWebdavServletOptionsFile.java,\
+org/apache/catalina/startup/TestContextConfig.java,\
+org/apache/catalina/startup/TestHostConfigAutomaticDeploymentA.java,\
+org/apache/catalina/startup/TestHostConfigAutomaticDeploymentB.java,\
+org/apache/catalina/startup/TestHostConfigAutomaticDeploymentC.java,\
+org/apache/catalina/valves/rewrite/TestRewriteValve.java,\
+org/apache/catalina/valves/TestStuckThreadDetectionValve.java,\
+org/apache/coyote/ajp/TestAbstractAjpProcessor.java,\
+org/apache/coyote/http11/filters/TestChunkedInputFilter.java,\
+org/apache/coyote/http11/TestHttp11InputBufferCRLF.java,\
+org/apache/coyote/http11/TestHttp11InputBuffer.java,\
+org/apache/coyote/http11/TestHttp11Processor.java,\
+org/apache/coyote/http2/TestAsync.java,\
+org/apache/coyote/http2/TestHttp2ConnectionTimeouts.java,\
+org/apache/coyote/http2/TestHttp2Limits.java,\
+org/apache/coyote/http2/TestHttp2Section_6_8.java,\
+org/apache/coyote/http2/TestHttp2Timeouts.java,\
+org/apache/coyote/http2/TestStreamQueryString.java,\
+org/apache/el/TestELInJsp.java,\
+org/apache/jasper/compiler/TestCompiler.java,\
+org/apache/jasper/compiler/TestEncodingDetector.java,\
+org/apache/jasper/compiler/TestGenerator.java,\
+org/apache/jasper/compiler/TestJspConfig.java,\
+org/apache/jasper/compiler/TestJspDocumentParser.java,\
+org/apache/jasper/compiler/TestValidator.java,\
+org/apache/jasper/optimizations/TestELInterpreterTagSetters.java,\
+org/apache/jasper/optimizations/TestStringInterpreterTagSetters.java,\
+org/apache/jasper/runtime/TestCustomHttpJspPage.java,\
+org/apache/jasper/runtime/TestJspContextWrapper.java,\
+org/apache/jasper/runtime/TestJspRuntimeLibrary.java,\
+org/apache/jasper/runtime/TestPageContextImpl.java,\
+org/apache/jasper/servlet/TestTldScanner.java,\
+org/apache/naming/resources/TestWarDirContext.java,\
+org/apache/naming/TestEnvEntry.java,\
+org/apache/tomcat/util/net/TestClientCert.java,\
+org/apache/tomcat/util/net/TestCustomSslTrustManager.java,\
+org/apache/tomcat/util/net/TestSSLHostConfigCompat.java,\
+org/apache/tomcat/util/net/TestSsl.java,\
+org/apache/tomcat/websocket/server/TestSlowClient.java,\
+org/apache/tomcat/websocket/server/TestWsRemoteEndpointImplServerDeadlock.java,\
+org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java,\
+org/apache/tomcat/websocket/TestWsWebSocketContainer.java,\
+org/apache/tomcat/websocket/TestWsWebSocketContainerTimeoutServer.java,\
+org/apache/catalina/tribes/group/interceptors/TestTcpFailureDetector.java,\
+org/apache/catalina/filters/TestRateLimitFilter.java,\
+jakarta/servlet/http/TestHttpServletDoHeadInvalidWrite*.java,\
+jakarta/servlet/http/TestHttpServletDoHeadValidWrite*.java
+
+# Component test profiles
+test.profile.catalina=**/catalina/**/*Test*.java
+test.profile.coyote=**/coyote/**/*Test*.java
+
+# Performance test profile
+test.profile.performance=**/*Performance.java
+
+# Tribes test profile
+test.profile.tribes=**/tribes/**/*Test*.java
+
+# Build utility test profile: Tests for build tools (normally excluded)
+# Note: These tests depend on classes not in output JARs and are excluded by default
+test.profile.buildutil=**/buildutil/**/*Test*.java
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 360d80a654b5..92d92fb8f32c 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -317,6 +317,12 @@
+
+ Add test profile system for selective test execution. Profiles can be
+ specified via -Dtest.profile=<name> to run specific
+ test subsets without using patterns directly. Profile patterns are
+ defined in test-profiles.properties. (csutherl)
+
Update Derby to 10.17.1.0. (markt)