diff --git a/server/peer_server.go b/server/peer_server.go index 2a903a2a0..1a409fd6b 100644 --- a/server/peer_server.go +++ b/server/peer_server.go @@ -94,6 +94,11 @@ func NewPeerServer(name string, path string, url string, bindAddr string, tlsCon } s.raftServer = raftServer + s.raftServer.AddEventListener(raft.StateChangeEventType, s.raftEventLogger) + s.raftServer.AddEventListener(raft.LeaderChangeEventType, s.raftEventLogger) + s.raftServer.AddEventListener(raft.TermChangeEventType, s.raftEventLogger) + s.raftServer.AddEventListener(raft.AddPeerEventType, s.raftEventLogger) + s.raftServer.AddEventListener(raft.RemovePeerEventType, s.raftEventLogger) return s } @@ -422,6 +427,31 @@ func (s *PeerServer) PeerStats() []byte { return nil } +// raftEventLogger converts events from the Raft server into log messages. +func (s *PeerServer) raftEventLogger(event raft.Event) { + value := event.Value() + prevValue := event.PrevValue() + if value == nil { + value = "" + } + if prevValue == nil { + prevValue = "" + } + + switch event.Type() { + case raft.StateChangeEventType: + fmt.Printf("[%s] State changed from '%v' to '%v'.\n", s.name, prevValue, value) + case raft.TermChangeEventType: + fmt.Printf("[%s] Term #%v started.\n", s.name, value) + case raft.LeaderChangeEventType: + fmt.Printf("[%s] Leader changed from '%v' to '%v'.\n", s.name, prevValue, value) + case raft.AddPeerEventType: + fmt.Printf("[%s] Peer added: '%v'\n", s.name, value) + case raft.RemovePeerEventType: + fmt.Printf("[%s] Peer removed: '%v'\n", s.name, value) + } +} + func (s *PeerServer) monitorSnapshot() { for { time.Sleep(s.snapConf.checkingInterval) diff --git a/test.sh b/test.sh index ae40d8200..a62568ea9 100755 --- a/test.sh +++ b/test.sh @@ -5,6 +5,10 @@ if [ -z "$PKG" ]; then PKG="./store ./server ./server/v2/tests ./mod/lock/v2/tests" fi +if [ -z "$RUN" ]; then + RUN="." +fi + # Get GOPATH, etc from build . ./build @@ -15,9 +19,9 @@ export GOPATH="${PWD}" for i in $PKG do go test -i $i - go test -v $i + go test -v -test.run=$RUN $i done # Functional tests go test -i ./tests/functional -ETCD_BIN_PATH=$(pwd)/etcd go test -v ./tests/functional +ETCD_BIN_PATH=$(pwd)/etcd go test -v -test.run=$RUN ./tests/functional