Skip to content

Commit e114fc4

Browse files
committed
TASK-021-005: Add HTTP/2 connection and multiplexing integration tests
- Created `src/TurboHttp.IntegrationTests/H2/ConnectionIntegrationTests.cs` with 5 tests - Tests cover: sequential reuse, concurrent multiplexing (Task.WhenAll), binary POST echo, multi-endpoint, and POST+GET on same connection - All tests use `[Collection("H2")]` and `new Version(2, 0)` - DisplayNames follow `Conn-H2-001` through `Conn-H2-005` pattern - Build: 0 errors, 0 warnings - All 5 tests pass
1 parent 3a31d43 commit e114fc4

7 files changed

Lines changed: 419 additions & 536 deletions

File tree

.maggus/features/feature_021.md

Lines changed: 58 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
103103
- [x] Build passes with zero warnings
104104

105105
**Files:**
106-
- `src/TurboHttp.IntegrationTests/CompressionH10IntegrationTests.cs` (NEW)
107-
- `src/TurboHttp.IntegrationTests/CookieH10IntegrationTests.cs` (NEW)
106+
- `src/TurboHttp.IntegrationTests/H10/CompressionIntegrationTests.cs`
107+
- `src/TurboHttp.IntegrationTests/H10/CookieIntegrationTests.cs`
108108

109109
---
110110

@@ -117,11 +117,11 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
117117
**Parallel:** yes — can run alongside TASK-021-001, TASK-021-002, TASK-021-004, TASK-021-005, TASK-021-006, TASK-021-007
118118

119119
**Acceptance Criteria:**
120-
- [ ] `RedirectH10IntegrationTests.cs` created with 14 tests mirroring `RedirectIntegrationTests`
121-
- [ ] `RetryH10IntegrationTests.cs` created with 9 tests mirroring `RetryIntegrationTests`
122-
- [ ] All tests use `new Version(1, 0)` and `[Collection("Http1Integration")]`
123-
- [ ] DisplayNames follow `Redirect-H10-001` / `Retry-H10-001` pattern
124-
- [ ] Build passes with zero warnings
120+
- [x] `RedirectH10IntegrationTests.cs` created with 14 tests mirroring `RedirectIntegrationTests`
121+
- [x] `RetryH10IntegrationTests.cs` created with 9 tests mirroring `RetryIntegrationTests`
122+
- [x] All tests use `new Version(1, 0)` and `[Collection("Http1Integration")]`
123+
- [x] DisplayNames follow `Redirect-H10-001` / `Retry-H10-001` pattern
124+
- [x] Build passes with zero warnings
125125

126126
**Files:**
127127
- `src/TurboHttp.IntegrationTests/RedirectH10IntegrationTests.cs` (NEW)
@@ -144,22 +144,17 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
144144
- No chunked encoding in HTTP/1.0
145145

146146
**Acceptance Criteria:**
147-
- [ ] `CacheH10IntegrationTests.cs` created with 11 tests mirroring `CacheIntegrationTests`
148-
- [ ] `ErrorHandlingH10IntegrationTests.cs` created with ~8 tests (adapted from `ErrorHandlingIntegrationTests`, excluding HTTP/1.1-specific edge cases like chunked)
149-
- [ ] `ConnectionH10IntegrationTests.cs` created with ~4 tests:
147+
- [x] `CacheH10IntegrationTests.cs` created with 11 tests mirroring `CacheIntegrationTests`
148+
- [x] `ErrorHandlingH10IntegrationTests.cs` created with ~8 tests (adapted from `ErrorHandlingIntegrationTests`, excluding HTTP/1.1-specific edge cases like chunked)
149+
- [x] `ConnectionH10IntegrationTests.cs` created with ~4 tests:
150150
- Default no keep-alive (connection closes after single request)
151151
- Explicit `Connection: Keep-Alive` opt-in
152152
- Sequential requests on keep-alive connection
153153
- `Connection: close` explicitly
154-
- [ ] All tests use `new Version(1, 0)` and `[Collection("Http1Integration")]`
155-
- [ ] DisplayNames follow `Cache-H10-001` / `Error-H10-001` / `Conn-H10-001` pattern
156-
- [ ] All ~23 tests pass
157-
- [ ] Build passes with zero warnings
158-
159-
**Files:**
160-
- `src/TurboHttp.IntegrationTests/CacheH10IntegrationTests.cs` (NEW)
161-
- `src/TurboHttp.IntegrationTests/ErrorHandlingH10IntegrationTests.cs` (NEW)
162-
- `src/TurboHttp.IntegrationTests/ConnectionH10IntegrationTests.cs` (NEW)
154+
- [x] All tests use `new Version(1, 0)` and `[Collection("Http1Integration")]`
155+
- [x] DisplayNames follow `Cache-H10-001` / `Error-H10-001` / `Conn-H10-001` pattern
156+
- [x] All ~23 tests pass
157+
- [x] Build passes with zero warnings
163158

