test(combat): await acknowledged native session exit
Release / release (push) Successful in 10m29s

This commit is contained in:
dmg committed 2026-09-26 13:00:55 -04:00
1 parent 439c1b9cdd
commit 850a04c4a0
1 file changed
+8 -5
@@ -326,14 +326,17 @@ class BasicAttackEventsNativeTest {
games.dmg.fantasystick.session.EquipmentSessions sessions,
FantasyStickLifecycleNativeTest.Actor actor) throws Exception {
var transitioning = (java.util.Map<?, ?>) FantasyStickLifecycleNativeTest.Fixture.field(sessions, "transitioning");
for (int i = 0; i < 80; i++) {
var deadline = System.nanoTime() + java.util.concurrent.TimeUnit.SECONDS.toNanos(15);
while (System.nanoTime() < deadline) {
if (sessions.active(actor.core.id).isEmpty() && !transitioning.containsKey(actor.core.id)
&& restoredExitProof(fixture, actor)) return;
var task = fixture.tasks.poll(5, java.util.concurrent.TimeUnit.SECONDS);
assertNotNull(task, "No exit callback before acknowledged receipt and native RESTORED marker");
task.run();
// The receipt worker can advance independently of queued main-thread callbacks.
var task = fixture.tasks.poll(100, java.util.concurrent.TimeUnit.MILLISECONDS);
if (task != null) task.run();
}
fail("Session exit did not clear owned native marker and acknowledged receipt before restart");
fail("Session exit did not clear owned native marker and acknowledged receipt before restart; "
+ "active=" + sessions.active(actor.core.id) + ", transitioning=" + transitioning.containsKey(actor.core.id)
+ ", marker=" + actor.core.marker() + ", receipt_proof=" + restoredExitProof(fixture, actor));
}
private static void awaitOrdinaryArrival(FantasyStickLifecycleNativeTest.Fixture fixture,