You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2026/03/20 10:11:14 UTC

(camel) branch CAMEL-23214-port-http-servers updated (18df7e5e5124 -> c10a8bd676c5)

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a change to branch CAMEL-23214-port-http-servers
in repository https://gitbox.apache.org/repos/asf/camel.git


 discard 18df7e5e5124 CAMEL-23214: Fix port migration in http-servers tests
 discard 906a5a314fe8 CAMEL-23214: Migrate AvailablePortFinder in camel-platform-http, camel-jetty, camel-coap, camel-undertow tests
     add 3a8cbcf80f8e chore(deps): Bump aws-java-sdk2-version from 2.42.16 to 2.42.17
     add 35c0b7d62430 CAMEL-22948: Add @{argLine} to surefire/failsafe configuration (#22097)
     add cb292e3178d0 chore(camel-test-infra-keycloak): upgrade keycloak.container to 26.5.6 (#22109)
     add 4cc38b84e4d3 chore(deps): Bump io.milvus:milvus-sdk-java from 2.6.15 to 2.6.16
     add eeeb79d9074c Update to spring-boot 4.0.4; align spring-batch 6.0.3 / jooq 3.19.30 / hazelcast 5.5.0 (#22104)
     add 133f04f3349b Migrate huggingface, azure-functions, event from camel-test-junit5 to camel-test-junit6 (#22131)
     add c5f208fa964e Migrate jackson3 family from camel-test-junit5 to camel-test-junit6 (#22132)
     add 490cb841e1e1 Migrate google family from camel-test-junit5 to camel-test-junit6 (#22133)
     add b2dbfc174954 CAMEL-23214: Migrate AvailablePortFinder in camel-vertx tests (#22119)
     add 7918eab788d8 CAMEL-23214: Migrate AvailablePortFinder in camel-telegram tests (#22120)
     add 96b4ba92abd0 CAMEL-23214: Migrate AvailablePortFinder in camel-mllp tests (#22121)
     add ce08755cf621 CAMEL-23214: Migrate AvailablePortFinder in camel-as2 tests (#22122)
     add ed5cf044fcf7 CAMEL-23214: Migrate AvailablePortFinder in camel-grpc tests (#22123)
     add 8dec349a53c4 CAMEL-23214: Migrate AvailablePortFinder in camel-itest tests (#22124)
     add e403cb6f7f71 Fix ServerSocket port finding to use AvailablePort.probePort() (#22102)
     add c28e73d90da8 chore(deps): Bump flatted from 3.3.2 to 3.4.2 in /docs (#22143)
     add f642c3ff4375 CAMEL-23214: Deprecate AvailablePortFinder.getNextAvailable() in favor of find() (#22130)
     add 18d6a66f0620 CAMEL-21917: Fix flaky FromJmsToJdbcIdempotentConsumerToJmsXaTest (#22134)
     add 546195ad8db7 CAMEL-23214: Migrate AvailablePortFinder in camel-cxf and camel-netty tests (#22125)
     add 2803da2ef94e CAMEL-23214: Migrate AvailablePortFinder in camel-thrift, camel-cometd, camel-syslog tests (#22126)
     add fd5bc4452c66 Miscellaneous test fixes (#22129)
     add 76050abf307c Use per-class queue names in JMS tests to prevent shared broker interference (#22138)
     add c0553ad3f17e chore(camel-test-infra-ibmmq): upgrade ibm.mq.container to 9.4.5.0-r2
     add c7239f24c0cd chore(deps): Bump huaweicloud-sdk-version from 3.1.188 to 3.1.189
     add fc0232611226 CAMEL-23218: Add SQL++ (N1QL) query support for Couchbase consumer
     add 84b156714c4d chore(camel-test-infra-milvus): upgrade milvus.container to v2.6.12
     add da8b0dc936e8 CAMEL-23214: Fix AvailablePort visibility - use public AvailablePortFinder API (#22145)
     new 507734e8d1e0 CAMEL-23214: Migrate AvailablePortFinder in camel-platform-http, camel-jetty, camel-coap, camel-undertow tests
     new f6bcb7ac4321 CAMEL-23214: Fix port migration in http-servers tests
     new c10a8bd676c5 CAMEL-23214: Fix JettyFailoverRoundRobinTest port migration direction

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (18df7e5e5124)
            \
             N -- N -- N   refs/heads/CAMEL-23214-port-http-servers (c10a8bd676c5)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/camel/catalog/components/couchbase.json |  70 +++----
 components/camel-ai/camel-huggingface/pom.xml      |   2 +-
 .../camel/component/huggingface/HuggingFaceIT.java |   2 +-
 .../as2/api/AS2AsyncMDNServerConnectionTest.java   |  10 +-
 .../camel/component/as2/api/AS2MessageTest.java    |   2 +-
 .../component/as2/api/AS2MessageTestBase.java      |  12 +-
 .../as2/api/AS2UnencryptedMessageTest.java         |   2 +-
 .../component/as2/AS2AsyncMDNServerManagerIT.java  |  58 +++---
 .../as2/AS2AsyncMdnBasicAuthHeaderTest.java        |  36 ++--
 .../as2/AS2AsyncMdnTokenAuthHeaderTest.java        |  29 +--
 .../component/as2/AS2BasicAuthHeaderTest.java      |  24 +--
 .../camel/component/as2/AS2ClientManagerIT.java    |  34 ++--
 .../as2/AS2ServerBasicAuthHeaderTest.java          |  15 +-
 .../as2/AS2ServerBearerAuthHeaderTest.java         |  15 +-
 .../component/as2/AS2ServerManagerEncryptedIT.java |   6 +-
 .../camel/component/as2/AS2ServerManagerIT.java    |  14 +-
 .../component/as2/AS2ServerManagerITBase.java      |   8 +-
 .../camel/component/as2/AS2ServerSecTestBase.java  |   8 +-
 .../component/as2/AS2TokenAuthHeaderTest.java      |  24 +--
 .../camel-azure/camel-azure-functions/pom.xml      |   2 +-
 .../CometdProducerConsumerAuthenticatedTest.java   |   9 +-
 .../CometdProducerConsumerExtensionTest.java       |  18 +-
 .../cometd/CometdProducerConsumerInOutTest.java    |  18 +-
 .../CometdProducerConsumerInteractiveTest.java     |  14 +-
 .../cometd/CometdProducerConsumerTest.java         |   9 +-
 .../cometd/MultipCometdProducerConsumerTest.java   |  13 +-
 .../cometd/SslCometdProducerConsumerTest.java      |   7 +-
 ...ontextParametersCometdProducerConsumerTest.java |   7 +-
 ...tParametersInUriCometdProducerConsumerTest.java |   7 +-
 ...ontextParametersCometdProducerConsumerTest.java |   7 +-
 .../couchbase/CouchbaseEndpointConfigurer.java     |   9 +
 .../couchbase/CouchbaseEndpointUriFactory.java     |   4 +-
 .../camel/component/couchbase/couchbase.json       |  70 +++----
 .../src/main/docs/couchbase-component.adoc         | 115 +++++++++++-
 .../component/couchbase/CouchbaseConsumer.java     | 204 +++++++++++++++------
 .../component/couchbase/CouchbaseEndpoint.java     | 109 ++++++++++-
 .../component/couchbase/CouchbaseEndpointTest.java |  76 ++++++++
 .../couchbase/integration/ConsumeSqlQueryIT.java   | 168 +++++++++++++++++
 .../cxf/jaxrs/CxfRsProducerStreamCacheTest.java    |   9 +-
 .../cxf/jaxws/CxfConsumerPayloadXPathTest.java     |   7 +-
 .../cxf/jaxws/CxfPayLoadBareSoapTest.java          |   8 +-
 .../cxf/jaxws/CxfProducerProtocalHeaderTest.java   |   8 +-
 .../cxf/jaxws/CxfProducerSoapActionTest.java       |   6 +-
 .../camel/component/cxf/jaxws/CxfProducerTest.java |   6 +-
 .../component/cxf/jaxws/FailOverFeatureTest.java   |   6 +-
 .../camel/component/cxf/CxfMulticastTest.java      |   6 +-
 .../cxf/CxfPayloadRouterContentLengthTest.java     |  10 +-
 .../camel/component/cxf/CxfRecipientListTest.java  |  11 +-
 .../cxf/CxfRecipientListWithUrlParamsTest.java     |  23 ++-
 components/camel-event/pom.xml                     |   2 +-
 .../component/camelevent/EventComponentTest.java   |   2 +-
 .../camel-google/camel-google-firestore/pom.xml    |   2 +-
 .../firestore/GoogleFirestoreComponentTest.java    |   2 +-
 .../integration/GoogleFirestoreITSupport.java      |   2 +-
 .../camel-google-speech-to-text/pom.xml            |   2 +-
 .../integration/GoogleCloudSpeechToTextIT.java     |   2 +-
 .../unit/GoogleCloudSpeechToTextComponentTest.java |   2 +-
 .../camel-google-text-to-speech/pom.xml            |   2 +-
 .../integration/GoogleCloudTextToSpeechIT.java     |   2 +-
 .../unit/GoogleCloudTextToSpeechComponentTest.java |   2 +-
 .../camel-google/camel-google-vision/pom.xml       |   2 +-
 .../unit/GoogleCloudVisionComponentTest.java       |   2 +-
 .../grpc/GrpcConsumerAggregationTest.java          |  16 +-
 .../component/grpc/GrpcConsumerConcurrentTest.java |  16 +-
 .../component/grpc/GrpcConsumerExceptionTest.java  |   9 +-
 .../grpc/GrpcConsumerPropagationTest.java          |  16 +-
 .../component/grpc/GrpcConsumerSecurityTest.java   |  24 ++-
 .../grpc/GrpcConsumerServerInterceptorTest.java    |  16 +-
 .../grpc/GrpcProducerClientInterceptorTest.java    |  15 +-
 .../component/grpc/GrpcProducerSecurityTest.java   |  21 ++-
 .../component/grpc/GrpcProducerStreamingTest.java  |  10 +-
 .../camel/component/grpc/GrpcProducerSyncTest.java |  14 +-
 .../component/grpc/GrpcProxyAsyncAsyncTest.java    |  17 +-
 .../component/grpc/GrpcProxyAsyncSyncTest.java     |  17 +-
 .../component/grpc/GrpcProxySyncAsyncTest.java     |  17 +-
 .../grpc/RouteControlledStreamObserverTest.java    |  18 +-
 .../hazelcast/HazelcastQueueConsumerPollTest.java  |  28 ++-
 .../hazelcast/policy/HazelcastRoutePolicyIT.java}  |  61 +++---
 components/camel-jackson3-avro/pom.xml             |   2 +-
 .../avro/JacksonAvroLookupResolverTest.java        |   2 +-
 .../JacksonAvroMarshalUnmarshalJsonNodeTest.java   |   2 +-
 .../JacksonAvroMarshalUnmarshalPojoListTest.java   |   2 +-
 .../avro/JacksonAvroMarshalUnmarshalPojoTest.java  |   2 +-
 components/camel-jackson3-protobuf/pom.xml         |   2 +-
 .../JacksonProtobufLookupResolverTest.java         |   2 +-
 ...acksonProtobufMarshalUnmarshalJsonNodeTest.java |   2 +-
 .../JacksonProtobufMarshalUnmarshalPojoTest.java   |   2 +-
 components/camel-jackson3/pom.xml                  |   2 +-
 .../component/jackson3/JacksonConcurrentTest.java  |   4 +-
 .../component/jackson3/JacksonFeaturesTest.java    |   2 +-
 .../jackson3/JacksonIncludeDefaultTest.java        |   2 +-
 .../jackson3/JacksonIncludeNotNulllTest.java       |   2 +-
 .../jackson3/JacksonJAXBAnnotationTest.java        |   2 +-
 .../jackson3/JacksonMarshalAllowJMSTypeTest.java   |   2 +-
 .../JacksonMarshalContentTypeHeaderTest.java       |   2 +-
 .../jackson3/JacksonMarshalDateTimezoneTest.java   |   2 +-
 .../JacksonMarshalMultibyteCharactersTest.java     |   2 +-
 .../jackson3/JacksonMarshalNamingStrategyTest.java |   2 +-
 .../component/jackson3/JacksonMarshalTest.java     |   2 +-
 .../jackson3/JacksonMarshalUnmarshalArrayTest.java |   2 +-
 .../jackson3/JacksonMarshalUnmarshalListTest.java  |   2 +-
 .../JacksonMarshalUnmarshalPojoArrayTest.java      |   2 +-
 ...onMarshalUnmarshalTypeHeaderNotAllowedTest.java |   2 +-
 .../JacksonMarshalUnmarshalTypeHeaderTest.java     |   2 +-
 .../component/jackson3/JacksonMarshalViewTest.java |   2 +-
 .../component/jackson3/JacksonModuleTest.java      |   2 +-
 .../JacksonNotUseDefaultObjectMapperTest.java      |   2 +-
 .../jackson3/JacksonObjectListSplitTest.java       |   4 +-
 .../jackson3/JacksonObjectMapperRegistryTest.java  |   2 +-
 .../jackson3/SpringJacksonAllowNullBodyTest.java   |   2 +-
 .../jackson3/SpringJacksonEnableFeatureTest.java   |   2 +-
 ...ingJacksonJsonDataFormatNamingStrategyTest.java |   2 +-
 .../jackson3/SpringJacksonJsonDataFormatTest.java  |   2 +-
 .../SpringJacksonMarshalUnmarshalListTest.java     |   2 +-
 .../SpringJacksonObjectMapperRegistryTest.java     |   2 +-
 .../converter/JacksonConversionsBufferTest.java    |   2 +-
 .../converter/JacksonConversionsPojoTest.java      |   2 +-
 .../converter/JacksonConversionsSimpleTest.java    |   2 +-
 .../jackson3/converter/JacksonConversionsTest.java |   2 +-
 .../converter/JacksonJSonNodeConverterTest.java    |   2 +-
 components/camel-jackson3xml/pom.xml               |   2 +-
 .../jackson3xml/JacksonConcurrentTest.java         |   4 +-
 .../jackson3xml/JacksonConversionsSimpleTest.java  |   2 +-
 .../jackson3xml/JacksonConversionsTest.java        |   2 +-
 .../JacksonEmptyElementsAsNullTest.java            |   2 +-
 .../jackson3xml/JacksonIncludeDefaultTest.java     |   2 +-
 .../jackson3xml/JacksonIncludeNotNulllTest.java    |   2 +-
 .../jackson3xml/JacksonJAXBAnnotationTest.java     |   2 +-
 .../JacksonMarshalAllowJMSTypeTest.java            |   2 +-
 .../JacksonMarshalContentTypeHeaderTest.java       |   2 +-
 .../JacksonMarshalDateTimezoneTest.java            |   2 +-
 .../component/jackson3xml/JacksonMarshalTest.java  |   2 +-
 .../JacksonMarshalUnmarshalListTest.java           |   2 +-
 ...onMarshalUnmarshalTypeHeaderNotAllowedTest.java |   2 +-
 .../JacksonMarshalUnmarshalTypeHeaderTest.java     |   2 +-
 .../jackson3xml/JacksonMarshalViewTest.java        |   2 +-
 .../component/jackson3xml/JacksonModuleTest.java   |   2 +-
 .../jackson3xml/JacksonObjectListSplitTest.java    |   4 +-
 .../SpringJacksonEnableFeatureTest.java            |   2 +-
 .../SpringJacksonMarshalUnmarshalListTest.java     |   2 +-
 .../SpringJacksonXmlDataFormatTest.java            |   2 +-
 .../jetty/JettyFailoverRoundRobinTest.java         |  34 ++--
 .../JmsComponentTransactedCacheLevelNameTest.java  |   6 +-
 .../component/jms/async/AsyncJmsInOutTest.java     |   4 +-
 .../issues/JmsTypeConverterIssueIT.java            |   4 +-
 .../spring/issues/JmsSpringValidatorIT.java        |   4 +-
 .../spring/tx/JmsToJmsTransactedIT.java            |  13 +-
 .../spring/tx/async/AsyncEndpointJmsTXIT.java      |   4 +-
 .../tx/async/AsyncEndpointJmsTXMulticastIT.java    |   4 +-
 .../async/AsyncEndpointJmsTXRecipientListIT.java   |   4 +-
 .../tx/async/AsyncEndpointJmsTXRollback2IT.java    |   4 +-
 .../tx/async/AsyncEndpointJmsTXRollbackIT.java     |   4 +-
 .../tx/async/AsyncEndpointJmsTXRoutingSlipIT.java  |   4 +-
 .../async/AsyncEndpointJmsTXTryCatchFinallyIT.java |   4 +-
 .../tx/async/AsyncEndpointJmsTXWireTapIT.java      |   4 +-
 .../component/jms/validator/JmsValidatorTest.java  |  18 +-
 .../spring/issues/JmsSpringValidatorIT.xml         |  14 +-
 .../core/integ5/ServerAnnotationProcessor.java     |  40 ++--
 .../core/integ5/ServerAnnotationProcessor.java     |  40 ++--
 .../MllpTcpServerConsumerLenientBindTest.java      |   5 +-
 .../apache/camel/component/mllp/LogPhiTest.java    |   5 +-
 ...pGlobalAndExplicitSSLContextParametersTest.java |   5 +-
 .../mllp/MllpIdleTimeoutStrategyTest.java          |   5 +-
 .../mllp/MllpMaxConcurrentConsumersTest.java       |  10 +-
 .../mllp/MllpMutualTlsConnectionAndHeaderBase.java |   5 +-
 .../MllpProducerConsumerLoopbackInOnlyTest.java    |   6 +-
 .../mllp/MllpProducerConsumerLoopbackTest.java     |  10 +-
 .../mllp/MllpSSLContextParametersTest.java         |   5 +-
 .../MllpTcpClientProducerConnectionErrorTest.java  |   5 +-
 ...TcpClientProducerIdleConnectionTimeoutTest.java |   5 +-
 .../component/mllp/MllpTcpServerCharsetTest.java   |   5 +-
 .../mllp/MllpTcpServerConsumerBindTimeoutTest.java |   5 +-
 .../mllp/MllpTcpServerConsumerConnectionTest.java  |   5 +-
 .../MllpTcpServerConsumerMessageHeadersTest.java   |   5 +-
 ...MllpTcpServerConsumerMulitpleTcpPacketTest.java |   5 +-
 .../mllp/MllpTcpServerConsumerThreadPoolTest.java  |  14 +-
 .../mllp/MllpTcpServerConsumerTransactionTest.java |   5 +-
 ...tProducerEndOfDataAndValidationTestSupport.java |   5 +-
 ...cpServerConsumerAcknowledgementTestSupport.java |   5 +-
 ...rConsumerEndOfDataAndValidationTestSupport.java |   5 +-
 .../http/NettyHttpEndpointUriFactoryTest.java      |   6 +-
 .../http/NettyHttpGetWithInvalidMessageTest.java   |  12 +-
 .../netty/http/NettyHttpProducerHeadersTest.java   |  20 +-
 .../netty/http/NettyHttpProducerProxyModeTest.java |   6 +-
 .../netty/http/NettyHttpSSLHandshakeErrorTest.java |   7 +-
 .../component/netty/http/ProxyProtocolTest.java    |  54 +++---
 .../netty/NettyEndpointUriFactoryTest.java         |   6 +-
 .../component/netty/ObjectSerializationTest.java   |  15 +-
 .../camel/component/salesforce/PubSubApiTest.java  |   7 +-
 .../component/syslog/AutomatedConversionTest.java  |  16 +-
 .../camel/component/syslog/MinaDataFormatTest.java |  14 +-
 .../component/syslog/MinaManyUDPMessagesTest.java  |  14 +-
 .../component/syslog/NettyDataFormatTest.java      |  18 +-
 .../component/syslog/NettyManyUDPMessagesTest.java |  15 +-
 .../syslog/NettyRfc5425LongMessageTest.java        |  14 +-
 .../camel/component/syslog/NettyRfc5425Test.java   |  18 +-
 .../component/syslog/SyslogSpringMinaTest.java     |  18 +-
 .../component/syslog/SyslogSpringNettyTest.java    |  18 +-
 .../component/telegram/TelegramChatBotTest.java    |   2 +-
 .../telegram/TelegramConsumerChannelPostTest.java  |   2 +-
 .../TelegramConsumerEmptyResponseTest.java         |   2 +-
 .../TelegramConsumerFallbackConversionTest.java    |   2 +-
 ...nsumerHealthCheckErrorDisabledConsumerTest.java |   2 +-
 .../TelegramConsumerHealthCheckErrorTest.java      |   2 +-
 .../TelegramConsumerHealthCheckOkTest.java         |   2 +-
 .../TelegramConsumerIncomingInlineQueryTest.java   |   2 +-
 .../telegram/TelegramConsumerMappingTest.java      |   2 +-
 .../TelegramConsumerMediaDocumentTest.java         |   2 +-
 .../telegram/TelegramConsumerMediaGameTest.java    |   2 +-
 .../telegram/TelegramConsumerMediaPhotoTest.java   |   2 +-
 .../telegram/TelegramConsumerMediaStickerTest.java |   2 +-
 .../TelegramConsumerMediaVideoExtendedTest.java    |   2 +-
 .../telegram/TelegramConsumerMediaVideoTest.java   |   2 +-
 .../telegram/TelegramConsumerMultipleTest.java     |   2 +-
 .../TelegramConsumerPaidMediaPurchasedTest.java    |   2 +-
 .../TelegramConsumerPreCheckoutQueryTest.java      |   2 +-
 .../TelegramConsumerReadyLiveCheckTest.java        |   2 +-
 .../TelegramConsumerRefundedPaymentTest.java       |   2 +-
 .../telegram/TelegramConsumerServiceErrorTest.java |   2 +-
 .../TelegramConsumerShippingQueryTest.java         |   2 +-
 .../telegram/TelegramConsumerSingleTest.java       |   2 +-
 .../TelegramConsumerSuccessfulPaymentTest.java     |   2 +-
 .../TelegramProducerChatIdResolutionTest.java      |   2 +-
 .../telegram/TelegramProducerInvoiceTest.java      |   2 +-
 .../telegram/TelegramProducerLocationTest.java     |   2 +-
 .../telegram/TelegramProducerMediaTest.java        |   2 +-
 .../TelegramProducerNoChatIdRequiredTest.java      |   2 +-
 .../telegram/TelegramProducerStarPaymentTest.java  |   2 +-
 .../telegram/TelegramWebhookCallTest.java          |  10 +-
 .../telegram/TelegramWebhookRegistrationTest.java  |   6 +-
 .../telegram/util/TelegramTestSupport.java         |  12 +-
 .../java/org/apache/camel/test/AvailablePort.java  |   2 +-
 .../org/apache/camel/test/AvailablePortFinder.java |  51 ++++--
 .../java/org/apache/camel/test/AvailablePort.java  |   2 +-
 .../org/apache/camel/test/AvailablePortFinder.java |  51 ++++--
 .../component/thrift/ThriftConsumerAsyncTest.java  |  13 +-
 .../thrift/ThriftConsumerConcurrentTest.java       |  15 +-
 .../thrift/ThriftConsumerSecurityTest.java         |  13 +-
 .../component/thrift/ThriftConsumerSyncTest.java   |  12 +-
 .../thrift/ThriftConsumerZlibCompressionTest.java  |  12 +-
 .../component/thrift/ThriftProducerBaseTest.java   |  22 +--
 .../thrift/ThriftProducerSecurityTest.java         |  34 ++--
 .../component/thrift/ThriftProducerSyncTest.java   |  12 +-
 .../thrift/ThriftProducerZlibCompressionTest.java  |  28 +--
 .../thrift/local/ThriftThreadPoolServerTest.java   |  20 +-
 .../vertx/http/VertxHttpBridgeEndpointTest.java    |  12 +-
 .../vertx/http/VertxHttpMultiRouteTest.java        |   4 +-
 .../vertx/http/VertxHttpProxyServerTest.java       |  10 +-
 .../component/vertx/http/VertxHttpTestSupport.java |  10 +-
 .../vertx/websocket/MainVertxWebsocketSSLTest.java |   4 +-
 .../vertx/websocket/VertxWebSocketEventTest.java   |   2 +-
 .../VertxWebSocketSlowClientConsumerTest.java      |   6 +-
 .../websocket/VertxWebSocketSlowConsumerTest.java  |   4 +-
 .../vertx/websocket/VertxWebSocketTestSupport.java |  11 +-
 ...WebsocketConsumerAsClientBinaryMessageTest.java |   8 +-
 ...xWebsocketConsumerAsClientMaxReconnectTest.java |   8 +-
 ...ertxWebsocketConsumerAsClientReconnectTest.java |   8 +-
 ...txWebsocketConsumerAsClientTextMessageTest.java |   8 +-
 .../VertxWebsocketEndpointConfigurationTest.java   |   8 +-
 .../websocket/VertxWebsocketMultiConsumerTest.java |   8 +-
 .../vertx/websocket/VertxWebsocketOriginTest.java  |  16 +-
 .../vertx/websocket/VertxWebsocketRouterTest.java  |   8 +-
 .../vertx/websocket/VertxWebsocketSSLTest.java     |  17 +-
 .../vertx/websocket/VertxWebsocketTest.java        |  76 ++++----
 .../component/vertx/VertxBaseTestSupport.java      |  12 +-
 docs/.pnp.cjs                                      |   8 +-
 .../ROOT/pages/camel-4x-upgrade-guide-4_19.adoc    |  14 ++
 docs/yarn.lock                                     |   6 +-
 .../component/ComponentsBuilderFactory.java        |   5 +-
 .../dsl/CouchbaseComponentBuilderFactory.java      |   9 +-
 .../builder/endpoint/StaticEndpointBuilders.java   |  10 +-
 .../dsl/CouchbaseEndpointBuilderFactory.java       |  81 +++++++-
 parent/pom.xml                                     |  25 +--
 .../test/infra/ibmmq/services/container.properties |   2 +-
 .../infra/kafka/services/ConfluentContainer.java   |   4 +-
 .../infra/kafka/services/StrimziContainer.java     |   4 +-
 .../infra/keycloak/services/container.properties   |   2 +-
 .../infra/milvus/services/container.properties     |   2 +-
 .../java/org/apache/camel/itest/ITestSupport.java  |  22 ++-
 ...ipientListInterceptSendToEndpointIssueTest.java |  10 +-
 .../camel/itest/greeter/CxfToJmsInOutTest.java     |   5 +-
 .../greeter/JettyRecipientListCxfIssueTest.java    |  16 +-
 .../camel/itest/greeter/JmsToCxfInOutTest.java     |   5 +-
 .../apache/camel/itest/http/HttpTestServer.java    |   3 +-
 .../camel/itest/issues/RemoveEndpointsTest.java    |   6 +-
 .../camel/itest/jetty/JettyFreemarkerTest.java     |   6 +-
 .../itest/jetty/JettyGroovySetHeaderTest.java      |   6 +-
 .../camel/itest/jetty/JettyJmsShutdownTest.java    |   4 +-
 .../itest/jetty/JettyMulticastJmsFileTest.java     |   7 +-
 .../jetty/JettySimulateFailoverRoundRobinTest.java |  31 ++--
 .../camel/itest/jetty/JettyVelocityTest.java       |   6 +-
 .../org/apache/camel/itest/jms/JmsHttpJmsTest.java |   5 +-
 .../camel/itest/jms/JmsHttpPostIssueTest.java      |   5 +-
 .../itest/jms/JmsHttpPostIssueWithMockTest.java    |   5 +-
 .../apache/camel/itest/jms/JmsJettyAsyncTest.java  |   9 +-
 .../itest/netty/NettyAsyncRequestReplyTest.java    |   6 +-
 .../camel/itest/security/GreeterClientTest.java    |  11 +-
 .../FromJmsToJdbcIdempotentConsumerToJmsTest.java  |  62 ++++---
 .../org/apache/camel/itest/tx/JmsToHttpRoute.java  |   4 +-
 ...ndNoTransactionErrorHandlerConfiguredRoute.java |   3 +-
 .../itest/tx/JmsToHttpWithOnExceptionRoute.java    |   4 +-
 .../camel/itest/tx/JmsToHttpWithRollbackRoute.java |   4 +-
 .../utils/extensions/FtpServiceExtension.java      |   7 +-
 .../utils/extensions/GreeterServiceExtension.java  |   4 +-
 .../apache/camel/tooling/maven/AvailablePort.java  |   2 +-
 305 files changed, 2185 insertions(+), 1284 deletions(-)
 create mode 100644 components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/integration/ConsumeSqlQueryIT.java
 copy components/{camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryIT.java => camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicyIT.java} (67%)


(camel) 01/03: CAMEL-23214: Migrate AvailablePortFinder in camel-platform-http, camel-jetty, camel-coap, camel-undertow tests

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch CAMEL-23214-port-http-servers
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 507734e8d1e042817178497a2e26a05b46054362
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Mar 20 05:23:18 2026 +0100

    CAMEL-23214: Migrate AvailablePortFinder in camel-platform-http, camel-jetty, camel-coap, camel-undertow tests
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
 .../java/org/apache/camel/coap/CoAPCORSTest.java   |   2 +-
 .../camel/coap/CoAPComponentTLSTestBase.java       |  72 ++++++++-----
 .../org/apache/camel/coap/CoAPComponentTest.java   |   8 +-
 .../camel/coap/CoAPRestComponentTestBase.java      |  16 +--
 .../apache/camel/coap/CoAPRestContextPathTest.java |   2 +-
 .../org/apache/camel/coap/CoAPRestVerbTest.java    |   2 +-
 .../org/apache/camel/coap/CoAPTestSupport.java     |   6 +-
 .../jetty/JettyBridgeHostHeaderIssueTest.java      |  58 ++++++-----
 .../jetty/JettyFailoverRoundRobinTest.java         |  34 +++---
 .../component/jetty/JettyValidatorStreamTest.java  |  10 +-
 ...alidatorStreamWithStreamCachingEnabledTest.java |  10 +-
 .../camel/component/jetty/JettyValidatorTest.java  |  12 +--
 .../component/jetty/JettyXsltHttpTemplateTest.java |  10 +-
 .../camel/component/jetty/JettyXsltTest.java       |  10 +-
 .../jetty/SpringFailoverRoundRobinTest.java        |  28 ++---
 .../jetty/rest/RestJettyRedirectTest.java          |  12 ++-
 .../http/main/MainHttpServerRouteTest.java         |   8 +-
 .../http/main/ManagementHttpServerTest.java        |   8 +-
 .../RestOpenApiCodeFirstOnExceptionIssueTest.java  |   8 +-
 ...stOpenApiContractFirstOnExceptionIssueTest.java |   8 +-
 .../vertx/VertxPlatformHttpAuthenticationTest.java |   8 +-
 .../http/vertx/VertxPlatformHttpCookieTest.java    |  10 +-
 .../http/vertx/VertxPlatformHttpEngineTest.java    | 115 +++++++++++----------
 .../vertx/VertxPlatformHttpNoBodyHandlerTest.java  |   8 +-
 .../vertx/VertxPlatformHttpPooledExchangeTest.java |  12 ++-
 .../http/vertx/VertxPlatformHttpProxyTest.java     |   8 +-
 .../http/vertx/VertxPlatformHttpSessionTest.java   |  15 +--
 .../vertx/VertxPlatformHttpSharedVertxTest.java    |   6 +-
 .../http/vertx/VertxPlatformHttpsProxyTest.java    |  19 ++--
 .../VertxPlatformMultipleContentTypeTest.java      |  13 ++-
 .../camel/component/undertow/BaseUndertowTest.java |  30 +++---
 .../undertow/UndertowHttpProducerSessionTest.java  |  12 +--
 .../undertow/UndertowMethodRestricTest.java        |   8 +-
 33 files changed, 327 insertions(+), 261 deletions(-)

diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java
index 38a3dfa8670c..c02facda7f6c 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java
@@ -43,7 +43,7 @@ public class CoAPCORSTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                restConfiguration().component("coap").port(PORT).enableCORS(true);
+                restConfiguration().component("coap").port(PORT.getPort()).enableCORS(true);
 
                 rest().get("/rest").to("direct:rest");
                 from("direct:rest").setBody(constant(COAP_RESPONSE));
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java
index f7479a21747b..17de5e952920 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java
@@ -45,19 +45,28 @@ import org.eclipse.californium.scandium.dtls.x509.NewAdvancedCertificateVerifier
 import org.eclipse.californium.scandium.dtls.x509.StaticNewAdvancedCertificateVerifier;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
 abstract class CoAPComponentTLSTestBase extends CamelTestSupport {
 
-    private static final int PORT = AvailablePortFinder.getNextAvailable();
-    private static final int PORT2 = AvailablePortFinder.getNextAvailable();
-    private static final int PORT3 = AvailablePortFinder.getNextAvailable();
-    private static final int PORT4 = AvailablePortFinder.getNextAvailable();
-    private static final int PORT5 = AvailablePortFinder.getNextAvailable();
-    private static final int PORT6 = AvailablePortFinder.getNextAvailable();
-    private static final int PORT7 = AvailablePortFinder.getNextAvailable();
-    private static final int PORT8 = AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT2 = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT3 = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT4 = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT5 = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT6 = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT7 = AvailablePortFinder.find();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT8 = AvailablePortFinder.find();
 
     @ParameterizedTest
     @ValueSource(strings = { "direct:start", "direct:selfsigned", /*"direct:clientauth",*/ "direct:ciphersuites" })
@@ -200,68 +209,74 @@ abstract class CoAPComponentTLSTestBase extends CamelTestSupport {
             @Override
             public void configure() {
 
-                fromF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters", PORT)
+                fromF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters",
+                        PORT.getPort())
                         .transform(body().prepend("Hello "));
 
                 fromF(getProtocol()
                       + "://localhost:%d/TestResource?alias=selfsigned&sslContextParameters=#selfSignedServiceSSLContextParameters",
-                        PORT2)
+                        PORT2.getPort())
                         .transform(body().prepend("Hello "));
 
                 fromF(getProtocol()
                       + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8",
-                        PORT4)
+                        PORT4.getPort())
                         .transform(body().prepend("Hello "));
 
                 from("direct:start")
                         .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters",
-                                PORT)
+                                PORT.getPort())
                         .to("mock:result");
 
-                from("direct:notruststore").toF(getProtocol() + "://localhost:%d/TestResource", PORT).to("mock:result");
+                from("direct:notruststore").toF(getProtocol() + "://localhost:%d/TestResource", PORT.getPort())
+                        .to("mock:result");
 
                 from("direct:failedtrust")
                         .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters2",
-                                PORT)
+                                PORT.getPort())
                         .to("mock:result");
 
                 from("direct:selfsigned")
                         .toF(getProtocol()
-                             + "://localhost:%d/TestResource?sslContextParameters=#selfSignedClientSSLContextParameters", PORT2)
+                             + "://localhost:%d/TestResource?sslContextParameters=#selfSignedClientSSLContextParameters",
+                                PORT2.getPort())
                         .to("mock:result");
 
                 from("direct:clientauth")
                         .toF(getProtocol()
-                             + "://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters", PORT3)
+                             + "://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters",
+                                PORT3.getPort())
                         .to("mock:result");
 
                 from("direct:failedclientauth")
                         .toF(getProtocol()
                              + "://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters2",
-                                PORT3)
+                                PORT3.getPort())
                         .to("mock:result");
 
                 from("direct:ciphersuites")
                         .toF(getProtocol()
                              + "://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8",
-                                PORT4)
+                                PORT4.getPort())
                         .to("mock:result");
 
                 if (isRPKSupported()) {
-                    fromF(getProtocol() + "://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey", PORT5)
+                    fromF(getProtocol() + "://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey",
+                            PORT5.getPort())
                             .transform(body().prepend("Hello "));
 
                     fromF(getProtocol()
                           + "://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey&clientAuthentication=NEEDED&advancedCertificateVerifier=#advancedCertificateVerifier",
-                            PORT6).transform(body().prepend("Hello "));
+                            PORT6.getPort()).transform(body().prepend("Hello "));
 
                     from("direct:rpk")
                             .toF(getProtocol()
                                  + "://localhost:%d/TestResource?advancedCertificateVerifier=#advancedCertificateVerifier",
-                                    PORT5)
+                                    PORT5.getPort())
                             .to("mock:result");
 
-                    from("direct:rpknotruststore").toF(getProtocol() + "://localhost:%d/TestResource", PORT5).to("mock:result");
+                    from("direct:rpknotruststore").toF(getProtocol() + "://localhost:%d/TestResource", PORT5.getPort())
+                            .to("mock:result");
 
                     //                    from("direct:rpkfailedtrust")
                     //                            .toF(getProtocol()
@@ -272,33 +287,34 @@ abstract class CoAPComponentTLSTestBase extends CamelTestSupport {
                     from("direct:rpkclientauth")
                             .toF(getProtocol()
                                  + "://localhost:%d/TestResource?advancedCertificateVerifier=#advancedCertificateVerifier&privateKey=#privateKey&publicKey=#publicKey",
-                                    PORT6)
+                                    PORT6.getPort())
                             .to("mock:result");
                 }
 
                 if (isPSKSupported()) {
-                    fromF(getProtocol() + "://localhost:%d/TestResource?advancedPskStore=#advancedPskStore", PORT7)
+                    fromF(getProtocol() + "://localhost:%d/TestResource?advancedPskStore=#advancedPskStore", PORT7.getPort())
                             .transform(body().prepend("Hello "));
 
                     fromF(getProtocol()
                           + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&advancedPskStore=#advancedPskStore",
-                            PORT8)
+                            PORT8.getPort())
                             .transform(body().prepend("Hello "));
 
                     from("direct:psk")
-                            .toF(getProtocol() + "://localhost:%d/TestResource?advancedPskStore=#advancedPskStore", PORT7)
+                            .toF(getProtocol() + "://localhost:%d/TestResource?advancedPskStore=#advancedPskStore",
+                                    PORT7.getPort())
                             .to("mock:result");
 
                     from("direct:pskciphersuite")
                             .toF(getProtocol()
                                  + "://localhost:%d/TestResource?advancedPskStore=#advancedPskStore&cipherSuites=TLS_PSK_WITH_AES_128_GCM_SHA256",
-                                    PORT7)
+                                    PORT7.getPort())
                             .to("mock:result");
 
                     from("direct:pskx509")
                             .toF(getProtocol()
                                  + "://localhost:%d/TestResource?advancedPskStore=#advancedPskStore&sslContextParameters=#clientSSLContextParameters",
-                                    PORT8)
+                                    PORT8.getPort())
                             .to("mock:result");
                 }
 
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
index 7e1c268a5643..275395d13fe7 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
@@ -26,12 +26,14 @@ import org.eclipse.californium.core.CoapResponse;
 import org.eclipse.californium.core.coap.CoAP;
 import org.eclipse.californium.core.coap.MediaTypeRegistry;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class CoAPComponentTest extends CoAPTestSupport {
 
-    protected static final int TCP_PORT = AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    static AvailablePortFinder.Port TCP_PORT = AvailablePortFinder.find();
 
     @Produce("direct:start")
     protected ProducerTemplate sender;
@@ -74,12 +76,12 @@ public class CoAPComponentTest extends CoAPTestSupport {
             public void configure() {
                 fromF("coap://localhost:%d/TestResource", PORT).convertBodyTo(String.class).transform(body().prepend("Hello "));
 
-                fromF("coap+tcp://localhost:%d/TestResource", TCP_PORT).convertBodyTo(String.class)
+                fromF("coap+tcp://localhost:%d/TestResource", TCP_PORT.getPort()).convertBodyTo(String.class)
                         .transform(body().prepend("Hello "));
 
                 from("direct:start").toF("coap://localhost:%d/TestResource", PORT).to("mock:result");
 
-                from("direct:starttcp").toF("coap+tcp://localhost:%d/TestResource", TCP_PORT).to("mock:result");
+                from("direct:starttcp").toF("coap+tcp://localhost:%d/TestResource", TCP_PORT.getPort()).to("mock:result");
             }
         };
     }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTestBase.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTestBase.java
index c0748812a51a..8e2b22c3b968 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTestBase.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTestBase.java
@@ -33,11 +33,13 @@ import org.eclipse.californium.core.coap.CoAP.ResponseCode;
 import org.eclipse.californium.core.coap.MediaTypeRegistry;
 import org.eclipse.californium.elements.config.Configuration;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 abstract class CoAPRestComponentTestBase extends CamelTestSupport {
-    static int coapport = AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    static AvailablePortFinder.Port coapport = AvailablePortFinder.find();
 
     @Produce("direct:start")
     protected ProducerTemplate sender;
@@ -48,7 +50,7 @@ abstract class CoAPRestComponentTestBase extends CamelTestSupport {
         CoapClient client;
         CoapResponse rsp;
 
-        client = new CoapClient(getProtocol() + "://localhost:" + coapport + "/TestResource/Ducky");
+        client = new CoapClient(getProtocol() + "://localhost:" + coapport.getPort() + "/TestResource/Ducky");
         decorateClient(client);
         rsp = client.get();
         assertEquals(ResponseCode.CONTENT, rsp.getCode());
@@ -57,7 +59,7 @@ abstract class CoAPRestComponentTestBase extends CamelTestSupport {
         assertEquals(ResponseCode.CONTENT, rsp.getCode());
         assertEquals("Hello Ducky: data", rsp.getResponseText());
 
-        client = new CoapClient(getProtocol() + "://localhost:" + coapport + "/TestParams?id=Ducky");
+        client = new CoapClient(getProtocol() + "://localhost:" + coapport.getPort() + "/TestParams?id=Ducky");
         decorateClient(client);
         client.setTimeout(1000000L);
         rsp = client.get();
@@ -72,7 +74,7 @@ abstract class CoAPRestComponentTestBase extends CamelTestSupport {
     @Test
     void testCoAPMethodNotAllowedResponse() throws Exception {
         Configuration.createStandardWithoutFile();
-        CoapClient client = new CoapClient(getProtocol() + "://localhost:" + coapport + "/TestResource/Ducky");
+        CoapClient client = new CoapClient(getProtocol() + "://localhost:" + coapport.getPort() + "/TestResource/Ducky");
         decorateClient(client);
         client.setTimeout(1000000L);
         CoapResponse rsp = client.delete();
@@ -82,7 +84,7 @@ abstract class CoAPRestComponentTestBase extends CamelTestSupport {
     @Test
     void testCoAPNotFoundResponse() throws Exception {
         Configuration.createStandardWithoutFile();
-        CoapClient client = new CoapClient(getProtocol() + "://localhost:" + coapport + "/foo/bar/cheese");
+        CoapClient client = new CoapClient(getProtocol() + "://localhost:" + coapport.getPort() + "/foo/bar/cheese");
         decorateClient(client);
         client.setTimeout(1000000L);
         CoapResponse rsp = client.get();
@@ -125,7 +127,7 @@ abstract class CoAPRestComponentTestBase extends CamelTestSupport {
             @Override
             public void configure() {
                 RestConfigurationDefinition restConfig
-                        = restConfiguration().scheme(getProtocol()).host("localhost").port(coapport);
+                        = restConfiguration().scheme(getProtocol()).host("localhost").port(coapport.getPort());
                 decorateRestConfiguration(restConfig);
 
                 rest("/TestParams").get().to("direct:get1").post().to("direct:post1");
@@ -144,7 +146,7 @@ abstract class CoAPRestComponentTestBase extends CamelTestSupport {
                     exchange.getMessage().setHeader(CoAPConstants.CONTENT_TYPE, ct);
                 });
 
-                from("direct:start").toF(getClientURI(), coapport).to("mock:result");
+                from("direct:start").toF(getClientURI(), coapport.getPort()).to("mock:result");
             }
         };
     }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java
index 6ec9633a2e0e..c8e8071fa7bd 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java
@@ -39,7 +39,7 @@ public class CoAPRestContextPathTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                restConfiguration().host("localhost").port(PORT).contextPath("/rest/services");
+                restConfiguration().host("localhost").port(PORT.getPort()).contextPath("/rest/services");
 
                 rest("/test").get("/a").to("direct:a");
                 from("direct:a").setBody(constant("GET: /test/a"));
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java
index 9656ce5dd419..0de80b3fe08d 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java
@@ -84,7 +84,7 @@ public class CoAPRestVerbTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                restConfiguration().component("coap").host("localhost").port(PORT);
+                restConfiguration().component("coap").host("localhost").port(PORT.getPort());
 
                 rest()
                         .get("/users").to("direct:users")
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java
index bf7a692e1c99..3862c91976c6 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java
@@ -21,10 +21,12 @@ import org.apache.camel.test.junit6.CamelTestSupport;
 import org.apache.camel.util.FileUtil;
 import org.eclipse.californium.core.CoapClient;
 import org.eclipse.californium.elements.config.Configuration;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class CoAPTestSupport extends CamelTestSupport {
 
-    protected static final int PORT = AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    static AvailablePortFinder.Port PORT = AvailablePortFinder.find();
 
     @Override
     public void doPostSetup() {
@@ -32,7 +34,7 @@ public class CoAPTestSupport extends CamelTestSupport {
     }
 
     protected CoapClient createClient(String path) {
-        return createClient(path, PORT);
+        return createClient(path, PORT.getPort());
     }
 
     protected CoapClient createClient(String path, int port) {
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyBridgeHostHeaderIssueTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyBridgeHostHeaderIssueTest.java
index 958552c9e71f..226e8f32f966 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyBridgeHostHeaderIssueTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyBridgeHostHeaderIssueTest.java
@@ -21,17 +21,23 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class JettyBridgeHostHeaderIssueTest extends CamelTestSupport {
 
-    private int port;
-    private int port2;
-    private int port3;
-    private int port4;
-    private int port5;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port2 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port3 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port4 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port5 = AvailablePortFinder.find();
     private String receivedHostHeaderEndpoint1;
     private String receivedHostHeaderEndpoint2;
     private String receivedHostHeaderEndpoint3;
@@ -45,75 +51,71 @@ public class JettyBridgeHostHeaderIssueTest extends CamelTestSupport {
         //The first call to our service will hit the first destination in the round robin load balancer
         //this destination has the preserveProxyHeader parameter set to true, so we verify the Host header
         //received by our downstream instance matches the address and port of the proxied service
-        Exchange reply = template.request("http:localhost:" + port + "/myapp",
+        Exchange reply = template.request("http:localhost:" + port.getPort() + "/myapp",
                 exchange -> exchange.getIn().setBody("Hello World"));
         assertNotNull(reply);
         assertEquals("foo", reply.getMessage().getBody(String.class));
         //assert the received Host header is localhost:port (where port matches the /myapp port)
-        assertEquals("localhost:" + port, receivedHostHeaderEndpoint1);
+        assertEquals("localhost:" + port.getPort(), receivedHostHeaderEndpoint1);
 
         //The second call to our service will hit the second destination in the round robin load balancer
         //this destination does not have the preserveProxyHeader, so we expect the Host header received by the destination
         //to match the url of the destination service itself
-        Exchange reply2 = template.request("http:localhost:" + port + "/myapp",
+        Exchange reply2 = template.request("http:localhost:" + port.getPort() + "/myapp",
                 exchange -> exchange.getIn().setBody("Bye World"));
         assertNotNull(reply2);
         assertEquals("bar", reply2.getMessage().getBody(String.class));
         //assert the received Host header is localhost:port3 (where port3 matches the /bar destination server)
-        assertEquals("localhost:" + port3, receivedHostHeaderEndpoint2);
+        assertEquals("localhost:" + port3.getPort(), receivedHostHeaderEndpoint2);
 
         //The next two calls will use/test the jetty producers in the round robin load balancer
 
         //The first has the preserveHostHeader option set to true, so we would expect to receive a Host header matching the /myapp proxied service
-        Exchange reply3 = template.request("http:localhost:" + port + "/myapp",
+        Exchange reply3 = template.request("http:localhost:" + port.getPort() + "/myapp",
                 exchange -> exchange.getIn().setBody("Bye JWorld"));
         assertNotNull(reply3);
         assertEquals("jbar", reply3.getMessage().getBody(String.class));
         //assert the received Host header is localhost:port (where port matches the /myapp destination server)
-        assertEquals("localhost:" + port, receivedHostHeaderEndpoint3);
+        assertEquals("localhost:" + port.getPort(), receivedHostHeaderEndpoint3);
 
         //The second does not have a preserveHostHeader (preserveHostHeader=false), we would expect to see a Host header matching the destination service
-        Exchange reply4 = template.request("http:localhost:" + port + "/myapp",
+        Exchange reply4 = template.request("http:localhost:" + port.getPort() + "/myapp",
                 exchange -> exchange.getIn().setBody("JAVA!!!!"));
         assertNotNull(reply4);
         assertEquals("java???", reply4.getMessage().getBody(String.class));
         //assert the received Host header is localhost:port5 (where port3 matches the /jbarf destination server)
-        assertEquals("localhost:" + port5, receivedHostHeaderEndpoint4);
+        assertEquals("localhost:" + port5.getPort(), receivedHostHeaderEndpoint4);
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-        port2 = AvailablePortFinder.getNextAvailable();
-        port3 = AvailablePortFinder.getNextAvailable();
-        port4 = AvailablePortFinder.getNextAvailable();
-        port5 = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("jetty:http://localhost:" + port + "/myapp?matchOnUriPrefix=true")
+                from("jetty:http://localhost:" + port.getPort() + "/myapp?matchOnUriPrefix=true")
                         .loadBalance().roundRobin()
-                        .to("http://localhost:" + port2
+                        .to("http://localhost:" + port2.getPort()
                             + "/foo?bridgeEndpoint=true&throwExceptionOnFailure=false&preserveHostHeader=true")
-                        .to("http://localhost:" + port3 + "/bar?bridgeEndpoint=true&throwExceptionOnFailure=false")
-                        .to("http://localhost:" + port4
+                        .to("http://localhost:" + port3.getPort()
+                            + "/bar?bridgeEndpoint=true&throwExceptionOnFailure=false")
+                        .to("http://localhost:" + port4.getPort()
                             + "/jbar?bridgeEndpoint=true&throwExceptionOnFailure=false&preserveHostHeader=true")
-                        .to("http://localhost:" + port5 + "/jbarf?bridgeEndpoint=true&throwExceptionOnFailure=false");
+                        .to("http://localhost:" + port5.getPort()
+                            + "/jbarf?bridgeEndpoint=true&throwExceptionOnFailure=false");
 
-                from("jetty:http://localhost:" + port2 + "/foo")
+                from("jetty:http://localhost:" + port2.getPort() + "/foo")
                         .process(exchange -> receivedHostHeaderEndpoint1 = exchange.getIn().getHeader("Host", String.class))
                         .transform().constant("foo");
 
-                from("jetty:http://localhost:" + port3 + "/bar")
+                from("jetty:http://localhost:" + port3.getPort() + "/bar")
                         .process(exchange -> receivedHostHeaderEndpoint2 = exchange.getIn().getHeader("Host", String.class))
                         .transform().constant("bar");
 
-                from("jetty:http://localhost:" + port4 + "/jbar")
+                from("jetty:http://localhost:" + port4.getPort() + "/jbar")
                         .process(exchange -> receivedHostHeaderEndpoint3 = exchange.getIn().getHeader("Host", String.class))
                         .transform().constant("jbar");
 
-                from("jetty:http://localhost:" + port5 + "/jbarf")
+                from("jetty:http://localhost:" + port5.getPort() + "/jbarf")
                         .process(exchange -> receivedHostHeaderEndpoint4 = exchange.getIn().getHeader("Host", String.class))
                         .transform().constant("java???");
             }
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java
index 5259ff901d44..b668b8e57f06 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java
@@ -22,20 +22,23 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class JettyFailoverRoundRobinTest extends CamelTestSupport {
+    private static int port1 = AvailablePortFinder.getNextAvailable();
+    private static int port2 = AvailablePortFinder.getNextAvailable();
+    private static int port3 = AvailablePortFinder.getNextAvailable();
+    private static int port4 = AvailablePortFinder.getNextAvailable();
 
-    @RegisterExtension
-    AvailablePortFinder.Port port1 = AvailablePortFinder.find();
-    @RegisterExtension
-    AvailablePortFinder.Port port2 = AvailablePortFinder.find();
-    @RegisterExtension
-    AvailablePortFinder.Port port3 = AvailablePortFinder.find();
-    @RegisterExtension
-    AvailablePortFinder.Port port4 = AvailablePortFinder.find();
+    private String bad = "jetty:http://localhost:" + port1 + "/bad";
+    private String bad2 = "jetty:http://localhost:" + port2 + "/bad2";
+    private String good = "jetty:http://localhost:" + port3 + "/good";
+    private String good2 = "jetty:http://localhost:" + port4 + "/good2";
+    private String hbad = "http://localhost:" + port1 + "/bad";
+    private String hbad2 = "http://localhost:" + port2 + "/bad2";
+    private String hgood = "http://localhost:" + port3 + "/good";
+    private String hgood2 = "http://localhost:" + port4 + "/good2";
 
     @Test
     void testJettyFailoverRoundRobin() throws Exception {
@@ -75,31 +78,28 @@ public class JettyFailoverRoundRobinTest extends CamelTestSupport {
                         // -1 is to indicate that failover LB should newer exhaust and keep trying
                         .loadBalance().failover(-1, false, true)
                         // this is the four endpoints we will load balance with failover
-                        .to("http://localhost:" + port1.getPort() + "/bad",
-                                "http://localhost:" + port2.getPort() + "/bad2",
-                                "http://localhost:" + port3.getPort() + "/good",
-                                "http://localhost:" + port4.getPort() + "/good2");
+                        .to(hbad, hbad2, hgood, hgood2);
                 // END SNIPPET: e1
 
-                from("jetty:http://localhost:" + port1.getPort() + "/bad")
+                from(bad)
                         .to("mock:bad")
                         .process(exchange -> {
                             exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 500);
                             exchange.getIn().setBody("Something bad happened");
                         });
 
-                from("jetty:http://localhost:" + port2.getPort() + "/bad2")
+                from(bad2)
                         .to("mock:bad2")
                         .process(exchange -> {
                             exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 404);
                             exchange.getIn().setBody("Not found");
                         });
 
-                from("jetty:http://localhost:" + port3.getPort() + "/good")
+                from(good)
                         .to("mock:good")
                         .process(exchange -> exchange.getIn().setBody("Good"));
 
-                from("jetty:http://localhost:" + port4.getPort() + "/good2")
+                from(good2)
                         .to("mock:good2")
                         .process(exchange -> exchange.getIn().setBody("Also good"));
             }
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamTest.java
index 625f5cefb1ca..84495419659e 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamTest.java
@@ -22,31 +22,31 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class JettyValidatorStreamTest extends CamelTestSupport {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     void testValideRequestAsStream() {
         InputStream inputStream = this.getClass().getResourceAsStream("ValidRequest.xml");
         assertNotNull(inputStream, "The inputStream should not be null");
 
-        String response = template.requestBody("http://localhost:" + port + "/test", inputStream, String.class);
+        String response = template.requestBody("http://localhost:" + port.getPort() + "/test", inputStream, String.class);
         assertEquals("<ok/>", response, "The response should be ok");
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("jetty:http://localhost:" + port + "/test")
+                from("jetty:http://localhost:" + port.getPort() + "/test")
                         .to("validator:OptimizationRequest.xsd")
                         .transform(constant("<ok/>"));
             }
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
index b2865afa73fa..42151c3bbc50 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
@@ -22,33 +22,33 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class JettyValidatorStreamWithStreamCachingEnabledTest extends CamelTestSupport {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     void testValideRequestAsStream() {
         InputStream inputStream = this.getClass().getResourceAsStream("ValidRequest.xml");
         assertNotNull(inputStream, "The inputStream should not be null");
 
-        String response = template.requestBody("http://localhost:" + port + "/test", inputStream, String.class);
+        String response = template.requestBody("http://localhost:" + port.getPort() + "/test", inputStream, String.class);
         assertEquals("<ok/>", response, "The response should be ok");
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             @Override
             public void configure() {
                 context.setStreamCaching(true);
 
-                from("jetty:http://localhost:" + port + "/test")
+                from("jetty:http://localhost:" + port.getPort() + "/test")
                         .to("validator:OptimizationRequest.xsd")
                         .transform(constant("<ok/>"));
             }
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorTest.java
index aa39f8b365c2..e85325979949 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyValidatorTest.java
@@ -23,20 +23,22 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class JettyValidatorTest extends CamelTestSupport {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     void testValidRequest() {
         InputStream inputStream = this.getClass().getResourceAsStream("ValidRequest.xml");
         assertNotNull(inputStream, "The inputStream should not be null");
 
-        String response = template.requestBody("http://localhost:" + port + "/test", inputStream, String.class);
+        String response = template.requestBody("http://localhost:" + port.getPort() + "/test", inputStream, String.class);
 
         assertEquals("<ok/>", response, "The response should be ok");
     }
@@ -46,17 +48,15 @@ public class JettyValidatorTest extends CamelTestSupport {
         InputStream inputStream = this.getClass().getResourceAsStream("InvalidRequest.xml");
         assertNotNull(inputStream, "The inputStream should not be null");
 
-        String response = template.requestBody("http://localhost:" + port + "/test", inputStream, String.class);
+        String response = template.requestBody("http://localhost:" + port.getPort() + "/test", inputStream, String.class);
         assertEquals("<error/>", response, "The response should be error");
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             public void configure() {
-                from("jetty:http://localhost:" + port + "/test")
+                from("jetty:http://localhost:" + port.getPort() + "/test")
                         .convertBodyTo(String.class)
                         .to("log:in")
                         .doTry()
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltHttpTemplateTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltHttpTemplateTest.java
index 1bb49243c845..5499be9732be 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltHttpTemplateTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltHttpTemplateTest.java
@@ -23,20 +23,22 @@ import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class JettyXsltHttpTemplateTest extends CamelTestSupport {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     void testXsltHttpTemplate() throws Exception {
         // give Jetty a bit of time to startup and be ready
         Awaitility.await().atMost(1, TimeUnit.SECONDS).until(() -> context.isStarted());
 
-        String xml = template.requestBody("xslt:http://0.0.0.0:" + port + "/myxslt",
+        String xml = template.requestBody("xslt:http://0.0.0.0:" + port.getPort() + "/myxslt",
                 "<mail><subject>Hey</subject><body>Hello world!</body></mail>", String.class);
 
         assertNotNull(xml, "The transformed XML should not be null");
@@ -49,12 +51,10 @@ public class JettyXsltHttpTemplateTest extends CamelTestSupport {
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             @Override
             public void configure() {
-                from("jetty:http://0.0.0.0:" + port + "/myxslt")
+                from("jetty:http://0.0.0.0:" + port.getPort() + "/myxslt")
                         .pollEnrich(
                                 "file://src/test/resources/org/apache/camel/component/jetty/?fileName=transform.xsl&noop=true&readLock=none",
                                 2000)
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltTest.java
index 408d9115af60..44671ea2fef5 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyXsltTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -33,7 +34,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class JettyXsltTest extends CamelTestSupport {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     void testClasspath() {
@@ -56,7 +58,7 @@ public class JettyXsltTest extends CamelTestSupport {
 
     @Test
     void testHttp() {
-        String response = template.requestBody("xslt://http://localhost:" + port + "/test?name=greeting.xsl",
+        String response = template.requestBody("xslt://http://localhost:" + port.getPort() + "/test?name=greeting.xsl",
                 "<hello>Camel</hello>", String.class);
 
         assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><goodbye>Camel</goodbye>", response);
@@ -64,11 +66,9 @@ public class JettyXsltTest extends CamelTestSupport {
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             public void configure() {
-                from("jetty:http://localhost:" + port + "/test")
+                from("jetty:http://localhost:" + port.getPort() + "/test")
                         .process(exchange -> {
                             String name = exchange.getIn().getHeader("name", String.class);
                             ObjectHelper.notNull(name, "name");
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/SpringFailoverRoundRobinTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/SpringFailoverRoundRobinTest.java
index deccf1deb9a7..38ab1102a984 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/SpringFailoverRoundRobinTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/SpringFailoverRoundRobinTest.java
@@ -20,6 +20,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.spring.junit6.CamelSpringTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
@@ -27,22 +28,23 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class SpringFailoverRoundRobinTest extends CamelSpringTestSupport {
 
-    private static int port1 = AvailablePortFinder.getNextAvailable();
-    private static int port2 = AvailablePortFinder.getNextAvailable();
-    private static int port3 = AvailablePortFinder.getNextAvailable();
-    private static int port4 = AvailablePortFinder.getNextAvailable();
-
-    static {
-        //set them as system properties so Spring can use the property placeholder
-        //things to set them into the URL's in the spring contexts
-        System.setProperty("JettySpringFailoverRoundRobinTest.port1", Integer.toString(port1));
-        System.setProperty("JettySpringFailoverRoundRobinTest.port2", Integer.toString(port2));
-        System.setProperty("JettySpringFailoverRoundRobinTest.port3", Integer.toString(port3));
-        System.setProperty("JettySpringFailoverRoundRobinTest.port4", Integer.toString(port4));
-    }
+    @RegisterExtension
+    AvailablePortFinder.Port port1 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port2 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port3 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port4 = AvailablePortFinder.find();
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
+        //set them as system properties so Spring can use the property placeholder
+        //things to set them into the URL's in the spring contexts
+        System.setProperty("JettySpringFailoverRoundRobinTest.port1", Integer.toString(port1.getPort()));
+        System.setProperty("JettySpringFailoverRoundRobinTest.port2", Integer.toString(port2.getPort()));
+        System.setProperty("JettySpringFailoverRoundRobinTest.port3", Integer.toString(port3.getPort()));
+        System.setProperty("JettySpringFailoverRoundRobinTest.port4", Integer.toString(port4.getPort()));
         return new ClassPathXmlApplicationContext("/org/apache/camel/component/jetty/JettySpringFailoverRoundRobinTest.xml");
     }
 
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyRedirectTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyRedirectTest.java
index 4cad70b0e238..dc9e6b3ef807 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyRedirectTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyRedirectTest.java
@@ -22,31 +22,33 @@ import org.apache.camel.component.http.HttpComponent;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class RestJettyRedirectTest extends CamelTestSupport {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     void testRedirectInvocation() {
-        String response = template.requestBody("http://localhost:" + port + "/metadata/profile/tag", "<hello>Camel</hello>",
+        String response = template.requestBody("http://localhost:" + port.getPort() + "/metadata/profile/tag",
+                "<hello>Camel</hello>",
                 String.class);
         assertEquals("Mock profile", response, "It should support the redirect out of box.");
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() {
-        port = AvailablePortFinder.getNextAvailable();
-
         return new RouteBuilder() {
             public void configure() {
                 // enable follow redirects
                 HttpComponent http = context.getComponent("http", HttpComponent.class);
                 http.setFollowRedirects(true);
 
-                restConfiguration().component("jetty").host("localhost").scheme("http").port(port).producerComponent("http");
+                restConfiguration().component("jetty").host("localhost").scheme("http").port(port.getPort())
+                        .producerComponent("http");
                 rest("/metadata/profile")
                         .get("/{id}").to("direct:profileLookup")
                         .post("/tag").to("direct:tag");
diff --git a/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/MainHttpServerRouteTest.java b/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/MainHttpServerRouteTest.java
index 2998a7b3bca5..7e351f5174d6 100644
--- a/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/MainHttpServerRouteTest.java
+++ b/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/MainHttpServerRouteTest.java
@@ -28,12 +28,14 @@ import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 class MainHttpServerRouteTest {
 
-    private static final int port = AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    static AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     private static CamelContext camelContext;
 
@@ -52,7 +54,7 @@ class MainHttpServerRouteTest {
         // MainHttpServer needs to get registered/started explicitly
         // https://issues.apache.org/jira/browse/CAMEL-21741
         MainHttpServer httpServer = new MainHttpServer();
-        httpServer.setPort(port);
+        httpServer.setPort(port.getPort());
 
         camelContext.addService(httpServer);
         camelContext.start();
@@ -69,7 +71,7 @@ class MainHttpServerRouteTest {
     public void routeStatusOk() throws Exception {
 
         HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create("http://localhost:" + port + "/hello"))
+                .uri(URI.create("http://localhost:" + port.getPort() + "/hello"))
                 .build();
 
         HttpResponse<String> response = HttpClient.newBuilder().build()
diff --git a/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/ManagementHttpServerTest.java b/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/ManagementHttpServerTest.java
index 46600a4aeae0..7d451dab1238 100644
--- a/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/ManagementHttpServerTest.java
+++ b/components/camel-platform-http-main/src/test/java/org/apache/camel/component/platform/http/main/ManagementHttpServerTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
@@ -33,7 +34,8 @@ class ManagementHttpServerTest {
 
     private CamelContext camelContext;
 
-    private final int port = AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     public void statusIsNotSatisfied() throws IOException, InterruptedException {
@@ -45,7 +47,7 @@ class ManagementHttpServerTest {
         camelContext.getRegistry().bind("fake", new MainHttpFakeHealthCheck());
 
         server.setHost("0.0.0.0");
-        server.setPort(port);
+        server.setPort(port.getPort());
         server.setPath("/");
 
         server.setHealthCheckEnabled(true);
@@ -53,7 +55,7 @@ class ManagementHttpServerTest {
         server.start();
 
         HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create("http://localhost:" + port + "/q/health/ready"))
+                .uri(URI.create("http://localhost:" + port.getPort() + "/q/health/ready"))
                 .build();
 
         HttpResponse<String> response = HttpClient.newBuilder().build().send(request, HttpResponse.BodyHandlers.ofString());
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiCodeFirstOnExceptionIssueTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiCodeFirstOnExceptionIssueTest.java
index 520a484c4160..2420fd576deb 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiCodeFirstOnExceptionIssueTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiCodeFirstOnExceptionIssueTest.java
@@ -24,10 +24,13 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.given;
 
 public class RestOpenApiCodeFirstOnExceptionIssueTest extends CamelTestSupport {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Override
     protected boolean useJmx() {
@@ -110,11 +113,10 @@ public class RestOpenApiCodeFirstOnExceptionIssueTest extends CamelTestSupport {
 
     @Override
     public CamelContext createCamelContext() throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
         VertxPlatformHttpServerConfiguration conf = new VertxPlatformHttpServerConfiguration();
-        conf.setBindPort(port);
+        conf.setBindPort(port.getPort());
 
-        RestAssured.port = port;
+        RestAssured.port = port.getPort();
 
         CamelContext context = new DefaultCamelContext();
         context.addService(new VertxPlatformHttpServer(conf));
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiContractFirstOnExceptionIssueTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiContractFirstOnExceptionIssueTest.java
index df56c22a13cf..498927848c23 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiContractFirstOnExceptionIssueTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/RestOpenApiContractFirstOnExceptionIssueTest.java
@@ -24,10 +24,13 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.given;
 
 public class RestOpenApiContractFirstOnExceptionIssueTest extends CamelTestSupport {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Override
     protected boolean useJmx() {
@@ -102,11 +105,10 @@ public class RestOpenApiContractFirstOnExceptionIssueTest extends CamelTestSuppo
 
     @Override
     public CamelContext createCamelContext() throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
         VertxPlatformHttpServerConfiguration conf = new VertxPlatformHttpServerConfiguration();
-        conf.setBindPort(port);
+        conf.setBindPort(port.getPort());
 
-        RestAssured.port = port;
+        RestAssured.port = port.getPort();
 
         CamelContext context = new DefaultCamelContext();
         context.addService(new VertxPlatformHttpServer(conf));
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpAuthenticationTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpAuthenticationTest.java
index fa63c984af93..8f2c54a7beb6 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpAuthenticationTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpAuthenticationTest.java
@@ -32,11 +32,14 @@ import org.apache.camel.component.platform.http.vertx.auth.AuthenticationConfig.
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.given;
 import static org.hamcrest.Matchers.equalTo;
 
 public class VertxPlatformHttpAuthenticationTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     public void testAuthenticationDisabled() throws Exception {
@@ -287,9 +290,8 @@ public class VertxPlatformHttpAuthenticationTest {
 
     private CamelContext createCamelContext(AuthenticationConfigCustomizer customizer)
             throws Exception {
-        int bindPort = AvailablePortFinder.getNextAvailable();
-        RestAssured.port = bindPort;
-        return createCamelContext(bindPort, customizer);
+        RestAssured.port = port.getPort();
+        return createCamelContext(port.getPort(), customizer);
     }
 
     private CamelContext createCamelContext(int bindPort, AuthenticationConfigCustomizer customizer)
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java
index b042fed5094f..6a1e5b27332c 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpCookieTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.component.platform.http.cookie.CookieHandler;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.matcher.RestAssuredMatchers.detailedCookie;
@@ -32,6 +33,8 @@ import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.notNullValue;
 
 public class VertxPlatformHttpCookieTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     // add a cookie using the default cookie configuration
     @Test
@@ -250,12 +253,11 @@ public class VertxPlatformHttpCookieTest {
         return exchange.getProperty(Exchange.COOKIE_HANDLER, CookieHandler.class);
     }
 
-    static CamelContext createCamelContext() throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
+    CamelContext createCamelContext() throws Exception {
         VertxPlatformHttpServerConfiguration conf = new VertxPlatformHttpServerConfiguration();
-        conf.setBindPort(port);
+        conf.setBindPort(port.getPort());
 
-        RestAssured.port = port;
+        RestAssured.port = port.getPort();
 
         CamelContext context = new DefaultCamelContext();
         context.addService(new VertxPlatformHttpServer(conf));
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
index 249d624e5796..a49e136363fe 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
@@ -65,6 +65,7 @@ import org.apache.camel.test.AvailablePortFinder;
 import org.apache.hc.client5.http.utils.Base64;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.get;
 import static io.restassured.RestAssured.given;
@@ -82,6 +83,13 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class VertxPlatformHttpEngineTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port2 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port3 = AvailablePortFinder.find();
+
     public static SSLContextParameters serverSSLParameters;
     public static SSLContextParameters clientSSLParameters;
 
@@ -123,7 +131,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testEngineSetup() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
         try {
             context.start();
 
@@ -140,7 +148,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testEngine() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
         VertxPlatformHttpServer platformHttpServer;
 
         try {
@@ -197,7 +205,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testSlowConsumer() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.getRegistry().bind(
@@ -232,7 +240,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testSlowConsumerWithTimeout() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.getRegistry().bind(
@@ -266,7 +274,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testTimeoutNotExceeded() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         String response = "Request did not time out";
         try {
@@ -295,7 +303,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testFailingConsumer() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -325,7 +333,7 @@ public class VertxPlatformHttpEngineTest {
     @Test
     public void testEngineSSL() throws Exception {
         final CamelContext context
-                = createCamelContext(configuration -> configuration.setSslContextParameters(serverSSLParameters));
+                = createCamelContextForTest(configuration -> configuration.setSslContextParameters(serverSSLParameters));
 
         try {
             context.getRegistry().bind("clientSSLContextParameters", clientSSLParameters);
@@ -352,7 +360,8 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testEngineGlobalSSL() throws Exception {
-        final CamelContext context = createCamelContext(configuration -> configuration.setUseGlobalSslContextParameters(true));
+        final CamelContext context
+                = createCamelContextForTest(configuration -> configuration.setUseGlobalSslContextParameters(true));
 
         try {
             context.setSSLContextParameters(serverSSLParameters);
@@ -381,7 +390,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testEngineCORS() throws Exception {
-        final CamelContext context = createCamelContext(configuration -> {
+        final CamelContext context = createCamelContextForTest(configuration -> {
             configuration.getCors().setEnabled(true);
             configuration.getCors().setMethods(Arrays.asList("GET", "POST"));
         });
@@ -419,7 +428,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testMatchOnUriPrefix() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
         try {
             final String greeting = "Hello Camel";
             context.addRoutes(new RouteBuilder() {
@@ -476,7 +485,7 @@ public class VertxPlatformHttpEngineTest {
             Files.write(tempFile.toPath(), fileContent.getBytes(StandardCharsets.UTF_8));
         }
 
-        final CamelContext context = createCamelContext(configuration -> {
+        final CamelContext context = createCamelContextForTest(configuration -> {
             VertxPlatformHttpServerConfiguration.BodyHandler bodyHandler
                     = new VertxPlatformHttpServerConfiguration.BodyHandler();
             // turn on file uploads
@@ -528,7 +537,7 @@ public class VertxPlatformHttpEngineTest {
         final String attachmentId = "myTestFile";
         final String fileContent = "Test multipart upload content";
         final File tempFile = File.createTempFile("platform-http", ".txt");
-        final CamelContext context = createCamelContext(configuration -> {
+        final CamelContext context = createCamelContextForTest(configuration -> {
             VertxPlatformHttpServerConfiguration.BodyHandler bodyHandler
                     = new VertxPlatformHttpServerConfiguration.BodyHandler();
             // turn on file uploads
@@ -573,7 +582,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testFormPost() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -601,7 +610,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testTextContentPost() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -630,7 +639,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testRestCORSWitchConsumes() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -670,7 +679,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testBodyClientRequestValidation() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -723,7 +732,7 @@ public class VertxPlatformHttpEngineTest {
         AuthenticationProvider authProvider = PropertyFileAuthentication.create(vertx, "authentication/auth.properties");
         BasicAuthHandler basicAuthHandler = BasicAuthHandler.create(authProvider);
 
-        CamelContext context = createCamelContext();
+        CamelContext context = createCamelContextForTest();
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() {
@@ -772,7 +781,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testRequestBodyAllowed() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -810,7 +819,7 @@ public class VertxPlatformHttpEngineTest {
     public void testRequestBodyAllowedFormUrlEncoded() throws Exception {
         // Methods that are allowed a request body by Vert.x web for application/x-www-form-urlencoded
         final List<Method> methodsWithBodyAllowed = List.of(Method.POST, Method.PUT, Method.PATCH, Method.DELETE);
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -848,7 +857,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void responseHeaders() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -881,7 +890,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void responseMultipleHeaders() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -911,7 +920,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testConsumerSuspended() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -947,7 +956,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testInvalidContentTypeClientRequestValidation() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -982,7 +991,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testLocalAddressHeader() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1011,7 +1020,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testRemoteAddressHeader() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1040,7 +1049,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testVertxRequestResponseObjects() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1070,7 +1079,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testAddCookie() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1103,7 +1112,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testRemoveCookie() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1139,7 +1148,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testReplaceCookie() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1177,7 +1186,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testResponseTypeConversionErrorHandled() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1201,7 +1210,7 @@ public class VertxPlatformHttpEngineTest {
 
     @Test
     public void testResponseBadQueryParamErrorHandled() throws Exception {
-        final CamelContext context = createCamelContext();
+        final CamelContext context = createCamelContextForTest();
 
         try {
             context.addRoutes(new RouteBuilder() {
@@ -1228,8 +1237,8 @@ public class VertxPlatformHttpEngineTest {
         // This test simulates CAMEL-22937: when both main server and management server are running,
         // findSingleByType returns null because there are multiple instances of VertxPlatformHttpServer.
         // The engine should prefer the main server (SERVER_TYPE_SERVER) over the management server.
-        int mainPort = AvailablePortFinder.getNextAvailable();
-        int managementPort = AvailablePortFinder.getNextAvailable();
+        int mainPort = port2.getPort();
+        int managementPort = port3.getPort();
 
         VertxPlatformHttpServerConfiguration mainConf = new VertxPlatformHttpServerConfiguration();
         mainConf.setBindPort(mainPort);
@@ -1285,16 +1294,8 @@ public class VertxPlatformHttpEngineTest {
         // camel.server.port = 8084
         // camel.management.port = 8083
         // The engine should always prefer the main server port.
-        int serverPort = 8084;
-        int managementPort = 8083;
-
-        // Check if ports are available, otherwise use dynamic ports
-        if (!isPortAvailable(serverPort)) {
-            serverPort = AvailablePortFinder.getNextAvailable();
-        }
-        if (!isPortAvailable(managementPort)) {
-            managementPort = AvailablePortFinder.getNextAvailable();
-        }
+        int serverPort = port2.getPort();
+        int managementPort = port3.getPort();
 
         VertxPlatformHttpServerConfiguration mainConf = new VertxPlatformHttpServerConfiguration();
         mainConf.setBindPort(serverPort);
@@ -1343,21 +1344,27 @@ public class VertxPlatformHttpEngineTest {
         }
     }
 
-    private boolean isPortAvailable(int port) {
-        try (java.net.ServerSocket socket = new java.net.ServerSocket(port)) {
-            socket.setReuseAddress(true);
-            return true;
-        } catch (java.io.IOException e) {
-            return false;
-        }
-    }
-
     static CamelContext createCamelContext() throws Exception {
-        return createCamelContext(null);
+        return createCamelContext(AvailablePortFinder.find().getPort(), null);
     }
 
     static CamelContext createCamelContext(ServerConfigurationCustomizer customizer) throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
+        return createCamelContext(AvailablePortFinder.find().getPort(), customizer);
+    }
+
+    CamelContext createCamelContextForTest() throws Exception {
+        return createCamelContext(port.getPort(), null);
+    }
+
+    CamelContext createCamelContextForTest(ServerConfigurationCustomizer customizer) throws Exception {
+        return createCamelContext(port.getPort(), customizer);
+    }
+
+    static CamelContext createCamelContext(int port) throws Exception {
+        return createCamelContext(port, null);
+    }
+
+    static CamelContext createCamelContext(int port, ServerConfigurationCustomizer customizer) throws Exception {
         VertxPlatformHttpServerConfiguration conf = new VertxPlatformHttpServerConfiguration();
         conf.setBindPort(port);
 
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpNoBodyHandlerTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpNoBodyHandlerTest.java
index 48b23bd37d1a..216b1ed36ceb 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpNoBodyHandlerTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpNoBodyHandlerTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
@@ -34,11 +35,14 @@ import static io.restassured.RestAssured.given;
 import static org.hamcrest.Matchers.is;
 
 public class VertxPlatformHttpNoBodyHandlerTest {
-    private final int port = AvailablePortFinder.getNextAvailable();
-    private final WireMockServer wireMockServer = new WireMockServer(options().port(port));
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+
+    private WireMockServer wireMockServer;
 
     @BeforeEach
     void before() {
+        wireMockServer = new WireMockServer(options().port(port.getPort()));
         wireMockServer.stubFor(post(urlPathEqualTo("/test"))
                 .withRequestBody(containing("Hello World"))
                 .willReturn(aResponse()
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpPooledExchangeTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpPooledExchangeTest.java
index 1ca531ce8781..392d91893d6c 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpPooledExchangeTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpPooledExchangeTest.java
@@ -31,6 +31,7 @@ import org.apache.camel.spi.PooledObjectFactory;
 import org.apache.camel.test.AvailablePortFinder;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.get;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -38,6 +39,8 @@ import static org.hamcrest.Matchers.is;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class VertxPlatformHttpPooledExchangeTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @Test
     public void testEngineSetup() throws Exception {
@@ -93,16 +96,15 @@ public class VertxPlatformHttpPooledExchangeTest {
         }
     }
 
-    static CamelContext createCamelContext() throws Exception {
+    CamelContext createCamelContext() throws Exception {
         return createCamelContext(null);
     }
 
-    private static CamelContext createCamelContext(ServerConfigurationCustomizer customizer) throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
+    private CamelContext createCamelContext(ServerConfigurationCustomizer customizer) throws Exception {
         VertxPlatformHttpServerConfiguration conf = new VertxPlatformHttpServerConfiguration();
-        conf.setBindPort(port);
+        conf.setBindPort(port.getPort());
 
-        RestAssured.port = port;
+        RestAssured.port = port.getPort();
 
         if (customizer != null) {
             customizer.customize(conf);
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpProxyTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpProxyTest.java
index b393b4dd7f09..e2a3083be4bc 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpProxyTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpProxyTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
@@ -36,11 +37,14 @@ import static io.restassured.RestAssured.given;
 import static org.hamcrest.Matchers.containsString;
 
 public class VertxPlatformHttpProxyTest {
-    private final int port = AvailablePortFinder.getNextAvailable();
-    private final WireMockServer wireMockServer = new WireMockServer(options().port(port));
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+
+    private WireMockServer wireMockServer;
 
     @BeforeEach
     void before() {
+        wireMockServer = new WireMockServer(options().port(port.getPort()));
         wireMockServer.stubFor(get(urlPathEqualTo("/"))
                 .willReturn(aResponse()
                         .withBody(
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSessionTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSessionTest.java
index 8f6dd316ff09..77bd6da80f21 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSessionTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSessionTest.java
@@ -34,6 +34,7 @@ import org.apache.camel.http.base.cookie.InstanceCookieHandler;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.matcher.RestAssuredMatchers.detailedCookie;
@@ -43,6 +44,10 @@ import static org.hamcrest.Matchers.nullValue;
 import static org.junit.jupiter.api.Assertions.*;
 
 public class VertxPlatformHttpSessionTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port sessionPort = AvailablePortFinder.find();
 
     @Test
     public void testSessionDisabled() throws Exception {
@@ -160,8 +165,7 @@ public class VertxPlatformHttpSessionTest {
 
     @Test
     public void testSessionHandling() throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
-        CamelContext context = createCamelContext(port,
+        CamelContext context = createCamelContext(sessionPort.getPort(),
                 sessionConfig -> {
                     sessionConfig.setEnabled(true);
                 });
@@ -177,7 +181,7 @@ public class VertxPlatformHttpSessionTest {
 
                     from("direct:session")
                             .toF("http://localhost:%d/session?cookieHandler=#instanceCookieHander",
-                                    port);
+                                    sessionPort.getPort());
                 }
             });
 
@@ -211,9 +215,8 @@ public class VertxPlatformHttpSessionTest {
 
     private CamelContext createCamelContext(SessionConfigCustomizer customizer)
             throws Exception {
-        int bindPort = AvailablePortFinder.getNextAvailable();
-        RestAssured.port = bindPort;
-        return createCamelContext(bindPort, customizer);
+        RestAssured.port = port.getPort();
+        return createCamelContext(port.getPort(), customizer);
     }
 
     private CamelContext createCamelContext(int bindPort, SessionConfigCustomizer customizer)
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSharedVertxTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSharedVertxTest.java
index 4fc124b33ed5..0a5d1ea6ae5e 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSharedVertxTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpSharedVertxTest.java
@@ -26,10 +26,14 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class VertxPlatformHttpSharedVertxTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+
     private static final Vertx vertx = Vertx.vertx();
 
     @AfterAll
@@ -43,7 +47,7 @@ class VertxPlatformHttpSharedVertxTest {
     void sharedVertxInstanceNotClosed() throws Exception {
         try (CamelContext context = new DefaultCamelContext()) {
             VertxPlatformHttpServerConfiguration configuration = new VertxPlatformHttpServerConfiguration();
-            configuration.setBindPort(AvailablePortFinder.getNextAvailable());
+            configuration.setBindPort(port.getPort());
 
             context.getRegistry().bind("vertx", vertx);
             context.addService(new VertxPlatformHttpServer(configuration));
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpsProxyTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpsProxyTest.java
index b904706c09a4..7f77878ef0af 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpsProxyTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpsProxyTest.java
@@ -31,6 +31,7 @@ import org.apache.http.conn.ssl.NoopHostnameVerifier;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.get;
@@ -40,17 +41,19 @@ import static io.restassured.RestAssured.given;
 import static org.hamcrest.Matchers.containsString;
 
 public class VertxPlatformHttpsProxyTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
-    private final int port = AvailablePortFinder.getNextAvailable();
-    private final WireMockServer wireMockServer = new WireMockServer(
-            options().httpsPort(port)
-                    .httpDisabled(true)
-                    .keystorePath("proxy/keystore.p12")
-                    .keystorePassword("changeit")
-                    .keyManagerPassword("changeit"));
+    private WireMockServer wireMockServer;
 
     @BeforeEach
     void before() {
+        wireMockServer = new WireMockServer(
+                options().httpsPort(port.getPort())
+                        .httpDisabled(true)
+                        .keystorePath("proxy/keystore.p12")
+                        .keystorePassword("changeit")
+                        .keyManagerPassword("changeit"));
         wireMockServer.stubFor(get(urlPathEqualTo("/"))
                 .willReturn(aResponse()
                         .withBody(
@@ -91,7 +94,7 @@ public class VertxPlatformHttpsProxyTest {
 
             // In order to make sure that RestAssured don't perform a CONNECT instead of a GET, we do trick with http
             // if we want to do test manually from a terminal we use the real HTTPS address
-            final var originURI = "http://localhost:" + port;
+            final var originURI = "http://localhost:" + port.getPort();
 
             given()
                     .proxy(proxyURI)
diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformMultipleContentTypeTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformMultipleContentTypeTest.java
index 2b7055897c62..7f4ba2040c62 100644
--- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformMultipleContentTypeTest.java
+++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformMultipleContentTypeTest.java
@@ -30,10 +30,14 @@ import org.apache.camel.support.jsse.TrustManagersParameters;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.hamcrest.Matchers.is;
 
 public class VertxPlatformMultipleContentTypeTest {
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+
     public static SSLContextParameters serverSSLParameters;
     public static SSLContextParameters clientSSLParameters;
 
@@ -179,16 +183,15 @@ public class VertxPlatformMultipleContentTypeTest {
         }
     }
 
-    static CamelContext createCamelContext() throws Exception {
+    CamelContext createCamelContext() throws Exception {
         return createCamelContext(null);
     }
 
-    private static CamelContext createCamelContext(ServerConfigurationCustomizer customizer) throws Exception {
-        int port = AvailablePortFinder.getNextAvailable();
+    private CamelContext createCamelContext(ServerConfigurationCustomizer customizer) throws Exception {
         VertxPlatformHttpServerConfiguration conf = new VertxPlatformHttpServerConfiguration();
-        conf.setBindPort(port);
+        conf.setBindPort(port.getPort());
 
-        RestAssured.port = port;
+        RestAssured.port = port.getPort();
 
         if (customizer != null) {
             customizer.customize(conf);
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java
index 07b49090ebcb..bdfacce0e34d 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java
@@ -23,29 +23,25 @@ import org.apache.camel.BindToRegistry;
 import org.apache.camel.CamelContext;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 /**
  * Base class of tests which allocates ports
  */
 public abstract class BaseUndertowTest extends CamelTestSupport {
 
-    private static volatile int port;
-    private static volatile int port2;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port2 = AvailablePortFinder.find();
     private final AtomicInteger counter = new AtomicInteger(1);
 
-    @BeforeAll
-    public static void initPort() {
-        port = AvailablePortFinder.getNextAvailable();
-        port2 = AvailablePortFinder.getNextAvailable();
+    protected int getPort() {
+        return port.getPort();
     }
 
-    protected static int getPort() {
-        return port;
-    }
-
-    protected static int getPort2() {
-        return port2;
+    protected int getPort2() {
+        return port2.getPort();
     }
 
     @Override
@@ -65,10 +61,14 @@ public abstract class BaseUndertowTest extends CamelTestSupport {
     }
 
     protected int getNextPort() {
-        return AvailablePortFinder.getNextAvailable();
+        try (AvailablePortFinder.Port p = AvailablePortFinder.find()) {
+            return p.getPort();
+        }
     }
 
     protected int getNextPort(int startWithPort) {
-        return AvailablePortFinder.getNextAvailable();
+        try (AvailablePortFinder.Port p = AvailablePortFinder.find()) {
+            return p.getPort();
+        }
     }
 }
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerSessionTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerSessionTest.java
index d5852263aa3c..7338c3ce7cdf 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerSessionTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerSessionTest.java
@@ -26,11 +26,12 @@ import org.apache.camel.http.base.cookie.ExchangeCookieHandler;
 import org.apache.camel.http.base.cookie.InstanceCookieHandler;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class UndertowHttpProducerSessionTest extends CamelTestSupport {
-    private static volatile int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
 
     @BindToRegistry("instanceCookieHandler")
     private InstanceCookieHandler instanceCookieHandler = new InstanceCookieHandler();
@@ -38,11 +39,6 @@ public class UndertowHttpProducerSessionTest extends CamelTestSupport {
     @BindToRegistry("exchangeCookieHandler")
     private ExchangeCookieHandler exchangeCookieHandler = new ExchangeCookieHandler();
 
-    @BeforeAll
-    public static void initPort() {
-        port = AvailablePortFinder.getNextAvailable();
-    }
-
     @Test
     public void testNoSession() throws Exception {
         getMockEndpoint("mock:result").expectedBodiesReceived("New New World", "New New World");
@@ -69,7 +65,7 @@ public class UndertowHttpProducerSessionTest extends CamelTestSupport {
 
     private String getTestServerEndpointSessionUrl() {
         // session handling will not work for localhost
-        return "http://127.0.0.1:" + port + "/session";
+        return "http://127.0.0.1:" + port.getPort() + "/session";
     }
 
     private String getTestServerEndpointSessionUri() {
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
index bccbd4ae01d2..3ec6a5a9581d 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
@@ -25,17 +25,17 @@ import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
 import org.apache.hc.client5.http.impl.classic.HttpClients;
 import org.apache.hc.core5.http.io.entity.EntityUtils;
 import org.apache.hc.core5.http.io.entity.StringEntity;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class UndertowMethodRestricTest extends BaseUndertowTest {
 
-    private static String url;
+    private String url;
 
-    @BeforeAll
-    public static void init() {
+    @BeforeEach
+    public void init() {
         url = "http://localhost:" + getPort() + "/methodRestrict";
     }
 


(camel) 02/03: CAMEL-23214: Fix port migration in http-servers tests

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch CAMEL-23214-port-http-servers
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f6bcb7ac432199a7c5dfefc860ec6806079466e9
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Mar 20 06:34:27 2026 +0100

    CAMEL-23214: Fix port migration in http-servers tests
    
    Replace PORT (Port object) with PORT.getPort() in fromF(), toF(), and
    string concatenation calls that use %d format specifiers or need an int.
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
 .../test/java/org/apache/camel/coap/CoAPComponentTest.java |  5 +++--
 .../java/org/apache/camel/coap/CoAPMethodRestrictTest.java | 14 ++++++++------
 .../test/java/org/apache/camel/coap/CoAPMethodTest.java    | 14 ++++++++------
 .../test/java/org/apache/camel/coap/CoAPObserveTest.java   |  6 +++---
 .../src/test/java/org/apache/camel/coap/CoAPPingTest.java  |  5 +++--
 5 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
index 275395d13fe7..454b11bd3826 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
@@ -74,12 +74,13 @@ public class CoAPComponentTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                fromF("coap://localhost:%d/TestResource", PORT).convertBodyTo(String.class).transform(body().prepend("Hello "));
+                fromF("coap://localhost:%d/TestResource", PORT.getPort()).convertBodyTo(String.class)
+                        .transform(body().prepend("Hello "));
 
                 fromF("coap+tcp://localhost:%d/TestResource", TCP_PORT.getPort()).convertBodyTo(String.class)
                         .transform(body().prepend("Hello "));
 
-                from("direct:start").toF("coap://localhost:%d/TestResource", PORT).to("mock:result");
+                from("direct:start").toF("coap://localhost:%d/TestResource", PORT.getPort()).to("mock:result");
 
                 from("direct:starttcp").toF("coap+tcp://localhost:%d/TestResource", TCP_PORT.getPort()).to("mock:result");
             }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java
index 7c4ffb2cd49d..d2ce01dd7f6a 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java
@@ -53,7 +53,8 @@ public class CoAPMethodRestrictTest extends CoAPTestSupport {
 
     private void assertCoAPMethodRestrictResponse(String path, String methodRestrict, String expectedResponse) {
         for (String method : CoAPConstants.METHOD_RESTRICT_ALL.split(",")) {
-            String result = template.requestBodyAndHeader("coap://localhost:" + PORT + path, null, CoAPConstants.COAP_METHOD,
+            String result = template.requestBodyAndHeader("coap://localhost:" + PORT.getPort() + path, null,
+                    CoAPConstants.COAP_METHOD,
                     method, String.class);
             if (methodRestrict.contains(method)) {
                 assertEquals(expectedResponse, result);
@@ -68,16 +69,17 @@ public class CoAPMethodRestrictTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                fromF("coap://localhost:%d/test", PORT).setBody(constant("GET: /test"));
+                fromF("coap://localhost:%d/test", PORT.getPort()).setBody(constant("GET: /test"));
 
-                fromF("coap://localhost:%d/test/a?coapMethodRestrict=GET", PORT).setBody(constant("GET: /test/a"));
+                fromF("coap://localhost:%d/test/a?coapMethodRestrict=GET", PORT.getPort()).setBody(constant("GET: /test/a"));
 
-                fromF("coap://localhost:%d/test/a/b?coapMethodRestrict=DELETE", PORT).setBody(constant("DELETE: /test/a/b"));
+                fromF("coap://localhost:%d/test/a/b?coapMethodRestrict=DELETE", PORT.getPort())
+                        .setBody(constant("DELETE: /test/a/b"));
 
-                fromF("coap://localhost:%d/test/a/b/c?coapMethodRestrict=DELETE,GET", PORT)
+                fromF("coap://localhost:%d/test/a/b/c?coapMethodRestrict=DELETE,GET", PORT.getPort())
                         .setBody(constant("DELETE & GET: /test/a/b/c"));
 
-                fromF("coap://localhost:%d/test/b?coapMethodRestrict=GET", PORT).setBody(constant("GET: /test/b"));
+                fromF("coap://localhost:%d/test/b?coapMethodRestrict=GET", PORT.getPort()).setBody(constant("GET: /test/b"));
             }
         };
     }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java
index 7a61064f4fd3..3673f4ebbed1 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java
@@ -27,20 +27,21 @@ public class CoAPMethodTest extends CoAPTestSupport {
     @Test
     void testCoAPMethodDefaultGet() {
         // No body means GET
-        String result = template.requestBody("coap://localhost:" + PORT + "/test/a", null, String.class);
+        String result = template.requestBody("coap://localhost:" + PORT.getPort() + "/test/a", null, String.class);
         assertEquals("GET: /test/a", result);
     }
 
     @Test
     void testCoAPMethodDefaultPost() {
         // Providing a body means POST
-        String result = template.requestBody("coap://localhost:" + PORT + "/test/b", "Camel", String.class);
+        String result = template.requestBody("coap://localhost:" + PORT.getPort() + "/test/b", "Camel", String.class);
         assertEquals("Hello Camel", result);
     }
 
     @Test
     void testCoAPMethodHeader() {
-        String result = template.requestBodyAndHeader("coap://localhost:" + PORT + "/test/c", null, CoAPConstants.COAP_METHOD,
+        String result = template.requestBodyAndHeader("coap://localhost:" + PORT.getPort() + "/test/c", null,
+                CoAPConstants.COAP_METHOD,
                 "DELETE", String.class);
         assertEquals("DELETE: /test/c", result);
     }
@@ -50,11 +51,12 @@ public class CoAPMethodTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                fromF("coap://localhost:%d/test/a?coapMethodRestrict=GET", PORT).setBody(constant("GET: /test/a"));
+                fromF("coap://localhost:%d/test/a?coapMethodRestrict=GET", PORT.getPort()).setBody(constant("GET: /test/a"));
 
-                fromF("coap://localhost:%d/test/b?coapMethodRestrict=POST", PORT).setBody(simple("Hello ${body}"));
+                fromF("coap://localhost:%d/test/b?coapMethodRestrict=POST", PORT.getPort()).setBody(simple("Hello ${body}"));
 
-                fromF("coap://localhost:%d/test/c?coapMethodRestrict=DELETE", PORT).setBody(constant("DELETE: /test/c"));
+                fromF("coap://localhost:%d/test/c?coapMethodRestrict=DELETE", PORT.getPort())
+                        .setBody(constant("DELETE: /test/c"));
             }
         };
     }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPObserveTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPObserveTest.java
index fb6c09e51ef6..315aa77fa1fa 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPObserveTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPObserveTest.java
@@ -92,16 +92,16 @@ public class CoAPObserveTest extends CoAPTestSupport {
             public void configure() {
                 AtomicInteger i = new AtomicInteger(0);
 
-                fromF("coap://localhost:%d/TestResource?observable=true", PORT)
+                fromF("coap://localhost:%d/TestResource?observable=true", PORT.getPort())
                         .log("Received1: ${body}")
                         .process(exchange -> exchange.getMessage().setBody("Hello " + i.get()));
 
                 from("direct:notify")
                         .process(exchange -> i.incrementAndGet())
                         .log("Sending ${body}")
-                        .toF("coap://localhost:%d/TestResource?notify=true", PORT);
+                        .toF("coap://localhost:%d/TestResource?notify=true", PORT.getPort());
 
-                fromF("coap://localhost:%d/TestResource?observe=true", PORT)
+                fromF("coap://localhost:%d/TestResource?observe=true", PORT.getPort())
                         .log("Received2: ${body}")
                         .to("mock:sourceResults");
             }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java
index e59013abdda1..bdc3f5043510 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java
@@ -41,10 +41,11 @@ public class CoAPPingTest extends CoAPTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                fromF("coap://localhost:%d/TestResource", PORT).to("log:exch").transform(body().convertTo(Boolean.class))
+                fromF("coap://localhost:%d/TestResource", PORT.getPort()).to("log:exch")
+                        .transform(body().convertTo(Boolean.class))
                         .to("log:exch");
 
-                from("direct:start").toF("coap://localhost:%d/TestResource", PORT).to("mock:result");
+                from("direct:start").toF("coap://localhost:%d/TestResource", PORT.getPort()).to("mock:result");
             }
         };
     }


(camel) 03/03: CAMEL-23214: Fix JettyFailoverRoundRobinTest port migration direction

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch CAMEL-23214-port-http-servers
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c10a8bd676c515ebd2744bd8caf62649ce078d99
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Mar 20 07:49:33 2026 +0100

    CAMEL-23214: Fix JettyFailoverRoundRobinTest port migration direction
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
 .../jetty/JettyFailoverRoundRobinTest.java         | 34 +++++++++++-----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java
index b668b8e57f06..5259ff901d44 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyFailoverRoundRobinTest.java
@@ -22,23 +22,20 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class JettyFailoverRoundRobinTest extends CamelTestSupport {
-    private static int port1 = AvailablePortFinder.getNextAvailable();
-    private static int port2 = AvailablePortFinder.getNextAvailable();
-    private static int port3 = AvailablePortFinder.getNextAvailable();
-    private static int port4 = AvailablePortFinder.getNextAvailable();
 
-    private String bad = "jetty:http://localhost:" + port1 + "/bad";
-    private String bad2 = "jetty:http://localhost:" + port2 + "/bad2";
-    private String good = "jetty:http://localhost:" + port3 + "/good";
-    private String good2 = "jetty:http://localhost:" + port4 + "/good2";
-    private String hbad = "http://localhost:" + port1 + "/bad";
-    private String hbad2 = "http://localhost:" + port2 + "/bad2";
-    private String hgood = "http://localhost:" + port3 + "/good";
-    private String hgood2 = "http://localhost:" + port4 + "/good2";
+    @RegisterExtension
+    AvailablePortFinder.Port port1 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port2 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port3 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port port4 = AvailablePortFinder.find();
 
     @Test
     void testJettyFailoverRoundRobin() throws Exception {
@@ -78,28 +75,31 @@ public class JettyFailoverRoundRobinTest extends CamelTestSupport {
                         // -1 is to indicate that failover LB should newer exhaust and keep trying
                         .loadBalance().failover(-1, false, true)
                         // this is the four endpoints we will load balance with failover
-                        .to(hbad, hbad2, hgood, hgood2);
+                        .to("http://localhost:" + port1.getPort() + "/bad",
+                                "http://localhost:" + port2.getPort() + "/bad2",
+                                "http://localhost:" + port3.getPort() + "/good",
+                                "http://localhost:" + port4.getPort() + "/good2");
                 // END SNIPPET: e1
 
-                from(bad)
+                from("jetty:http://localhost:" + port1.getPort() + "/bad")
                         .to("mock:bad")
                         .process(exchange -> {
                             exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 500);
                             exchange.getIn().setBody("Something bad happened");
                         });
 
-                from(bad2)
+                from("jetty:http://localhost:" + port2.getPort() + "/bad2")
                         .to("mock:bad2")
                         .process(exchange -> {
                             exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 404);
                             exchange.getIn().setBody("Not found");
                         });
 
-                from(good)
+                from("jetty:http://localhost:" + port3.getPort() + "/good")
                         .to("mock:good")
                         .process(exchange -> exchange.getIn().setBody("Good"));
 
-                from(good2)
+                from("jetty:http://localhost:" + port4.getPort() + "/good2")
                         .to("mock:good2")
                         .process(exchange -> exchange.getIn().setBody("Also good"));
             }