#!/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 ] [-t ] [-r ] [-i ] [-u ] [-p ] [-d ]" 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 " test -z "${SSH_PASSWD}" && error_msg "Please set SSH_PASSWD with -p " 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|RESULT|UNITS|MEASUREMENT)/,""); print}' "${LOGFILE}" | tee -a "${RESULT_FILE}"