diff options
author | Chase Qi <chase.qi@linaro.org> | 2018-08-01 17:49:17 +0800 |
---|---|---|
committer | Chase Qi <chase.qi@linaro.org> | 2018-08-08 16:15:34 +0800 |
commit | d503f1a6620a6698cf311f9e4cd586b7a41b16b8 (patch) | |
tree | 81998a4280d29039d52f79f609c442072c8f1307 /automated | |
parent | a95b615f548274d3cce7fe55a94ada760e19990b (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-x | automated/linux/dockerized-tests/over-ssh.sh | 69 | ||||
-rw-r--r-- | automated/linux/dockerized-tests/over-ssh.yaml | 53 |
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 |