mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-24 19:08:11 +00:00
61 lines
1.1 KiB
Bash
61 lines
1.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -ebm
|
||
|
|
||
|
# shellcheck source=test/others/env.sh
|
||
|
source ../env.sh || exit 1
|
||
|
|
||
|
SELFDIR="$(dirname "$(readlink -f "$0")")"
|
||
|
SCRIPT="$SELFDIR/action-script.sh"
|
||
|
IMGDIR="$SELFDIR/img-dir-$$"
|
||
|
|
||
|
rm -rf "$IMGDIR"
|
||
|
mkdir "$IMGDIR"
|
||
|
|
||
|
trap "cleanup" QUIT TERM INT HUP EXIT
|
||
|
|
||
|
# shellcheck disable=SC2317
|
||
|
# https://github.com/koalaman/shellcheck/issues/2660
|
||
|
function cleanup()
|
||
|
{
|
||
|
if [[ -n "$PID" ]]; then
|
||
|
kill -9 "$PID"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
PID=$(../loop)
|
||
|
if ! $CRIU dump -v4 -o dump.log -t "$PID" -D "$IMGDIR" --action-script "$SCRIPT"; then
|
||
|
echo "Failed to checkpoint process $PID"
|
||
|
cat dump.log
|
||
|
kill -9 "$PID"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if ! $CRIU restore -v4 -o restore.log -D "$IMGDIR" -d --pidfile test.pidfile --action-script "$SCRIPT"; then
|
||
|
echo "CRIU restore failed"
|
||
|
echo FAIL
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
PID=$(cat "$IMGDIR"/test.pidfile)
|
||
|
|
||
|
found_missing_file=false
|
||
|
hooks=("pre-dump" "post-dump" "pre-restore" "pre-resume" "post-restore" "post-resume")
|
||
|
|
||
|
for hook in "${hooks[@]}"
|
||
|
do
|
||
|
if [ ! -e "$IMGDIR/action-hook-$hook" ]; then
|
||
|
echo "ERROR: action-hook-$hook does not exist"
|
||
|
found_missing_file=true
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ "$found_missing_file" = true ]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
echo PASS
|
||
|
|
||
|
rm -rf "$IMGDIR"
|
||
|
exit 0
|