Skip to content

test(workflow-operator): deduplicate operator test suites - #9237

Open
aglinxinyuan wants to merge 1 commit into
apache:mainfrom
aglinxinyuan:test/unnest-string-spec
Open

aglinxinyuan wants to merge 1 commit into
apache:mainfrom
aglinxinyuan:test/unnest-string-spec

Conversation

@aglinxinyuan

@aglinxinyuan aglinxinyuan commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

Consolidates and combines workflow operator test suite deduplication refactors across 4 test suites:

Suite Module / File Change Summary Net Lines Issue
CaseSensitiveAnalyzerSpec keywordSearch Table-drive keyword match cases via parameterized test table -35 Closes #9210
FileScanUtilsSpec source/scan/file Factor default-argument file scan test helper and unify stream assertion -58 Closes #9216
HashJoinOpSpec hashJoin Factor tuple join execution helper and unify tuple equality checks -56 Closes #9221
UnnestStringOpExecSpec unneststring Factor unnest helper, manage executor lifecycle with try/finally, eliminate mutable state -48 Closes #9236
Total 4 test suites refactored -197

This PR supersedes and combines the smaller individual PRs #9211, #9217, and #9222 into #9237.

Any related issues, documentation, discussions?

Closes #9210
Closes #9216
Closes #9221
Closes #9236

Supersedes #9211, #9217, #9222.

How was this PR tested?

Verified with targeted sbt test suites, operator metadata tests, and linters:

sbt "WorkflowOperator/testOnly org.apache.texera.amber.operator.source.scan.file.FileScanUtilsSpec org.apache.texera.amber.operator.hashJoin.HashJoinOpSpec org.apache.texera.amber.operator.keywordSearch.CaseSensitiveAnalyzerSpec org.apache.texera.amber.operator.unneststring.UnnestStringOpExecSpec"
sbt "WorkflowOperator/testOnly org.apache.texera.amber.operator.metadata.*"
sbt "WorkflowOperator/scalafmtCheck" "WorkflowOperator/Test/scalafmtCheck" "WorkflowOperator/scalafix --check" "WorkflowOperator/Test/scalafix --check"

All 58 tests in the 4 refactored suites passed cleanly, all 229 operator metadata tests passed, and all scalafmt / scalafix checks passed.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: Antigravity (Gemini 2.5 Pro)

Copilot AI balanced review requested due to automatic review settings October 31, 2026 01:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • Contributors with relevant context: @Yicong-Huang, @kz930, @sshiv012
    You can notify them by mentioning @Yicong-Huang, @kz930, @sshiv012 in a comment.

@codecov-commenter

codecov-commenter commented Oct 31, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.05%. Comparing base (d79ac16) to head (1e0c559).

Additional details and impacted files
@@            Coverage Diff            @@
##               main    #9237   +/-   ##
=========================================
  Coverage     92.05%   92.05%           
  Complexity     5039     5039           
=========================================
  Files          1286     1286           
  Lines         55928    55928           
  Branches       7138     7138           
=========================================
  Hits          51483    51483           
  Misses         2693     2693           
  Partials       1752     1752           
Flag Coverage Δ *Carryforward flag
access-control-service 77.44% <ø> (ø)
agent-service 99.16% <ø> (ø) Carriedforward from d79ac16
amber 86.55% <ø> (ø) Carriedforward from d79ac16
computing-unit-managing-service 64.02% <ø> (ø)
config-service 87.61% <ø> (ø)
file-service 82.29% <ø> (ø) Carriedforward from d79ac16
frontend 96.48% <ø> (ø) Carriedforward from d79ac16
notebook-migration-service 83.77% <ø> (ø)
pyamber 98.54% <ø> (ø) Carriedforward from d79ac16
workflow-compiling-service 74.25% <ø> (ø)

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Benchmark changes need a look

🟢 4 better · 🔴 5 worse · ⚪ 6 noise (<±5%) · 0 without baseline

Compared against main d79ac16 benchmarked on this same runner, so the delta is largely free of cross-runner hardware noise. The "7d avg" column still reflects the gh-pages dashboard. Treat <±5% as noise unless repeated.

