Skip to content

Commit cfe53f0

Browse files
committed
test/jenkins: test --no-resume-on-error
Change-Id: If5036813784214c95e8e3c4abedb07b7be037f74 Signed-off-by: Michał Mirosław <emmir@google.com>
1 parent 0e16aa3 commit cfe53f0

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

test/jenkins/criu-stop.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ set -e
55
source `dirname $0`/criu-lib.sh
66
prep
77
./test/zdtm.py run -t zdtm/transition/fork --stop --iter 3 || fail
8+
./test/zdtm.py run -t zdtm/static/sigtrap --stop-on-error || fail

test/zdtm.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,7 @@ def __init__(self, opts):
10551055
self.__user = bool(opts['user'])
10561056
self.__rootless = bool(opts['rootless'])
10571057
self.__leave_stopped = bool(opts['stop'])
1058+
self.__stop_on_error = bool(opts['stop_on_error'])
10581059
self.__stream = bool(opts['stream'])
10591060
self.__show_stats = bool(opts['show_stats'])
10601061
self.__lazy_pages_p = None
@@ -1390,6 +1391,8 @@ def dump(self, action, opts=[]):
13901391

13911392
if self.__leave_stopped:
13921393
a_opts += ['--leave-stopped']
1394+
if self.__stop_on_error:
1395+
a_opts += ['--no-resume-on-error']
13931396
if self.__empty_ns:
13941397
a_opts += ['--empty-ns', 'net']
13951398
if self.__pre_dump_mode:
@@ -1399,9 +1402,16 @@ def dump(self, action, opts=[]):
13991402
if self.__lazy_migrate and action == "dump":
14001403
a_opts += ["--lazy-pages", "--port", "12345"] + self.__tls
14011404
nowait = True
1402-
self.__dump_process = self.__criu_act(action,
1403-
opts=a_opts + opts,
1404-
nowait=nowait)
1405+
try:
1406+
self.__dump_process = self.__criu_act(action,
1407+
opts=a_opts + opts,
1408+
nowait=nowait)
1409+
except test_fail_expected_exc:
1410+
if self.__stop_on_error:
1411+
pstree_check_stopped(self.__test.getpid(), "--no-resume-on-error")
1412+
pstree_signal(self.__test.getpid(), signal.SIGKILL)
1413+
raise
1414+
14051415
if self.__stream:
14061416
ret = self.wait_for_criu_image_streamer()
14071417
if ret:
@@ -1888,10 +1898,10 @@ def is_thread_stopped(status):
18881898
return True
18891899

18901900

1891-
def pstree_check_stopped(root_pid):
1901+
def pstree_check_stopped(root_pid, test_flag="--leave_stopped"):
18921902
for pid in pstree_each_pid(root_pid):
18931903
if not is_proc_stopped(pid):
1894-
raise test_fail_exc("CRIU --leave-stopped %s" % pid)
1904+
raise test_fail_exc("CRIU %s %s" % (test_flag, pid))
18951905

18961906

18971907
def pstree_signal(root_pid, signal):
@@ -2083,7 +2093,7 @@ def run_test(self, name, desc, flavor):
20832093
'dedup', 'sbs', 'freezecg', 'user', 'dry_run', 'noauto_dedup',
20842094
'remote_lazy_pages', 'show_stats', 'lazy_migrate', 'stream',
20852095
'tls', 'criu_bin', 'crit_bin', 'pre_dump_mode', 'mntns_compat_mode',
2086-
'rootless')
2096+
'rootless', 'stop_on_error')
20872097
arg = repr((name, desc, flavor, {d: self.__opts[d] for d in nd}))
20882098

20892099
if self.__use_log:
@@ -2706,6 +2716,9 @@ def get_cli_args():
27062716
rp.add_argument("--stop",
27072717
help="Check that --leave-stopped option stops ps tree.",
27082718
action='store_true')
2719+
rp.add_argument("--stop-on-error",
2720+
help="Check that --no-resume-on-error stops ps tree on dump error.",
2721+
action='store_true')
27092722
rp.add_argument("--iters",
27102723
help="Do CR cycle several times before check (n[:pause])")
27112724
rp.add_argument("--fault", help="Test fault injection")

0 commit comments

Comments
 (0)