Skip to content

.github,go/utils/cigotests: Replace our multi go-test workflows with one dynamic matrix workflow and a test runner.#11021

Open
reltuk wants to merge 7 commits into
mainfrom
aaron/unified-go-tests-workflow
Open

.github,go/utils/cigotests: Replace our multi go-test workflows with one dynamic matrix workflow and a test runner.#11021
reltuk wants to merge 7 commits into
mainfrom
aaron/unified-go-tests-workflow

Conversation

@reltuk
Copy link
Copy Markdown
Contributor

@reltuk reltuk commented May 7, 2026

The test runner is configured to create shards and then run them when it gets asked to. See the commits for details.

reltuk added 2 commits May 7, 2026 16:33
A small Go program that reads an embedded config (config.yaml) and
drives the test matrix for the new ci-go-tests workflow. Three
subcommands:

  list                                          -> JSON {os, shard} cells
  plan --shard X --os Y --event Z               -> describe-only (no exec)
  run  --shard X --os Y --event Z               -> exec go test

Each shard declares packages (with optional ./... + exclude),
timeout, env, and race_on conditions over (os, event). The list
command emits one matrix cell per (os, shard) the workflow should
run, with shards able to narrow OS coverage via runs_on. Adding,
splitting, or retuning a shard is a single-file edit — the
workflow re-discovers cells on every run.

This commit is the runner only; the workflow that invokes it is
in the next commit.
Consolidates ci-go-tests.yaml, ci-go-tests-adaptive.yaml,
ci-go-race-tests.yaml, and ci-binlog-tests.yaml into a single
ci-go-tests.yaml driven by the cigotests runner.

The workflow has two jobs:

  enumerate-shards    runs cigotests list, emits a JSON array of
                      {os, shard} cells via job outputs.

  test                strategy.matrix.include is fromJson of the
                      above. Each cell runs cigotests run for its
                      (shard, os, github.event_name) triple.

What changed from the old workflows:

  - The per-package bash loop is gone. Each shard hands its full
    package list to a single 'go test pkg1 pkg2 ...' invocation,
    which lets go's test runner schedule packages concurrently.

  - The OS-conditional '-race' baked into ci-go-tests.yaml is now
    a per-shard race_on predicate in cigotests/config.yaml.

  - ci-go-tests-adaptive.yaml is dropped entirely. After the
    adaptive-encoding default flip in #11011 it was running the
    same matrix as ci-go-tests.yaml.

  - The push-only enginetest+race coverage from
    ci-go-race-tests.yaml is now expressed as race_on:
    {os: [ubuntu-22.04], events: [push, workflow_dispatch]} on
    the enginetest shard. Concurrentmap, which had its own race
    job, is just one of many packages in the 'rest' shard which
    already gets -race on ubuntu.

  - ci-binlog-tests.yaml folds in as a 'binlogreplication' shard
    pinned to ubuntu (matching the workflow it replaces).

Adding/splitting/retuning a shard is now a one-file edit to
config.yaml; no workflow change is needed.
@reltuk reltuk force-pushed the aaron/unified-go-tests-workflow branch from 8e74269 to a8b1190 Compare May 7, 2026 23:57
@coffeegoddd
Copy link
Copy Markdown
Contributor

coffeegoddd commented May 8, 2026

@reltuk DOLT

read_tests from_latency to_latency percent_change
covering_index_scan 2.3 2.3 0.0
groupby_scan 134.9 134.9 0.0
index_join 1.93 1.89 -2.07
index_join_scan 1.37 1.37 0.0
index_scan 211.6 211.6 0.0
oltp_point_select 0.26 0.26 0.0
oltp_read_only 5.18 5.18 0.0
select_random_points 0.56 0.55 -1.79
select_random_ranges 0.64 0.65 1.56
table_scan 204.11 204.11 0.0
types_table_scan 467.3 467.3 0.0
write_tests from_latency to_latency percent_change
oltp_delete_insert 6.21 6.21 0.0
oltp_insert 3.19 3.19 0.0
oltp_read_write 11.45 11.45 0.0
oltp_update_index 3.3 3.3 0.0
oltp_update_non_index 3.02 3.02 0.0
oltp_write_only 6.32 6.32 0.0
types_delete_insert 6.91 6.91 0.0

@coffeegoddd
Copy link
Copy Markdown
Contributor

coffeegoddd commented May 8, 2026

@reltuk DOLT

test_name from_latency_p95 to_latency_p95 percent_change
tpcc-scale-factor-1 45.79 45.79 0.0
test_name from_server_name from_server_version from_tps to_server_name to_server_version to_tps percent_change
tpcc-scale-factor-1 dolt e75d21b 52.67 dolt d56254c 53.16 0.93

@coffeegoddd
Copy link
Copy Markdown
Contributor

@reltuk DOLT

comparing_percentages
100.000000 to 100.000000
version result total
a8b1190 ok 5937471
version total_tests
a8b1190 5937471
correctness_percentage
100.0

@coffeegoddd
Copy link
Copy Markdown
Contributor

@coffeegoddd DOLT

comparing_percentages
100.000000 to 100.000000
version result total
c418775 ok 5937471
version total_tests
c418775 5937471
correctness_percentage
100.0

@coffeegoddd
Copy link
Copy Markdown
Contributor

@reltuk DOLT

comparing_percentages
100.000000 to 100.000000
version result total
c47fe78 ok 5937471
version total_tests
c47fe78 5937471
correctness_percentage
100.0

@coffeegoddd
Copy link
Copy Markdown
Contributor

@reltuk DOLT

comparing_percentages
100.000000 to 100.000000
version result total
6995f74 ok 5937471
version total_tests
6995f74 5937471
correctness_percentage
100.0

@coffeegoddd
Copy link
Copy Markdown
Contributor

@reltuk DOLT

comparing_percentages
100.000000 to 100.000000
version result total
ffed7a0 ok 5937471
version total_tests
ffed7a0 5937471
correctness_percentage
100.0

@coffeegoddd
Copy link
Copy Markdown
Contributor

@reltuk DOLT

comparing_percentages
100.000000 to 100.000000
version result total
d56254c ok 5937471
version total_tests
d56254c 5937471
correctness_percentage
100.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants