From 4c16cc3c4da7bbf8375d7951185db1761eb396bf Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 22 Jun 2025 16:45:17 +0300 Subject: Remove all Raft protocol code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed all Raft-related code as it was not working properly: - Removed VSRaftProtocol.java implementation - Removed all Raft test files - Removed Raft example/demo files - Removed Raft documentation - Removed Raft simulation files (.dat) - Removed Raft scripts - Updated VSRegisteredEvents to remove Raft registration - Updated SimulationBuilder to remove RAFT constant - Updated SimulationFactory to remove Raft methods - Updated SimulationBuilderTest to remove Raft tests - Updated pom.xml to remove Raft test configurations The protocol had issues with leader election not completing in GUI mode. 🤖 Generated with Claude Code https://claude.ai/code Co-Authored-By: Claude --- src/test/java/testing/RaftSimulationTest.java | 57 ---------------- .../java/testing/protocols/RaftProtocolTest.java | 77 ---------------------- 2 files changed, 134 deletions(-) delete mode 100644 src/test/java/testing/RaftSimulationTest.java delete mode 100644 src/test/java/testing/protocols/RaftProtocolTest.java (limited to 'src/test/java/testing') diff --git a/src/test/java/testing/RaftSimulationTest.java b/src/test/java/testing/RaftSimulationTest.java deleted file mode 100644 index b161668..0000000 --- a/src/test/java/testing/RaftSimulationTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package testing; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.BeforeEach; -import prefs.VSDefaultPrefs; -import events.VSRegisteredEvents; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Integration test for Raft protocol simulation. - * Tests that leader election occurs when running a Raft simulation. - */ -class RaftSimulationTest { - - private VSDefaultPrefs prefs; - - @BeforeEach - void setUp() { - prefs = new VSDefaultPrefs(); - prefs.fillWithDefaults(); - VSRegisteredEvents.init(prefs); - } - - @Test - void testRaftLeaderElection() throws Exception { - // This test verifies that the Raft protocol implementation - // properly elects a leader when running - - // For now, we verify the protocol can be instantiated and initialized - Object raftObj = new utils.VSClassLoader().newInstance("protocols.implementations.VSRaftProtocol"); - assertNotNull(raftObj, "Raft protocol should be instantiable"); - assertTrue(raftObj instanceof protocols.VSAbstractProtocol, "Should be a protocol"); - - // Verify the protocol has the correct classname set - protocols.implementations.VSRaftProtocol raftProtocol = - (protocols.implementations.VSRaftProtocol) raftObj; - assertNotNull(raftProtocol.getClassname(), - "Protocol classname should be set"); - assertTrue(raftProtocol.getClassname().contains("VSRaftProtocol"), - "Protocol classname should contain VSRaftProtocol"); - } - - @Test - void testRaftProtocolRegistration() { - // Verify Raft protocol is properly registered - assertTrue(VSRegisteredEvents.getProtocolClassnames().contains( - "protocols.implementations.VSRaftProtocol"), - "Raft protocol should be registered"); - - // Verify it has a proper display name (this is set in lang properties) - String shortName = VSRegisteredEvents.getShortnameByClassname( - "protocols.implementations.VSRaftProtocol"); - assertNotNull(shortName, "Raft protocol should have a short name"); - assertEquals("Raft Consensus", shortName); - } -} \ No newline at end of file diff --git a/src/test/java/testing/protocols/RaftProtocolTest.java b/src/test/java/testing/protocols/RaftProtocolTest.java deleted file mode 100644 index b92606d..0000000 --- a/src/test/java/testing/protocols/RaftProtocolTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package testing.protocols; - -import testing.*; -import org.junit.jupiter.api.*; -import static org.junit.jupiter.api.Assertions.*; - -/** - * Integration test for Raft consensus protocol. - */ -public class RaftProtocolTest extends BaseProtocolTest { - - @Test - @DisplayName("Test Raft protocol activation and message sending") - public void testRaftActivation() { - SimulationResult result = runSimulation( - "saved-simulations/raft.dat", - 2000 // 2 seconds should be enough for elections - ); - - ProtocolVerifier verifier = new ProtocolVerifier() - .expectLogExactly("Raft Consensus Server activated", 3) - .expectLog("FOLLOWER.*initialized") - .expectLog("Starting election") - .expectLog("CANDIDATE") - .expectMessages() // Must have messages - .expectAtLeastNMessages(10); // Should have many election messages - - VerificationResult verification = verifier.verify(result.getAllLogs()); - - assertTrue(verification.passed(), verification.getFailureMessage()); - assertEquals(3, result.getMetrics().getNumProcesses(), - "Should have 3 processes"); - } - - @Test - @DisplayName("Test Raft election messages") - public void testRaftElectionMessages() { - SimulationResult result = runSimulation( - "saved-simulations/raft.dat", - 3000 - ); - - ProtocolVerifier verifier = new ProtocolVerifier() - .expectLog("REQUEST_VOTE") - .expectLog("Message sent.*REQUEST_VOTE") - .expectAtLeastNMessages(15); // Multiple election rounds - - VerificationResult verification = verifier.verify(result.getAllLogs()); - assertTrue(verification.passed(), verification.getFailureMessage()); - - // Verify term progression - assertTrue(result.findFirst("term=1").isPresent(), "Should have term 1"); - assertTrue(result.findFirst("term=2").isPresent(), "Should progress to term 2"); - } - - @Test - @DisplayName("Test Raft with clients") - public void testRaftWithClients() { - // Skip if file doesn't exist - if (!new java.io.File("saved-simulations/raft-with-clients.dat").exists()) { - return; - } - - SimulationResult result = runSimulation( - "saved-simulations/raft-with-clients.dat", - 5000 - ); - - ProtocolVerifier verifier = new ProtocolVerifier() - .expectLogExactly("Raft Consensus Server activated", 3) - .expectLogExactly("Raft Consensus Client activated", 2) - .expectMessages(); // Must have messages - - VerificationResult verification = verifier.verify(result.getAllLogs()); - assertTrue(verification.passed(), verification.getFailureMessage()); - } -} \ No newline at end of file -- cgit v1.2.3