164159
---
165160

@@ -178,19 +173,19 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
178173
- RST_STREAM for individual stream errors (already in ErrorHandlingH2)
179174

180175
**Acceptance Criteria:**
181-
- [ ] `ConnectionH2IntegrationTests.cs` created with ~5 tests:
176+
- [x] `/H2/ConnectionIntegrationTests.cs` created with ~5 tests:
182177
- Sequential requests reuse same HTTP/2 connection
183178
- Concurrent requests multiplexed (3-5 parallel `Task.WhenAll`)
184179
- Large body transfer over HTTP/2 (POST /echo with 64KB body)
185180
- Multiple endpoints on same connection
186181
- POST with body followed by GET on same connection
187-
- [ ] All tests use `[Collection("Http2Integration")]` and `new Version(2, 0)`
188-
- [ ] DisplayNames follow `Conn-H2-001` pattern
189-
- [ ] All tests pass
190-
- [ ] Build passes with zero warnings
182+
- [x] All tests use `[Collection("H2")]` and `new Version(2, 0)`
183+
- [x] DisplayNames follow `Conn-H2-001` pattern
184+
- [x] All tests pass
185+
- [x] Build passes with zero warnings
191186

192187
**Files:**
193-
- `src/TurboHttp.IntegrationTests/ConnectionH2IntegrationTests.cs` (NEW)
188+
- `src/TurboHttp.IntegrationTests/H2/ConnectionIntegrationTests.cs` (NEW)
194189

195190
---
196191

@@ -202,25 +197,25 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
202197
**Successors:** TASK-021-011
203198
**Parallel:** yes — can run alongside TASK-021-001, TASK-021-002, TASK-021-003, TASK-021-004, TASK-021-005, TASK-021-007
204199

205-
**Pattern:** Copy HTTP/1.1 test classes, change to `KestrelTlsFixture`, `[Collection("TlsIntegration")]`, `scheme: "https"`, `new Version(1, 1)`. Rename DisplayNames to `*-TLS-NNN`.
200+
**Pattern:** Copy HTTP/1.1 test classes, change to `KestrelTlsFixture`, `[Collection("TLS")]`, `scheme: "https"`, `new Version(1, 1)`. Rename DisplayNames to `*-TLS-NNN`.
206201

207-
**Note:** The existing `TlsIntegrationTests.cs` (9 tests) covers a mix of basic features. The new files provide dedicated per-feature coverage. The old file can remain as a cross-cutting sanity check.
202+
**Note:** The existing `IntegrationTests.cs` (9 tests) covers a mix of basic features. The new files provide dedicated per-feature coverage. The old file can remain as a cross-cutting sanity check.
208203

