Skip to content

Commit 273f1be

Browse files
committed
perf(ci): duration-weighted shard sequencer + reshard internal->12 packages->3
1 parent 82bd4fa commit 273f1be

13 files changed

Lines changed: 318 additions & 6 deletions

File tree

.github/workflows/unit-tests-internal.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ jobs:
1919
# one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard
2020
fail-fast: false
2121
matrix:
22-
shardIndex: [1, 2, 3, 4, 5, 6, 7, 8]
23-
shardTotal: [8]
22+
shardIndex: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
23+
shardTotal: [12]
2424
env:
2525
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
2626
SHARD_INDEX: ${{ matrix.shardIndex }}

.github/workflows/unit-tests-packages.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ jobs:
1616
name: "🧪 Unit Tests: Packages"
1717
runs-on: ubuntu-latest
1818
strategy:
19+
# one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard
20+
fail-fast: false
1921
matrix:
20-
shardIndex: [1]
21-
shardTotal: [1]
22+
shardIndex: [1, 2, 3]
23+
shardTotal: [3]
2224
env:
2325
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
2426
SHARD_INDEX: ${{ matrix.shardIndex }}

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,6 @@ apps/**/public/build
7272
.mcp.log
7373
.mcp.json
7474
.cursor/debug.log
75-
ailogger-output.log
75+
ailogger-output.log
76+
# per-package vitest timing capture (transient; merged into root test-timings.json)
77+
.vitest-timing.json

apps/webapp/vitest.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { defineConfig } from "vitest/config";
2+
import { DurationShardingSequencer } from "@internal/testcontainers/sequencer";
23
import tsconfigPaths from "vite-tsconfig-paths";
34

45
export default defineConfig({
56
test: {
7+
sequence: { sequencer: DurationShardingSequencer },
68
include: ["test/**/*.test.ts"],
79
// *.e2e.test.ts: smoke matrix, run via vitest.e2e.config.ts.
810
// *.e2e.full.test.ts: full auth suite, runs via vitest.e2e.full.config.ts

internal-packages/clickhouse/vitest.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { defineConfig } from "vitest/config";
2+
import { DurationShardingSequencer } from "@internal/testcontainers/sequencer";
23

34
export default defineConfig({
45
test: {
6+
sequence: { sequencer: DurationShardingSequencer },
57
include: ["**/*.test.ts"],
68
globals: true,
79
isolate: true,

internal-packages/llm-model-catalog/vitest.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { defineConfig } from "vitest/config";
2+
import { DurationShardingSequencer } from "@internal/testcontainers/sequencer";
23

34
export default defineConfig({
45
test: {
6+
sequence: { sequencer: DurationShardingSequencer },
57
include: ["**/*.test.ts"],
68
globals: true,
79
isolate: true,

internal-packages/replication/vitest.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { defineConfig } from "vitest/config";
2+
import { DurationShardingSequencer } from "@internal/testcontainers/sequencer";
23

34
export default defineConfig({
45
test: {
6+
sequence: { sequencer: DurationShardingSequencer },
57
include: ["**/*.test.ts"],
68
globals: true,
79
isolate: true,

internal-packages/run-engine/vitest.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { defineConfig } from "vitest/config";
2+
import { DurationShardingSequencer } from "@internal/testcontainers/sequencer";
23

34
export default defineConfig({
45
test: {
6+
sequence: { sequencer: DurationShardingSequencer },
57
include: ["**/*.test.ts"],
68
globals: true,
79
// CI-only: absorbs timing races (real-clock waits vs worker poll interval) under shard CPU contention

internal-packages/schedule-engine/vitest.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { defineConfig } from "vitest/config";
2+
import { DurationShardingSequencer } from "@internal/testcontainers/sequencer";
23

34
export default defineConfig({
45
test: {
6+
sequence: { sequencer: DurationShardingSequencer },
57
globals: true,
68
// CI-only: absorbs timing races (real-clock waits vs worker poll interval) under shard CPU contention
79
retry: process.env.CI ? 2 : 0,

internal-packages/testcontainers/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"types": "./src/index.ts",
77
"exports": {
88
".": "./src/index.ts",
9-
"./webapp": "./src/webapp.ts"
9+
"./webapp": "./src/webapp.ts",
10+
"./sequencer": "./src/sequencer.ts"
1011
},
1112
"dependencies": {
1213
"@clickhouse/client": "^1.11.1",

0 commit comments

Comments
 (0)