diff options
author | Justine Olshan <justineolshan@google.com> | 2018-07-11 09:36:20 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-07-11 09:37:28 -0700 |
commit | 81ae5f3df533d5e5990baaa105392f59e28d5730 (patch) | |
tree | 8a90d2fbca329391f2586b028cef7be7e14ae09f /runsc/test/install.sh | |
parent | 9cd69c2f3db7fd4b30d14d86be5fb5a3401054e5 (diff) |
Created runsc and docker integration tests.
Moved some of the docker image functions to testutil.go.
Test runsc commands create, start, stop, pause, and resume.
PiperOrigin-RevId: 204138452
Change-Id: Id00bc58d2ad230db5e9e905eed942187e68e7c7b
Diffstat (limited to 'runsc/test/install.sh')
-rwxr-xr-x | runsc/test/install.sh | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/runsc/test/install.sh b/runsc/test/install.sh new file mode 100755 index 000000000..c110d96f9 --- /dev/null +++ b/runsc/test/install.sh @@ -0,0 +1,92 @@ +#!/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}" + + declare -r args="--debug-log-dir "${logdir}" --debug --strace --log-packets" + sudo -n "${dockercfg}" runtime-add "${runtime}" "${runsc}" ${args} + sudo -n "${dockercfg}" runtime-add "${runtime}"-kvm "${runsc}" --platform=kvm ${args} + sudo -n "${dockercfg}" runtime-add "${runtime}"-hostnet "${runsc}" --network=host ${args} + sudo -n "${dockercfg}" runtime-add "${runtime}"-overlay "${runsc}" --overlay ${args} + +else + sudo -n "${dockercfg}" runtime-rm "${runtime}" + sudo -n "${dockercfg}" runtime-rm "${runtime}"-kvm + sudo -n "${dockercfg}" runtime-rm "${runtime}"-hostnet + sudo -n "${dockercfg}" runtime-rm "${runtime}"-overlay +fi + +echo "Restarting docker service..." +sudo -n /etc/init.d/docker restart |