aboutsummaryrefslogtreecommitdiff
path: root/automated/linux/igt
diff options
context:
space:
mode:
authorArthur <arthur.she@linaro.org>2019-12-17 22:18:01 -0800
committerArthur <arthur.she@linaro.org>2019-12-17 22:18:01 -0800
commitf3c15f14833fc2f84828053512b876533341bac7 (patch)
treed3531b6595ec1d58c92b6909ccde601bd24efad2 /automated/linux/igt
parenta7055693ceabf5fba795eaa45ddf2277eef11e30 (diff)
igt: Add igt-test.sh to run a given test list or Chamelium test
Diffstat (limited to 'automated/linux/igt')
-rw-r--r--automated/linux/igt/igt-chamelium-test.yaml2
-rwxr-xr-xautomated/linux/igt/igt-test.sh85
-rw-r--r--automated/linux/igt/igt-test.yaml45
3 files changed, 131 insertions, 1 deletions
diff --git a/automated/linux/igt/igt-chamelium-test.yaml b/automated/linux/igt/igt-chamelium-test.yaml
index 4211e21..3b77e92 100644
--- a/automated/linux/igt/igt-chamelium-test.yaml
+++ b/automated/linux/igt/igt-chamelium-test.yaml
@@ -36,7 +36,7 @@ run:
- echo "**********************************************";
- echo "************ Dump IGT test result ************";
- echo "**********************************************";
- - bzcat /usr/share/igt-gpu-tools/results/results.json.bz2 | python print-test-result.py
+ - bzcat ${IGT_DIR}/results/results.json.bz2 | python print-test-result.py
- if [ -n "${ARTIFACTORIAL_TOKEN}" -a -n "${ARTIFACTORIAL_URL}" ]; then
- UPLOAD_TOOL="../../utils/upload-to-artifactorial.sh"
- if [ -d "/root/dump-frames/" -a -n "`ls /root/dump-frames/`" ]; then echo "Got error frames.." ; tar -C /root -zcf dump-frames.tar.gz dump-frames/;
diff --git a/automated/linux/igt/igt-test.sh b/automated/linux/igt/igt-test.sh
new file mode 100755
index 0000000..bce7f6c
--- /dev/null
+++ b/automated/linux/igt/igt-test.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+RESULT_LOG="result.log"
+DUMP_FRAMES_DIR="/root/dump-frames"
+
+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 test list"
+ TEST_LIST=igt-chamelium-test.testlist
+ # Skip Display Port/VGA and Suspend/Hibrnate related tests
+ ${TEST_SCRIPT} -l | 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
+
+if [ -z "${IGT_DIR}" ] || [ -z "${TEST_LIST}" ]; then
+ usage
+fi
+
+if [ "${TEST_LIST}" == "CHAMELIUM" ]; then
+ if [ -z "${CHAMELIUM_IP}" ] || [ -z "${HDMI_DEV_NAME}" ]; then
+ usage
+ fi
+fi
+
+TEST_SCRIPT="${IGT_DIR}/scripts/run-tests.sh"
+
+export IGT_TEST_ROOT="/usr/libexec/igt-gpu-tools"
+
+# new run-tests.sh needs '-p' to run the tests with piglit
+${TEST_SCRIPT} --help | grep -q '\-p' && TEST_SCRIPT="${TEST_SCRIPT} -p"
+
+if [ "${TEST_LIST}" == "CHAMELIUM" ]; then
+ # generate ~/.igtrc
+ if [ ! -f "$HOME/.igtrc" ]; then
+ echo "Generate ~/.igtrc"
+ generate_igtrc
+ fi
+ generate_chamelium_testlist
+else
+ cp ${TEST_LIST} ${IGT_DIR}
+fi
+
+# Download Piglit
+git config --global http.postBuffer 157286400
+if [ ! -d "${IGT_DIR}/piglit" ]; then
+ echo "Download Piglit.."
+ time ${TEST_SCRIPT} -d
+fi
+
+# Run tests
+echo "Run ${TEST_LIST}"
+${TEST_SCRIPT} -T "${IGT_DIR}"/"${TEST_LIST}" -v -s | tee tmp.log
+grep -e '^pass' -e '^skip' -e '^fail' tmp.log|awk -F':\ ' '{print $2" "$1}' > ${RESULT_LOG}
diff --git a/automated/linux/igt/igt-test.yaml b/automated/linux/igt/igt-test.yaml
new file mode 100644
index 0000000..bc54430
--- /dev/null
+++ b/automated/linux/igt/igt-test.yaml
@@ -0,0 +1,45 @@
+metadata:
+ format: Lava-Test Test Definition 1.0
+ name: igt-test
+ description: "Run igt-gpu-tools with a given test list"
+ maintainer:
+ - arthur.she@linaro.org
+ os:
+ - debian
+ - ubuntu
+ - openembedded
+ scope:
+ - functional
+ devices:
+ - dragonboard-410c
+ - x15
+
+params:
+ HDMI_DEV_NAME: "HDMI-A-1"
+ IGT_DIR: "/igt-gpu-tools"
+ # Chanelium HDMI related tests
+ TEST_LIST: "CHAMELIUM"
+ ARTIFACTORIAL_URL: ""
+ ARTIFACTORIAL_TOKEN: ""
+
+run:
+ steps:
+ - cd ./automated/linux/igt
+ - OPT="-d ${IGT_DIR} -t ${TEST_LIST}"
+ # ${CHAMELIUM_IP} is from LAVA device dictionary
+ - if [ -n "${CHAMELIUM_IP}" ]; then OPT="${OPT} -c ${CHAMELIUM_IP}"; fi
+ - if [ -n "${HDMI_DEV_NAME}" ]; then OPT="${OPT} -h ${HDMI_DEV_NAME}"; fi
+ - ./igt-test.sh ${OPT}
+ # Dump igt test result and upload artifact to Artifactorial
+ - ifconfig; pwd; ls -l
+ - echo "**********************************************";
+ - echo "************ Dump IGT test result ************";
+ - echo "**********************************************";
+ - bzcat ${IGT_DIR}/results/results.json.bz2 | python print-test-result.py
+ - if [ -n "${ARTIFACTORIAL_TOKEN}" -a -n "${ARTIFACTORIAL_URL}" ]; then
+ - UPLOAD_TOOL="../../utils/upload-to-artifactorial.sh"
+ - if [ -d "/root/dump-frames/" -a -n "`ls /root/dump-frames/`" ]; then echo "Got error frames.." ; tar -C /root -zcf dump-frames.tar.gz dump-frames/;
+ - echo "*********************************************";
+ - echo "************ Upload dump frames *************";
+ - echo "*********************************************";
+ - ${UPLOAD_TOOL} -a "dump-frames.tar.gz" -u "${ARTIFACTORIAL_URL}" -t "${ARTIFACTORIAL_TOKEN}"; fi; fi