MCPcopy
hub / github.com/mitmproxy/mitmproxy / test_long_response

Function test_long_response

test/mitmproxy/proxy/layers/http/test_http2.py:304–442  ·  view source on GitHub ↗
(tctx: Context, trailers)

Source from the content-addressed store, hash-verified

302
303@pytest.mark.parametrize("trailers", ["trailers", ""])
304def 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(),

Callers

nothing calls this directly

Calls 11

build_headers_frameMethod · 0.95
build_data_frameMethod · 0.95
PlaceholderFunction · 0.90
DataReceivedClass · 0.90
replyClass · 0.90
OpenConnectionClass · 0.90
SendDataClass · 0.90
FrameFactoryClass · 0.90
start_h2_clientFunction · 0.85
decode_framesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…