Sub-scope 07 (httpclient) transport 6종 + testkit/performance/jmh — manifest and probes
revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5
generatedAt=2026-08-30T05:38:36+00:00

=== OWNED FILES ===
a62e059e8107952ef779314793c57b303e7f749d httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/Http2StreamSaturationTest.java 104
2c2837da3b886daccf78324cd2ecf6b731bdca2b httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/LargeBodyResourceTest.java 68
124f76b68aca2dc51645a9522d21286d1880e5eb httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/OAuthRefreshContentionTest.java 100
ca812905935a227a247f7a13ec61d24684faf4ed httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/PerformanceAssertions.java 35
c826541a1ecd66dea0ea9e4204592811ea4cdd71 httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/PoolSaturationPerformanceTest.java 94
b12a3581310d7a1bc99e3a0bc5a9330c34aab21f httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/RetryStormBudgetTest.java 42
5ad7564662f0aa214e82020a5c31790b9278fbd8 httpClientPerformanceTest/java/dev/caskeleton/adapter/outbound/httpclient/performance/RuntimeRotationDrainTest.java 52
74be62f1b7f2331a44b684174186f6328d8667ba jmh/java/dev/caskeleton/adapter/outbound/httpclient/benchmark/BlockingClientBenchmark.java 67
dd5182071527cddf2c91f335f85c833384ebd0e4 jmh/java/dev/caskeleton/adapter/outbound/httpclient/benchmark/ReactiveClientBenchmark.java 63
e8fe892ece80511b648b7e1b7505edfbcaf155bf main/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApacheBlockingTransportProvider.java 118
f3ce2eec16e4d0ab1484916f7130065f6ba7ae8c main/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApacheClientFactory.java 153
3d826907883dc34b7f133169b3d492f2cb659f25 main/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApacheDnsResolverFactory.java 45
d08a53fa1cde89cb8ea7e3f7412d4b7637d7eb66 main/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApacheFailureClassifier.java 140
0364355c1cb3bef6f3993c05e22158eec68a6117 main/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApachePoolMetricsBinder.java 54
6cbd23b2f77af47c486144771793047a5af2ca0a main/java/dev/caskeleton/adapter/outbound/httpclient/http3/Http3CapabilityReport.java 121
2712a8745e12e093c43d5e0320fb567e0ba85e5e main/java/dev/caskeleton/adapter/outbound/httpclient/http3/Http3ExperimentalAcknowledgement.java 18
b4befa8e670cfa1f6a3ddb34451c916b2a93ef6d main/java/dev/caskeleton/adapter/outbound/httpclient/http3/JettyHttp3FailureClassifier.java 63
651816e689a539ef96993583863dfde1701ca9e1 main/java/dev/caskeleton/adapter/outbound/httpclient/http3/JettyHttp3TransportProvider.java 190
c7f1dde53e356555764c2b655ffa098ca4cdc357 main/java/dev/caskeleton/adapter/outbound/httpclient/jdk/JdkBlockingTransportProvider.java 83
9d260957544f286d9169c0c8bd38e482254bc018 main/java/dev/caskeleton/adapter/outbound/httpclient/jdk/JdkClientFactory.java 64
8350e0c3cd5291338fb68c5bcc647431021a1bb3 main/java/dev/caskeleton/adapter/outbound/httpclient/jdk/JdkFailureClassifier.java 120
bf0d36f0b21e0a0844c94821d6c5cf5ff76b278a main/java/dev/caskeleton/adapter/outbound/httpclient/jdk/JdkTransportCapabilityPolicy.java 45
c2ebcde9d230a0ae2e0d07712720383946dd7804 main/java/dev/caskeleton/adapter/outbound/httpclient/reactor/ReactorConnectionProviderFactory.java 42
5399c56d7ca0b2987655bdabc24ad19f63554f12 main/java/dev/caskeleton/adapter/outbound/httpclient/reactor/ReactorFailureClassifier.java 137
2fb89119b0606de393d9bbb37c4f48e430604114 main/java/dev/caskeleton/adapter/outbound/httpclient/reactor/ReactorHttpClientFactory.java 137
32d596a80ba4c872deb270f55d54208e31f36db4 main/java/dev/caskeleton/adapter/outbound/httpclient/reactor/ReactorNettyTransportProvider.java 94
7e5d6bcc4154c83ff58a48936ce4483fefdb3bd6 main/java/dev/caskeleton/adapter/outbound/httpclient/reactor/ReactorPoolMetricsBinder.java 35
dbe16acd2d6a8552933b89be5ece197d06e21d88 main/java/dev/caskeleton/adapter/outbound/httpclient/reactor/ValidatedAddressResolverGroup.java 58
04590b046d462f4654f5392eacaf39a27f3f83ab main/java/dev/caskeleton/adapter/outbound/httpclient/spring7/HttpServiceGroupProfileResolver.java 18
a6d031c38126d460a823366985e001042c842cea main/java/dev/caskeleton/adapter/outbound/httpclient/spring7/NamedHttpServiceGroupRegistrar.java 59
bf20715b7632babb43fece8aeb0b260429049b77 main/java/dev/caskeleton/adapter/outbound/httpclient/spring7/Spring7GroupCompatibility.java 30
f813a537088e644cebe1cfb8929c6da32bc8da24 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/BlockingTransportCapabilities.java 47
aa3baaf94c76020ec59c8a0e13cd41bba100b7b0 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/BlockingTransportProvider.java 32
6fe2538e86fef74d4724dab9bb1170efaf3fe9b6 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/ReactiveTransportCapabilities.java 49
83dd2fa2ce7acc8ee422712da20038e97fb901bf main/java/dev/caskeleton/adapter/outbound/httpclient/transport/ReactiveTransportProvider.java 28
f5197c7ceab70ea8dc9de0cdd33ee3e8e8196bb6 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportCapabilityValidator.java 90
1bfc7b72a3863dc966e4d9a95dc1eaed2b484be7 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportFailure.java 36
9e8681367fee0272212f5d1a4878817311bd0418 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportFailureClassifier.java 15
0a48564cfe776188a1b0601bbb280f9532cb1292 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportId.java 16
7076e4caa1d0d0807e7a63cd45e5d84f36472a3b main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportLifecycleListener.java 27
dec36796e3db8662e5f53ea3f0cbe11d845a4225 main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportResourceKey.java 25
17677a14d949b9856b518f1b1da5639299c2c0a8 test/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApacheBlockingTransportProviderTest.java 76
e352e8b21c4e1ec226b8caede06db164ec18ebc9 test/java/dev/caskeleton/adapter/outbound/httpclient/apache/ApachePoolSaturationTest.java 93
851935f3cc00478dbfb3c78fecb30d1028e4a60d test/java/dev/caskeleton/adapter/outbound/httpclient/http3/Http3OptInTest.java 139
0a84d157f2885c0e6723b346db42bd9356cd6b4e test/java/dev/caskeleton/adapter/outbound/httpclient/jdk/JdkBlockingTransportProviderTest.java 51
d5203afeab4a788bf88032c6c7b510098be553f2 test/java/dev/caskeleton/adapter/outbound/httpclient/jdk/JdkTransportCapabilityPolicyTest.java 60
9692c041e79b34e9fe52475f89180dc868bb8a3e test/java/dev/caskeleton/adapter/outbound/httpclient/spring7/NamedHttpServiceGroupRegistrarTest.java 39
ec8695168ed192a17a2e2796588020c5fa0cc589 test/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ForwardProxyContractTest.java 71
11e9a2441fbb6cf447038b18d636f78538c346cf test/java/dev/caskeleton/adapter/outbound/httpclient/testkit/MockHttpServerTest.java 44
3c00b14175858fd1f23c87f7192fafca712b96e8 test/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportCapabilityValidatorTest.java 75
2825537ce4a012f49b459186a8b159b4f8a49943 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/BlockingTransportContract.java 109
6044aae9715375f923ed6f295489bd7421b5cca1 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ClientProfiles.java 344
d76e8f39b4b1be5b8aa83708f0721a87e98ad7fa testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/CoreFixtures.java 48
b04724e78f296d77a2202e21c87648eced550185 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/DynamicTargetSecurityContract.java 56
987e8283fadab5d311ccd0500d718387c05fcd61 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/DynamicTargets.java 56
c5b765468a45af631c338f99fb331cb5d4a69ffb testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/EventPayload.java 4
6af42efa194343659bfce842fa34e9c854ae615d testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/Http2FailureFixture.java 37
3d0e389b602bf535f9c8f6c9db038248f72c2a03 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/HttpClientContract.java 45
df8ac75a4cad06cb397619e871ba2cc650eae1e4 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/InvalidPostClient.java 14
b16bcc9a29a57770c4ab9b3be69c83919898761a testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/MissingKeyClient.java 19
1ad5ad2840d17d3f33675dd332a3d923fe5e247e testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/MixedSignatureClient.java 25
42cce7f77152fa883e95f10a3a0e09e70c3dedc0 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/MockHttpServer.java 189
9a219eaf5a5bfc5f79a6af4f3f548cbd09b50b4c testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/NettyLeakDetectionExtension.java 84
2507ea99fee9533c4fa811ca2cc1630f3a78fae5 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/NoopLifecycleListener.java 11
7b9fcf00632ff0e5ffda03e109b62152bed3e76a testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/OAuth2Fixture.java 56
28fef6ba7f158b0496df71ab725b358a28e3b363 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ObservabilityContract.java 65
1ce8d009dd8e2800f7d767088e7be11597321495 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ProxyFixture.java 205
b846e3bde1c0f48958298c7b787939e3b2974710 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ReactiveEventsClient.java 22
84248a1d5730be90956299cf81574c32eb2e9b79 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ReactiveTestGateways.java 80
697b43cbb24977b61b7b0661595d5ecf6963d6d5 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ReactiveTransportContract.java 62
7fc0be1534244e6ebaf5cb9935847d8e3c76308f testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/RecordedHttpRequest.java 42
570ac82ab92b63629a545a334b7956c5c8d0be73 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/RecordingCredentialProvider.java 43
d013194bfde2ce638f43cb8fc88515b4d9ad69a7 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/RecordingResilienceComponents.java 116
8a58e18b1b7246ecb39606652ed787cfa34abcae testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/RecordingSleeper.java 27
fc962f6a14b7b1b35db9e2d15042ea0835f2c6ab testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ResourceLifecycleContract.java 143
be1a2de45ae30328bd2db5694d407e5a784451d5 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/RetryContexts.java 236
77a988ec8f02c83eaf8bd1aa72c967a296c5367e testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/RetrySafetyContract.java 92
60197216b2be8d594eafdeab4e2dad1a86eedaed testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/StatefulUpstream.java 119
6df222928fa81d1293383c7933953eb398260a14 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/TestGateways.java 87
f8ddbf7dd48ae912a08f4510c249334788943d0d testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/TlsFixture.java 104
4441eb3c47a8085bd33b912deca7c43217d952ae testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/TlsMaterials.java 69
afdf9ff12b7aa096a7c59719c9fa6f4912a25a9e testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/ToxiproxyFixture.java 103
f9eeac321be6d94d38585b6d42076d2ffb0de902 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/UnsafeRetryClient.java 20
b9e706f34f726b32a4473bde22cc44b588094588 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/UserResponse.java 4
a723b94f841aa3c804969506d1e5416e1ad53fb2 testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/UsersClient.java 18

