apache / apache/texera

Sweep a configuration into the variants a parity run needs

Open
#8,424 0 comments 0 reactions 1 assignee Claimed by @kz930 View on GitHub
Dominant language
Scala
Stars
314
Forks
187
Avg merge
1d 21h
Merged PRs (30d)
214

Description

### Task Summary

One configuration exercises one path through an operator. A parity run wants more than that: every value an enum offers, the optional knobs a default leaves empty, and a text knob carrying a value that breaks a Python literal if it was spliced rather than escaped.

This adds the sweep on top of the generator that derives the configuration. Four entry points return variants: one for an operator configured from its annotations, and three for a hand-written fixture, which needs them more, since the configuration it pins is otherwise the only one its operator ever runs.

The sweep moves one knob at a time rather than crossing them, so a failure names the knob that caused it. The exceptions are the two variants that move every knob of a kind at once, where bisecting by hand costs less than a run per field: all optional knobs filled together, and all free-text knobs carrying the hostile value together, numbered so no two knobs carry the same text. Two knobs sharing one value is not a smaller version of the same test: where both name an output column, it writes the same column twice and the run fails for a reason that has nothing to do with escaping.

Step 22 of 27 in #8325., and the second of the seventeenth entry's two halves. The two are one Scala object, so this one does not compile without the members the first defines.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.