summaryrefslogtreecommitdiff
path: root/automated/lib/sh-test-lib
blob: 15ef4e0bbe65138ee2ebef596bea1faaa472ddfe (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
117
118
119
120
121
#!/bin/sh

LANG=C
export LANG

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

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

info_msg() {
    local msg="$1"
    test -z "${msg}" && msg="Unknown info"
    printf "INFO: %s\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}"
        return "${exit_code}"
    else
        echo "${test} pass" | tee -a "${RESULT_FILE}"
        return 0
    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"
    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
}