Skip to content

New --debug CLI option to debug HTTP traffic (Closes: #204)

Sylvain Beucler requested to merge beuc/debusine:issue204-http-debugging into devel

Sample output with a binary random test file:

$ PYTHONPATH=~/debusine-git python3 -m debusine.client.__main__ --debug create-artifact Test --workspace System --upload test 
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:8000
DEBUG:requests:send: b'POST /api/1.0/artifact/ HTTP/1.1\r\nHost: localhost:8000\r\nUser-Agent: python-requests/2.28.1\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nToken: a3282d80fd904e235c85b8b5d02f5e6a23993acbe2df7feea06743e39040a84a\r\nContent-Length: 240\r\nContent-Type: application/json\r\n\r\n'
DEBUG:requests:send: b'{"category": "Test", "workspace": "System", "files": {"test": {"size": 1024, "checksums": {"sha256": "2a96ceb4fe2b43582d35a926781f89a907411d630c267ebbdb32eeaab75c9ed9"}, "type": "file"}}, "data": {}, "work_request": null, "expire_at": null}'
DEBUG:requests:reply: 'HTTP/1.1 201 Created\r\n'
DEBUG:requests:header: Content-Type: application/json
DEBUG:requests:header: Vary: Accept, Cookie
DEBUG:requests:header: Allow: GET, POST, HEAD, OPTIONS
DEBUG:requests:header: Content-Length: 401
DEBUG:requests:header: X-Content-Type-Options: nosniff
DEBUG:requests:header: Referrer-Policy: same-origin
DEBUG:requests:header: Server: daphne
DEBUG:urllib3.connectionpool:http://localhost:8000 "POST /api/1.0/artifact/ HTTP/1.1" 201 401
result: success
message: New artifact created in http://localhost:8000/api in workspace System with id 79.
artifact_id: 79
files_to_upload: 1
expire_at: null
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:8000
DEBUG:requests:send: b'PUT /api/1.0/artifact/79/files/test/ HTTP/1.1\r\nHost: localhost:8000\r\nUser-Agent: python-requests/2.28.1\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nToken: a3282d80fd904e235c85b8b5d02f5e6a23993acbe2df7feea06743e39040a84a\r\nContent-Range: bytes */1024\r\nContent-Length: 0\r\n\r\n'
DEBUG:requests:reply: 'HTTP/1.1 206 Partial Content\r\n'
DEBUG:requests:header: Range: bytes=0-0
DEBUG:requests:header: Vary: Accept, Cookie
DEBUG:requests:header: Allow: PUT, OPTIONS
DEBUG:requests:header: Content-Length: 0
DEBUG:requests:header: X-Content-Type-Options: nosniff
DEBUG:requests:header: Referrer-Policy: same-origin
DEBUG:requests:header: Server: daphne
DEBUG:urllib3.connectionpool:http://localhost:8000 "PUT /api/1.0/artifact/79/files/test/ HTTP/1.1" 206 0
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:8000
DEBUG:requests:send: b'PUT /api/1.0/artifact/79/files/test/ HTTP/1.1\r\nHost: localhost:8000\r\nUser-Agent: python-requests/2.28.1\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nToken: a3282d80fd904e235c85b8b5d02f5e6a23993acbe2df7feea06743e39040a84a\r\nContent-Range: bytes 0-1023/1024\r\nContent-Length: 1024\r\n\r\n'
DEBUG:requests:sendIng a read()able
DEBUG:requests:send: b'w\t\x8eO\xdb\xb0\xff\xda\x80VD\x83=\x02\x11c\xaeO\xba\xa3\x19\xc7\xb4\xb9k\xbc \xa8\xaa]\x9da\x11d\xdd%\x9d"\xb4\x1b\x8aaM/\x05\x94\xa6\'\xde\xa50(m7K@?\x08x\x06\x89o\xd4\x91h\x04\r\x13\x7f\xbae\x18\xcf]\x07\xc2\xafA\xe0\xd0\xe5\xdc\xe2h\xd3Q\xcc\xdc\xac\x1e\xfe\xa6\xf4^bU9\xb2\x9f>\xe7\xd9\x8a\xcd\xafs\xba\xc3\xf2\xc0UV!\xa2\xe4\x13g\xadB\xf9\x97\x0b\x86D%,\xdd!\xc2TvM\xf1X\x9bp\xa3\x03NMFi!\xf2I2\x8c\xdae\x10J1\x82\xd7H\xcc|E\xbdf\x0f`xR\xd9mO\x13)Q\xcf\x0e\xf2\x8b!\xdc\xfd\xce\x16,\x9e\xa0\x18W|A\x9d\xbfz>\x7f\xda\xc9\xb5\xa7\x86\xef\x08\xc0\xfe\x91\x86\xe9\xca>\x1f^\x1e\xa8l\xb1\x89\x03B\xaa\xc0Z\xa4\\\x04\x90\x0b\r\xc2\x7fR\x7fHiT\xc5\x92\xf8\x1e\x83w\xeaT\xc4I\x9b\xbe\xa91\xb9!#\xc1\xb5\xd9\xfbo[N\xc6\xaa?\xee\xb3\xe7\xea\xcb\xd2G\xaf%\x01\x16\'\xf5\xb8\n\x93\x1fc~\x16\xbc\x1a\xdb\xfe\xde\x18\nZ\xb4\xad\xcbU\xcb\x11\xab\x03\xb6\x9f8\x11nv\xc5n\x13\tB\r\rI@<[\xcb\xd9\x8b\x92\\\xc1T\x14\x8bL]\xe8\xc0\x04\x90C\x8e\xe4\x80\n\xbda\xf2\x871U\xcb\xdd\x13\xa4v\xa4\xe1h\x8b\xde\xfe.\x9bi\xba\xd3\xb67\xd1\xad\xa4\x9d<\xf8\xce\x17\xb0\x8d7`s\xc1\xb9\x01\x1a\xeb\xa4\x9e\x9d\xaa\x86\x14\xfa\xd7>\x02o\xc6\xb0e\x02\xf7v\x81Y\xe1\x04\xeaB\x8a\x0eL\x84\x9b:\x17\xea\xf9\x7f\xd0\x07\x81)\xda\xdc\xf7\x08\xc5\xe1\xa1\x12\xd8\xf3\x85\xe5\x0eb\xaa\xd3"\x17n\xe5\xa1T\x93\xa7\x92_b\x90\xa2\xf65O?\x99\xc4B\xfc\xd7\xc7\x1d\xaf\x17r\xea\x1f\xe8\xe2\xd6l\xe3\xe3\xc25<\x8e\xd1\x08\x1e\xcePJ\xfb0y\xd1\x07\xa7\xf6r\xfe,\x98\r\xe3]^\x0c\xe5\xe7YT?\x96\xf09\xe57C\x94\x0e\x1f\\\x1f\x9b\xa8,\xffT\xa7BpI\x99\xab\xe9\n\xb1\xda\xef\xad\xfb,\x17\x8c\xe1\xc8p\x84Bc\xd6U\x95\xee\x1d4\x8e\x7f\xe7[\xcc\x9b:\x8e\x1b\x01\xdd\xc5\x8e\xca0\x1c\xcf\xf8\xb9+mn\x11\xa4#\x16$\x89>\xe6\xa7\x19\x90@\x91u\xed[\xc3\x976Ve\x01)\x0e\xe1\x9e\xed.\xe7\x0c\xc2\xbbg\xfa\xe9\xc1\xdcjy\xc6\xf3\x92\xa4L\x14Gt\xce\x03\xe2\xf8\xad\x9et"i\xb7\xeao\x04\x84|\xb8\x89\xdd\xa5pL\xaefK\xec\xdf\xd4@\x8b\xa7G\xd3\xab_~\xe6F\xdb \x00\xba\xf4\x9b\x1cT\xf6.\xdeh\xfe\x17MO\xf33*W\x0e\xe2\xd6\x10d\x13n\xbc\x94}\x88@\x05\xa9\x19\xcc\xcb\xc6\xf3\xba\xd2\x88\xc3\xd3\x826\'\xe6W\x9c\xdf\x06\x9d#S\x7f\x88\x0e\x9aj\x91\\\x0b\x11\xad3*\x1c\xd2|:]5\xa3\xed\xb6\x93\x04\xe7_m\xfc\xda\x11\x1f\xeb\xbd\xba\x81\x0c\xf8\xcb\x13\xae\x16\x1d\xac(l\xdb}\x15B\x1b\r\xbb\xcb\x83\x9a\x1fd\xb0\x95\xcf\x80\xe1\x0b\xc7\x10\xb3\xba\xd0p\xbd\xdb\xef\xca\xea7:!\x00~\x12i4\xbe\xe0\x8d\xc90j\x8e\xfef\xd6\xc6#P\x08\x8e\x01YV\xc66\xb1n\xd1\xaf\x95\x07O\x96\x8ba\xea\xe7\xbc\xd6\x07\xb6[\xea.g\xe0\xf1Xw\xb9\xfcr\xb7\x8c\xb9\xc0D\xd7\xc6\xd4x\x03\xfa\x04\x80O\x15\xc5\x818\x19\x06.\x82\x074v\x94[S\xa4j\xbboc\x17\x1bd\x08\xc0oA\x98\xdf\x0c1|\xbb\r\xa5?4\xab\xb1.-"\x98\xfb\xb2\xe5` \xf0^\xc9k\xf4\x96\xc0\xacy\xed\x06\xb8R\x11\x10\xc3\xcb\xf8V\t\xe0\x83\x12D\xfc\xe5&\x04\x14H\xa5\xb5\xcb\xba\xad\x80\xf3\xd7sj\x9a\x89\x06\x00\xeb\x0bH~\xef\x80g\xae\xdbn\x87\xf8h\xac\x8a\xd3\xb9N\x11XP\xe9f\rUvF\xd1\x8c\\m5$\xaa\x13\xc1\xef\r\xb5[\x19Y\x1a\xdb=u\x87:\x96 \x03U\xbbb\xe9\xcb$%\xcdo\x93\xab5\xb4\x18H\x06\xc4&Tr\xffd\xe7#\xe2@h<7\xf2]\xfef\xa5\xda\xa9\xa3=\x823\x7f\x8c\x05\x10'
DEBUG:requests:reply: 'HTTP/1.1 201 Created\r\n'
DEBUG:requests:header: Vary: Accept, Cookie
DEBUG:requests:header: Allow: PUT, OPTIONS
DEBUG:requests:header: Content-Length: 0
DEBUG:requests:header: X-Content-Type-Options: nosniff
DEBUG:requests:header: Referrer-Policy: same-origin
DEBUG:requests:header: Server: daphne
DEBUG:urllib3.connectionpool:http://localhost:8000 "PUT /api/1.0/artifact/79/files/test/ HTTP/1.1" 201 0

Merge request reports

Loading