# nim-raft # Copyright (c) 2023 Status Research & Development GmbH # Licensed under either of # * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) # * MIT license ([LICENSE-MIT](LICENSE-MIT)) # at your option. # This file may not be copied, modified, or distributed except according to # those terms. import unittest2 import ../src/raft/types import ../src/raft/consensus_state_machine import ../src/raft/log import ../src/raft/tracker import ../src/raft/state import std/sets import std/[times, sequtils, random] import uuids import tables import std/algorithm type TestCluster* = object nodes: Table[RaftnodeId, RaftStateMachine] blockedTickSet: HashSet[RaftnodeId] blockedMsgRoutingSet: HashSet[RaftnodeId] var test_ids_3 = @[ RaftnodeId(parseUUID("a8409b39-f17b-4682-aaef-a19cc9f356fb")), RaftnodeId(parseUUID("2a98fc33-6559-44c0-b130-fc3e9df80a69")), RaftnodeId(parseUUID("9156756d-697f-4ffa-9b82-0c86720344bd")) ] var test_ids_1 = @[ RaftnodeId(parseUUID("a8409b39-f17b-4682-aaef-a19cc9f356fb")), ] func createConfigFromIds(ids: seq[RaftnodeId]): RaftConfig = var config = RaftConfig() for id in ids: config.currentSet.add(id) return config proc createCluster(ids: seq[RaftnodeId], now: times.DateTime) : TestCluster = var config = createConfigFromIds(ids) var cluster = TestCluster() cluster.blockedTickSet.init() cluster.blockedMsgRoutingSet.init() cluster.nodes = initTable[RaftnodeId, RaftStateMachine]() for i in 0..