func (myRaft Raft) makeMockRafts() (Raft, *mock.MockCluster) { //create mock cluster. clconfig := cluster.Config{Peers: nil} cl, err := mock.NewCluster(clconfig) if err != nil { panic(err) } for id := 1; id <= PEERS; id++ { //Ojects to store statemachine, config and server node. myNode := new(RaftMachine) SM := new(sm.State_Machine) myConf := new(Config) //initialize config and server object. server := createMockNode(id, myConf, SM, cl) SM.Id = int32(id) myNode.Node = server myNode.SM = SM myNode.Conf = myConf //append object related to node into raft array. myRaft.Cluster = append(myRaft.Cluster, myNode) //start all the processing threads. go startNode(myRaft.Cluster[id-1].Conf, myRaft.Cluster[id-1].Node, myRaft.Cluster[id-1].SM) } return myRaft, cl }
func (myRaft Raft) makeRafts() Raft { for id := 1; id <= PEERS; id++ { myNode := new(RaftMachine) SM := new(sm.State_Machine) myConf := new(Config) server := createNode(id, myConf, SM) SM.Id = int32(id) myNode.Node = server myNode.SM = SM myNode.Conf = myConf myRaft.Cluster = append(myRaft.Cluster, myNode) go startNode(myRaft.Cluster[id-1].Conf, myRaft.Cluster[id-1].Node, myRaft.Cluster[id-1].SM) } return myRaft }
func StartRaft(myId int) *RaftMachine { myNode := new(RaftMachine) SM := new(sm.State_Machine) myConf := new(Config) //Start Node. server := createNode(myId, myConf, SM) SM.Id = int32(myId) //Restore previous test. restoreData(SM, myConf) myNode.SM = SM myNode.Conf = myConf myNode.Node = server go startNode(myConf, server, SM) return myNode }