[CRIU] [PATCH] zdtm: check that a command completes successfully after a fault (v2)

Pavel Emelyanov xemul at virtuozzo.com
Tue Mar 1 06:53:17 PST 2016


On 03/01/2016 05:23 PM, Andrey Vagin wrote:
> 2016-03-01 2:01 GMT-08:00 Pavel Emelyanov <xemul at virtuozzo.com>:
>> On 03/01/2016 03:04 AM, Andrey Vagin wrote:
>>> From: Andrew Vagin <avagin at virtuozzo.com>
>>>
>>> I suggest to inject a fault and than try to execute the same command
>>> again without a fault to check that it will complete successfully.
>>>
>>> v2: skip a parasite blob when we are checking vma-s
>>> Signed-off-by: Andrew Vagin <avagin at virtuozzo.com>
>>> ---
>>>  test/zdtm.py | 40 +++++++++++++++++++++++++++++-----------
>>>  1 file changed, 29 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/test/zdtm.py b/test/zdtm.py
>>> index 1ace919..27fa8d4 100755
>>> --- a/test/zdtm.py
>>> +++ b/test/zdtm.py
>>> @@ -656,13 +656,31 @@ class criu_cli:
>>>
>>>               preexec = self.__user and self.set_user_id or None
>>>
>>> -             ret = self.__criu(action, s_args, self.__fault, strace, preexec)
>>> -             grep_errors(os.path.join(self.__ddir(), log))
>>> -             if ret != 0:
>>> -                     if self.__fault or self.__test.blocking() or (self.__sat and action == 'restore'):
>>> -                             raise test_fail_expected_exc(action)
>>> -                     else:
>>> -                             raise test_fail_exc("CRIU %s" % action)
>>> +             faults = [ self.__fault ]
>>> +             # try again after the first failed case
>>> +             if self.__fault:
>>> +                     faults.append(None)
>>> +             for fault in faults:
>>> +                     __ddir = self.__ddir()
>>> +
>>> +                     ret = self.__criu(action, s_args, fault, strace, preexec)
>>> +                     grep_errors(os.path.join(__ddir, log))
>>> +                     if ret != 0:
>>> +                             if fault:
>>> +                                     try_run_hook(self.__test, ["--fault", action])
>>> +                                     if action == "dump":
>>> +                                             __ddir_fail = __ddir + ".fail"
>>> +                                             os.rename(__ddir, __ddir + ".fail")
>>> +                                             os.mkdir(__ddir)
>>> +                                             os.chmod(__ddir, 0777)
>>> +                                     else:
>>> +                                             os.rename(os.path.join(__ddir, log), os.path.join(__ddir, log + ".fail"))
>>
>> What does this dir manipulation do?
> 
> On dump this directory will contain a part of images, so we move the
> whole directory.
> On restore we move only a log file.

Move where and what for? There was no log file moving in this place.

-- Pavel


More information about the CRIU mailing list