[CRIU] [PATCH RFC v3 3/4] test: Add testcases for image-proxy/image-cache
Katerina Koukiou
k.koukiou at googlemail.com
Wed Aug 10 06:19:37 PDT 2016
Signed-off-by: Rodrigo Bruno <rbruno at gsd.inesc-id.pt>
Signed-off-by: Katerina Koukiou <k.koukiou at gmail.com>
---
test/proxy-cache/Makefile | 29 +++++++++++++
test/proxy-cache/loop.sh | 8 ++++
test/proxy-cache/run.sh | 106 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 143 insertions(+)
create mode 100644 test/proxy-cache/Makefile
create mode 100755 test/proxy-cache/loop.sh
create mode 100755 test/proxy-cache/run.sh
diff --git a/test/proxy-cache/Makefile b/test/proxy-cache/Makefile
new file mode 100644
index 0000000..674c493
--- /dev/null
+++ b/test/proxy-cache/Makefile
@@ -0,0 +1,29 @@
+DIR := $(shell pwd)/data
+CRIU := $(DIR)/criu
+
+LOOP := $(DIR)/loop.sh
+PIDFILE := $(DIR)/loop.pid
+
+DUMPDIR := $(DIR)/dump
+PREDIR := $(DIR)/predump
+LOG := $(DIR)/log
+
+PROXY_CACHE_TCP_PORT := 9997
+LOCAL_CACHE_PATH := $(DIR)/image-cache.sock
+LOCAL_PROXY_PATH := $(DIR)/image-proxy.sock
+
+export DIR LOOP PIDFILE DUMPDIR PREDIR CRIU LOG PROXY_CACHE_TCP_PORT LOCAL_CACHE_PATH LOCAL_PROXY_PATH
+
+run: testdir
+ ./run.sh
+
+testdir: ../../criu
+ mkdir -p $(DIR)
+ mkdir -p $(DUMPDIR)
+ mkdir -p $(PREDIR)
+ mkdir -p $(LOG)
+ cp ../../criu/criu $(CRIU)
+ cp loop.sh $(LOOP)
+
+clean:
+ rm -rf $(DIR)
diff --git a/test/proxy-cache/loop.sh b/test/proxy-cache/loop.sh
new file mode 100755
index 0000000..a5fcb08
--- /dev/null
+++ b/test/proxy-cache/loop.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+echo $$ > $1.int
+mv $1.int $1
+
+while :; do
+ sleep 1
+done
diff --git a/test/proxy-cache/run.sh b/test/proxy-cache/run.sh
new file mode 100755
index 0000000..4b3a66e
--- /dev/null
+++ b/test/proxy-cache/run.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+set -x
+
+PID=
+CACHE_PID=
+PROXY_PID=
+
+function run {
+ echo "== Run ${LOOP}"
+ echo ${PIDFILE}
+ rm -f ${PIDFILE}
+ setsid ${LOOP} ${PIDFILE} < /dev/null &> /dev/null &
+ for i in `seq 100`; do
+ test -f ${PIDFILE} && break
+ sleep 1
+ done
+ PID=`cat ${PIDFILE}`
+ echo ${PID}
+}
+
+function prepare {
+ ${CRIU} image-cache -vvvv -o ${LOG}/image-cache.log \
+ --local-cache-path ${LOCAL_CACHE_PATH} \
+ --port ${PROXY_CACHE_TCP_PORT} < /dev/null &> /dev/null &
+ CACHE_PID=$!
+ sleep 1
+
+ ${CRIU} image-proxy -vvvv -o ${LOG}/image-proxy.log \
+ --local-proxy-path ${LOCAL_PROXY_PATH} \
+ --address localhost \
+ --port ${PROXY_CACHE_TCP_PORT} < /dev/null &> /dev/null &
+ PROXY_PID=$!
+ sleep 1
+}
+
+function predump {
+ test -d ${PREDIR} && rm -rf ${PREDIR}
+ mkdir -p ${PREDIR}
+ echo "== Predump ${PID}"
+ ${CRIU} pre-dump -vvvv --tree ${PID} --images-dir ${PREDIR} \
+ -o ${LOG}/predump.log \
+ --remote --local-proxy-path ${LOCAL_PROXY_PATH}
+ return $?
+}
+
+function dump {
+ test -d ${DUMPDIR} && rm -rf ${DUMPDIR}
+ mkdir -p ${DUMPDIR}
+ echo "== Dump ${PID}"
+ ${CRIU} dump -vvvv --tree ${PID} --images-dir ${DUMPDIR} \
+ -o ${LOG}/dump.log --prev-images-dir ${PREDIR} --track-mem \
+ --remote --local-proxy-path ${LOCAL_PROXY_PATH}
+ return $?
+}
+
+function restore {
+ echo "== Restore ${DUMPDIR}"
+ ${CRIU} restore -vvvv --images-dir ${DUMPDIR} --restore-detached \
+ -o ${LOG}/restore.log \
+ --remote --local-cache-path ${LOCAL_CACHE_PATH}
+ return $?
+}
+
+function result {
+ local BGRED='\033[41m'
+ local BGGREEN='\033[42m'
+ local NORMAL=$(tput sgr0)
+
+ if [ $1 -ne 0 ]; then
+ echo -e "${BGRED}FAIL${NORMAL}"
+ exit 1
+ else
+ echo -e "${BGGREEN}PASS${NORMAL}"
+ fi
+}
+
+function test_dump_restore {
+ echo "==== Check if dump-restore works with proxy-cache"
+
+ run
+ prepare
+ dump; result $(($?))
+ restore ; result $(($?))
+
+ kill -SIGKILL ${PID}
+ kill -SIGKILL ${CACHE_PID}
+ kill -SIGKILL ${PROXY_PID}
+}
+
+function test_predump_dump_restore {
+ echo "==== Check if predump-dump-restore works with proxy-cache"
+
+ run
+ prepare
+ predump; result $(($?))
+ dump; result $(($?))
+ restore ; result $(($?))
+
+ kill -SIGKILL ${PID}
+ kill -SIGKILL ${CACHE_PID}
+ kill -SIGKILL ${PROXY_PID}
+}
+
+test_dump_restore
+test_predump_dump_restore
--
2.7.3
More information about the CRIU
mailing list