package agent
|
|
import (
|
"sync"
|
|
"github.com/hashicorp/serf/serf"
|
)
|
|
// MockEventHandler is an EventHandler implementation that can be used
|
// for tests.
|
type MockEventHandler struct {
|
Events []serf.Event
|
sync.Mutex
|
}
|
|
func (h *MockEventHandler) HandleEvent(e serf.Event) {
|
h.Lock()
|
defer h.Unlock()
|
h.Events = append(h.Events, e)
|
}
|
|
// MockQueryHandler is an EventHandler implementation used for tests,
|
// it always responds to a query with a given response
|
type MockQueryHandler struct {
|
Response []byte
|
Queries []*serf.Query
|
sync.Mutex
|
}
|
|
func (h *MockQueryHandler) HandleEvent(e serf.Event) {
|
query, ok := e.(*serf.Query)
|
if !ok {
|
return
|
}
|
|
h.Lock()
|
h.Queries = append(h.Queries, query)
|
h.Unlock()
|
|
query.Respond(h.Response)
|
}
|