45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestTrafficCountryDetailsUseHistoryAndFilters(t *testing.T) {
|
|
s, a := trafficFixture(t)
|
|
if _, err := s.SaveTrafficSettings(TrafficSettings{Enabled: true, AgentID: a.ID, MonitoringRules: []MonitoringRule{{IP: "8.8.8.8"}}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
events := []TrafficEvent{}
|
|
for i := 0; i < 120; i++ {
|
|
events = append(events, TrafficEvent{ID: fmt.Sprint("http-", i), Time: time.Now().Unix(), Kind: "request", IP: "8.8.8.8", Domain: "example.test", Path: "/", Status: 200})
|
|
}
|
|
events = append(events, TrafficEvent{ID: "alert", Time: time.Now().Unix(), Kind: "alert", IP: "8.8.8.8", Domain: "example.test", Reason: "test"})
|
|
if err := s.SaveTraffic(a.ID, TrafficBatch{Events: events}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
v, err := s.TrafficView("", "", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(v.Events) != 100 || len(v.CountryDetails) != 1 {
|
|
t.Fatalf("events=%d countries=%+v", len(v.Events), v.CountryDetails)
|
|
}
|
|
d := v.CountryDetails[0]
|
|
if d.Requests != 120 || d.UniqueIPs != 1 || d.Alerts != 1 || d.LastSeen == 0 {
|
|
t.Fatalf("%+v", d)
|
|
}
|
|
v, err = s.TrafficView("example.test", "", false, true)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(v.CountryDetails) != 1 || v.CountryDetails[0].Requests != 0 || v.CountryDetails[0].Alerts != 1 {
|
|
t.Fatalf("filter: %+v", v.CountryDetails)
|
|
}
|
|
v, err = s.TrafficView("other.test", "", false)
|
|
if err != nil || len(v.CountryDetails) != 0 {
|
|
t.Fatalf("domain: %+v %v", v.CountryDetails, err)
|
|
}
|
|
}
|