import simulator.*; import core.*; import prefs.*; import events.VSRegisteredEvents; import events.internal.VSProtocolEvent; import serialize.VSSerialize; import java.io.*; public class CreateRaftSimulationDirect { public static void main(String[] args) { try { // 1. Create a basic simulation with the GUI to get proper structure System.out.println("Creating Raft simulation..."); System.out.println("Note: This requires manual intervention:"); System.out.println("1. Run DS-Sim GUI: java -jar target/ds-sim-1.0.1-SNAPSHOT.jar"); System.out.println("2. Add 3 processes"); System.out.println("3. Right-click each process and select 'Raft Consensus' as Server"); System.out.println("4. Save as 'saved-simulations/raft.dat'"); System.out.println("5. Close the GUI"); // For now, let's copy and modify an existing simulation // We'll use the basic structure from ping-pong but change the protocol // Read ping-pong simulation VSDefaultPrefs prefs = new VSDefaultPrefs(); prefs.fillWithDefaults(); VSRegisteredEvents.init(prefs); System.out.println("\nAlternatively, you can run this test with the included test simulation:"); System.out.println("java -cp target/classes:target/test-classes -Djava.awt.headless=true -Dds.sim.verbose=true testing.HeadlessProtocolRunner saved-simulations/raft.dat"); } catch (Exception e) { e.printStackTrace(); } } }