[igt-dev] [PATCH v2 12/12] ci: Add job for testing changes to tests in Qualcomm devices

Tomeu Vizoso tomeu.vizoso at collabora.com
Thu Mar 10 07:38:00 UTC 2022


Will allow for more efortless testing of changes to tests that could
affect Qualcomm devices.

With these changes, it should be fairly trivial to add testing on other
KMS and GPU drivers.

v2: Update expectations after 9f32d552afd7 ("tests/kms_setmode: Use dynamic subtests")

Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
---
 .gitlab-ci.yml     | 49 +++++++++++++++++++++++
 ci/msm_results.txt | 97 ++++++++++++++++++++++++++++++++++++++++++++++
 ci/msm_tests.txt   | 14 +++++++
 ci/run_tests.sh    | 87 +++++++++++++++++++++++++++++++++++++++++
 4 files changed, 247 insertions(+)
 create mode 100644 ci/msm_results.txt
 create mode 100644 ci/msm_tests.txt
 create mode 100755 ci/run_tests.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 302043a61bf7..0437c8ec53c0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -329,6 +329,55 @@ default:
       test -e "${CI_JOB_JWT_FILE}" &&
       export CI_JOB_JWT="$(<${CI_JOB_JWT_FILE})" &&
       rm "${CI_JOB_JWT_FILE}"
+
+.lava-test:arm64:
+  image: $CI_REGISTRY/$CI_PROJECT_PATH/build-debian:commit-$CI_COMMIT_SHA
+  variables:
+    BASE_SYSTEM_HOST_PREFIX: "${MINIO_HOST}/mesa-lava"
+    FDO_UPSTREAM_REPO: gfx-ci/rootfs
+    ARCH: arm64
+    # Tag corresponding to artifacts from https://gitlab.freedesktop.org/gfx-ci/rootfs/
+    KERNEL_ROOTFS_TAG: "2022-03-08-igt-deps--2022-03-08-bzip2--290b79e0e78eab67a83766f4e9691be554fc4afd"
+    BASE_SYSTEM_MAINLINE_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${FDO_UPSTREAM_REPO}/${KERNEL_ROOTFS_TAG}/${ARCH}"
+    JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
+    JOB_RESULTS_PATH: "${JOB_ARTIFACTS_BASE}/results.tar.gz"
+    MINIO_ARTIFACT_NAME: igt-arm64
+    BUILD_PATH: "${PIPELINE_ARTIFACTS_BASE}/${MINIO_ARTIFACT_NAME}.tar.gz"
+    JOB_ROOTFS_OVERLAY_PATH: "${JOB_ARTIFACTS_BASE}/job-rootfs-overlay.tar.gz"
+    KERNEL_IMAGE_NAME: Image
+    KERNEL_IMAGE_TYPE: "image"
+    VISIBILITY_GROUP: "Collabora+fdo"
+    HWCI_TEST_SCRIPT: "/install/ci/run_tests.sh"
+  dependencies:
+    - build:tests-debian-meson-arm64
+  needs:
+    - build-containers:build-debian
+    - build:tests-debian-meson-arm64
+  script:
+    - ./ci/lava/lava-submit.sh
+  artifacts:
+    name: "igt_${CI_JOB_NAME}"
+    when: always
+    paths:
+      - results/
+  tags:
+    - $RUNNER_TAG
+  after_script:
+    - wget -q "https://${JOB_RESULTS_PATH}" -O- | tar -xz
+
+test:msm:
+  extends:
+    - .lava-test:arm64
+  stage: test
+  variables:
+    DEVICE_TYPE: sc7180-trogdor-lazor-limozeen
+    DTB: sc7180-trogdor-lazor-limozeen-nots
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+    IGT_FORCE_DRIVER: msm
+  tags:
+    - mesa-ci-x86-64-lava-rk3399-gru-kevin    # why it doesn't work!? mesa-ci-x86-64-lava-sc7180-trogdor-lazor-limozeen
+
 ################### DEPLOY #########################
 
 pages:
