Commit 1728baf
* test(integration): add SimulateNodeOffline knob to satellite mock
The mock stamped every Node ONLINE unconditionally, making it
impossible to exercise `linstor n lost` honestly: the Bug 111 gate
correctly refuses node-lost against an ONLINE satellite, and the
machine-readable CLI exits 0 on refusal envelopes, so the lost-cascade
tests silently no-op'd and timed out. The knob models the documented
n-lost precondition (a satellite that stopped heartbeating).
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): drive evacuate-force and evict through the PUT routes
The pinned linstor-client 1.27.1 (asserted by Group H) has no
`node evacuate --force` flag and no `node evict` verb at all, so
both tests crashed on CLI argument parsing before reaching the wire.
Exercise the force override via PUT /v1/nodes/{node}/evacuate?force=true
and the evict alias via PUT /v1/nodes/{node}/evict directly, asserting
the []ApiCallRc envelope shape both routes must answer (Bug 78 wire).
Node-lost cascade now takes the satellite offline first — the
documented n-lost precondition — instead of silently hitting the
Bug 111 online-refusal and timing out.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): invert tiebreaker toggle pin to post-#129 reap contract
TestGroupFRToggleDiskful2DisklessPreservesTieBreaker pinned the
pre-#129 invariant (witness preserved at 1 diskful + 1 user-diskless).
PR #129 collapsed the auto-witness contract to upstream parity —
"witness lives iff exactly 2 diskful replicas" — so the toggle down
to 1 diskful now reaps the witness. Rename to ...ReapsTieBreaker and
assert the exact 2-replica composition (1 diskful + 1 user-diskless,
0 witnesses), mirroring the L1 spec inversion in
internal/controller/ensure_tiebreaker_test.go.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): pin Bug 397 restore contract; retry RunEvery stamp on conflict
SnapShipCrossNode pinned the pre-Bug-397 behaviour where an explicit
node_names restore onto a snapshot-less node succeeded and acted as a
cross-node ship trigger. Bug 397 (P0 data integrity) now refuses that
restore at the API edge — an empty diskful replica could latch
UpToDate and be promoted on failover. Rename the subtest to
SnapRestoreSnapshotHolderOnly and pin both halves of the new
contract: 400 + no target RD for the snapshot-less node, 201 + the
BlockstorRestoreFromSnapshot routing prop for a holder node.
AutoSnapshotPeriodicTick stamped AutoSnapshot/RunEvery with a
single-shot Update that races the live RD reconciler; wrap it in
retry.RetryOnConflict.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): assert NodeConnection property bag under upstream 'props' key
The GET envelope assertion looked for a 'properties' map, but the
upstream wire key is 'props' — golinstor's NodeConnection struct
(client/connection.go) and blockstor's handler both spell it that
way. The test (not the product) diverged from the wire contract.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): align Group K workflows with CLI 1.27.1 and post-#129 witness
- HappyPath: pin autoplace to the thin lvm-thin pool the way
linstor-csi always does; unpinned placement could land on the thick
'file' pool where the snapshot step is correctly refused by the G5
thick-provider gate (the CLI exits 0 on refusal envelopes, so the
failure surfaced as a misleading wait timeout).
- NodeLostCascade: take the satellite offline before 'n lost' (Bug
111 gate refuses lost against an ONLINE satellite).
- PoolDestroyedDropsFromPlacer: 'rd create' in linstor-client 1.27.1
has no --storage-pool flag; the pool constraint rides on autoplace.
- LUKSStackEndToEnd: 1.27.1 spells the flag --passphrase, not
--new-passphrase.
- LateVD / ReplicasOnSame / ReplicasOnDifferent: exclude the
auto-tiebreaker witness (expected on 2-diskful RDs post-#129) from
diskful placement asserts it was never part of.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): stamp blockstor.io/node-name label on fixture storage pools
The k8s store's StoragePools().ListByNode runs a label selector on
blockstor.io/node-name — the label pkg/store/k8s stamps on every
store-created pool. Fixture pools seeded directly via the CRD client
lacked it, so per-node store reads saw zero pools and the `n lost`
storage-pool cascade silently deleted nothing, failing
TestGroupKWFNodeLostCascade's SP assert.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): fix r-create arg order for 1.27.1; witness-aware Bug 83 assert
linstor-client 1.27.1's argparse rejects the trailing positional
after two valued options ('too few arguments'); use the
positional-first form Group F already uses. The Bug 83 dead-pool
assert now excludes the auto-tiebreaker witness — a network-only
DISKLESS attachment that consumes no pool and legitimately lands on
the dead-pool node for a 2-diskful RD post-#129.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): appease bodyclose/wrapcheck/godox on new test code
Fold the PUT + envelope assertion into one helper so bodyclose sees
the close in the same scope, wrap client errors inside the
RetryOnConflict closure, and reword two comments that tripped godox.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
* test(integration): seed Group G resources before the RD to dodge witness race
seedRDWithVolume created the RD first, so the RD reconciler's
auto-tiebreaker pass (witness iff exactly 2 diskful, post-#129)
raced the fixture loop to worker-3 and the seeded third Resource
flaked with AlreadyExists. Seeding all three diskful rows before the
RD lands means the first reconcile already sees 3 diskful and wants
no witness.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
---------
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 960f414 commit 1728baf
7 files changed
Lines changed: 356 additions & 108 deletions
File tree
- tests/integration
- harness
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
30 | 33 | | |
31 | 34 | | |
32 | 35 | | |
| |||
272 | 275 | | |
273 | 276 | | |
274 | 277 | | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
279 | 288 | | |
280 | 289 | | |
281 | 290 | | |
| |||
288 | 297 | | |
289 | 298 | | |
290 | 299 | | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
291 | 306 | | |
292 | 307 | | |
293 | 308 | | |
294 | 309 | | |
295 | | - | |
296 | | - | |
297 | | - | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
298 | 313 | | |
299 | 314 | | |
300 | 315 | | |
| |||
310 | 325 | | |
311 | 326 | | |
312 | 327 | | |
313 | | - | |
314 | | - | |
315 | | - | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
316 | 333 | | |
317 | 334 | | |
318 | 335 | | |
319 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
320 | 347 | | |
321 | 348 | | |
322 | 349 | | |
| |||
616 | 643 | | |
617 | 644 | | |
618 | 645 | | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
619 | 695 | | |
620 | 696 | | |
621 | 697 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
260 | 260 | | |
261 | 261 | | |
262 | 262 | | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
273 | 276 | | |
274 | 277 | | |
275 | | - | |
| 278 | + | |
276 | 279 | | |
277 | 280 | | |
278 | 281 | | |
| |||
299 | 302 | | |
300 | 303 | | |
301 | 304 | | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
307 | 310 | | |
308 | 311 | | |
309 | 312 | | |
310 | 313 | | |
311 | 314 | | |
312 | | - | |
| 315 | + | |
313 | 316 | | |
314 | 317 | | |
315 | 318 | | |
316 | 319 | | |
317 | | - | |
| 320 | + | |
318 | 321 | | |
319 | 322 | | |
320 | 323 | | |
| |||
323 | 326 | | |
324 | 327 | | |
325 | 328 | | |
326 | | - | |
327 | | - | |
| 329 | + | |
| 330 | + | |
328 | 331 | | |
329 | 332 | | |
330 | 333 | | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
337 | 341 | | |
338 | 342 | | |
339 | 343 | | |
340 | | - | |
341 | 344 | | |
342 | 345 | | |
| 346 | + | |
343 | 347 | | |
344 | 348 | | |
345 | 349 | | |
346 | 350 | | |
347 | 351 | | |
348 | 352 | | |
349 | 353 | | |
350 | | - | |
351 | | - | |
352 | | - | |
| 354 | + | |
353 | 355 | | |
354 | 356 | | |
355 | 357 | | |
356 | 358 | | |
357 | 359 | | |
358 | 360 | | |
359 | 361 | | |
360 | | - | |
| 362 | + | |
361 | 363 | | |
362 | 364 | | |
363 | 365 | | |
| |||
0 commit comments