2018-05-07 06:44:02 +00:00
|
|
|
package util
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
2018-05-07 06:50:03 +00:00
|
|
|
peer "github.com/libp2p/go-libp2p-peer"
|
|
|
|
|
2018-05-07 06:44:02 +00:00
|
|
|
"github.com/ipfs/ipfs-cluster/api"
|
|
|
|
"github.com/ipfs/ipfs-cluster/test"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestMetricsChecker(t *testing.T) {
|
|
|
|
metrics := make(Metrics)
|
|
|
|
alerts := make(chan api.Alert, 1)
|
|
|
|
|
|
|
|
checker := NewMetricsChecker(metrics, alerts)
|
|
|
|
|
|
|
|
metr := api.Metric{
|
|
|
|
Name: "test",
|
|
|
|
Peer: test.TestPeerID1,
|
|
|
|
Value: "1",
|
|
|
|
Valid: true,
|
|
|
|
}
|
2018-05-07 06:50:03 +00:00
|
|
|
metr.SetTTL(2 * time.Second)
|
2018-05-07 06:44:02 +00:00
|
|
|
|
|
|
|
metrics["test"] = make(PeerMetrics)
|
|
|
|
metrics["test"][test.TestPeerID1] = NewMetricsWindow(5, true)
|
|
|
|
metrics["test"][test.TestPeerID1].Add(metr)
|
|
|
|
|
|
|
|
checker.CheckMetrics([]peer.ID{test.TestPeerID1})
|
|
|
|
select {
|
|
|
|
case <-alerts:
|
|
|
|
t.Error("there should not be an alert yet")
|
|
|
|
default:
|
|
|
|
}
|
|
|
|
|
|
|
|
time.Sleep(3 * time.Second)
|
|
|
|
checker.CheckMetrics([]peer.ID{test.TestPeerID1})
|
|
|
|
|
|
|
|
select {
|
|
|
|
case <-alerts:
|
|
|
|
default:
|
|
|
|
t.Error("an alert should have been triggered")
|
|
|
|
}
|
|
|
|
|
|
|
|
checker.CheckMetrics([]peer.ID{test.TestPeerID2})
|
|
|
|
select {
|
|
|
|
case <-alerts:
|
|
|
|
t.Error("there should not be alerts for different peer")
|
|
|
|
default:
|
|
|
|
}
|
|
|
|
}
|