From 69c5dbf50c36ae622c02b943cc6c471254bb2fa9 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 27 Mar 2026 15:23:17 +0200 Subject: Strengthen replay schedule regression checks --- .../VSTaskManagerCrashRecoveryIntegrationTest.java | 40 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'src/test/java/core') diff --git a/src/test/java/core/VSTaskManagerCrashRecoveryIntegrationTest.java b/src/test/java/core/VSTaskManagerCrashRecoveryIntegrationTest.java index 81ceeb8..7bb6038 100644 --- a/src/test/java/core/VSTaskManagerCrashRecoveryIntegrationTest.java +++ b/src/test/java/core/VSTaskManagerCrashRecoveryIntegrationTest.java @@ -75,12 +75,46 @@ class VSTaskManagerCrashRecoveryIntegrationTest { loadedSimulatorToStop = loaded.getSimulator(); VSSimulatorVisualization visualization = loaded.getVisualization(); - runUntil(visualization, 20); + assertFalse(visualization.getProcess(0).isCrashed(), + "process 0 should start alive after replay load"); + assertFalse(visualization.getProcess(1).isCrashed(), + "process 1 should start alive after replay load"); + + runUntil(visualization, 4); + assertFalse(visualization.getProcess(0).isCrashed(), + "process 0 should stay alive before its crash point"); + assertFalse(visualization.getProcess(1).isCrashed(), + "process 1 should stay alive before process 0 crashes"); + + runUntil(visualization, 6); + assertTrue(visualization.getProcess(0).isCrashed(), + "process 0 should crash immediately after its scheduled crash point"); + assertFalse(visualization.getProcess(1).isCrashed(), + "process 1 should still be alive while process 0 is crashed"); + + runUntil(visualization, 10); + assertTrue(visualization.getProcess(0).isCrashed(), + "process 0 should remain crashed before its recover point"); + assertFalse(visualization.getProcess(1).isCrashed(), + "process 1 should still be alive before its later crash"); + + runUntil(visualization, 11); + assertFalse(visualization.getProcess(0).isCrashed(), + "process 0 should recover immediately after its scheduled recover point"); + assertFalse(visualization.getProcess(1).isCrashed(), + "process 1 should still be alive before its crash point"); + + runUntil(visualization, 15); + assertFalse(visualization.getProcess(0).isCrashed(), + "process 0 should stay recovered before process 1 crashes"); + assertFalse(visualization.getProcess(1).isCrashed(), + "process 1 should stay alive before its later crash point"); + runUntil(visualization, 16); assertFalse(visualization.getProcess(0).isCrashed(), - "process 0 should recover after replay load"); + "process 0 should remain recovered after replay load"); assertTrue(visualization.getProcess(1).isCrashed(), - "process 1 should still crash later in the replay"); + "process 1 should crash immediately after its later replay point"); } @Test -- cgit v1.2.3