Skip to content

test(mixedbrain): add scheduler_stress scenario and server log scanning#10928

Merged
chaptersix merged 4 commits into
temporalio:mainfrom
chaptersix:sch-omes
Jul 8, 2026
Merged

test(mixedbrain): add scheduler_stress scenario and server log scanning#10928
chaptersix merged 4 commits into
temporalio:mainfrom
chaptersix:sch-omes

Conversation

@chaptersix

@chaptersix chaptersix commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Adds the scheduler_stress Omes scenario to the mixed brain test, and scans both server logs for panics and soft-assertion failures after the run.

Worth calling out (not obvious from the diff):

  • Both scenarios run concurrently, each in its own namespace, through the shared proxy. Roughly doubles peak cluster load - watch the memory snapshot on the arm runner.
  • enable-chasm-scheduler is left at its default (on).
  • The log scan is the main pass/fail signal for scheduler_stress, which swallows its own operation errors. The panic/assertion exclude lists are a starting point and may need tuning after a real CI run.

Run the scheduler_stress Omes scenario alongside throughput_stress in the
mixed brain test. The two scenarios run concurrently, each in its own
namespace (and with a distinct run ID / task queue) so their load stays
isolated while both exercise the mixed-version cluster.

Also add a post-run scan of both server logs for panics, soft-assertion
failures, and inconsistent metric descriptors. This catches problems that
don't surface as a process exit (recovered panics, soft asserts) - notably
relevant since scheduler_stress swallows its own operation errors. Scanners
are pluggable via a logLineValidator interface.

Servers are stopped before scanning so their logs are fully flushed;
serverProcess.stop is now idempotent to coexist with the cleanup hooks.
Make scanServerLogs a pure function returning failure messages instead of
threading testing.TB through it; the caller reports them. This removes the
mockT test shim. Also drop the unused validatorFunc adapter, use the existing
util.TruncateUTF8 helper instead of a local one, and inline the single-caller
per-file scan.
@chaptersix chaptersix requested a review from stephanos July 6, 2026 20:39
@chaptersix chaptersix marked this pull request as ready for review July 6, 2026 20:47
@chaptersix chaptersix requested review from a team as code owners July 6, 2026 20:47
Comment thread tests/mixedbrain/log_scan_util.go Outdated
Comment thread tests/mixedbrain/log_scan_util_test.go
Comment thread tests/mixedbrain/mixed_brain_test.go Outdated
Comment thread tests/mixedbrain/mixed_brain_test.go Outdated
- Tighten the panic log check to "panic:" to avoid false positives.
- Mark the log scanner unit tests as parallel.
- Hoist the scenarios slice to a package-level var so it gives a clear view
  of what's tested and drives namespace registration; derive each scenario's
  run ID at the call site instead of storing it.
@chaptersix chaptersix merged commit 76bdf3b into temporalio:main Jul 8, 2026
49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants