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

Andrei Vagin avagin at virtuozzo.com
Tue Oct 10 04:01:50 MSK 2017


Applied

On Thu, Oct 05, 2017 at 08:58:46PM +0300, Andrei Vagin wrote:
> 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