func setupConsensusModuleR2( t *testing.T, logTerms []TermNo, ) (*ConsensusModule, *testhelpers.MockRpcSender) { ps := rps.NewIMPSWithCurrentTerm(testdata.CurrentTerm) iml := log.TestUtil_NewInMemoryLog_WithTerms(logTerms) dsm := testhelpers.NewDummyStateMachine() mrs := testhelpers.NewMockRpcSender() ts := config.TimeSettings{testdata.TickerDuration, testdata.ElectionTimeoutLow} ci, err := config.NewClusterInfo(testdata.AllServerIds, testdata.ThisServerId) if err != nil { t.Fatal(err) } cm, err := NewConsensusModule(ps, iml, mrs, ci, testdata.MaxEntriesPerAppendEntry, ts) if err != nil { t.Fatal(err) } if cm == nil { t.Fatal() } err = cm.Start(dsm) if err != nil { t.Fatal(err) } return cm, mrs }
func setupConsensusModuleR3_SOLO( t *testing.T, electionTimeoutLow time.Duration, logTerms []TermNo, imrsc *inMemoryRpcServiceConnector, ) (IConsensusModule, *log.InMemoryLog, *testhelpers.DummyStateMachine) { ps := rps.NewIMPSWithCurrentTerm(0) iml := log.TestUtil_NewInMemoryLog_WithTerms(logTerms) dsm := testhelpers.NewDummyStateMachine() ts := config.TimeSettings{testdata.TickerDuration, testdata.ElectionTimeoutLow} ci, err := config.NewClusterInfo([]ServerId{"_SOLO_"}, "_SOLO_") if err != nil { t.Fatal(err) } cm, err := NewConsensusModule(ps, iml, imrsc, ci, testdata.MaxEntriesPerAppendEntry, ts) if err != nil { t.Fatal(err) } if cm == nil { t.Fatal() } err = cm.Start(dsm) if err != nil { t.Fatal(err) } return cm, iml, dsm }
func setupManagedConsensusModuleR2( t *testing.T, logTerms []TermNo, solo bool, ) (*managedConsensusModule, *testhelpers.MockRpcSender) { ps := rps.NewIMPSWithCurrentTerm(testdata.CurrentTerm) iml := log.TestUtil_NewInMemoryLog_WithTerms(logTerms) dsm := testhelpers.NewDummyStateMachine() mrs := testhelpers.NewMockRpcSender() var allServerIds []ServerId if solo { allServerIds = []ServerId{testdata.ThisServerId} } else { allServerIds = testdata.AllServerIds } ci, err := config.NewClusterInfo(allServerIds, testdata.ThisServerId) if err != nil { t.Fatal(err) } now := time.Now() cm, err := NewPassiveConsensusModule( ps, iml, dsm, mrs, ci, testdata.MaxEntriesPerAppendEntry, testdata.ElectionTimeoutLow, now, ) if err != nil { t.Fatal(err) } if cm == nil { t.Fatal() } // Bias simulated clock to avoid exact time matches now = now.Add(testdata.SleepToLetGoroutineRun) mcm := &managedConsensusModule{cm, now, iml, dsm} return mcm, mrs }