The GitHub Actions job "Benchmarks PR Comment" on texera.git/main has succeeded.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
41123c0ad1ddfd3a805a562511d27660e4b14b73 / Xinyuan Lin <[email protected]>
test(workflow-operator): add unit test coverage for text search and match 
operator descriptors (#5813)

### What changes were proposed in this PR?

Pin behavior of four previously-untested text-search/match descriptors
in `common/workflow-operator/`. They share the same shape — match/filter
tuples by a string predicate on a column — and contribute operator
metadata, physical-op wiring, and (for DictionaryMatcher) output-schema
propagation. No production-code changes.

| Spec | Source class | Tests |
| --- | --- | --- |
| `KeywordSearchOpDescSpec` | `KeywordSearchOpDesc` | 6 |
| `SubstringSearchOpDescSpec` | `SubstringSearchOpDesc` | 4 |
| `RegexOpDescSpec` | `RegexOpDesc` | 3 |
| `DictionaryMatcherOpDescSpec` | `DictionaryMatcherOpDesc` | 5 |

All four spec files follow the `<srcClassName>Spec.scala` one-to-one
convention.

**Behavior pinned**

| Surface | Contract |
| --- | --- |
| `operatorInfo` | exact `userFriendlyName`; group `SEARCH_GROUP`; one
input / one output port; `supportReconfiguration == true` |
| Field defaults | `KeywordSearch`/`Substring` `isCaseSensitive ==
false` |
| `getPhysicalOp` | `opExecInitInfo` pattern-matches
`OpExecWithClassName(<FQCN>, descString)` with the exact executor class
name and a non-empty payload; ports carried forward from `operatorInfo`
|
| Polymorphic JSON round-trip | serialize → deserialize via
`classOf[LogicalOp]` → correct subtype with fields preserved (pins the
`@JsonTypeInfo` discriminator + `@JsonProperty` wire-keys) |
| `DictionaryMatcher` schema propagation | `getExternalOutputSchemas`
appends a `BOOLEAN` column named by `resultAttribute` to the input
schema |
| `DictionaryMatcher` MatchingType | serializes via its `@JsonValue`
name (`SCANBASED` → `"Scan"`) and round-trips |

Mirrors the established `SleepOpDescSpec` / `SortOpDescSpec` patterns
(AnyFlatSpec + Matchers; `OpExecWithClassName` match instead of brittle
`toString`; polymorphic deserialize via `classOf[LogicalOp]`).

### Any related issues, documentation, discussions?

Closes #5806.

### How was this PR tested?

Pure unit-test additions; verified locally with:

- `sbt "WorkflowOperator/testOnly
org.apache.texera.amber.operator.keywordSearch.KeywordSearchOpDescSpec
org.apache.texera.amber.operator.substringSearch.SubstringSearchOpDescSpec
org.apache.texera.amber.operator.regex.RegexOpDescSpec
org.apache.texera.amber.operator.dictionary.DictionaryMatcherOpDescSpec"`
— 18 tests, all green
- `sbt "WorkflowOperator/Test/scalafmtCheck"` and `sbt
"WorkflowOperator/Test/scalafix --check"` — clean
- CI to confirm

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

Generated-by: Claude Code (Opus 4.8 [1M context])

Report URL: https://github.com/apache/texera/actions/runs/27864078201

With regards,
GitHub Actions via GitBox

Reply via email to