main: 32  test: 9  testkit: 35  perf: 7  jmh: 2
=== 8.2 두 오버로드 비교 ===
$ grep -n 'validatedDnsPinning\|dynamicTargetStable\|public void validate' adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/transport/TransportCapabilityValidator.java
19:  public void validate(ClientProfile profile, BlockingTransportCapabilities capabilities) {
35:    if (profile.mode() == ClientMode.DYNAMIC && !capabilities.dynamicTargetStable()) {
38:    if (profile.mode() == ClientMode.DYNAMIC && !capabilities.validatedDnsPinning()) {
39:      // `validatedDnsPinning` was declared on every capability record and read by nothing. It is
42:      // `dynamicTargetStable` flag says — the two were being conflated.
48:  public void validate(ClientProfile profile, ReactiveTransportCapabilities capabilities) {
64:    if (profile.mode() == ClientMode.DYNAMIC && !capabilities.dynamicTargetStable()) {
exit=0

$ sed -n '24,49p' adapter/outbound/httpclient/src/main/java/dev/caskeleton/adapter/outbound/httpclient/transport/ReactiveTransportCapabilities.java
  public static ReactiveTransportCapabilities reactorNetty() {
    return new ReactiveTransportCapabilities(
        Set.of(HttpProtocol.HTTP_1_1, HttpProtocol.HTTP_2),
        true,
        true,
        true,
        true,
        true,
        true,
        true,
        true);
  }

  public static ReactiveTransportCapabilities jettyHttp3Experimental() {
    return new ReactiveTransportCapabilities(
        Set.of(HttpProtocol.HTTP_1_1, HttpProtocol.HTTP_2, HttpProtocol.HTTP_3),
        false,
        false,
        true,
        true,
        false,
        false,
        true,
        true);
  }
}
exit=0

=== 8.3 성능 lane 대상 ===
$ git ls-files 'adapter/outbound/httpclient/src/httpClientPerformanceTest' 'adapter/outbound/httpclient/src/jmh' | xargs -n1 basename
Http2StreamSaturationTest.java
LargeBodyResourceTest.java
OAuthRefreshContentionTest.java
PerformanceAssertions.java
PoolSaturationPerformanceTest.java
RetryStormBudgetTest.java
RuntimeRotationDrainTest.java
BlockingClientBenchmark.java
ReactiveClientBenchmark.java
exit=0

$ git grep -rn 'replayability()' -- 'adapter/outbound/httpclient/src/httpClientPerformanceTest' 'adapter/outbound/httpclient/src/jmh'
exit=1

=== 8.4 testkit 계약 클래스 ===
$ git ls-files 'adapter/outbound/httpclient/src/testkit' | xargs -n1 basename | grep -i contract
BlockingTransportContract.java
DynamicTargetSecurityContract.java
HttpClientContract.java
ObservabilityContract.java
ReactiveTransportContract.java
ResourceLifecycleContract.java
RetrySafetyContract.java
exit=0

$ grep -n 'assert\|level' adapter/outbound/httpclient/src/testkit/java/dev/caskeleton/adapter/outbound/httpclient/testkit/NettyLeakDetectionExtension.java | head
3:import static org.assertj.core.api.Assertions.assertThat;
16: * <p>Two things are asserted, and the first matters as much as the second: that the paranoid
18: * ran at {@code SIMPLE} level — or not at all because the system property never reached the forked
22: * collected, which this extension does not force. The explicit release assertions in the streaming
34:    assertThat(ResourceLeakDetector.getLevel())
36:            "netty leak detection must run at PARANOID; set -Dio.netty.leakDetection.level=paranoid")
48:    assertThat(leakRecords).describedAs("netty reported buffer leak(s)").isEmpty();
exit=0

