test(workflow-operator): close the bar-chart, sentiment and user-agent gaps - #7989
Open
aglinxinyuan wants to merge 2 commits into
Open
test(workflow-operator): close the bar-chart, sentiment and user-agent gaps#7989aglinxinyuan wants to merge 2 commits into
aglinxinyuan wants to merge 2 commits into
Conversation
…t gaps Three small files, 31 tests: +8 fully-covered lines and 9 branch arms. HuggingFaceSentimentAnalysisOpDesc reaches 100% while its line-hit was already 100% -- the whole gain is partial arms flipping, the case Codecov penalises and line-hit hides. The before run reproduced all five published Codecov percentages exactly, which validates the method. HashJoinProbeOpExec and OPVersion.java were in scope and are absent; neither survived assessment. 22 mutations, 19 non-equivalent, all 19 killed. The first pass reported no survivors and shipped with at least seven live ones. Three surviving mutants are recorded as equivalent and were run deliberately, to show the new assertions check containment and identity rather than incidental ordering. Corrects a mechanism this campaign had wrong throughout: FileScanSourceOpExecSpec does not abort on a worktree's .git file. It runs its tests and then aborts on a Windows file-lock in its own cleanup, which means the test_large_binary.txt fixture IS leaked on any unfiltered run and must be deleted before committing.
Contributor
Automated Reviewer SuggestionsBased on the
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7989 +/- ##
============================================
- Coverage 93.21% 92.92% -0.29%
- Complexity 4664 4678 +14
============================================
Files 1175 1175
Lines 47646 47645 -1
Branches 5319 5319
============================================
- Hits 44413 44274 -139
- Misses 1752 1858 +106
- Partials 1481 1513 +32
*This pull request uses carry forward flags. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
✅ No material benchmark regressions detected🟢 0 better · 🔴 0 worse · ⚪ 15 noise (<±5%) · 0 without baseline
Baseline detailsLatest main
Raw CSVconfig_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,326.72,200,128000,612,0.374,15832.46,20967.59,20967.59
1,100,10,64,20,1558.48,2000,1280000,1283,0.783,78090.21,90860.39,90860.39
2,1000,10,64,20,13650.80,20000,12800000,1465,0.894,677569.97,772429.44,772429.44 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes were proposed in this PR?
Three small workflow-operator gaps, bundled because none is worth a PR alone. 31 tests across the three specs, one of which is new.
Measured with two
WorkflowOperator/jacocoruns, one fresh sbt batch JVM each,rm -rfon the jacoco dir between them, and the identical suite-name filter both times. The before run reproduced all published Codecov percentages exactly (88.2 / 90.5 / 88.0 / 85.2 / 83.3), which validates the method.HuggingFaceSentimentAnalysisOpDesc.scalaBarChartOpDesc.scalaRandomUserAgent.java+8 fully-covered lines and 9 branch arms closed. Worth noting the shape of the sentiment descriptor: its line-hit was already 100%, so its entire gain is partial arms flipping to hits — arms covered went 7 → 12, missed 5 → 0. That is precisely the case Codecov penalises and line-hit hides.
HashJoinProbeOpExecandOPVersion.javawere in the original scope and are absent — neither survived assessment, and padding the bundle with them would have added nothing.Verification
22 mutations. 19 non-equivalent mutants, all 19 killed, each kill re-derived from scratch with the failing test name and assertion line read out of the ScalaTest XML — the sbt log never names them.
The first draft reported no survivors. It shipped with at least seven live semantic survivors, all seven re-derived here against a hash-verified tree.
Three mutants survived and are recorded as equivalent, deliberately run to prove a point: a label-map pair reorder, an empty-cell fill-tuple reorder, and a
getOutputSchemasguard-clause reorder. Each was applied specifically to demonstrate that the new assertions check containment and identity rather than incidental ordering — i.e. they are not over-fitted. The guard-clause one is a pure||over side-effect-free predicates, and is distinct from two sibling mutants that swap the variable inside a clause, both of which die.A mechanism I had wrong, corrected here
Every brief in this campaign has said that
FileScanSourceOpExecSpecaborts inside a git worktree because a worktree's.gitis a file, throwingRepositoryNotFoundExceptioninbeforeAll. That is wrong. Run unfiltered, the suite runs its 7 tests successfully and then aborts at suite level with:— a Windows file-lock in its own cleanup, because a reader is still open. The
RepositoryNotFoundExceptionin the same log comes fromOPVersion.<clinit>→LogicalOp.getOperatorVersion, is caught byOPVersion's own try/catch, and has nothing to do with the abort.The exclusion is still the right call for measurement, but the corrected mechanism carries a consequence the wrong one hid: on any unfiltered run that file is leaked into the source tree, so it must be deleted before committing or it trips the licence-header check. The earlier claim that "
findconfirms none exists" was true only because that suite was never allowed to run.Module-wide branch totals are not quoted here, because
IntervalJoinOpExec's covering spec uses an unseeded RNG whose branch count drifts run to run.Deliberately not included
BarChartOpDesckeeps two partial lines (108 and 114, mb3/cb3 and mb3/cb5), so 32/34 is its ceiling under a test-only change.Both descriptor specs carry a JSON round-trip test per house convention, and no descriptor subclass is defined in any spec —
PythonCodeRawInvalidTextSpecinstantiates every subclass by reflection, so a test-only subtype would break it.The new spec carries the Apache licence header. No production file is touched, and no stray
test_large_binary.txtwas left behind.Any related issues, documentation, discussions?
Closes #7987
How was this PR tested?
Both full-module runs were green (2365 → 2379 tests, 289 → 290 suites, zero failures), so neither report is the all-zero artifact.
Test/scalafmtCheckpasses.Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 5)