aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsagudev <16504129+sagudev@users.noreply.github.com>2025-04-18 08:38:28 +0200
committerGitHub <noreply@github.com>2025-04-18 06:38:28 +0000
commitbd9242acfa599ca6bc3d79c10edfeb7cb54246ae (patch)
tree8a70963131a6e5925d30e3a6e2b9495339c13adb
parent5e2d42e94459af76c8752fef934a7dde8ac5b41a (diff)
downloadservo-bd9242acfa599ca6bc3d79c10edfeb7cb54246ae.tar.gz
servo-bd9242acfa599ca6bc3d79c10edfeb7cb54246ae.zip
CI: Add `number_of_chunks` (#36584)
This allows changing number of chunks used for WPT testing (sometimes useful for WebGPU). Testing: Manual try runs Fixes: #30062 --------- Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
-rw-r--r--.github/workflows/dispatch-workflow.yml4
-rw-r--r--.github/workflows/linux-wpt.yml22
-rw-r--r--.github/workflows/linux.yml9
-rw-r--r--.github/workflows/main.yml1
-rw-r--r--.github/workflows/try-label.yml1
-rw-r--r--.github/workflows/try.yml1
-rw-r--r--python/servo/try_parser.py10
7 files changed, 44 insertions, 4 deletions
diff --git a/.github/workflows/dispatch-workflow.yml b/.github/workflows/dispatch-workflow.yml
index c938b1acd39..472f4813cd7 100644
--- a/.github/workflows/dispatch-workflow.yml
+++ b/.github/workflows/dispatch-workflow.yml
@@ -14,6 +14,9 @@ on:
wpt:
required: true
type: boolean
+ number-of-wpt-chunks:
+ required: true
+ type: number
unit-tests:
required: true
type: boolean
@@ -57,6 +60,7 @@ jobs:
with:
profile: ${{ inputs.profile }}
wpt: ${{ inputs.wpt }}
+ number-of-wpt-chunks: ${{ inputs.number-of-wpt-chunks }}
unit-tests: ${{ inputs.unit-tests }}
build-libservo: ${{ inputs.build-libservo }}
wpt-args: ${{ inputs.wpt-args }}
diff --git a/.github/workflows/linux-wpt.yml b/.github/workflows/linux-wpt.yml
index 03dce7456b2..e3425a39575 100644
--- a/.github/workflows/linux-wpt.yml
+++ b/.github/workflows/linux-wpt.yml
@@ -13,6 +13,10 @@ on:
default: false
required: false
type: boolean
+ number-of-wpt-chunks:
+ default: 20
+ required: false
+ type: number
env:
RUST_BACKTRACE: 1
@@ -24,15 +28,25 @@ env:
WPT_ALWAYS_SUCCEED_ARG: "${{ inputs.wpt-sync-from-upstream && '--always-succeed' || '' }}"
jobs:
+ chunks:
+ name: Generate chunks array
+ runs-on: ubuntu-22.04
+ outputs:
+ chunks-array: ${{ steps.generate-chunks-array.outputs.result }}
+ steps:
+ - uses: actions/github-script@v7
+ id: generate-chunks-array
+ with:
+ script: |
+ return Array.from({length: ${{ inputs.number-of-wpt-chunks }}}, (_, i) => i + 1)
linux-wpt:
name: WPT
runs-on: ubuntu-22.04
- env:
- max_chunk_id: 20
+ needs: chunks
strategy:
fail-fast: false
matrix:
- chunk_id: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
+ chunk_id: ${{ fromJson(needs.chunks.outputs.chunks-array) }}
steps:
- uses: actions/checkout@v4
if: github.event_name != 'pull_request_target'
@@ -66,7 +80,7 @@ jobs:
./mach test-wpt \
$WPT_ALWAYS_SUCCEED_ARG \
--${{ inputs.profile }} --processes $(nproc) --timeout-multiplier 2 \
- --total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \
+ --total-chunks ${{ inputs.number-of-wpt-chunks }} --this-chunk ${{ matrix.chunk_id }} \
--log-raw wpt-full-logs/linux/raw/${{ matrix.chunk_id }}.log \
--log-wptreport wpt-full-logs/linux/wptreport/${{ matrix.chunk_id }}.json \
--log-raw-unexpected wpt-filtered-logs/linux/${{ matrix.chunk_id }}.log \
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 03d863285a7..033f9795a23 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -17,6 +17,10 @@ on:
wpt:
required: false
type: boolean
+ number-of-wpt-chunks:
+ default: 20
+ required: false
+ type: number
unit-tests:
required: false
default: false
@@ -58,6 +62,10 @@ on:
wpt:
required: false
type: boolean
+ number-of-wpt-chunks:
+ default: 20
+ required: false
+ type: number
unit-tests:
required: false
default: false
@@ -215,6 +223,7 @@ jobs:
wpt-args: ${{ inputs.wpt-args }}
profile: ${{ inputs.profile }}
wpt-sync-from-upstream: ${{ inputs.wpt-sync-from-upstream }}
+ number-of-wpt-chunks: ${{ inputs. number-of-wpt-chunks }}
secrets: inherit
bencher:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c2bda1a7c2c..1545dfa2450 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -56,6 +56,7 @@ jobs:
unit-tests: ${{ matrix.unit_tests }}
build-libservo: ${{ matrix.build_libservo }}
wpt-args: ${{ matrix.wpt_args }}
+ number-of-wpt-chunks: ${{ matrix.number_of_wpt_chunks }}
bencher: ${{ matrix.bencher }}
build-result:
diff --git a/.github/workflows/try-label.yml b/.github/workflows/try-label.yml
index 5444b75a4bd..b1ca27a6f58 100644
--- a/.github/workflows/try-label.yml
+++ b/.github/workflows/try-label.yml
@@ -128,6 +128,7 @@ jobs:
unit-tests: ${{ matrix.unit_tests }}
build-libservo: ${{ matrix.build_libservo }}
wpt-args: ${{ matrix.wpt_args }}
+ number-of-wpt-chunks: ${{ matrix.number_of_wpt_chunks }}
bencher: ${{ matrix.bencher }}
results:
diff --git a/.github/workflows/try.yml b/.github/workflows/try.yml
index 274ad7483ff..cba4fc03e06 100644
--- a/.github/workflows/try.yml
+++ b/.github/workflows/try.yml
@@ -108,6 +108,7 @@ jobs:
unit-tests: ${{ matrix.unit_tests }}
build-libservo: ${{ matrix.build_libservo }}
wpt-args: ${{ matrix.wpt_args }}
+ number-of-wpt-chunks: ${{ matrix.number_of_wpt_chunks }}
bencher: ${{ matrix.bencher }}
build-result:
diff --git a/python/servo/try_parser.py b/python/servo/try_parser.py
index 79f2989f10d..9a6b31693b0 100644
--- a/python/servo/try_parser.py
+++ b/python/servo/try_parser.py
@@ -40,6 +40,7 @@ class JobConfig(object):
build_libservo: bool = False
bencher: bool = False
wpt_args: str = ""
+ number_of_wpt_chunks: int = 20
# These are the fields that must match in between two JobConfigs for them to be able to be
# merged. If you modify any of the fields above, make sure to update this line as well.
merge_compatibility_fields: ClassVar[List[str]] = ['workflow', 'profile', 'wpt_args']
@@ -55,6 +56,7 @@ class JobConfig(object):
self.unit_tests |= other.unit_tests
self.build_libservo |= other.build_libservo
self.bencher |= other.bencher
+ self.number_of_wpt_chunks = max(self.number_of_wpt_chunks, other.number_of_wpt_chunks)
self.update_name()
return True
@@ -201,6 +203,7 @@ class TestParser(unittest.TestCase):
'matrix': [{
'bencher': False,
'name': 'Linux (Unit Tests)',
+ 'number_of_wpt_chunks': 20,
'profile': 'release',
'unit_tests': True,
'build_libservo': False,
@@ -215,6 +218,7 @@ class TestParser(unittest.TestCase):
{"fail_fast": False, "matrix": [
{
"name": "Linux (Unit Tests, WPT, Bencher)",
+ 'number_of_wpt_chunks': 20,
"workflow": "linux",
"wpt": True,
"profile": "release",
@@ -225,6 +229,7 @@ class TestParser(unittest.TestCase):
},
{
"name": "MacOS (Unit Tests)",
+ 'number_of_wpt_chunks': 20,
"workflow": "macos",
"wpt": False,
"profile": "release",
@@ -235,6 +240,7 @@ class TestParser(unittest.TestCase):
},
{
"name": "Windows (Unit Tests)",
+ 'number_of_wpt_chunks': 20,
"workflow": "windows",
"wpt": False,
"profile": "release",
@@ -245,6 +251,7 @@ class TestParser(unittest.TestCase):
},
{
"name": "Android",
+ 'number_of_wpt_chunks': 20,
"workflow": "android",
"wpt": False,
"profile": "release",
@@ -255,6 +262,7 @@ class TestParser(unittest.TestCase):
},
{
"name": "OpenHarmony",
+ 'number_of_wpt_chunks': 20,
"workflow": "ohos",
"wpt": False,
"profile": "release",
@@ -265,6 +273,7 @@ class TestParser(unittest.TestCase):
},
{
"name": "Lint",
+ 'number_of_wpt_chunks': 20,
"workflow": "lint",
"wpt": False,
"profile": "release",
@@ -280,6 +289,7 @@ class TestParser(unittest.TestCase):
'matrix': [{
'bencher': False,
'name': 'Linux (WPT)',
+ 'number_of_wpt_chunks': 20,
'profile': 'release',
'unit_tests': False,
'build_libservo': False,