summaryrefslogtreecommitdiff
path: root/automated
diff options
context:
space:
mode:
authorChase Qi <chase.qi@linaro.org>2018-08-01 17:49:17 +0800
committerChase Qi <chase.qi@linaro.org>2018-08-08 16:15:34 +0800
commitd503f1a6620a6698cf311f9e4cd586b7a41b16b8 (patch)
tree81998a4280d29039d52f79f609c442072c8f1307 /automated
parenta95b615f548274d3cce7fe55a94ada760e19990b (diff)
linux: add support for test run with docker
With over-ssh* test case, test will be triggered over ssh. Change-Id: Icaa4b57324d0628ba771a36c2e4c0a606fa4788b Signed-off-by: Chase Qi <chase.qi@linaro.org>
Diffstat (limited to 'automated')
-rwxr-xr-xautomated/linux/dockerized-tests/over-ssh.sh69
-rw-r--r--automated/linux/dockerized-tests/over-ssh.yaml53
2 files changed, 122 insertions, 0 deletions
diff --git a/automated/linux/dockerized-tests/over-ssh.sh b/automated/linux/dockerized-tests/over-ssh.sh
new file mode 100755
index 0000000..f7f187f
--- /dev/null
+++ b/automated/linux/dockerized-tests/over-ssh.sh
@@ -0,0 +1,69 @@
+#!/bin/sh -ex
+# shellcheck disable=SC1090
+# shellcheck disable=SC2154
+# shellcheck disable=SC2034
+# shellcheck disable=SC2016
+
+TEST_DIR=$(dirname "$(realpath "$0")")
+OUTPUT="${TEST_DIR}/output"
+LOGFILE="${OUTPUT}/stdout.txt"
+RESULT_FILE="${OUTPUT}/result.txt"
+
+SKIP_INSTALL="false"
+TEST="automated/linux/smoke/smoke.yaml"
+TESTDEF_PARAMS=""
+TARGET_IP="lava-target-ip"
+DOCKER_IMG="linaro/testdef-arm64-debian-stretch:b6e5458"
+
+usage() {
+ echo "Usage: $0 [-s <skip_install>] [-t <test>] [-r <testdef_params>] [-i <target_ip>] [-u <ssh_user>] [-p <ssh_passwd>] [-d <docker_img>]" 1>&2
+ exit 1
+}
+
+while getopts "s:t:r:o:i:u:p:d:h" opt; do
+ case "$opt" in
+ s) SKIP_INSTALL="${OPTARG}" ;;
+ t) TEST="${OPTARG}" ;;
+ r) TESTDEF_PARAMS="${OPTARG}" ;;
+ i) TARGET_IP="${OPTARG}" ;;
+ u) SSH_USER="${OPTARG}" ;;
+ p) SSH_PASSWD="${OPTARG}" ;;
+ d) DOCKER_IMG="${OPTARG}" ;;
+ *) usage ;;
+ esac
+done
+. "${TEST_DIR}/../../lib/sh-test-lib"
+test -z "${SSH_USER}" && error_msg "Please set SSH_USER with -u <ssh_user>"
+test -z "${SSH_PASSWD}" && error_msg "Please set SSH_PASSWD with -p <ssh_passwd>"
+
+create_out_dir "${OUTPUT}"
+cd "${OUTPUT}"
+
+[ "${TARGET_IP}" = "lava-target-ip" ] && TARGET_IP="$(lava-target-ip)"
+ssh_cmd="sshpass -p ${SSH_PASSWD} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${SSH_USER}@${TARGET_IP}"
+
+install_deps sshpass "${SKIP_INSTALL}"
+# Assume docker pre-installed on test target.
+# Installation on remote ssh target isn't supported yet.
+eval "${ssh_cmd}" which docker | grep 'docker' || error_msg "docker not found on test target!"
+
+# When using ssh, to avoid 'x509: certificate has expired or is not yet valid',
+# set time to client's date, which more likely has ntp sync enabled.
+client_date="$(date +%Y%m%d)"
+echo "${SSH_PASSWD}" | eval "${ssh_cmd}" sudo -S date +%Y%m%d -s "${client_date}"
+
+# Trigger test run.
+if [ -z "${TESTDEF_PARAMS}" ]; then
+ cmd1='eval "${ssh_cmd}" docker run "${DOCKER_IMG}" test-runner -d "${TEST}"'
+else
+ cmd1='eval "${ssh_cmd}" docker run "${DOCKER_IMG}" test-runner -d "${TEST}" -r "${TESTDEF_PARAMS}"'
+fi
+pipe0_status "${cmd1}" 'tee -a "${LOGFILE}"'
+if [ "$?" != 0 ]; then
+ echo "docker-run fail" | tee -a "${RESULT_FILE}"
+ error_msg "Please check your docker image!
+ Here is an Dockerfile example: https://git.linaro.org/ci/dockerfiles.git/tree/stretch-arm64-testdef"
+fi
+
+# Parse test log.
+awk '/^<TEST_CASE_ID/ {gsub(/(<|>|=|TEST_CASE_ID|RESULT|UNITS|MEASUREMENT)/,""); print}' "${LOGFILE}" | tee -a "${RESULT_FILE}"
diff --git a/automated/linux/dockerized-tests/over-ssh.yaml b/automated/linux/dockerized-tests/over-ssh.yaml
new file mode 100644
index 0000000..729148c
--- /dev/null
+++ b/automated/linux/dockerized-tests/over-ssh.yaml
@@ -0,0 +1,53 @@
+metadata:
+ name: over-ssh
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Run tests from https://git.linaro.org/qa/test-definitions.git with
+ docker. Test run will be triggered over ssh"
+ maintainer:
+ - chase.qi@linaro.org
+ os:
+ - ubuntu
+ - debian
+ - centos
+ - fedora
+ - openembedded
+ devices:
+ - d03
+ - d05
+ - juno
+ - beaglebone-black
+ - hi6220-hikey
+ - apq8016-sbc
+ - mustang
+ - moonshot
+ - thunderX
+ - x15
+
+ scope:
+ - functional
+ - performance
+
+params:
+ # Skip docker installation or not.
+ SKIP_INSTALL: "false"
+ # Relative patch to test definition file
+ # Example: automated/linux/linpack/linpack.yaml
+ TEST: "automated/linux/smoke/smoke.yaml"
+ # Usage: KEY1=VALUE1 KEY2=VALUE2
+ # Example for smoke test: 'TESTS="pwd, lsb_release -a, uname -a, ip a, lscpu, vmstat, lsblk"'
+ TESTDEF_PARAMS: ""
+ TARGET_IP: "lava-target-ip"
+ SSH_USER: ""
+ SSH_PASSWD: ""
+ # Dockerfile example: https://git.linaro.org/ci/dockerfiles.git/tree/stretch-arm64-testdef
+ DOCKER_IMG: "linaro/testdef-arm64-debian-stretch:b6e5458"
+
+run:
+ steps:
+ - cd automated/linux/dockerized-tests
+ - if [ -z "${TESTDEF_PARAMS}" ]; then
+ - ./over-ssh.sh -s "${SKIP_INSTALL}" -t "${TEST}" -i "${TARGET_IP}" -u "${SSH_USER}" -p "${SSH_PASSWD}" -d "${DOCKER_IMG}"
+ - else
+ - ./over-ssh.sh -s "${SKIP_INSTALL}" -t "${TEST}" -i "${TARGET_IP}" -u "${SSH_USER}" -p "${SSH_PASSWD}" -d "${DOCKER_IMG}" -r "${TESTDEF_PARAMS}"
+ - fi
+ - ../../utils/send-to-lava.sh ./output/result.txt