From 6bc35c00e2245ba13dceeabd4a6bf75e4415812b Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 6 Nov 2020 15:55:24 -0800 Subject: [PATCH] ci/deqp: Allow specifying the caselist fraction separate from CI_NODE_INDEX. To increase our VK coverage on a630, we want to have two jobs in parallel, but we still can't hit full coverage so we need the fractional setting to be separate from gitlab CI's flags for setting up parallel jobs. Reviewed-by: Tomeu Vizoso Part-of: --- .gitlab-ci.yml | 15 +++++---------- .gitlab-ci/bare-metal/arm64_a630_gles_others.sh | 6 ++---- .gitlab-ci/bare-metal/rootfs-setup.sh | 1 + .gitlab-ci/deqp-runner.sh | 11 +++++++++-- docs/ci/index.rst | 3 +-- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 932f9e0f698..1af783ab1c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1288,8 +1288,7 @@ arm64_a630_vk: extends: arm64_a630_gles2 variables: DEQP_VER: vk - CI_NODE_INDEX: 1 - CI_NODE_TOTAL: 50 + DEQP_FRACTION: 50 VK_DRIVER: freedreno # Force binning in the main run, which makes sure we render at # least 2 bins. This is the path that impacts the most different @@ -1304,8 +1303,7 @@ arm64_a630_vk_sysmem: extends: - arm64_a630_vk variables: - CI_NODE_INDEX: 1 - CI_NODE_TOTAL: 10 + DEQP_FRACTION: 10 DEQP_CASELIST_FILTER: "dEQP-VK.renderpass.*" DEQP_EXPECTED_FAILS: deqp-freedreno-a630-bypass-fails.txt TU_DEBUG: sysmem @@ -1359,8 +1357,7 @@ arm64_a306_gles3: variables: DEQP_VER: gles3 DEQP_PARALLEL: 1 - CI_NODE_INDEX: 1 - CI_NODE_TOTAL: 25 + DEQP_FRACTION: 25 # Fractional runs with debug options. Note that since we're not # hitting the iommu faults, we can run in parallel (derive from gles2, not gles3). @@ -1398,16 +1395,14 @@ arm64_a530_gles3: variables: DEQP_VER: gles3 DEQP_PARALLEL: 1 - CI_NODE_INDEX: 1 - CI_NODE_TOTAL: 40 + DEQP_FRACTION: 40 arm64_a530_gles31: extends: - arm64_a530_gles3 variables: DEQP_VER: gles31 - CI_NODE_INDEX: 1 - CI_NODE_TOTAL: 10 + DEQP_FRACTION: 10 # RADV CI .test-radv: diff --git a/.gitlab-ci/bare-metal/arm64_a630_gles_others.sh b/.gitlab-ci/bare-metal/arm64_a630_gles_others.sh index c10d4b5bd58..d2bb08be7c0 100755 --- a/.gitlab-ci/bare-metal/arm64_a630_gles_others.sh +++ b/.gitlab-ci/bare-metal/arm64_a630_gles_others.sh @@ -11,8 +11,7 @@ EXIT=0 if ! env \ DEQP_RESULTS_DIR=results/gmem \ DEQP_VER=gles31 \ - CI_NODE_INDEX=1 \ - CI_NODE_TOTAL=5 \ + DEQP_FRACTION=5 \ FD_MESA_DEBUG=nobypass \ /install/deqp-runner.sh; then EXIT=1 @@ -22,8 +21,7 @@ fi if ! env \ DEQP_RESULTS_DIR=results/bypass \ DEQP_VER=gles31 \ - CI_NODE_INDEX=1 \ - CI_NODE_TOTAL=5 \ + DEQP_FRACTION=5 \ FD_MESA_DEBUG=nogmem \ DEQP_EXPECTED_FAILS=deqp-freedreno-a630-bypass-fails.txt \ /install/deqp-runner.sh; then diff --git a/.gitlab-ci/bare-metal/rootfs-setup.sh b/.gitlab-ci/bare-metal/rootfs-setup.sh index 1e102f4c96a..b1851124b93 100644 --- a/.gitlab-ci/bare-metal/rootfs-setup.sh +++ b/.gitlab-ci/bare-metal/rootfs-setup.sh @@ -31,6 +31,7 @@ for var in \ DEQP_CONFIG \ DEQP_EXPECTED_FAILS \ DEQP_EXPECTED_RENDERER \ + DEQP_FRACTION \ DEQP_HEIGHT \ DEQP_NO_SAVE_RESULTS \ DEQP_FLAKES \ diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh index 0010550d293..2bb89d92145 100755 --- a/.gitlab-ci/deqp-runner.sh +++ b/.gitlab-ci/deqp-runner.sh @@ -57,8 +57,15 @@ else SUITE=KHR fi -# If the job is parallel, take the corresponding fraction of the caselist. -# Note: N~M is a gnu sed extension to match every nth line (first line is #1). +# If the caselist is too long to run in a reasonable amount of time, let the job +# specify what fraction (1/n) of the caselist we should run. Note: N~M is a gnu +# sed extension to match every nth line (first line is #1). +if [ -n "$DEQP_FRACTION" ]; then + sed -ni 1~$DEQP_FRACTION"p" /tmp/case-list.txt +fi + +# If the job is parallel at the gitab job level, take the corresponding fraction +# of the caselist. if [ -n "$CI_NODE_INDEX" ]; then sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt fi diff --git a/docs/ci/index.rst b/docs/ci/index.rst index e4cea23768d..c9350c6b24d 100644 --- a/docs/ci/index.rst +++ b/docs/ci/index.rst @@ -111,8 +111,7 @@ no ``parallel`` field set and: .. code-block:: yaml variables: - CI_NODE_INDEX: 1 - CI_NODE_TOTAL: 10 + DEQP_FRACTION: 10 to just run 1/10th of the test list.