summaryrefslogtreecommitdiff
path: root/automated/lib/sh-test-lib
blob: fca1153726e240f04d0c381e75b6b584f8cc4a8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/sh

LANG=C
export LANG

error_msg() {
    local msg="$1"
    [ -z "${msg}" ] && msg="Unknown error"
    printf "ERROR: %s\n" "${msg}" >&2
    exit 1
}

warn_msg() {
    local msg="$1"
    [ -z "${msg}" ] && msg="Unknown error"
    printf "WARNING: %s\n" "${msg}" >&2
}

info_msg() {
    local msg="$1"
    [ -z "${msg}" ] && msg="Unknown info"
    printf "INFO: %s\n" "${msg}" >&1
}

check_root() {
    if [ "$(id -ru)" -eq 0 ]; then
        return 0
    else
        return 1
    fi
}

exit_on_fail() {
    local exit_code="$?"
    [ "$#" -ne 1 ] && error_msg "Usage: exit_on_fail test"
    local test="$1"

    if [ "${exit_code}" -ne 0 ]; then
        echo "${test} fail" | tee -a "${RESULT_FILE}"
        exit 1
    fi
}

check_return() {
    local exit_code="$?"
    [ "$#" -ne 1 ] && error_msg "Usage: check_return test"
    local test="$1"

    if [ "${exit_code}" -ne 0 ]; then
        echo "${test} fail" | tee -a "${RESULT_FILE}"
        return "${exit_code}"
    else
        echo "${test} pass" | tee -a "${RESULT_FILE}"
        return 0
    fi
}

add_metric() {
    if [ "$#" -ne 4 ]; then
        warn_msg "The number of parameters less then 4"
        error_msg "Usage: add_metric test result measurement units"
    fi
    local test="$1"
    local result="$2"
    local measurement="$3"
    local units="$4"

    echo "${test} ${result} ${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"
    [ -z "${pkgs}" ] && error_msg "Usage: install_deps pkgs"
    # skip_install parmater is optional.
    local skip_install="$2"

    if [ "${skip_install}" = "True" ] || [ "${skip_install}" = "true" ]; then
        info_msg "install_deps skipped"
    else
        info_msg "Installing ${pkgs}"
        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
    fi
}