[
https://issues.apache.org/jira/browse/YUNIKORN-3385?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dale Richardson updated YUNIKORN-3385:
--------------------------------------
Description:
A metamorphic property fuzzer for the shim's informer event handlers. The
informer
contract permits legal reorderings (create collapsed into update, stale delete
objects, resync duplicates, arbitrary cross-object interleaving); YUNIKORN-3317
was
exactly an ordering bug and no tool covered the class.
h3. Design (metamorphic, no reference model)
Generate a logical final truth (a small set of pods and nodes, YuniKorn-managed
and foreign, with per-object version histories), enumerate/sample N legal
delivery
orderings of the SAME history, drive a fresh Context's handlers
(AddPod/UpdatePod/DeletePod, addNode/updateNode/deleteNode) with each, and
assert
all orderings converge to the identical cache end-state (cached pods and their
node/phase, foreign-pod set, node set, live foreign allocations). A divergence
reports the seed, both orderings' full event traces, and the first differing
field.
Two generator constraints keep the oracle sound (documented in the file): pod
assignment/resources are immutable once set, and a node any pod is assigned to
is
never deleted (a node delete genuinely loses information).
h3. Proof of value
Run against branch-1.8 it rediscovers YUNIKORN-3317 on 4 of 5 seeds -- a foreign
pod whose create was collapsed into an update is never reported to the core,
while
the same history with a plain create books it. That is a useful
retro-validation for the test
On master it also found a live convergence divergence, filed as YUNIKORN-3381
(terminated-while-orphaned foreign pod re-adopted as a phantom allocation).
h3. Note
Red-by-design on master until YUNIKORN-3381 is fixed; draft per the
YUNIKORN-3373
precedent.
was:
A metamorphic property fuzzer for the shim's informer event handlers. The
informer
contract permits legal reorderings (create collapsed into update, stale delete
objects, resync duplicates, arbitrary cross-object interleaving); YUNIKORN-3317
was
exactly an ordering bug and no tool covered the class.
h3. Design (metamorphic, no reference model)
Generate a logical final truth (a small set of pods and nodes, YuniKorn-managed
and foreign, with per-object version histories), enumerate/sample N legal
delivery
orderings of the SAME history, drive a fresh Context's handlers
(AddPod/UpdatePod/DeletePod, addNode/updateNode/deleteNode) with each, and
assert
all orderings converge to the identical cache end-state (cached pods and their
node/phase, foreign-pod set, node set, live foreign allocations). A divergence
reports the seed, both orderings' full event traces, and the first differing
field.
Two generator constraints keep the oracle sound (documented in the file): pod
assignment/resources are immutable once set, and a node any pod is assigned to
is
never deleted (a node delete genuinely loses information).
h3. Proof of value
Run against branch-1.8 it rediscovers YUNIKORN-3317 on 4 of 5 seeds -- a foreign
pod whose create was collapsed into an update is never reported to the core,
while
the same history with a plain create books it. That is the retro-validation the
earlier backport probe could not produce.
On master it also found a live convergence divergence, filed as YUNIKORN-3381
(terminated-while-orphaned foreign pod re-adopted as a phantom allocation).
h3. Note
Red-by-design on master until YUNIKORN-3381 is fixed; draft per the
YUNIKORN-3373
precedent.
> Informer event-ordering property fuzzer
> ---------------------------------------
>
> Key: YUNIKORN-3385
> URL: https://issues.apache.org/jira/browse/YUNIKORN-3385
> Project: Apache YuniKorn
> Issue Type: Test
> Components: core - scheduler, shim - kubernetes
> Reporter: Dale Richardson
> Assignee: Dale Richardson
> Priority: Minor
>
> A metamorphic property fuzzer for the shim's informer event handlers. The
> informer
> contract permits legal reorderings (create collapsed into update, stale delete
> objects, resync duplicates, arbitrary cross-object interleaving);
> YUNIKORN-3317 was
> exactly an ordering bug and no tool covered the class.
> h3. Design (metamorphic, no reference model)
> Generate a logical final truth (a small set of pods and nodes,
> YuniKorn-managed
> and foreign, with per-object version histories), enumerate/sample N legal
> delivery
> orderings of the SAME history, drive a fresh Context's handlers
> (AddPod/UpdatePod/DeletePod, addNode/updateNode/deleteNode) with each, and
> assert
> all orderings converge to the identical cache end-state (cached pods and their
> node/phase, foreign-pod set, node set, live foreign allocations). A divergence
> reports the seed, both orderings' full event traces, and the first differing
> field.
> Two generator constraints keep the oracle sound (documented in the file): pod
> assignment/resources are immutable once set, and a node any pod is assigned
> to is
> never deleted (a node delete genuinely loses information).
> h3. Proof of value
> Run against branch-1.8 it rediscovers YUNIKORN-3317 on 4 of 5 seeds -- a
> foreign
> pod whose create was collapsed into an update is never reported to the core,
> while
> the same history with a plain create books it. That is a useful
> retro-validation for the test
> On master it also found a live convergence divergence, filed as YUNIKORN-3381
> (terminated-while-orphaned foreign pod re-adopted as a phantom allocation).
> h3. Note
> Red-by-design on master until YUNIKORN-3381 is fixed; draft per the
> YUNIKORN-3373
> precedent.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]