Dashboard · Run

config throughput MB/s latency max Δ latest / 7d
🔴 bs=10 sw=10 sl=64 567 0.346 17,775/21,678/21,678 us 🔴 +15.4% / 🔴 +50.8%
🟢 bs=100 sw=10 sl=64 1,204 0.735 81,482/108,146/108,146 us 🟢 -13.5% / 🟢 -12.2%
🔴 bs=1000 sw=10 sl=64 1,454 0.888 685,254/792,815/792,815 us 🔴 +6.5% / 🟢 -25.2%
Baseline details

Latest main d79ac16 from same runner

config metric PR latest main 7d avg Δ latest Δ 7d
bs=10 sw=10 sl=64 throughput 567 tuples/sec 628 tuples/sec 863.45 tuples/sec -9.7% -34.3%
bs=10 sw=10 sl=64 MB/s 0.346 MB/s 0.383 MB/s 0.527 MB/s -9.7% -34.3%
bs=10 sw=10 sl=64 p50 17,775 us 15,406 us 11,790 us +15.4% +50.8%
bs=10 sw=10 sl=64 p95 21,678 us 23,679 us 14,459 us -8.4% +49.9%
bs=10 sw=10 sl=64 p99 21,678 us 23,679 us 17,630 us -8.4% +23.0%
bs=100 sw=10 sl=64 throughput 1,204 tuples/sec 1,199 tuples/sec 1,138 tuples/sec +0.4% +5.8%
bs=100 sw=10 sl=64 MB/s 0.735 MB/s 0.732 MB/s 0.694 MB/s +0.4% +5.9%
bs=100 sw=10 sl=64 p50 81,482 us 79,268 us 92,850 us +2.8% -12.2%
bs=100 sw=10 sl=64 p95 108,146 us 125,079 us 99,554 us -13.5% +8.6%
bs=100 sw=10 sl=64 p99 108,146 us 125,079 us 114,049 us -13.5% -5.2%
bs=1000 sw=10 sl=64 throughput 1,454 tuples/sec 1,444 tuples/sec 1,167 tuples/sec +0.7% +24.6%
bs=1000 sw=10 sl=64 MB/s 0.888 MB/s 0.882 MB/s 0.712 MB/s +0.7% +24.7%
bs=1000 sw=10 sl=64 p50 685,254 us 698,128 us 915,630 us -1.8% -25.2%
bs=1000 sw=10 sl=64 p95 792,815 us 744,739 us 958,207 us +6.5% -17.3%
bs=1000 sw=10 sl=64 p99 792,815 us 744,739 us 1,006,078 us +6.5% -21.2%
Raw CSV
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,352.48,200,128000,567,0.346,17775.04,21677.69,21677.69
1,100,10,64,20,1661.68,2000,1280000,1204,0.735,81481.91,108145.81,108145.81
2,1000,10,64,20,13753.61,20000,12800000,1454,0.888,685254.23,792814.92,792814.92

Factor test helpers, table-drive test cases, and eliminate mutable test state across workflow operator test suites:
- CaseSensitiveAnalyzerSpec: table-drive keyword match cases (Closes apache#9210)
- FileScanUtilsSpec: factor default-argument scan helper (Closes apache#9216)
- HashJoinOpSpec: factor tuple join helper and unify assertions (Closes apache#9221)
- UnnestStringOpExecSpec: factor unnest execution helper and eliminate mutable state (Closes apache#9236)
@aglinxinyuan
aglinxinyuan force-pushed the test/unnest-string-spec branch from 5b6c3d7 to 1e0c559 Compare October 31, 2026 01:16
@aglinxinyuan aglinxinyuan changed the title test(workflow-operator): factor unnest helper in UnnestStringOpExecSpec test(workflow-operator): deduplicate operator test suites Oct 31, 2026
@aglinxinyuan
aglinxinyuan requested a review from kunwp1 October 31, 2026 01:20

This branch has not been deployed

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

Labels

Projects

None yet

3 participants