Commit 983f54f6 authored by Pavel Emelyanov's avatar Pavel Emelyanov

zdtm.py: Substract criu_cli from criu

Now we have a single place that is really about calling criu
as CLI tool inside this class, so pull one out as a preparation
to having RPC support.
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 57699ee0
...@@ -664,6 +664,16 @@ criu_bin = "../criu/criu" ...@@ -664,6 +664,16 @@ criu_bin = "../criu/criu"
join_ns_file = '/run/netns/zdtm_netns' join_ns_file = '/run/netns/zdtm_netns'
class criu_cli:
@staticmethod
def run(action, args, fault = None, strace = [], preexec = None):
env = None
if fault:
print "Forcing %s fault" % fault
env = dict(os.environ, CRIU_FAULT = fault)
cr = subprocess.Popen(strace + [criu_bin, action] + args, env = env, preexec_fn = preexec)
return cr.wait()
class criu: class criu:
def __init__(self, opts): def __init__(self, opts):
self.__test = None self.__test = None
...@@ -705,15 +715,6 @@ class criu: ...@@ -705,15 +715,6 @@ class criu:
def __ddir(self): def __ddir(self):
return os.path.join(self.__dump_path, "%d" % self.__iter) return os.path.join(self.__dump_path, "%d" % self.__iter)
@staticmethod
def __criu(action, args, fault = None, strace = [], preexec = None):
env = None
if fault:
print "Forcing %s fault" % fault
env = dict(os.environ, CRIU_FAULT = fault)
cr = subprocess.Popen(strace + [criu_bin, action] + args, env = env, preexec_fn = preexec)
return cr.wait()
def set_user_id(self): def set_user_id(self):
# Numbers should match those in zdtm_test # Numbers should match those in zdtm_test
os.setresgid(58467, 58467, 58467) os.setresgid(58467, 58467, 58467)
...@@ -748,7 +749,7 @@ class criu: ...@@ -748,7 +749,7 @@ class criu:
__ddir = self.__ddir() __ddir = self.__ddir()
ret = self.__criu(action, s_args, self.__fault, strace, preexec) ret = criu_cli.run(action, s_args, self.__fault, strace, preexec)
grep_errors(os.path.join(__ddir, log)) grep_errors(os.path.join(__ddir, log))
if ret != 0: if ret != 0:
if self.__fault and int(self.__fault) < 128: if self.__fault and int(self.__fault) < 128:
...@@ -763,7 +764,7 @@ class criu: ...@@ -763,7 +764,7 @@ class criu:
os.rename(os.path.join(__ddir, log), os.path.join(__ddir, log + ".fail")) os.rename(os.path.join(__ddir, log), os.path.join(__ddir, log + ".fail"))
# try again without faults # try again without faults
print "Run criu " + action print "Run criu " + action
ret = self.__criu(action, s_args, False, strace, preexec) ret = criu_cli.run(action, s_args, False, strace, preexec)
grep_errors(os.path.join(__ddir, log)) grep_errors(os.path.join(__ddir, log))
if ret == 0: if ret == 0:
return return
...@@ -843,7 +844,7 @@ class criu: ...@@ -843,7 +844,7 @@ class criu:
@staticmethod @staticmethod
def check(feature): def check(feature):
return criu.__criu("check", ["-v0", "--feature", feature]) == 0 return criu_cli.run("check", ["-v0", "--feature", feature]) == 0
@staticmethod @staticmethod
def available(): def available():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment