#!/bin/sh # # Shared shell library for test management # # Copyright (C) 2010 - 2014, Linaro Limited. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Author: Ricardo Salveti # Author: Botao Sun # Maintainer: Chase Qi error_msg() { local msg="$1" test -z "${msg}" && msg="Unknown error" echo "ERROR: ${msg}" >&2 exit 1 } warn_msg() { local msg="$1" test -z "${msg}" && msg="Unknown error" printf "WARNING: %s\n\n" "${msg}" >&2 } info_msg() { local msg="$1" test -z "${msg}" && msg="Unknown info" printf "INFO: %s\n\n" "${msg}" >&1 } check_return_fail() { if [ $? -ne 0 ]; then fail_test "$1" return 0 else return 1 fi } fail_test() { local reason="$1" echo "${test}: fail - ${reason}" } pass_test() { echo "${test}: pass" } check_root() { if [ "$(id -ru)" -eq 0 ]; then return 0 else return 1 fi } check_return() { local exit_code="$?" local test="$1" test -z "${test}" && warn_msg "Test name is empty" if [ "${exit_code}" -ne 0 ]; then echo "${test} fail" | tee -a "${RESULT_FILE}" else echo "${test} pass" | tee -a "${RESULT_FILE}" fi } add_metric() { local test="$1" local measurement="$2" local units="$3" test -z "${test}" && warn_msg "Test name is empty" test -z "${measurement}" && warn_msg "Test measurement is empty" test -z "${units}" && warn_msg "Test units is empty" echo "${test} pass ${measurement} ${units}" | tee -a "${RESULT_FILE}" } dist_name() { if [ -x /usr/bin/lsb_release ]; then dist="$(lsb_release -si)" elif [ -f /etc/lsb-release ]; then . /etc/lsb-release dist="${DISTRIB_ID}" elif [ -f /etc/debian_version ]; then dist="Debian" elif [ -f /etc/fedora-release ]; then dist="Fedora" elif [ -f /etc/centos-release ]; then dist="CentOS" else dist="Unknown" warn_msg "Unsupported distro: cannot determine distribution name" fi } install_deps() { local pkgs="$1" dist_name case "${dist}" in Debian|Ubuntu) apt-get update apt-get install -y -q ${pkgs} ;; CentOS) yum -e 0 -y install ${pkgs} ;; Fedora) dnf -e 0 -y install ${pkgs} ;; Unknown) warn_msg "Unsupported distro: package install skipped" ;; esac }