diff --git a/ci/msm_results.txt b/ci/msm_results.txt
new file mode 100644
index 000000000000..7e8cda489a49
--- /dev/null
+++ b/ci/msm_results.txt
@@ -0,0 +1,97 @@
+core_auth:getclient-simple pass
+core_auth:getclient-master-drop pass
+core_auth:basic-auth pass
+core_auth:many-magics pass
+core_getclient pass
+core_getstats pass
+core_getversion pass
+core_setmaster_vs_auth pass
+drm_read:invalid-buffer pass
+drm_read:fault-buffer pass
+drm_read:empty-block pass
+drm_read:empty-nonblock pass
+drm_read:short-buffer-block pass
+drm_read:short-buffer-nonblock pass
+drm_read:short-buffer-wakeup pass
+kms_addfb_basic:unused-handle pass
+kms_addfb_basic:unused-pitches pass
+kms_addfb_basic:unused-offsets pass
+kms_addfb_basic:unused-modifier pass
+kms_addfb_basic:clobberred-modifier skip
+kms_addfb_basic:invalid-smem-bo-on-discrete skip
+kms_addfb_basic:legacy-format pass
+kms_addfb_basic:no-handle pass
+kms_addfb_basic:basic pass
+kms_addfb_basic:bad-pitch-0 pass
+kms_addfb_basic:bad-pitch-32 pass
+kms_addfb_basic:bad-pitch-63 pass
+kms_addfb_basic:bad-pitch-128 pass
+kms_addfb_basic:bad-pitch-256 pass
+kms_addfb_basic:bad-pitch-1024 pass
+kms_addfb_basic:bad-pitch-999 pass
+kms_addfb_basic:bad-pitch-65536 pass
+kms_addfb_basic:size-max pass
+kms_addfb_basic:too-wide pass
+kms_addfb_basic:too-high pass
+kms_addfb_basic:bo-too-small pass
+kms_addfb_basic:small-bo pass
+kms_addfb_basic:bo-too-small-due-to-tiling skip
+kms_addfb_basic:addfb25-modifier-no-flag pass
+kms_addfb_basic:addfb25-bad-modifier pass
+kms_addfb_basic:addfb25-x-tiled-mismatch-legacy skip
+kms_addfb_basic:addfb25-x-tiled-legacy skip
+kms_addfb_basic:addfb25-framebuffer-vs-set-tiling skip
+kms_addfb_basic:addfb25-y-tiled-legacy skip
+kms_addfb_basic:addfb25-yf-tiled-legacy skip
+kms_addfb_basic:addfb25-y-tiled-small-legacy skip
+kms_addfb_basic:basic-x-tiled-legacy skip
+kms_addfb_basic:framebuffer-vs-set-tiling skip
+kms_addfb_basic:tile-pitch-mismatch skip
+kms_addfb_basic:basic-y-tiled-legacy skip
+kms_addfb_basic:invalid-get-prop-any pass
+kms_addfb_basic:invalid-get-prop pass
+kms_addfb_basic:invalid-set-prop-any pass
+kms_addfb_basic:invalid-set-prop pass
+kms_addfb_basic:master-rmfb pass
+kms_atomic:plane-overlay-legacy skip
+kms_atomic:plane-primary-legacy pass
+kms_atomic:plane-primary-overlay-mutable-zpos skip
+kms_atomic:plane-immutable-zpos pass
+kms_atomic:test-only fail
+kms_atomic:plane-cursor-legacy pass
+kms_atomic:plane-invalid-params pass
+kms_atomic:plane-invalid-params-fence skip
+kms_atomic:crtc-invalid-params pass
+kms_atomic:crtc-invalid-params-fence skip
+kms_atomic:atomic-invalid-params pass
+kms_atomic:atomic_plane_damage pass
+kms_flip_event_leak fail
+kms_prop_blob:basic pass
+kms_prop_blob:blob-prop-core pass
+kms_prop_blob:blob-prop-validate pass
+kms_prop_blob:blob-prop-lifetime pass
+kms_prop_blob:blob-multiple pass
+kms_prop_blob:invalid-get-prop-any pass
+kms_prop_blob:invalid-get-prop pass
+kms_prop_blob:invalid-set-prop-any pass
+kms_prop_blob:invalid-set-prop pass
+kms_setmode:basic pass
+kms_setmode:basic-clone-single-crtc skip
+kms_setmode:invalid-clone-single-crtc skip
+kms_setmode:invalid-clone-exclusive-crtc skip
+kms_setmode:clone-exclusive-crtc skip
+kms_setmode:invalid-clone-single-crtc-stealing skip
+msm_mapping:ring fail
+msm_mapping:sqefw fail
+msm_mapping:shadow skip
+msm_recovery:hangcheck skip
+msm_recovery:gpu-fault pass
+msm_recovery:iova-fault pass
+msm_submit:empty-submit pass
+msm_submit:invalid-queue-submit pass
+msm_submit:invalid-flags-submit pass
+msm_submit:invalid-in-fence-submit pass
+msm_submit:invalid-duplicate-bo-submit pass
+msm_submit:invalid-cmd-idx-submit pass
+msm_submit:invalid-cmd-type-submit pass
+msm_submit:valid-submit pass
diff --git a/ci/msm_tests.txt b/ci/msm_tests.txt
new file mode 100644
index 000000000000..857dc895426e
--- /dev/null
+++ b/ci/msm_tests.txt
@@ -0,0 +1,14 @@
+core_auth
+core_getclient
+core_getstats
+core_getversion
+core_setmaster_vs_auth
+drm_read
+kms_addfb_basic
+kms_atomic
+kms_flip_event_leak
+kms_prop_blob
+kms_setmode
+msm_mapping
+msm_recovery
+msm_submit
diff --git a/ci/run_tests.sh b/ci/run_tests.sh
new file mode 100755
index 000000000000..8ba2b1141d27
--- /dev/null
+++ b/ci/run_tests.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+# Copyright (C) 2019,2022 Collabora Limited
+# Author: Guillaume Tucker <guillaume.tucker at collabora.com>
+# Author: Tomeu Vizoso <tomeu.vizoso at collabora.com>
+#
+# This script is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# This library 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 Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+PATH=$PATH:${CI_PROJECT_DIR}/build/tests
+
+# See lib/igt_core.h
+IGT_EXIT_SUCCESS=0
+IGT_EXIT_INVALID=79
+IGT_EXIT_FAILURE=98
+IGT_EXIT_SKIP=77
+
+# Check the test case exit status and report the result
+test_case_status()
+{
+    name="$1"
+    stat="$2"
+
+    case $stat in
+        $IGT_EXIT_SUCCESS)
+            res="pass"
+            ;;
+        $IGT_EXIT_FAILURE)
+            res="fail"
+            ;;
+        $IGT_EXIT_SKIP)
+            res="skip"
+            ;;
+        $IGT_EXIT_INVALID)
+            echo "WARNING: invalid subtest $t/$sub"
+            res="skip"
+            ;;
+        *)
+            echo "WARNING: unhandled exit status: $stat"
+            res="skip"
+            ;;
+    esac
+
+    echo "$name" "$res" >> /results/igt.txt
+}
+
+mkdir -p /results/
+
+oldpath=`pwd`
+cd ${CI_PROJECT_DIR}/build/
+
+tests=`cat ./ci/${IGT_FORCE_DRIVER}_tests.txt`
+for cmd in $tests; do
+    subtests=$($cmd --list-subtests)
+
+    if [ -n "$subtests" ]; then
+        for sub in $subtests; do
+            $cmd --run-subtest $sub
+            test_case_status $cmd:$sub $?
+        done
+    else
+        $cmd
+        test_case_status $cmd $?
+    fi
+done
+
+if diff -q ./ci/msm_results.txt /results/igt.txt; then
+    cd $oldpath
+    exit 0
+fi
+
+echo Unexpected change in results:
+diff -u ./ci/msm_results.txt /results/igt.txt
+cd $oldpath
+exit 1
+
-- 
2.31.1



More information about the igt-dev mailing list