mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-27 12:28:14 +00:00
On some distro the default python interpreter is Python 3, which results in such errors: > Running zdtm/static/socket-tcp-closed.hook(--post-start) > make[1]: Nothing to be done for default. > ./socket-tcp-closed --pidfile=socket-tcp-closed.pid --outfile=socket-tcp-closed.out > File "zdtm/static/socket-tcp-closed.hook", line 16 > except OSError, e: > ^ > SyntaxError: invalid syntax > ######### Test zdtm/static/socket-tcp-closed FAIL at hook --post-start ######### > Running zdtm/static/socket-tcp-closed.hook(--clean) > File "zdtm/static/socket-tcp-closed.hook", line 16 > except OSError, e: > ^ > SyntaxError: invalid syntax > Traceback (most recent call last): > File "zdtm.py", line 1921, in <module> > do_run_test(tinfo[0], tinfo[1], tinfo[2], tinfo[3]) > File "zdtm.py", line 1388, in do_run_test > try_run_hook(t, ["--clean"]) > File "zdtm.py", line 1053, in try_run_hook > raise test_fail_exc("hook " + " ".join(args)) > __main__.test_fail_exc: <__main__.test_fail_exc instance at 0x76294468> Acked-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
37 lines
1014 B
Python
Executable File
37 lines
1014 B
Python
Executable File
#!/usr/bin/env python2
|
|
import subprocess
|
|
import os, sys, time, signal, pty
|
|
|
|
master, slave = pty.openpty()
|
|
|
|
p = subprocess.Popen(["setsid", "--ctty", "sleep", "10000"],
|
|
stdin = slave, stdout = slave, stderr = slave, close_fds = True)
|
|
st = os.stat("/proc/self/fd/%d" % slave)
|
|
ttyid = "tty[%x:%x]" % (st.st_rdev, st.st_dev)
|
|
os.close(slave)
|
|
time.sleep(1)
|
|
|
|
ret = subprocess.Popen(["../../../criu/criu", "dump", "-t", str(p.pid), "-v4", "--external", ttyid]).wait()
|
|
if ret:
|
|
sys.exit(ret)
|
|
p.wait()
|
|
|
|
new_master, slave = pty.openpty() # get another pty pair
|
|
os.close(master)
|
|
|
|
ttyid = "fd[%d]:tty[%x:%x]" % (slave, st.st_rdev, st.st_dev)
|
|
|
|
ret = subprocess.Popen(["../../../criu/criu", "restore", "-v4", "--inherit-fd", ttyid, "--restore-sibling", "--restore-detach"]).wait()
|
|
if ret:
|
|
sys.exit(ret)
|
|
os.close(slave)
|
|
os.waitpid(-1, os.WNOHANG) # is the process alive
|
|
|
|
os.close(new_master)
|
|
_, status = os.wait()
|
|
if not os.WIFSIGNALED(status) or os.WTERMSIG(status) != signal.SIGHUP:
|
|
print status
|
|
sys.exit(1)
|
|
|
|
print "PASS"
|