From d676c7e5b6166d49497aae851eea84037f94b412 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sun, 4 Nov 2018 14:34:31 +0000 Subject: Test: Monkey driver: Implement sleep-ms and repeat actions. --- test/monkey-driver.py | 45 +++++++++++++++++++++++++++++++---- test/monkey-tests/quit-mid-fetch.yaml | 2 +- 2 files changed, 42 insertions(+), 5 deletions(-) (limited to 'test') 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 -- cgit v1.2.3