(tctx: Context, trailers)
| 302 | |
| 303 | @pytest.mark.parametrize("trailers", ["trailers", ""]) |
| 304 | def test_long_response(tctx: Context, trailers): |
| 305 | playbook, cff = start_h2_client(tctx) |
| 306 | flow = Placeholder(HTTPFlow) |
| 307 | server = Placeholder(Server) |
| 308 | initial = Placeholder(bytes) |
| 309 | assert ( |
| 310 | playbook |
| 311 | >> DataReceived( |
| 312 | tctx.client, |
| 313 | cff.build_headers_frame( |
| 314 | example_request_headers, flags=["END_STREAM"] |
| 315 | ).serialize(), |
| 316 | ) |
| 317 | << http.HttpRequestHeadersHook(flow) |
| 318 | >> reply() |
| 319 | << http.HttpRequestHook(flow) |
| 320 | >> reply() |
| 321 | << OpenConnection(server) |
| 322 | >> reply(None, side_effect=make_h2) |
| 323 | << SendData(server, initial) |
| 324 | ) |
| 325 | frames = decode_frames(initial()) |
| 326 | assert [type(x) for x in frames] == [ |
| 327 | hyperframe.frame.SettingsFrame, |
| 328 | hyperframe.frame.WindowUpdateFrame, |
| 329 | hyperframe.frame.HeadersFrame, |
| 330 | ] |
| 331 | sff = FrameFactory() |
| 332 | assert ( |
| 333 | playbook |
| 334 | # a conforming h2 server would send settings first, we disregard this for now. |
| 335 | >> DataReceived( |
| 336 | server, sff.build_headers_frame(example_response_headers).serialize() |
| 337 | ) |
| 338 | << http.HttpResponseHeadersHook(flow) |
| 339 | >> reply() |
| 340 | >> DataReceived( |
| 341 | server, sff.build_data_frame(b"a" * 10000, flags=[]).serialize() |
| 342 | ) |
| 343 | >> DataReceived( |
| 344 | server, |
| 345 | sff.build_data_frame(b"a" * 10000, flags=[]).serialize(), |
| 346 | ) |
| 347 | >> DataReceived( |
| 348 | server, |
| 349 | sff.build_data_frame(b"a" * 10000, flags=[]).serialize(), |
| 350 | ) |
| 351 | >> DataReceived( |
| 352 | server, |
| 353 | sff.build_data_frame(b"a" * 10000, flags=[]).serialize(), |
| 354 | ) |
| 355 | >> DataReceived( |
| 356 | server, |
| 357 | sff.build_data_frame(b"a" * 10000, flags=[]).serialize(), |
| 358 | ) |
| 359 | >> DataReceived( |
| 360 | server, |
| 361 | sff.build_data_frame(b"a" * 10000, flags=[]).serialize(), |
nothing calls this directly
no test coverage detected
searching dependent graphs…