mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-01-22 18:32:16 +03:00
Monkey driver: Initial loader for monkey test plans.
This commit is contained in:
parent
6fcb0d498f
commit
90e4976800
119
test/monkey-driver.py
Executable file
119
test/monkey-driver.py
Executable file
@ -0,0 +1,119 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import sys, getopt, yaml
|
||||
|
||||
def print_usage():
|
||||
print('Usage:')
|
||||
print(' ' + sys.argv[0] + ' -m <path to monkey> -t <path to test>')
|
||||
|
||||
def parse_argv(argv):
|
||||
path_monkey = ''
|
||||
path_test = ''
|
||||
try:
|
||||
opts, args = getopt.getopt(argv,"hm:t:",["monkey=","test="])
|
||||
except getopt.GetoptError:
|
||||
print_usage()
|
||||
sys.exit(2)
|
||||
for opt, arg in opts:
|
||||
if opt == '-h':
|
||||
print_usage()
|
||||
sys.exit()
|
||||
elif opt in ("-m", "--monkey"):
|
||||
path_monkey = arg
|
||||
elif opt in ("-t", "--test"):
|
||||
path_test = arg
|
||||
|
||||
if path_monkey == '':
|
||||
print_usage()
|
||||
sys.exit()
|
||||
if path_test == '':
|
||||
print_usage()
|
||||
sys.exit()
|
||||
|
||||
return path_monkey, path_test
|
||||
|
||||
def load_test_plan(path):
|
||||
plan = []
|
||||
with open(path, 'r') as stream:
|
||||
try:
|
||||
plan = (yaml.load(stream))
|
||||
except:
|
||||
print (exc)
|
||||
return plan
|
||||
|
||||
def get_indent(ctx):
|
||||
return ' ' * ctx["depth"];
|
||||
|
||||
def print_test_plan_info(ctx, plan):
|
||||
print('Running test: [' + plan["group"] + '] ' + plan["title"])
|
||||
|
||||
def run_test_step_action_launch(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_window_new(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_window_close(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_navigate(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_sleep_ms(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_block(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_repeat(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
ctx["depth"] += 1
|
||||
for step in step["steps"]:
|
||||
run_test_step(ctx, step)
|
||||
ctx["depth"] -= 1
|
||||
|
||||
def run_test_step_action_timer_start(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_timer_stop(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_timer_check(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
def run_test_step_action_quit(ctx, step):
|
||||
print(get_indent(ctx) + "Action: " + step["action"])
|
||||
|
||||
step_handlers = {
|
||||
"launch": run_test_step_action_launch,
|
||||
"window-new": run_test_step_action_window_new,
|
||||
"window-close": run_test_step_action_window_close,
|
||||
"navigate": run_test_step_action_navigate,
|
||||
"sleep-ms": run_test_step_action_sleep_ms,
|
||||
"block": run_test_step_action_block,
|
||||
"repeat": run_test_step_action_repeat,
|
||||
"timer-start": run_test_step_action_timer_start,
|
||||
"timer-stop": run_test_step_action_timer_stop,
|
||||
"timer-check": run_test_step_action_timer_check,
|
||||
"quit": run_test_step_action_quit,
|
||||
}
|
||||
|
||||
def run_test_step(ctx, step):
|
||||
step_handlers[step["action"]](ctx, step)
|
||||
|
||||
def walk_test_plan(ctx, plan):
|
||||
ctx["depth"] = 0
|
||||
for step in plan["steps"]:
|
||||
run_test_step(ctx, step)
|
||||
|
||||
|
||||
def main(argv):
|
||||
ctx = {}
|
||||
path_monkey, path_test = parse_argv(argv)
|
||||
plan = load_test_plan(path_test)
|
||||
print_test_plan_info(ctx, plan)
|
||||
walk_test_plan(ctx, plan)
|
||||
|
||||
# Some python weirdness to get to main().
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv[1:])
|
35
test/monkey-tests/cache-test.yaml
Normal file
35
test/monkey-tests/cache-test.yaml
Normal file
@ -0,0 +1,35 @@
|
||||
title: cache test
|
||||
group: performance
|
||||
steps:
|
||||
- action: launch
|
||||
language: en
|
||||
- action: timer-start
|
||||
tag: timer1
|
||||
- action: window-new
|
||||
tag: win1
|
||||
- action: navigate
|
||||
window: win1
|
||||
url: http://www.bbc.co.uk/news
|
||||
- action: block
|
||||
conditions:
|
||||
- window: win1
|
||||
status: complete
|
||||
- action: timer-stop
|
||||
timer: timer1
|
||||
- action: timer-start
|
||||
tag: timer2
|
||||
- action: window-new
|
||||
tag: win2
|
||||
- action: navigate
|
||||
window: win2
|
||||
url: http://www.bbc.co.uk/news
|
||||
- action: block
|
||||
conditions:
|
||||
- window: win2
|
||||
status: complete
|
||||
- action: timer-stop
|
||||
timer: timer2
|
||||
- action: timer-check
|
||||
condition: timer2 < timer1
|
||||
- action: quit
|
||||
|
22
test/monkey-tests/quit-mid-fetch.yaml
Normal file
22
test/monkey-tests/quit-mid-fetch.yaml
Normal file
@ -0,0 +1,22 @@
|
||||
title: quitting mid-fetch
|
||||
group: cleanup
|
||||
steps:
|
||||
- action: repeat
|
||||
min: 0
|
||||
step: 50
|
||||
name: sleepytimer
|
||||
steps:
|
||||
- action: launch
|
||||
- action: window-new
|
||||
tag: win1
|
||||
- action: navigate
|
||||
window: win1
|
||||
url: http://www.bbc.co.uk/news
|
||||
- action: sleep-ms
|
||||
time: sleepytimer
|
||||
conditions:
|
||||
- window: win1
|
||||
status: complete
|
||||
breaks: sleepytimer
|
||||
- action: quit
|
||||
|
Loading…
Reference in New Issue
Block a user