diff options
author | Fabricio Voznika <fvoznika@google.com> | 2018-06-20 15:27:06 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-06-20 15:28:12 -0700 |
commit | 2f59ba0e2d2169cf429b73a39a920f8d615f8eca (patch) | |
tree | c4eca86a2e976f488a8e7d1edf8eceaa577b9bbf | |
parent | 2b5bdb525e99fc1ef099b2ef083a09772241ea58 (diff) |
Include image test as part of kokoro tests
PiperOrigin-RevId: 201427731
Change-Id: I5cbee383ec51c02b7892ec7812cbbdc426be8991
-rwxr-xr-x | kokoro/gcp_ubuntu/run_tests.sh | 13 | ||||
-rw-r--r-- | runsc/test/image/image_test.go | 4 | ||||
-rwxr-xr-x | runsc/test/image/install.sh | 85 |
3 files changed, 101 insertions, 1 deletions
diff --git a/kokoro/gcp_ubuntu/run_tests.sh b/kokoro/gcp_ubuntu/run_tests.sh index ce458be9c..2f5e375eb 100755 --- a/kokoro/gcp_ubuntu/run_tests.sh +++ b/kokoro/gcp_ubuntu/run_tests.sh @@ -31,6 +31,10 @@ cd git/repo # Build everything. bazel build //... +# Test use this variable to determine what runtime to use. +runtime=runsc_test_$((RANDOM)) +sudo -n ./runsc/test/image/install.sh --runtime ${runtime} + # Run the tests and upload results. # # We turn off "-e" flag because we must move the log files even if the test @@ -38,6 +42,15 @@ bazel build //... set +e bazel test --test_output=errors //... exit_code=${?} + +if [[ ${exit_code} -eq 0 ]]; then + # image_test is tagged manual + bazel test --test_output=errors --test_env=RUNSC_RUNTIME=${runtime} //runsc/test/image:image_test + exit_code=${?} +fi + +# Best effort to uninstall +sudo -n ./runsc/test/image/install.sh -u --runtime ${runtime} set -e # Find and rename all test xml and log files so that Sponge can pick them up. diff --git a/runsc/test/image/image_test.go b/runsc/test/image/image_test.go index 08b1bf279..5034411e5 100644 --- a/runsc/test/image/image_test.go +++ b/runsc/test/image/image_test.go @@ -13,7 +13,9 @@ // limitations under the License. // Package image provides end-to-end image tests for runsc. These tests require -// docker and runsc to be installed on the machine. +// docker and runsc to be installed on the machine. To set it up, run: +// +// ./runsc/test/image/install.sh [--runtime <name>] // // The tests expect the runtime name to be provided in the RUNSC_RUNTIME // environment variable (default: runsc-test). diff --git a/runsc/test/image/install.sh b/runsc/test/image/install.sh new file mode 100755 index 000000000..94832dbe4 --- /dev/null +++ b/runsc/test/image/install.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +# Copyright 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Fail on any error +set -e + +# Defaults +declare runtime=runsc-test +declare uninstall=0 + +function findExe() { + local exe=${1} + + local path=$(find bazel-bin/runsc -type f -executable -name "${exe}" | head -n1) + if [[ "${path}" == "" ]]; then + echo "Location of ${exe} not found in bazel-bin" >&2 + exit 1 + fi + echo "${path}" +} + +while [[ $# -gt 0 ]]; do + case "$1" in + --runtime) + shift + [ "$#" -le 0 ] && echo "No runtime provided" && exit 1 + runtime=$1 + ;; + -u) + uninstall=1 + ;; + *) + echo "Unknown option: ${1}" + echo "" + echo "Usage: ${0} [--runtime <name>] [-u]" + echo " --runtime sets the runtime name, default: runsc-test" + echo " -u uninstall the runtime" + exit 1 + esac + shift +done + +# Find location of executables. +declare -r dockercfg=$(findExe dockercfg) +[[ "${dockercfg}" == "" ]] && exit 1 + +declare runsc=$(findExe runsc) +[[ "${runsc}" == "" ]] && exit 1 + +if [[ ${uninstall} == 0 ]]; then + rm -rf /tmp/${runtime} + mkdir -p /tmp/${runtime} + cp "${runsc}" /tmp/${runtime}/runsc + runsc=/tmp/${runtime}/runsc + + # Make tmp dir and runsc binary readable and executable to all users, since it + # will run in an empty user namespace. + chmod a+rx "${runsc}" $(dirname "${runsc}") + + # Make log dir executable and writable to all users for the same reason. + declare logdir=/tmp/"${runtime?}/logs" + mkdir -p "${logdir}" + sudo -n chmod a+wx "${logdir}" + + sudo -n "${dockercfg}" runtime-add "${runtime}" "${runsc}" --debug-log-dir "${logdir}" --debug --strace --log-packets + +else + sudo -n "${dockercfg}" runtime-rm "${runtime}" +fi + +echo "Restarting docker service..." +sudo -n /etc/init.d/docker restart |