summaryrefslogtreecommitdiffstats
path: root/tests/omhttp_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/omhttp_server.py')
-rw-r--r--tests/omhttp_server.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/tests/omhttp_server.py b/tests/omhttp_server.py
index 61e0e63..22c7184 100644
--- a/tests/omhttp_server.py
+++ b/tests/omhttp_server.py
@@ -4,6 +4,8 @@ import json
import os
import zlib
import base64
+import random
+import time
try:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer # Python 2
@@ -57,13 +59,27 @@ class MyHandler(BaseHTTPRequestHandler):
return
if metadata['fail_with_400_after'] != -1 and metadata['posts'] > metadata['fail_with_400_after']:
+ if metadata['fail_with_delay_secs']:
+ print("sleeping for: {0}".format(metadata['fail_with_delay_secs']))
+ time.sleep(metadata['fail_with_delay_secs'])
self.send_response(400)
self.end_headers()
self.wfile.write(b'BAD REQUEST')
return
+ if metadata['fail_with_401_or_403_after'] != -1 and metadata['posts'] > metadata['fail_with_401_or_403_after']:
+ status = random.choice([401, 403])
+ self.send_response(status)
+ self.end_headers()
+ self.wfile.write(b'BAD REQUEST')
+ return
+
if metadata['posts'] > 1 and metadata['fail_every'] != -1 and metadata['posts'] % metadata['fail_every'] == 0:
- self.send_response(500)
+ if metadata['fail_with_delay_secs']:
+ print("sleeping for: {0}".format(metadata['fail_with_delay_secs']))
+ time.sleep(metadata['fail_with_delay_secs'])
+ code = metadata['fail_with'] if metadata['fail_with'] else 500
+ self.send_response(code)
self.end_headers()
self.wfile.write(b'INTERNAL ERROR')
return
@@ -114,13 +130,19 @@ if __name__ == '__main__':
parser.add_argument('-i', '--interface', action='store', type=str, default='localhost', help='port')
parser.add_argument('--fail-after', action='store', type=int, default=0, help='start failing after n posts')
parser.add_argument('--fail-every', action='store', type=int, default=-1, help='fail every n posts')
+ parser.add_argument('--fail-with', action='store', type=int, default=500, help='on failure, fail with this code')
parser.add_argument('--fail-with-400-after', action='store', type=int, default=-1, help='fail with 400 after n posts')
+ parser.add_argument('--fail-with-401-or-403-after', action='store', type=int, default=-1, help='fail with 401 or 403 after n posts')
+ parser.add_argument('--fail-with-delay-secs', action='store', type=int, default=0, help='fail with n secs of delay')
parser.add_argument('--decompress', action='store_true', default=False, help='decompress posted data')
parser.add_argument('--userpwd', action='store', default='', help='only accept this user:password combination')
args = parser.parse_args()
metadata['fail_after'] = args.fail_after
metadata['fail_every'] = args.fail_every
+ metadata['fail_with'] = args.fail_with
metadata['fail_with_400_after'] = args.fail_with_400_after
+ metadata['fail_with_401_or_403_after'] = args.fail_with_401_or_403_after
+ metadata['fail_with_delay_secs'] = args.fail_with_delay_secs
metadata['decompress'] = args.decompress
metadata['userpwd'] = args.userpwd
server = HTTPServer((args.interface, args.port), MyHandler)