aglinxinyuan opened a new issue, #5396: URL: https://github.com/apache/texera/issues/5396
The `org.apache.texera.amber.core.executor` package defines the abstract executor contract every operator implementation has to honor, plus the reflection-based factory that compiles / instantiates them. Nothing in the package is unit-tested today. Add a single `CoreExecutorSpec` covering: | File | Behavior to pin | | --- | --- | | `OperatorExecutor.scala` | Default no-op `open` / `close`; `produceStateOnStart` / `produceStateOnFinish` default to `None`; `processState` defaults to `Some(state)`; `processTupleMultiPort` wraps `processTuple` with `Option.empty` ports; `onFinishMultiPort` wraps `onFinish` similarly; `onFinish` defaults to `Iterator.empty`. Subclassing exercises every default via a small inline concrete impl. | | `SourceOperatorExecutor.scala` | Overrides: `open` / `close` are no-ops; `processTuple` returns empty iterator; `processTupleMultiPort` returns empty iterator (never invokes `processTuple`); `onFinishMultiPort` delegates to subclass `produceTuple()` and wraps each emitted tuple with `Option.empty` port. | | `ExecFactory.scala` | `newExecFromJavaCode` compiles a tiny Java source and constructs the OperatorExecutor; `newExecFromJavaClassName` finds the no-arg constructor when `descString` is empty, the `(String)` constructor when not, and falls back to the `(Int, Int)` / `(String, Int, Int)` constructor when `NoSuchMethodException` is thrown. | ### Priority P3 - Low ### Task Type - [x] Testing / QA -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
