[CRIU] [PATCH 1/2] travis: check docker checkpoint

Andrei Vagin avagin at openvz.org
Thu Oct 5 20:58:46 MSK 2017


From: Andrei Vagin <avagin at virtuozzo.com>

Install the last version of Docker, start a container and C/R it a few times.

Signed-off-by: Andrei Vagin <avagin at virtuozzo.com>
---
 .travis.yml                   |  2 ++
 scripts/travis/Makefile       |  3 ++
 scripts/travis/docker-test.sh | 65 +++++++++++++++++++++++++++++++++++++++++++
 scripts/travis/travis-tests   |  3 ++
 4 files changed, 73 insertions(+)
 create mode 100755 scripts/travis/docker-test.sh

diff --git a/.travis.yml b/.travis.yml
index b0f7f6cee..c0321a6c3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,9 +20,11 @@ env:
   - TR_ARCH=ppc64le     CLANG=1
   - TR_ARCH=alpine      CLANG=1
   - TR_ARCH=fedora-rawhide
+  - TR_ARCH=docker-test
 matrix:
   allow_failures:
     - env: TR_ARCH=fedora-rawhide
+    - env: TR_ARCH=docker-test
 script:
   - sudo make CCACHE=1 -C scripts/travis $TR_ARCH
 after_success:
diff --git a/scripts/travis/Makefile b/scripts/travis/Makefile
index 48853c17f..4d89610bf 100644
--- a/scripts/travis/Makefile
+++ b/scripts/travis/Makefile
@@ -22,5 +22,8 @@ $(TARGETS):
 	$(MAKE) -C ../build $@$(target-suffix)
 	docker run --rm -it --privileged -v /lib/modules:/lib/modules --tmpfs /run criu-$@ ./scripts/travis/asan.sh $(ZDTM_OPTIONS)
 
+docker-test:
+	./docker-test.sh
+
 %:
 	$(MAKE) -C ../build $@$(target-suffix)
diff --git a/scripts/travis/docker-test.sh b/scripts/travis/docker-test.sh
new file mode 100755
index 000000000..2fad42854
--- /dev/null
+++ b/scripts/travis/docker-test.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+set -x -e -o pipefail
+
+apt-get install -qq \
+    apt-transport-https \
+    ca-certificates \
+    curl \
+    software-properties-common
+
+curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
+
+add-apt-repository \
+   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
+   $(lsb_release -cs) \
+   stable"
+
+
+apt-get update -qq
+
+apt-get install -qq docker-ce
+
+cat > /etc/docker/daemon.json <<EOF
+{
+    "experimental": true
+}
+EOF
+
+service docker restart
+
+export SKIP_TRAVIS_TEST=1
+
+./travis-tests
+
+cd ../../
+
+touch /usr/sbin/criu
+mount --bind criu/criu /usr/sbin/criu
+
+docker info
+
+criu --version
+
+docker run --security-opt=seccomp:unconfined --name cr -d alpine /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
+
+sleep 1
+for i in `seq 50`; do
+	# docker start returns 0 silently if a container is already started
+	# docker checkpoint doesn't wait when docker updates a container state
+	# Due to both these points, we need to sleep after docker checkpoint to
+	# avoid races with docker start.
+	docker exec cr ps axf &&
+	docker checkpoint create cr checkpoint$i &&
+	sleep 1 &&
+	docker start --checkpoint checkpoint$i cr 2>&1 | tee log || {
+		cat "`cat log | grep 'log file:' | sed 's/log file:\s*//'`" || true
+		docker logs cr || true
+		cat /tmp/zdtm-core-* || true
+		dmesg
+		docker ps
+		exit 1
+	}
+	docker ps
+	sleep 1
+done
+
diff --git a/scripts/travis/travis-tests b/scripts/travis/travis-tests
index 062da8396..6459e0e68 100755
--- a/scripts/travis/travis-tests
+++ b/scripts/travis/travis-tests
@@ -49,6 +49,9 @@ echo "|`pwd`/test/abrt.sh %P %p %s %e" > /proc/sys/kernel/core_pattern
 
 export GCOV
 time make CC="$CC" -j4
+
+[ -n "$SKIP_TRAVIS_TEST" ] && return
+
 time make CC="$CC" -j4 -C test/zdtm
 
 [ -f "$CCACHE_LOGFILE" ] && cat $CCACHE_LOGFILE
-- 
2.13.3



More information about the CRIU mailing list