Skip to content

perf: split speech tests into 2 parallel jobs#2528

Open
BrendanWalsh wants to merge 1 commit intomasterfrom
brwals/split-speech-tests
Open

perf: split speech tests into 2 parallel jobs#2528
BrendanWalsh wants to merge 1 commit intomasterfrom
brwals/split-speech-tests

Conversation

@BrendanWalsh
Copy link
Collaborator

Summary

Splits the single speech unit test job (~33 minutes) into 2 parallel jobs (speech1 and speech2), reducing the critical path for cognitive service tests.

Changes

  • pipeline.yaml:
    • Replace single speech matrix entry with speech1 and speech2
    • speech1: runs SpeechToTextSDKSuite (the heaviest suite)
    • speech2: runs remaining suites (ConversationTranscriptionSuite, SpeechToTextSuite, TextToSpeechSuite, SpeakerEmotionInferenceSuite)
    • Add TEST_CLASSES variable to control which test classes each job runs
    • Add TEST_SPEC resolution in the test step: uses TEST_CLASSES if set, otherwise falls back to the default PACKAGE.** pattern

Motivation

The speech unit test job was one of the longer-running test jobs at ~33 minutes, with SpeechToTextSDKSuite being the dominant suite. Splitting allows parallel execution, reducing overall wall-clock time.

Testing

  • Test class splitting is deterministic (explicit class lists, no randomness)
  • Falls back gracefully to default behavior for all other matrix entries (no TEST_CLASSES set → uses PACKAGE.**)
  • Validated in container CI builds (both speech1 and speech2 pass)

Split from #2506 for independent review.

Split the single speech UnitTests matrix entry into speech1 and speech2,
each targeting specific test classes. SpeechToTextSDKSuite runs alone in
speech1 (it's the heaviest), while the remaining 4 suites share speech2.

Add TEST_CLASSES variable support to the test execution step: when set,
the sbt testOnly command uses the specified classes instead of the
default package wildcard. This is backwards-compatible — existing matrix
entries without TEST_CLASSES use the same PACKAGE.** pattern as before.
Copilot AI review requested due to automatic review settings March 27, 2026 05:28
@github-actions
Copy link

Hey @BrendanWalsh 👋!
Thank you so much for contributing to our repository 🙌.
Someone from SynapseML Team will be reviewing this pull request soon.

We use semantic commit messages to streamline the release process.
Before your pull request can be merged, you should make sure your first commit and PR title start with a semantic prefix.
This helps us to create release messages and credit you for your hard work!

Examples of commit messages with semantic prefixes:

  • fix: Fix LightGBM crashes with empty partitions
  • feat: Make HTTP on Spark back-offs configurable
  • docs: Update Spark Serving usage
  • build: Add codecov support
  • perf: improve LightGBM memory usage
  • refactor: make python code generation rely on classes
  • style: Remove nulls from CNTKModel
  • test: Add test coverage for CNTKModel

To test your commit locally, please follow our guild on building from source.
Check out the developer guide for additional guidance on testing your change.

@github-actions
Copy link

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA afdfb87.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

Scanned Files

None

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR speeds up CI for the cognitive Speech test suite by splitting the existing long-running speech unit test matrix entry into two parallel jobs (speech1 and speech2) and adding a TEST_CLASSES override mechanism to target specific ScalaTest suites when needed.

Changes:

  • Split services.speech unit tests into two matrix entries (speech1/speech2) with explicit suite lists.
  • Introduce TEST_CLASSES and resolve TEST_SPEC in the unit test step to run either explicit suites or the existing PACKAGE.** default pattern.

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