contrib: Add a mitmproxy script which can be used to test out request retrying
parent
a551ae2bee
commit
2e2d9b33a4
|
@ -0,0 +1,47 @@
|
||||||
|
"""
|
||||||
|
A mitmproxy script that introduces certain request failures in a deterministic
|
||||||
|
way.
|
||||||
|
|
||||||
|
Used mainly for Matrix style requests.
|
||||||
|
|
||||||
|
To run execute it with mitmproxy:
|
||||||
|
|
||||||
|
>>> mitmproxy -s failures.py`
|
||||||
|
|
||||||
|
"""
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
|
||||||
|
from mitmproxy import http
|
||||||
|
from mitmproxy.script import concurrent
|
||||||
|
|
||||||
|
REQUEST_COUNT = 0
|
||||||
|
|
||||||
|
|
||||||
|
@concurrent
|
||||||
|
def request(flow):
|
||||||
|
global REQUEST_COUNT
|
||||||
|
|
||||||
|
REQUEST_COUNT += 1
|
||||||
|
|
||||||
|
if REQUEST_COUNT % 2 == 0:
|
||||||
|
return
|
||||||
|
elif REQUEST_COUNT % 3 == 0:
|
||||||
|
flow.response = http.HTTPResponse.make(
|
||||||
|
500,
|
||||||
|
b"Gateway error",
|
||||||
|
)
|
||||||
|
elif REQUEST_COUNT % 7 == 0:
|
||||||
|
if "sync" in flow.request.pretty_url:
|
||||||
|
time.sleep(60)
|
||||||
|
else:
|
||||||
|
time.sleep(30)
|
||||||
|
else:
|
||||||
|
flow.response = http.HTTPResponse.make(
|
||||||
|
429,
|
||||||
|
json.dumps({
|
||||||
|
"errcode": "M_LIMIT_EXCEEDED",
|
||||||
|
"error": "Too many requests",
|
||||||
|
"retry_after_ms": 2000
|
||||||
|
})
|
||||||
|
)
|
Loading…
Reference in New Issue