209204
**Acceptance Criteria:**
210-
- [ ] `CompressionTlsIntegrationTests.cs` created with 7 tests
211-
- [ ] `CookieTlsIntegrationTests.cs` created with 11 tests
212-
- [ ] `RedirectTlsIntegrationTests.cs` created with 14 tests
213-
- [ ] `RetryTlsIntegrationTests.cs` created with 9 tests
214-
- [ ] All tests use `KestrelTlsFixture`, `[Collection("TlsIntegration")]`, `scheme: "https"`
205+
- [ ] `CompressionIntegrationTests.cs` created with 7 tests
206+
- [ ] `CookieIntegrationTests.cs` created with 11 tests
207+
- [ ] `RedirectIntegrationTests.cs` created with 14 tests
208+
- [ ] `RetryIntegrationTests.cs` created with 9 tests
209+
- [ ] All tests use `KestrelTlsFixture`, `[Collection("TLS")]`, `scheme: "https"`
215210
- [ ] DisplayNames follow `Compression-TLS-001` / `Cookie-TLS-001` / `Redirect-TLS-001` / `Retry-TLS-001`
216211
- [ ] All 41 tests pass
217212
- [ ] Build passes with zero warnings
218213

219214
**Files:**
220-
- `src/TurboHttp.IntegrationTests/CompressionTlsIntegrationTests.cs` (NEW)
221-
- `src/TurboHttp.IntegrationTests/CookieTlsIntegrationTests.cs` (NEW)
222-
- `src/TurboHttp.IntegrationTests/RedirectTlsIntegrationTests.cs` (NEW)
223-
- `src/TurboHttp.IntegrationTests/RetryTlsIntegrationTests.cs` (NEW)
215+
- `src/TurboHttp.IntegrationTests/TLS/CompressionIntegrationTests.cs`
216+
- `src/TurboHttp.IntegrationTests/TLS/CookieIntegrationTests.cs`
217+
- `src/TurboHttp.IntegrationTests/TLS/RedirectIntegrationTests.cs`
218+
- `src/TurboHttp.IntegrationTests/TLS/RetryIntegrationTests.cs`
224219

225220
---
226221

@@ -233,18 +228,18 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
233228
**Parallel:** yes — can run alongside TASK-021-001, TASK-021-002, TASK-021-003, TASK-021-004, TASK-021-005, TASK-021-006
234229

235230
**Acceptance Criteria:**
236-
- [ ] `CacheTlsIntegrationTests.cs` created with 11 tests
237-
- [ ] `ErrorHandlingTlsIntegrationTests.cs` created with ~8 tests (adapted from HTTP/1.1 version)
238-
- [ ] `ConnectionTlsIntegrationTests.cs` created with 5 tests (keep-alive over TLS, Connection: close over TLS, sequential reuse)
239-
- [ ] All tests use `KestrelTlsFixture`, `[Collection("TlsIntegration")]`, `scheme: "https"`
231+
- [ ] `CacheIntegrationTests.cs` created with 11 tests
232+
- [ ] `ErrorHandlingIntegrationTests.cs` created with ~8 tests (adapted from HTTP/1.1 version)
233+
- [ ] `ConnectionIntegrationTests.cs` created with 5 tests (keep-alive over TLS, Connection: close over TLS, sequential reuse)
234+
- [ ] All tests use `KestrelTlsFixture`, `[Collection("TLS")]`, `scheme: "https"`
240235
- [ ] DisplayNames follow `Cache-TLS-001` / `Error-TLS-001` / `Conn-TLS-001`
241236
- [ ] All ~24 tests pass
242237
- [ ] Build passes with zero warnings
243238

244239
**Files:**
245-
- `src/TurboHttp.IntegrationTests/CacheTlsIntegrationTests.cs` (NEW)
246-
- `src/TurboHttp.IntegrationTests/ErrorHandlingTlsIntegrationTests.cs` (NEW)
247-
- `src/TurboHttp.IntegrationTests/ConnectionTlsIntegrationTests.cs` (NEW)
240+
- `src/TurboHttp.IntegrationTests/TLS/CacheIntegrationTests.cs`
241+
- `src/TurboHttp.IntegrationTests/TLS/ErrorHandlingIntegrationTests.cs`
242+
- `src/TurboHttp.IntegrationTests/TLS/ConnectionIntegrationTests.cs`
248243

249244
---
250245

@@ -262,19 +257,19 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
262257
3. Small body (<1KB) does NOT send Expect header
263258

