criu/test
Pavel Emelyanov 090ce500d3 test, pipes: Exhaustive test of shared pipes
So, here's the next test that just enumerates all possible states and checks
that CRIU C/R-s it well. This time -- pipes. The goal of the test is to load
the fd-sharing engine, so pipes are chosen, as they not only generate shared
struct files, but also produce 2 descriptors in CRIU's fdesc->open callback
which is handled separately.

It's implemented slightly differently from the unix test, since we don't want
to check sequences of syscalls on objects, we need to check the task to pipe
relations in all possible ways.

The 'state' is several tasks, several pipes and each generated test includes
pipe ends sitting in all possible combinations in the tasks' FDTs.

Also note, that states, that seem to be equal to each other, e.g. pipe between
tasks A->B and pipe B->A, are really different as CRIU picks the pipe-restorer
based in task PIDs. So whether the picked task has read end or write end at
his FDT makes a difference on restore.

Number of tasks is limited with --tasks option, number of pipes with the
--pipes one. Test just runs all -- generates states, makes them and C/R-s
them. To check the restored result the /proc/pid/fd/ and /proc/pid/fdinfo/
for all restored tasks is analyzed.

Right now CRIU works OK for --tasks 2 --pipes 2 (for more -- didn't check).
Kirill, please, check that your patches pass this test.

TODO:

 - Randomize FDs under which tasks see the pipes. Now all tasks if they have
   some pipe, all see it under the same set of FDs.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2017-11-30 01:18:53 +03:00
..
compel compel/tests: fix tests on !x86 archs 2017-03-14 21:03:30 +03:00
exhaustive test, pipes: Exhaustive test of shared pipes 2017-11-30 01:18:53 +03:00
inhfd unix: Test the --external instead of --ext-unix-sk 2016-11-03 18:14:16 +03:00
jenkins test: jenkins -- Add huge shmid fault into the tests 2017-11-23 20:23:13 +03:00
others python: specify python2 as .py interpreter 2017-04-17 18:35:58 +03:00
zdtm build: get rid of warnings with sysmacro 2017-11-23 20:23:14 +03:00
.gitignore gitignores: ignore some more generated files 2017-03-15 00:05:55 +03:00
abrt.sh travis: catch core dump files in error cases 2016-09-06 19:31:20 +03:00
check_actions.py python: specify python2 as .py interpreter 2017-04-17 18:35:58 +03:00
crit-recode.py test/crit-recode: skip images with zero size 2016-06-28 13:12:26 +03:00
criu.py zdtm.py: Add minimal support for CRIU RPC testing 2016-09-06 19:31:21 +03:00
empty-netns-prep.sh test: don't use nsenter in tests 2017-05-19 09:17:20 +03:00
groups.desc zdtm.py: Generator of groups of tests 2015-12-08 14:54:41 +03:00
inhfd.desc zdtm.py: Add inhfd tests for --inherit-fd option 2015-10-19 12:42:01 +03:00
Makefile Update Makefile 2017-06-14 09:45:44 +03:00
rpc_pb2.py python lib: rename rpc.py to rpc_pb2.py 2016-10-10 12:49:28 +03:00
show_action.sh test: Check action scripts to work as we expect 2016-05-06 14:39:25 +03:00
umount2.c zdtm: add a program to umount a test root 2016-09-26 15:42:40 +03:00
zdtm.desc test: Get rid of live directory 2016-02-20 13:40:52 +03:00
zdtm.py zdtm: grep errors from page-server.log and lazy-pages.log 2017-11-23 20:23:23 +03:00
zdtm_ct.c test: don't do MS_REC|MS_PRIVATE for host mounts 2016-09-06 19:31:20 +03:00
zdtm_mount_cgroups tests: prevent zdtm_mount_cgroups from failing w/ EBUSY 2016-02-03 16:25:28 +03:00