Dale Richardson created YUNIKORN-3383:
-----------------------------------------
Summary: Gang / placeholder chaos scenarios + full state-diff
oracle
Key: YUNIKORN-3383
URL: https://issues.apache.org/jira/browse/YUNIKORN-3383
Project: Apache YuniKorn
Issue Type: Test
Components: core - scheduler, shim - kubernetes
Reporter: Dale Richardson
Assignee: Dale Richardson
Extends the fault-injection chaos harness (YUNIKORN-3377) with gang-scheduling
scenarios and a full shim<->core state-diff oracle.
h3. What it adds
* A create/delete loopback in the mock kube client: placeholders are pods the
shim
itself creates (KubeClient.Create) and deletes (KubeClient.Delete). Created
pods
are looped back as informer adds; deletes are delivered as informer deletes.
This
makes the Delete fault axis reachable for the first time (it was provably
unreachable before -- zero Delete calls).
* Gang scenarios: originator pod carrying a task-groups annotation plus member
pods, hard and soft gangStyle, short placeholder timeout. Fault axes: bind
failure on placeholders and real pods, delete failure, node flap, timeout
expiry.
* Oracle O6 -- a full state diff run after every scenario settles, reported as
O6a placement (core allocations <-> shim cache assignments, both directions),
O6b per-node usage (core node allocated == sum of shim NodeInfo pods), O6c
queue
usage (core leaf queue allocated == sum of its apps' allocated + placeholder),
O6d node-set equality. This surfaces the queue-accounting half of divergences
that the per-pod oracles cannot see.
* Gang oracles G1 hard-gang atomicity, G2 no orphaned placeholders, G3 booked
resources never exceed the gang ask, G4 timeout semantics (soft falls back to
normal scheduling, hard fails the app).
h3. Results
Control (no faults) is fully green in both styles: real pods and placeholders go
through the whole create -> bind -> replace -> delete cycle, every oracle holds
--
proving the loopback and the gang path are sound. The fault scenarios are
red-by-design and exposed the gang-level expression of YUNIKORN-3355 (a
bind-failed placeholder re-adopted as an existing allocation) and the
release-path
delete-no-retry that is filed as YUNIKORN-3382. Runtime under 2 minutes.
h3. Note
Red-by-design: this PR stays a draft until the bugs it exposes are fixed, per
the
YUNIKORN-3373 / YUNIKORN-3377 precedent. The O6 oracle correctly counts
placeholder resources separately (allocatedPlaceholder), verified against
application.go.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]