def format_flow(f, focus, extended=False, hostheader=False): d = dict( intercepted = f.intercepted, acked = f.reply.state == "committed", req_timestamp = f.request.timestamp_start, req_is_replay = f.request.is_replay, req_method = f.request.method, req_url = f.request.pretty_url if hostheader else f.request.url, req_http_version = f.request.http_version, err_msg = f.error.msg if f.error else None, marked = f.marked, authorization = f.authorization, authentication = f.authentication, payu_salt_leak = f.payu_salt_leak, otp_leak = f.otp_leak, ) if f.response: if f.response.raw_content: contentdesc = human.pretty_size(len(f.response.raw_content)) elif f.response.raw_content is None: contentdesc = "[content missing]" else: contentdesc = "[no content]" duration = 0 if f.response.timestamp_end and f.request.timestamp_start: duration = f.response.timestamp_end - f.request.timestamp_start roundtrip = human.pretty_duration(duration) d.update(dict( resp_code = f.response.status_code, resp_reason = f.response.reason, resp_is_replay = f.response.is_replay, resp_clen = contentdesc, roundtrip = roundtrip, )) t = f.response.headers.get("content-type") if t: d["resp_ctype"] = t.split(";")[0] else: d["resp_ctype"] = "" return flowcache.get( raw_format_flow, tuple(sorted(d.items())), focus, extended )
def format_flow(f, focus, extended=False, hostheader=False): d = dict( intercepted = f.intercepted, acked = f.reply.state == "committed", req_timestamp = f.request.timestamp_start, req_is_replay = f.request.is_replay, req_method = f.request.method, req_url = f.request.pretty_url if hostheader else f.request.url, req_http_version = f.request.http_version, err_msg = f.error.msg if f.error else None, marked = f.marked, ) if f.response: if f.response.raw_content: contentdesc = human.pretty_size(len(f.response.raw_content)) elif f.response.raw_content is None: contentdesc = "[content missing]" else: contentdesc = "[no content]" duration = 0 if f.response.timestamp_end and f.request.timestamp_start: duration = f.response.timestamp_end - f.request.timestamp_start roundtrip = human.pretty_duration(duration) d.update(dict( resp_code = f.response.status_code, resp_reason = f.response.reason, resp_is_replay = f.response.is_replay, resp_clen = contentdesc, roundtrip = roundtrip, )) t = f.response.headers.get("content-type") if t: d["resp_ctype"] = t.split(";")[0] else: d["resp_ctype"] = "" return flowcache.get( raw_format_flow, tuple(sorted(d.items())), focus, extended )
def test_pretty_duration(): assert human.pretty_duration(0.00001) == "0ms" assert human.pretty_duration(0.0001) == "0ms" assert human.pretty_duration(0.001) == "1ms" assert human.pretty_duration(0.01) == "10ms" assert human.pretty_duration(0.1) == "100ms" assert human.pretty_duration(1) == "1.00s" assert human.pretty_duration(10) == "10.0s" assert human.pretty_duration(100) == "100s" assert human.pretty_duration(1000) == "1000s" assert human.pretty_duration(10000) == "10000s" assert human.pretty_duration(1.123) == "1.12s" assert human.pretty_duration(0.123) == "123ms"