diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2018-11-04 14:34:31 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2018-11-04 14:34:31 +0000 |
commit | d676c7e5b6166d49497aae851eea84037f94b412 (patch) | |
tree | 626eb75e0216260fd5ce496474b164675d8c9136 | |
parent | eb87192ddcaaed47dd54f95716674502862b3a1d (diff) | |
download | netsurf-d676c7e5b6166d49497aae851eea84037f94b412.tar.gz netsurf-d676c7e5b6166d49497aae851eea84037f94b412.tar.bz2 |
Test: Monkey driver: Implement sleep-ms and repeat actions.
-rwxr-xr-x | test/monkey-driver.py | 45 | ||||
-rw-r--r-- | test/monkey-tests/quit-mid-fetch.yaml | 2 |
2 files changed, 42 insertions, 5 deletions
diff --git a/test/monkey-driver.py b/test/monkey-driver.py index 4b8da8254..226c028e7 100755 --- a/test/monkey-driver.py +++ b/test/monkey-driver.py @@ -105,6 +105,32 @@ def run_test_step_action_navigate(ctx, step): def run_test_step_action_sleep_ms(ctx, step): print(get_indent(ctx) + "Action: " + step["action"]) + conds = step['conditions'] + sleep_time = step['time'] + sleep = 0 + have_repeat = False + if isinstance(sleep_time, str): + assert(ctx['repeats'].get(sleep_time) is not None) + repeat = ctx['repeats'].get(sleep_time) + sleep = repeat["i"] / 1000 + start = repeat["start"] + have_repeat = True + else: + sleep = time / 1000 + start = time.time() + + while True: + slept = time.time() - start + if conds_met(ctx, conds): + if have_repeat: + ctx['repeats'][sleep_time]["loop"] = False + print(get_indent(ctx) + " Condition met after {}s".format(slept)) + break + elif slept > sleep: + print(get_indent(ctx) + " Condition not met after {}s".format(sleep)) + break + else: + ctx['browser'].farmer.loop(once=True) def run_test_step_action_block(ctx, step): print(get_indent(ctx) + "Action: " + step["action"]) @@ -116,10 +142,20 @@ def run_test_step_action_block(ctx, step): 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 + tag = step['tag'] + assert(ctx['repeats'].get(tag) is None) + ctx['repeats'][tag] = { + "i": step["min"], + "step": step["step"], + "loop": True, + } + while ctx['repeats'][tag]["loop"]: + ctx['repeats'][tag]["start"] = time.time() + ctx["depth"] += 1 + for s in step["steps"]: + run_test_step(ctx, s) + ctx['repeats'][tag]["i"] += ctx['repeats'][tag]["step"] + ctx["depth"] -= 1 def run_test_step_action_plot_check(ctx, step): print(get_indent(ctx) + "Action: " + step["action"]) @@ -204,6 +240,7 @@ def run_test_step(ctx, step): def walk_test_plan(ctx, plan): ctx["depth"] = 0 ctx["timers"] = dict() + ctx['repeats'] = dict() for step in plan["steps"]: run_test_step(ctx, step) diff --git a/test/monkey-tests/quit-mid-fetch.yaml b/test/monkey-tests/quit-mid-fetch.yaml index b033f67b6..cffdae3f2 100644 --- a/test/monkey-tests/quit-mid-fetch.yaml +++ b/test/monkey-tests/quit-mid-fetch.yaml @@ -4,7 +4,7 @@ steps: - action: repeat min: 0 step: 50 - name: sleepytimer + tag: sleepytimer steps: - action: launch - action: window-new |