summaryrefslogtreecommitdiffhomepage
path: root/runsc/test/install.sh
diff options
context:
space:
mode:
authorJustine Olshan <justineolshan@google.com>2018-07-11 09:36:20 -0700
committerShentubot <shentubot@google.com>2018-07-11 09:37:28 -0700
commit81ae5f3df533d5e5990baaa105392f59e28d5730 (patch)
tree8a90d2fbca329391f2586b028cef7be7e14ae09f /runsc/test/install.sh
parent9cd69c2f3db7fd4b30d14d86be5fb5a3401054e5 (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-xrunsc/test/install.sh92
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