264259
**Acceptance Criteria:**
265-
- [ ] `ExpectContinueIntegrationTests.cs` created (HTTP/1.1, 3 tests)
266-
- [ ] `ExpectContinueH10IntegrationTests.cs` created (HTTP/1.0, 3 tests)
267-
- [ ] `ExpectContinueH2IntegrationTests.cs` created (HTTP/2, 3 tests)
268-
- [ ] `ExpectContinueTlsIntegrationTests.cs` created (TLS, 3 tests)
260+
- [ ] `/H11/ExpectContinueIntegrationTests.cs` created (HTTP/1.1, 3 tests)
261+
- [ ] `/H10/ExpectContinueHIntegrationTests.cs` created (HTTP/1.0, 3 tests)
262+
- [ ] `/H2/ExpectContinueIntegrationTests.cs` created (HTTP/2, 3 tests)
263+
- [ ] `/TLS/ExpectContinueIntegrationTests.cs` created (TLS, 3 tests)
269264
- [ ] DisplayNames follow `Expect-001` / `Expect-H10-001` / `Expect-H2-001` / `Expect-TLS-001`
270265
- [ ] All 12 tests pass against the routes from TASK-021-001
271266
- [ ] Build passes with zero warnings
272267

273268
**Files:**
274-
- `src/TurboHttp.IntegrationTests/ExpectContinueIntegrationTests.cs` (NEW)
275-
- `src/TurboHttp.IntegrationTests/ExpectContinueH10IntegrationTests.cs` (NEW)
276-
- `src/TurboHttp.IntegrationTests/ExpectContinueH2IntegrationTests.cs` (NEW)
277-
- `src/TurboHttp.IntegrationTests/ExpectContinueTlsIntegrationTests.cs` (NEW)
269+
- `src/TurboHttp.IntegrationTests/H11/ExpectContinueIntegrationTests.cs` (NEW)
270+
- `src/TurboHttp.IntegrationTests/H10/ExpectContinueIntegrationTests.cs` (NEW)
271+
- `src/TurboHttp.IntegrationTests/H2/ExpectContinueIntegrationTests.cs` (NEW)
272+
- `src/TurboHttp.IntegrationTests/TLS/ExpectContinueIntegrationTests.cs` (NEW)
278273

279274
---
280275

@@ -311,18 +306,18 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
311306
- Echo path (`/h2/echo-path` — route exists, never tested!)
312307

313308
**Acceptance Criteria:**
314-
- [ ] `EdgeCaseIntegrationTests.cs` created (HTTP/1.1, ~8 tests)
315-
- [ ] `EdgeCaseH10IntegrationTests.cs` created (HTTP/1.0, ~5 tests)
316-
- [ ] `EdgeCaseH2IntegrationTests.cs` created (HTTP/2, ~5 tests)
309+
- [ ] `/H11/EdgeCaseIntegrationTests.cs` created (HTTP/1.1, ~8 tests)
310+
- [ ] `/H10/EdgeCaseIntegrationTests.cs` created (HTTP/1.0, ~5 tests)
311+
- [ ] `/H2/EdgeCaseIntegrationTests.cs` created (HTTP/2, ~5 tests)
317312
- [ ] DisplayNames follow `Edge-001` / `Edge-H10-001` / `Edge-H2-001`
318313
- [ ] All tests use existing routes (no new routes needed)
319314
- [ ] All ~18 tests pass
320315
- [ ] Build passes with zero warnings
321316

322317
**Files:**
323-
- `src/TurboHttp.IntegrationTests/EdgeCaseIntegrationTests.cs` (NEW)
324-
- `src/TurboHttp.IntegrationTests/EdgeCaseH10IntegrationTests.cs` (NEW)
325-
- `src/TurboHttp.IntegrationTests/EdgeCaseH2IntegrationTests.cs` (NEW)
318+
- `src/TurboHttp.IntegrationTests/H11/EdgeCaseIntegrationTests.cs` (NEW)
319+
- `src/TurboHttp.IntegrationTests/H10/EdgeCaseIntegrationTests.cs` (NEW)
320+
- `src/TurboHttp.IntegrationTests/H2/EdgeCaseIntegrationTests.cs` (NEW)
326321

327322
---
328323

