diff options
author | yanxk <yanxk.fnst@fujitsu.com> | 2022-10-14 08:11:47 +0800 |
---|---|---|
committer | Qiu Tingting <qiutt@fujitsu.com> | 2023-01-13 02:27:12 +0000 |
commit | 6e6d8819c5bfdaee9ea62a3b961efe6090911633 (patch) | |
tree | 7863e21a27dd2b4d6300b6dd1027fe15c0a06c79 | |
parent | 2b0b2c37da795ae77d006308c96a054734ab6d24 (diff) |
agl-test-framework: make sure "crashme" would have return value
a fact is "crashme" would crash qemux86 under mid or high level,
but low level looks fine, we provide kill -15 solution to solve
"no return" hang up. so there will always be a return value.
Bug-AGL: SPEC-4345
Signed-off-by: yanxk <yanxk.fnst@fujitsu.com>
Change-Id: I3d9ebb64b8b57a64d0ca002f20cf908141099ad6
-rw-r--r-- | tests/crashme/run_tests.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/crashme/run_tests.py b/tests/crashme/run_tests.py index 93f62cd..ccb4775 100644 --- a/tests/crashme/run_tests.py +++ b/tests/crashme/run_tests.py @@ -3,6 +3,7 @@ import subprocess import pathlib import os import json +import threading from plugins.agl_test_base import AGLBaseTest @@ -10,6 +11,30 @@ class CrashmeBase(AGLBaseTest): def __init__(self): super().__init__(name="crashme") + def killer(self): + killer_cmd = "killall -15 crashme" + subprocess.run(killer_cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + # killer eta due to env variable "STRESS_VALE", 5 per cent larger than runtime in spec file + def setup_killer_eta_timer(self): + # Get env 'STRESS_LEVEL' + env_dist=os.environ + local_stress_level = str(env_dist.get("STRESS_LEVEL")) + + # If not set correctly or just not set, set default to "low" + if local_stress_level not in ("low", "mid", "high"): + local_stress_level = "low" + + # expected_runtime_limit is counted by seconds, spare 5 per cent jam time + if local_stress_level == "low": + expected_runtime_limit = 945 + elif local_stress_level == "mid": + expected_runtime_limit = 1890 + elif local_stress_level == "high": + expected_runtime_limit = 3780 + + return expected_runtime_limit + def setup_runtest_params(self): # Get env 'STRESS_LEVEL' env_dist=os.environ @@ -50,6 +75,11 @@ class CrashmeBase(AGLBaseTest): ' | grep "^Test complete\\|^exit status\\|' + \ '^child_kill_count\\|[.]\\{3\\}\\|^Number of distinct cases"' + # call killer to come ETA in some seconds + eta_time = self.setup_killer_eta_timer() + countdown = threading.Timer(eta_time, self.killer) + countdown.start() + with open(log_file, 'w') as log_f: run_test_crashme = subprocess.run(run_test_cmd, shell=True, cwd=cwd_buf, stdout=log_f, stderr=subprocess.DEVNULL) |