From 0881fac983503a5320f5b093c738ebc44cc06a70 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 26 Mar 2026 23:21:21 +0200 Subject: Add Raft election guard negative test (0bac83d3-1322-4940-a9ee-58eb1e0d6245) --- .../protocols/implementations/VSRaftProtocolTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/test/java') diff --git a/src/test/java/protocols/implementations/VSRaftProtocolTest.java b/src/test/java/protocols/implementations/VSRaftProtocolTest.java index 7f4f867..0ae52ba 100644 --- a/src/test/java/protocols/implementations/VSRaftProtocolTest.java +++ b/src/test/java/protocols/implementations/VSRaftProtocolTest.java @@ -166,6 +166,25 @@ class VSRaftProtocolTest { .isServerSchedule()); } + @Test + void testOnClientScheduleDoesNotStartElectionBeforeTimeout() throws Exception { + protocol.currentContextIsServer(false); + protocol.onClientInit(); + clearInvocations(mockProcess, mockTaskManager); + when(mockProcess.getTime()).thenReturn(2000L); + + protocol.onClientSchedule(); + + verify(mockProcess, never()).sendMessage(any()); + verify(mockTaskManager, never()).removeAllTasks(any()); + verify(mockTaskManager, never()).addTask(any()); + assertFalse(getBooleanField("isCandidate")); + assertFalse(getBooleanField("isLeader")); + assertEquals(0, getIntField("currentTerm")); + assertEquals(0, getIntField("votesReceived")); + assertEquals(-1, getIntField("votedFor")); + } + @Test void testCandidateTimeoutStartsNewElectionAndReschedules() throws Exception { protocol.currentContextIsServer(false); -- cgit v1.2.3