@@ -352,19 +347,19 @@ TurboHttp has 139 integration tests but coverage is heavily skewed toward HTTP/1
352347
- Concurrent requests to different endpoints
353348

354349
**Acceptance Criteria:**
355-
- [ ] `ConcurrencyIntegrationTests.cs` created (HTTP/1.1, ~4 tests)
356-
- [ ] `ConcurrencyH10IntegrationTests.cs` created (HTTP/1.0, ~3 tests)
357-
- [ ] `ConcurrencyH2IntegrationTests.cs` created (HTTP/2, ~4 tests)
350+
- [ ] `/H11/ConcurrencyIntegrationTests.cs` created (HTTP/1.1, ~4 tests)
351+
- [ ] `/H10/ConcurrencyIntegrationTests.cs` created (HTTP/1.0, ~3 tests)
352+
- [ ] `/H2/ConcurrencyIntegrationTests.cs` created (HTTP/2, ~4 tests)
358353
- [ ] All tests use `Task.WhenAll` for parallel execution
359354
- [ ] Timeout set to 60s for stress tests
360355
- [ ] DisplayNames follow `Concurrency-001` / `Concurrency-H10-001` / `Concurrency-H2-001`
361356
- [ ] All ~11 tests pass reliably (no flaky tests)
362357
- [ ] Build passes with zero warnings
363358

364359
**Files:**
365-
- `src/TurboHttp.IntegrationTests/ConcurrencyIntegrationTests.cs` (NEW)
366-
- `src/TurboHttp.IntegrationTests/ConcurrencyH10IntegrationTests.cs` (NEW)
367-
- `src/TurboHttp.IntegrationTests/ConcurrencyH2IntegrationTests.cs` (NEW)
360+
- `src/TurboHttp.IntegrationTests/H11/ConcurrencyIntegrationTests.cs` (NEW)
361+
- `src/TurboHttp.IntegrationTests/H10/ConcurrencyIntegrationTests.cs` (NEW)
362+
- `src/TurboHttp.IntegrationTests/H2/ConcurrencyIntegrationTests.cs` (NEW)
368363

369364
---
370365

