Accepting request 683779 from home:cyphar:containers:docker-test

- docker-test: add support for running the new integration/ tests with tests.sh

OBS-URL: https://build.opensuse.org/request/show/683779
OBS-URL: https://build.opensuse.org/package/show/Virtualization:containers/docker?expand=0&rev=297
This commit is contained in:
Aleksa Sarai 2019-03-11 11:56:10 +00:00 committed by Git OBS Bridge
parent 5d5d984bf3
commit 46a92a1eb8
2 changed files with 17 additions and 12 deletions

View File

@ -4,6 +4,7 @@ Sun Mar 10 21:12:09 UTC 2019 - Aleksa Sarai <asarai@suse.com>
- docker-test: improvements to test packaging (we don't need to ship around the - docker-test: improvements to test packaging (we don't need to ship around the
entire source tree, and we also need to build the born-again integration/ entire source tree, and we also need to build the born-again integration/
tests which contain a suite-per-directory). tests which contain a suite-per-directory).
- docker-test: add support for running the new integration/ tests with tests.sh
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Feb 26 09:39:57 UTC 2019 - Michal Jura <mjura@suse.com> Tue Feb 26 09:39:57 UTC 2019 - Michal Jura <mjura@suse.com>

View File

@ -12,11 +12,12 @@ TESTS_EXE="$DOCKER_DIR/integration-cli/tests.main"
VERSION="$(cat "$DOCKER_DIR/VERSION")" VERSION="$(cat "$DOCKER_DIR/VERSION")"
# working dirs # working dirs
TESTS_DIR=/tmp/docker-int-tests TEST_TMPDIR=/tmp/docker-int-tests
FROZEN_IMAGES_DIR="$TESTS_DIR/frozen-images" FROZEN_IMAGES_DIR="$TEST_TMPDIR/frozen-images"
FROZEN_IMAGES_LINK=/docker-frozen-images FROZEN_IMAGES_LINK=/docker-frozen-images
BUNDLES_DIR="$TESTS_DIR/run/bundles" BUNDLES_DIR="$TEST_TMPDIR/run/bundles"
readarray -t TESTS < <(find "$DOCKER_DIR" -type f -executable -name 'tests.main')
CHECK_TIMEOUT="${CHECK_TIMEOUT:-15m}" CHECK_TIMEOUT="${CHECK_TIMEOUT:-15m}"
TEST_TIMEOUT="${TEST_TIMEOUT:-6h}" TEST_TIMEOUT="${TEST_TIMEOUT:-6h}"
TEST_ARGS=("-check.v" "-check.timeout=${CHECK_TIMEOUT}" "-test.timeout=${TEST_TIMEOUT}") TEST_ARGS=("-check.v" "-check.timeout=${CHECK_TIMEOUT}" "-test.timeout=${TEST_TIMEOUT}")
@ -86,13 +87,13 @@ require_git() { git version >/dev/null 2>&1 ; }
################################################################################ ################################################################################
[ -x "$TESTS_EXE" ] || abort "integration tests executable not found at $TESTS_EXE" [ "${#TESTS[@]}" -eq 0 ] || abort "integration tests executable not found at $TESTS_EXE"
[ "$EUID" -eq 0 ] || abort "this script must be run as root" [ "$EUID" -eq 0 ] || abort "this script must be run as root"
[ -n "$VERSION" ] || abort "could not obtain version" [ -n "$VERSION" ] || abort "could not obtain version"
if [ "$#" -gt 0 ] ; then if [ "$#" -gt 0 ] ; then
# run only some specific tests # run only some specific tests
TEST_SELECT="-check.f=$(echo $@ | tr ' ' '|')" TEST_ARGS+=( "-check.f=$(echo $@ | tr ' ' '|')" )
fi fi
# We want this to fail if the bundles already exist and cannot be removed. # We want this to fail if the bundles already exist and cannot be removed.
@ -131,7 +132,7 @@ fi
/usr/sbin/useradd --create-home --gid docker unprivilegeduser >/dev/null 2>&1 || /bin/true /usr/sbin/useradd --create-home --gid docker unprivilegeduser >/dev/null 2>&1 || /bin/true
# prepare some expected dirs, files, etc... # prepare some expected dirs, files, etc...
fix_expected "$TESTS_DIR/contrib" "$DOCKER_DIR/contrib" fix_expected "$TEST_TMPDIR/contrib" "$DOCKER_DIR/contrib"
fix_expected "$DEST/fixtures" "$DOCKER_DIR/integration-cli/fixtures" fix_expected "$DEST/fixtures" "$DOCKER_DIR/integration-cli/fixtures"
fix_expected "$DEST/../Dockerfile" "$DOCKER_DIR/Dockerfile" fix_expected "$DEST/../Dockerfile" "$DOCKER_DIR/Dockerfile"
@ -196,7 +197,7 @@ cleanup() {
log "Removing extra files and restoring backups..." log "Removing extra files and restoring backups..."
restore_backup /etc/subuid /etc/subgid restore_backup /etc/subuid /etc/subgid
rm -f "$TESTS_DIR/contrib" "$DEST/fixtures" "$FROZEN_IMAGES_LINK" rm -f "$TEST_TMPDIR/contrib" "$DEST/fixtures" "$FROZEN_IMAGES_LINK"
} }
trap cleanup EXIT trap cleanup EXIT
@ -223,9 +224,12 @@ ln -sf "$FROZEN_IMAGES_DIR" "$FROZEN_IMAGES_LINK"
debian:jessie@sha256:287a20c5f73087ab406e6b364833e3fb7b3ae63ca0eb3486555dc27ed32c6e60 \ debian:jessie@sha256:287a20c5f73087ab406e6b364833e3fb7b3ae63ca0eb3486555dc27ed32c6e60 \
hello-world:latest@sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c hello-world:latest@sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c
log "Running integration tests..." for TEST in "${TESTS[@]}"
cd "$DEST" && \ do
"$TESTS_EXE" "${TEST_ARGS[@]}" $TEST_SELECT 2>&1 | tee "$TEST_LOG" || /bin/true cd "$(dirname "$TEST")"
log "Running integration test ($TEST)..." | tee -a "$TEST_LOG"
"$TEST" "${TEST_ARGS[@]}" 2>&1 | tee -a "$TEST_LOG" || /bin/true
done
if [ -n "$ENABLE_XUNIT" ] ; then if [ -n "$ENABLE_XUNIT" ] ; then
log "Generating xunit logs..." log "Generating xunit logs..."
go2xunit -fail -gocheck -input "$TEST_LOG" -output "$TEST_LOG.xml" go2xunit -fail -gocheck -input "$TEST_LOG" -output "$TEST_LOG.xml"