aboutsummaryrefslogtreecommitdiff
path: root/automated/linux/igt/igt-test.sh
blob: 975818264d4386055ffa07243d20be81874dd17d (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
#!/bin/bash

set -ex

RESULT_LOG="result.log"
DUMP_FRAMES_DIR="/root/dump-frames"

export IGT_TEST_ROOT="/usr/libexec/igt-gpu-tools"

generate_igtrc() {
cd "$HOME" || exit 1

mkdir -p "${DUMP_FRAMES_DIR}"

cat > ".igtrc" <<-EOF
[Common]
FrameDumpPath=${DUMP_FRAMES_DIR}
[DUT]
SuspendResumeDelay=15
[Chamelium]
URL=http://${CHAMELIUM_IP}:9992
[Chamelium:${HDMI_DEV_NAME}]
ChameliumPortID=3
EOF

cd - > /dev/null 2>&1 || exit 1
}

generate_chamelium_testlist() {
    echo "Generate Chamelium test list"
    TEST_LIST=igt-chamelium-test.testlist
    # Skip Display Port/VGA and Suspend/Hibrnate related tests
    ${TEST_RUNNER} --list-all | grep chamelium | grep -v "dp\|vga\|suspend\|hibernate" | tee "${IGT_DIR}"/"${TEST_LIST}"
}

usage() {
    echo "usage: $0 -d <igt-gpu-tools dir> -t <test-list> [-c <chamelium ip address>] [-h <HDMI device name>]" 1>&2
    exit 1
}

while getopts ":c:h:d:t:" opt; do
    case "${opt}" in
        c) CHAMELIUM_IP="${OPTARG}" ;;
        h) HDMI_DEV_NAME="${OPTARG}" ;;
        d) IGT_DIR="${OPTARG}" ;;
        t) TEST_LIST="${OPTARG}" ;;
        *) usage ;;
    esac
done

TEST_RUNNER="${IGT_DIR}/runner/igt_runner"

if [ -z "${IGT_DIR}" ] || [ -z "${TEST_LIST}" ]; then
    usage
fi

if [ ! -f "${TEST_RUNNER}" ]; then
    echo "Can not find ${TEST_RUNNER}"
    exit 1
fi

if [ "${TEST_LIST}" = "CHAMELIUM" ]; then
    if [ -z "${CHAMELIUM_IP}" ] || [ -z "${HDMI_DEV_NAME}" ]; then
        usage
    fi
fi

if [ "${TEST_LIST}" == "CHAMELIUM" ]; then
    echo "Going to run igt Chamelium test"
    if [ ! -f "$HOME/.igtrc" ]; then
        echo "Generate ~/.igtrc"
        generate_igtrc
    fi
    generate_chamelium_testlist
else
    echo "Going to run ${TEST_LIST}"
    cp "${TEST_LIST}" "${IGT_DIR}"
fi

# Run tests
echo "Run ${TEST_LIST}"
${TEST_RUNNER} --dmesg-warn-level 0 --test-list "${IGT_DIR}"/"${TEST_LIST}" --log-level verbose "${IGT_DIR}"/results | tee tmp.log
grep -e '^pass' -e '^skip' -e '^fail' tmp.log|awk -F':\ ' '{print $2" "$1}' > ${RESULT_LOG}