gitlab-ci: Replay traces on lava devices
authorRohan Garg <rohan.garg@collabora.com>
Tue, 28 Jan 2020 14:19:53 +0000 (15:19 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 21 Jul 2020 09:22:18 +0000 (09:22 +0000)
Submit lava jobs to replay traces on Veyron (Mali T760) and Kevin (Mali
T860) boards.

Signed-off-by: Rohan Garg <rohan.garg@collabora.com>
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-By: Rohan Garg <rohan.garg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5472>

.gitlab-ci.yml
.gitlab-ci/container/arm_build.sh
.gitlab-ci/generate_lava.py
.gitlab-ci/lava-gitlab-ci.yml
.gitlab-ci/lava-tracie.yml.jinja2 [new file with mode: 0644]
.gitlab-ci/prepare-artifacts.sh
.gitlab-ci/traces.yml

index 498e1fd05898cf01affee48912ac6996b81ce514..d407b388b245aa33148276e96674fb246914fb36 100644 (file)
@@ -321,7 +321,7 @@ arm_build:
     - .fdo.container-build@debian@arm64v8
     - .container
   variables:
-    FDO_DISTRIBUTION_TAG: &arm_build "2020-07-20-jflags"
+    FDO_DISTRIBUTION_TAG: &arm_build "2020-07-21-tracie"
 
 .use-arm_build:
   variables:
index 706c21314183f2a7996fec03ccd5b63a63fce9bb..56ad78d1775eddf6f85c5e2fe239c263a1041674 100644 (file)
@@ -30,6 +30,8 @@ apt-get -y install \
        pkg-config \
        python \
        python3-mako \
+       python3-pil \
+       python3-requests \
        python3-pip \
        python3-setuptools \
        unzip \
index 4021f66b0c552a3ae943a81ce9ff582d7704ab24..61da42877ad8e135dac0ef7c2796b6bc354025f9 100755 (executable)
@@ -20,6 +20,7 @@ parser.add_argument("--env-vars", nargs='?', default="")
 parser.add_argument("--deqp-version")
 parser.add_argument("--ci-node-index")
 parser.add_argument("--ci-node-total")
+parser.add_argument("--job-type")
 args = parser.parse_args()
 
 env = Environment(loader = FileSystemLoader(os.path.dirname(args.template)), trim_blocks=True, lstrip_blocks=True)
@@ -44,7 +45,7 @@ values['deqp_version'] = args.deqp_version
 # time from the network after boot.
 values['date'] = datetime.datetime.now().strftime("%Y%m%d %H%M")
 
-f = open('lava-deqp.yml', "w")
+f = open(os.path.splitext(os.path.basename(args.template))[0], "w")
 f.write(template.render(values))
 f.close()
 
index c1c2352fc1c2109b54fcdab826792710ab6f0d1d..dbbf1ea7c0965d7707c5260e04a81288fa3c771c 100644 (file)
@@ -1,5 +1,5 @@
 variables:
-  DISTRIBUTION_TAG: "2020-07-10"
+  DISTRIBUTION_TAG: "2020-07-18"
 
 .kernel+rootfs:
   stage: container-2
@@ -46,7 +46,7 @@ kernel+rootfs_armhf:
       fi
     - >
       artifacts/generate_lava.py \
-        --template artifacts/lava-deqp.yml.jinja2 \
+        --template artifacts/lava-${TEST_SUITE}.yml.jinja2 \
         --pipeline-info "$CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
         --base-artifacts-url ${ARTIFACTS_URL} \
         --mesa-url ${MESA_URL} \
@@ -60,13 +60,13 @@ kernel+rootfs_armhf:
         --lava-tags "${LAVA_TAGS}" \
         --ci-node-index "${CI_NODE_INDEX}" \
         --ci-node-total "${CI_NODE_TOTAL}"
-    - lava_job_id=`lavacli jobs submit lava-deqp.yml` || lavacli jobs submit lava-deqp.yml
+    - lava_job_id=`lavacli jobs submit lava-${TEST_SUITE}.yml` || lavacli jobs submit lava-${TEST_SUITE}.yml
     - echo $lava_job_id
     - rm -rf artifacts/*
-    - cp lava-deqp.yml artifacts/.
-    - lavacli jobs logs $lava_job_id | tee artifacts/lava-deqp-$lava_job_id.log
+    - cp lava-${TEST_SUITE}.yml artifacts/.
+    - lavacli jobs logs $lava_job_id | tee artifacts/lava-${TEST_SUITE}-$lava_job_id.log
     - lavacli jobs show $lava_job_id
-    - result=`lavacli results $lava_job_id 0_deqp deqp | head -1`
+    - result=`lavacli results $lava_job_id 0_${TEST_SUITE} ${TEST_SUITE} | head -1`
     - echo $result
     - '[[ "$result" == "pass" ]]'
   artifacts:
@@ -81,6 +81,7 @@ kernel+rootfs_armhf:
     KERNEL_IMAGE_NAME: zImage
     KERNEL_IMAGE_TYPE: "type:\ zimage"
     BOOT_METHOD: u-boot
+    TEST_SUITE: "deqp"
   extends:
     - .lava-test
     - .use-arm_build
@@ -94,13 +95,28 @@ kernel+rootfs_armhf:
     KERNEL_IMAGE_NAME: Image
     KERNEL_IMAGE_TYPE: "type:\ image"
     BOOT_METHOD: u-boot
+    TEST_SUITE: "deqp"
   extends:
     - .lava-test
     - .use-arm_build
+  dependencies:
+    - meson-arm64
   needs:
-    - kernel+rootfs_arm64
+    - arm_build
     - meson-arm64
 
+.lava-traces:armhf:
+  variables:
+    TEST_SUITE: "tracie"
+  extends:
+    - .lava-test:armhf
+
+.lava-traces:arm64:
+  variables:
+    TEST_SUITE: "tracie"
+  extends:
+    - .lava-test:arm64
+
 panfrost-t720-gles2:arm64:
   extends:
     - .lava-test:arm64
@@ -125,34 +141,53 @@ panfrost-t760-gles2:armhf:
   tags:
     - mesa-ci-aarch64-lava-collabora
 
-panfrost-t860-gles2:arm64:
+panfrost-t760-traces:armhf:
   extends:
-    - .lava-test:arm64
+    - .lava-traces:armhf
     - .panfrost-rules
   variables:
-    DEVICE_TYPE: rk3399-gru-kevin
-    GPU_VERSION: panfrost-t860
+    DEVICE_TYPE: rk3288-veyron-jaq
+    GPU_VERSION: panfrost-t760
     BOOT_METHOD: depthcharge
     KERNEL_IMAGE_TYPE: ""
-    ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860"
+    ENV_VARS: "PAN_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=310"
   tags:
     - mesa-ci-aarch64-lava-collabora
 
-panfrost-t860-gles3:arm64:
-  parallel: 2
+.lava-rk3399-gru-kevin:
   extends:
-    - .lava-test:arm64
     - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3399-gru-kevin
     GPU_VERSION: panfrost-t860
     BOOT_METHOD: depthcharge
     KERNEL_IMAGE_TYPE: ""
-    DEQP_VERSION: gles3
-    ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860"
   tags:
     - mesa-ci-aarch64-lava-collabora
 
+panfrost-t860-gles2:arm64:
+  extends:
+    - .lava-test:arm64
+    - .lava-rk3399-gru-kevin
+  variables:
+    ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860"
+
+panfrost-t860-gles3:arm64:
+  parallel: 2
+  extends:
+    - .lava-test:arm64
+    - .lava-rk3399-gru-kevin
+  variables:
+    DEQP_VERSION: gles3
+    ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860"
+
+panfrost-t860-traces:arm64:
+  extends:
+    - .lava-traces:arm64
+    - .lava-rk3399-gru-kevin
+  variables:
+    ENV_VARS: "PAN_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=310"
+
 .panfrost-t820-gles2:arm64:
   extends:
     - .lava-test:arm64
diff --git a/.gitlab-ci/lava-tracie.yml.jinja2 b/.gitlab-ci/lava-tracie.yml.jinja2
new file mode 100644 (file)
index 0000000..f8b6bcb
--- /dev/null
@@ -0,0 +1,98 @@
+job_name: mesa-tracie-{{ gpu_version }} {{ pipeline_info }}
+device_type: {{ device_type }}
+timeouts:
+  job:
+    minutes: 40
+  action:
+   minutes: 10
+  actions:
+    power-off:
+      seconds: 30
+priority: 75
+visibility: public
+{% if tags %}
+{% set lavatags = tags.split(',') %}
+tags:
+{% for tag in lavatags %}
+  - {{ tag }}
+{% endfor %}
+{% endif %}
+actions:
+- deploy:
+    timeout:
+      minutes: 10
+    to: tftp
+    kernel:
+      url: {{ base_artifacts_url }}/{{ kernel_image_name }}
+{% if kernel_image_type %}
+      {{ kernel_image_type }}
+{% endif %}
+    ramdisk:
+      url: {{ base_artifacts_url }}/lava-rootfs.cpio.gz
+      compression: gz
+    dtb:
+      url: {{ base_artifacts_url }}/{{ device_type }}.dtb
+    os: oe
+- boot:
+    timeout:
+      minutes: 5
+    method: {{ boot_method }}
+{% if boot_method == "fastboot" %}
+{#
+   For fastboot, LAVA doesn't know how to unpack the rootfs/apply overlay/repack,
+   so we transfer the overlay over the network after boot.
+#}
+    transfer_overlay:
+      download_command: wget -S --progress=dot:giga
+      unpack_command: tar -C / -xzf
+{% else %}
+    commands: ramdisk
+{% endif %}
+    prompts:
+      - 'lava-shell:'
+- test:
+    timeout:
+      minutes: 60
+    definitions:
+    - repository:
+        metadata:
+          format: Lava-Test Test Definition 1.0
+          name: tracie
+          description: "Mesa tracie test plan"
+          os:
+          - oe
+          scope:
+          - functional
+        run:
+          steps:
+          - mount -t proc none /proc
+          - mount -t sysfs none /sys
+          - mount -t devtmpfs none /dev || echo possibly already mounted
+          - mkdir -p /dev/pts
+          - mount -t devpts devpts /dev/pts
+          - echo "nameserver 8.8.8.8" > /etc/resolv.conf
+          - date "+%Y%m%d %H%M" -s "{{ date }}"
+
+
+{% if env_vars %}
+          - export {{ env_vars }}
+{% endif %}
+          # tracie-runner.sh assumes some stuff is in pwd
+          - cd /
+
+          - wget -S --progress=dot:giga -O- {{ mesa_url }} | tar -xz
+
+          - export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
+          - export LIBGL_DRIVERS_PATH=`pwd`/install/lib/dri
+          - export DEVICE_NAME="gl-{{ gpu_version }}"
+
+          - "if sh /install/tracie-runner-gl.sh; then
+                  echo 'tracie: pass';
+             else
+                  echo 'tracie: fail';
+             fi"
+        parse:
+          pattern: '(?P<test_case_id>\S*):\s+(?P<result>(pass|fail))'
+      from: inline
+      name: tracie
+      path: inline/mesa-tracie.yaml
index 9bf5e3dcc7c9582e045fc1c088d47fa7093967f5..fb7cc6306d916f51649a21452314a8ad2c83b225 100755 (executable)
@@ -51,6 +51,7 @@ if [ -n "$UPLOAD_FOR_LAVA" ]; then
     # Pass needed files to the test stage
     cp $CI_PROJECT_DIR/.gitlab-ci/generate_lava.py artifacts/.
     cp $CI_PROJECT_DIR/.gitlab-ci/lava-deqp.yml.jinja2 artifacts/.
+    cp $CI_PROJECT_DIR/.gitlab-ci/lava-tracie.yml.jinja2 artifacts/.
 
     gzip -c artifacts/install.tar > mesa-${DEBIAN_ARCH}.tar.gz
     ci-fairy minio login $CI_JOB_JWT
index 0f756899f1a3d11f431dfca11bd72addfdfc3565..1ec7603407f71d8e5b9771eba8ae3760914ceb66 100644 (file)
@@ -9,18 +9,28 @@ traces:
         checksum: 8867f3a41f180626d0d4b7661ff5c0f4
       - device: gl-virgl
         checksum: 8867f3a41f180626d0d4b7661ff5c0f4
+      - device: gl-panfrost-t860
+        checksum: 95df5e619a36e88fe408e45567a2d149
+      - device: gl-panfrost-t760
+        checksum: 30663eac9a4767d26fbf9b6db9712d9f
   - path: glmark2/jellyfish.rdc
     expectations:
       - device: gl-vmware-llvmpipe
         checksum: e0fe979fee129c0ed42a3059d1a4e1c9
       - device: gl-virgl
         checksum: e0fe979fee129c0ed42a3059d1a4e1c9
+      - device: gl-panfrost-t860
+        checksum: 1d609b089732be5b6e3e78370abcb149
+      - device: gl-panfrost-t760
+        checksum: f98ef9118eeaba660c15065dac46e580
   - path: glxgears/glxgears.trace
     expectations:
       - device: gl-vmware-llvmpipe
         checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd
       - device: gl-virgl
         checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd
+      - device: gl-panfrost-t860
+        checksum: 154039d7bebb366258ddfcc2f196286b
   - path: KhronosGroup-Vulkan-Tools/vkcube.gfxr
     expectations:
       - device: vk-amd-polaris10