Plot city-level traffic activity from local GeoIP coordinates
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestCityInstallRejectsBadDownload(t *testing.T) {
|
||||
@@ -46,6 +47,33 @@ func TestCityDatabaseDownloaded(t *testing.T) {
|
||||
if err := installTrafficCityFrom(server.URL, cityDatabaseSHA1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
g := lookupTrafficCityLocation("20.194.96.114")
|
||||
if !g.Located || g.Latitude < 30 || g.Latitude > 40 || g.Longitude < 120 || g.Longitude > 130 {
|
||||
t.Fatalf("invalid Seoul coordinates: %+v", g)
|
||||
}
|
||||
s, a := trafficFixture(t)
|
||||
s.SaveTrafficSettings(TrafficSettings{Enabled: true, AgentID: a.ID})
|
||||
now := time.Now().Unix()
|
||||
if err := s.SaveTraffic(a.ID, TrafficBatch{Events: []TrafficEvent{
|
||||
{ID: "1", Time: now, Kind: "request", IP: "20.194.96.114", Domain: "a.test"},
|
||||
{ID: "2", Time: now, Kind: "request", IP: "20.194.96.114", Domain: "a.test"},
|
||||
{ID: "3", Time: now, Kind: "alert", IP: "20.194.96.114", Domain: "b.test"},
|
||||
{ID: "4", Time: now, Kind: "request", IP: "192.168.0.10"},
|
||||
}}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
view, err := s.TrafficView("", "", false)
|
||||
if err != nil || len(view.Cities) != 1 {
|
||||
t.Fatalf("cities %+v err %v", view.Cities, err)
|
||||
}
|
||||
c := view.Cities[0]
|
||||
if c.Requests != 2 || c.UniqueIPs != 1 || c.Alerts != 1 || c.City != g.City {
|
||||
t.Fatalf("bad aggregation %+v", c)
|
||||
}
|
||||
filtered, err := s.TrafficView("b.test", "alert", false)
|
||||
if err != nil || len(filtered.Cities) != 1 || filtered.Cities[0].Requests != 0 || filtered.Cities[0].Alerts != 1 {
|
||||
t.Fatalf("city filter %+v %v", filtered.Cities, err)
|
||||
}
|
||||
city, region := lookupTrafficCity("20.194.96.114")
|
||||
t.Logf("city=%q region=%q", city, region)
|
||||
if city == "" {
|
||||
|
||||
Reference in New Issue
Block a user