diff options
| author | Paul Buetow <paul@buetow.org> | 2025-06-21 21:27:31 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-06-21 21:27:31 +0300 |
| commit | 0841f0f9a1e3f3708d8c511a6290344e73607aab (patch) | |
| tree | 4ae7fe60878b693d6975093acb491d977d247acd /src/main/java/simulator/engine/HeadlessSimulationEngine.java | |
| parent | ce82046a11521b0537ac2150a07a4de54aec883a (diff) | |
Move test scripts to scripts/ directory and fix simulation completion
- Moved test-protocols.sh, test-quick.sh, test-verbose.sh to scripts/
- Updated references in README.md and docs/testing-guide.md
- Fixed HeadlessSimulationRunner to properly run simulations to completion
- Fixed message delivery timing (now respects 500-2000ms delays)
- Added proper process time synchronization
- Fixed HeadlessProtocolRunner to exit cleanly
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'src/main/java/simulator/engine/HeadlessSimulationEngine.java')
| -rw-r--r-- | src/main/java/simulator/engine/HeadlessSimulationEngine.java | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/src/main/java/simulator/engine/HeadlessSimulationEngine.java b/src/main/java/simulator/engine/HeadlessSimulationEngine.java index 36a64a7..fa6dde8 100644 --- a/src/main/java/simulator/engine/HeadlessSimulationEngine.java +++ b/src/main/java/simulator/engine/HeadlessSimulationEngine.java @@ -24,23 +24,12 @@ public class HeadlessSimulationEngine extends AbstractSimulationEngine { return time; // Deliver immediately if process not found } - // Calculate network delay - long networkDelay = prefs.getLong("sim.network.delay"); - long variability = prefs.getLong("sim.network.variability"); + // Use the process's getDurationTime method to get the message duration + // This respects the message.sendingtime.min and message.sendingtime.max preferences + long durationTime = source.getDurationTime(); - // Add random variability - if (variability > 0) { - long variance = (long)(Math.random() * variability * 2) - variability; - networkDelay += variance; - } - - // Ensure minimum delay - if (networkDelay < 0) { - networkDelay = 0; - } - - // Calculate delivery time based on source process time - return source.getTime() + networkDelay; + // Calculate delivery time based on source process's global time + duration + return source.getGlobalTime() + durationTime; } @Override @@ -49,6 +38,13 @@ public class HeadlessSimulationEngine extends AbstractSimulationEngine { VSInternalProcess sendingProcess = (VSInternalProcess) message.getSendingProcess(); boolean recvOwn = prefs.getBoolean("sim.message.own.recv"); + // Debug logging + if (loging != null) { + loging.log("Message " + message.getMessageID() + " scheduled for delivery at time " + + deliveryTime + " (sent at globalTime=" + sendingProcess.getGlobalTime() + + ", duration=" + (deliveryTime - sendingProcess.getGlobalTime()) + "ms)"); + } + // Schedule delivery to all processes for (VSInternalProcess receiverProcess : processes) { if (receiverProcess.equals(sendingProcess)) { @@ -62,12 +58,6 @@ public class HeadlessSimulationEngine extends AbstractSimulationEngine { VSMessageReceiveEvent receiveEvent = new VSMessageReceiveEvent(message); VSTask task = new VSTask(deliveryTime, receiverProcess, receiveEvent, VSTask.GLOBAL); taskManager.addTask(task); - - if (loging != null) { - loging.log("Message scheduled for delivery to process " + - receiverProcess.getProcessNum() + "; ID: " + - message.getMessageID() + "; Time: " + deliveryTime); - } } } |