.maggus/features/feature_023.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,14 @@ public static ITurboHttpClientBuilder WithExpectContinue(
113113

114114
**Acceptance Criteria:**
115115
- [ ] `FeatureInteractionIntegrationTests.cs` created with 7 tests
116-
- [ ] All tests use `[Collection("Http1Integration")]` and `new Version(1, 1)`
116+
- [ ] All tests use `[Collection("H11")]` and `new Version(1, 1)`
117117
- [ ] DisplayNames follow `Interaction-001` pattern
118118
- [ ] Tests configure multiple BidiStages via `ClientHelper.CreateClient(..., configure: ...)`
119119
- [ ] All 7 tests pass
120120
- [ ] Build passes with zero warnings
121121

122122
**Files:**
123-
- `src/TurboHttp.IntegrationTests/FeatureInteractionIntegrationTests.cs` (NEW)
123+
- `src/TurboHttp.IntegrationTests/H11/FeatureInteractionIntegrationTests.cs` (NEW)
124124

125125
---
126126

@@ -135,17 +135,17 @@ public static ITurboHttpClientBuilder WithExpectContinue(
135135
**Pattern:** Copy `FeatureInteractionIntegrationTests.cs`, change version/fixture/collection/display names.
136136

137137
**Acceptance Criteria:**
138-
- [ ] `FeatureInteractionH10IntegrationTests.cs` → 7 tests, `new Version(1, 0)`, `[Collection("Http1Integration")]`
139-
- [ ] `FeatureInteractionH2IntegrationTests.cs` → 7 tests, `new Version(2, 0)`, `[Collection("Http2Integration")]`
140-
- [ ] `FeatureInteractionTlsIntegrationTests.cs` → 7 tests, `new Version(1, 1)`, `scheme: "https"`, `[Collection("TlsIntegration")]`
138+
- [ ] `FeatureInteractionH10IntegrationTests.cs` → 7 tests, `new Version(1, 0)`, `[Collection("H10")]`
139+
- [ ] `FeatureInteractionH2IntegrationTests.cs` → 7 tests, `new Version(2, 0)`, `[Collection("H2")]`
140+
- [ ] `FeatureInteractionTlsIntegrationTests.cs` → 7 tests, `new Version(1, 1)`, `scheme: "https"`, `[Collection("TLS")]`
141141
- [ ] DisplayNames: `Interaction-H10-001`, `Interaction-H2-001`, `Interaction-TLS-001`
142142
- [ ] All 21 tests pass
143143
- [ ] Build passes with zero warnings
144144

145145
**Files:**
146-
- `src/TurboHttp.IntegrationTests/FeatureInteractionH10IntegrationTests.cs` (NEW)
147-
- `src/TurboHttp.IntegrationTests/FeatureInteractionH2IntegrationTests.cs` (NEW)
148-
- `src/TurboHttp.IntegrationTests/FeatureInteractionTlsIntegrationTests.cs` (NEW)
146+
- `src/TurboHttp.IntegrationTests/H10/FeatureInteractionH10IntegrationTests.cs` (NEW)
147+
- `src/TurboHttp.IntegrationTests/H2/FeatureInteractionH2IntegrationTests.cs` (NEW)
148+
- `src/TurboHttp.IntegrationTests/TLS/FeatureInteractionTlsIntegrationTests.cs` (NEW)
149149

150150
---
151151

@@ -180,7 +180,7 @@ public static ITurboHttpClientBuilder WithExpectContinue(
180180
- [ ] Build passes with zero warnings
181181

182182
**Files:**
183-
- `src/TurboHttp.IntegrationTests/ResilienceIntegrationTests.cs` (NEW)
183+
- `src/TurboHttp.IntegrationTests/H11/ResilienceIntegrationTests.cs` (NEW)
184184

185185
---
186186

@@ -198,18 +198,18 @@ public static ITurboHttpClientBuilder WithExpectContinue(
198198
- TLS: All scenarios over HTTPS – identical behavior expected
199199

200200
**Acceptance Criteria:**
201-
- [ ] `ResilienceH10IntegrationTests.cs` → 8 tests adapted for HTTP/1.0
202-
- [ ] `ResilienceH2IntegrationTests.cs` → 8 tests adapted for HTTP/2 (H2-specific error modes)
203-
- [ ] `ResilienceTlsIntegrationTests.cs` → 8 tests over HTTPS
201+
- [ ] `/H10/ResilienceIntegrationTests.cs` → 8 tests adapted for HTTP/1.0
202+
- [ ] `/H2/ResilienceIntegrationTests.cs` → 8 tests adapted for HTTP/2 (H2-specific error modes)
203+
- [ ] `/TLS/ResilienceIntegrationTests.cs` → 8 tests over HTTPS
204204
- [ ] DisplayNames: `Resilience-H10-001`, `Resilience-H2-001`, `Resilience-TLS-001`
205205
- [ ] HTTP/2 tests may expect different exception types (e.g., `HttpRequestException` instead of `OperationCanceledException` for RST_STREAM)
206206
- [ ] All 24 tests pass
207207
- [ ] Build passes with zero warnings
208208

209209
**Files:**
210-
- `src/TurboHttp.IntegrationTests/ResilienceH10IntegrationTests.cs` (NEW)
211-
- `src/TurboHttp.IntegrationTests/ResilienceH2IntegrationTests.cs` (NEW)
212-
- `src/TurboHttp.IntegrationTests/ResilienceTlsIntegrationTests.cs` (NEW)
210+
- `src/TurboHttp.IntegrationTests/H10/ResilienceIntegrationTests.cs` (NEW)
211+
- `src/TurboHttp.IntegrationTests/H2/ResilienceIntegrationTests.cs` (NEW)
212+
- `src/TurboHttp.IntegrationTests/TLS/ResilienceIntegrationTests.cs` (NEW)
213213

214214
---
215215

@@ -244,7 +244,7 @@ public static ITurboHttpClientBuilder WithExpectContinue(
244244
- [ ] Build passes with zero warnings
245245

246246
**Files:**
247-
- `src/TurboHttp.IntegrationTests/RequestCompressionIntegrationTests.cs` (NEW)
247+
- `src/TurboHttp.IntegrationTests/H11/RequestCompressionIntegrationTests.cs` (NEW)
248248

249249
---
250250

@@ -257,17 +257,17 @@ public static ITurboHttpClientBuilder WithExpectContinue(
257257
**Parallel:** no – needs reference from TASK-023-006
258258

259259
**Acceptance Criteria:**
260-
- [ ] `RequestCompressionH10IntegrationTests.cs` → 6 tests, `new Version(1, 0)`
261-
- [ ] `RequestCompressionH2IntegrationTests.cs` → 6 tests, `new Version(2, 0)`
262-
- [ ] `RequestCompressionTlsIntegrationTests.cs` → 6 tests, `scheme: "https"`
260+
- [ ] `/H10/RequestCompressionIntegrationTests.cs` → 6 tests, `new Version(1, 0)`
261+
- [ ] `/H2/RequestCompressionIntegrationTests.cs` → 6 tests, `new Version(2, 0)`
262+
- [ ] `/TLS/RequestCompressionIntegrationTests.cs` → 6 tests, `scheme: "https"`
263263
- [ ] DisplayNames: `ReqCompress-H10-001`, `ReqCompress-H2-001`, `ReqCompress-TLS-001`
264264
- [ ] All 18 tests pass
265265
- [ ] Build passes with zero warnings
266266

267267
**Files:**
268-
- `src/TurboHttp.IntegrationTests/RequestCompressionH10IntegrationTests.cs` (NEW)
269-
- `src/TurboHttp.IntegrationTests/RequestCompressionH2IntegrationTests.cs` (NEW)
270-
- `src/TurboHttp.IntegrationTests/RequestCompressionTlsIntegrationTests.cs` (NEW)
268+
- `src/TurboHttp.IntegrationTests/H10/RequestCompressionIntegrationTests.cs` (NEW)
269+
- `src/TurboHttp.IntegrationTests/H2/RequestCompressionIntegrationTests.cs` (NEW)
270+
- `src/TurboHttp.IntegrationTests/TLS/RequestCompressionIntegrationTests.cs` (NEW)
271271

272272
---
273273

@@ -295,17 +295,17 @@ public static ITurboHttpClientBuilder WithExpectContinue(
295295
**HTTP/2 Variant (4 Tests):** Tests 1, 3, 4, 6 over HTTP/2 to verify that handlers are protocol-agnostic.
296296

297297
**Acceptance Criteria:**
298-
- [ ] `HandlerPipelineIntegrationTests.cs` created (HTTP/1.1, 8 tests)
299-
- [ ] `HandlerPipelineH2IntegrationTests.cs` created (HTTP/2, 4 selected tests)
298+
- [ ] `/H11/HandlerPipelineIntegrationTests.cs` created (HTTP/1.1, 8 tests)
299+
- [ ] `/H2/HandlerPipelineIntegrationTests.cs` created (HTTP/2, 4 selected tests)
300300
- [ ] Custom `TestHeaderHandler : TurboHandler` class defined in test file
301301
- [ ] Tests use `configure: b => b.UseRequest(...)`, `b.UseResponse(...)`, `b.AddHandler<T>()`
302302
- [ ] DisplayNames follow `Handler-001` / `Handler-H2-001`
303303
- [ ] All 12 tests pass
304304
- [ ] Build passes with zero warnings
305305

306306
**Files:**
307-
- `src/TurboHttp.IntegrationTests/HandlerPipelineIntegrationTests.cs` (NEW)
308-
- `src/TurboHttp.IntegrationTests/HandlerPipelineH2IntegrationTests.cs` (NEW)
307+
- `src/TurboHttp.IntegrationTests/H11/HandlerPipelineIntegrationTests.cs` (NEW)
308+
- `src/TurboHttp.IntegrationTests/H2/HandlerPipelineIntegrationTests.cs` (NEW)
309309

310310
---
311311

0 commit comments

Comments
 (0)