Rework events

This commit is contained in:
9seconds
2021-04-07 14:40:54 +03:00
parent b748603096
commit 463af648ce
13 changed files with 275 additions and 410 deletions
+21 -63
View File
@@ -55,57 +55,39 @@ func (suite *PrometheusTestSuite) TearDownTest() {
}
func (suite *PrometheusTestSuite) TestTelegramPath() {
suite.prometheus.EventStart(mtglib.EventStart{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("10.0.0.10"),
})
suite.prometheus.EventStart(
mtglib.NewEventStart("connID", net.ParseIP("10.0.0.10")))
time.Sleep(100 * time.Millisecond)
data, err := suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_client_connections{ip_family="ipv4"} 1`)
suite.prometheus.EventConnectedToDC(mtglib.EventConnectedToDC{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("10.0.0.1"),
DC: 4,
})
suite.prometheus.EventConnectedToDC(
mtglib.NewEventConnectedToDC("connID", net.ParseIP("10.0.0.1"), 4))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_telegram_connections{dc="4",telegram_ip="10.0.0.1"} 1`)
suite.prometheus.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 200,
IsRead: true,
})
suite.prometheus.EventTraffic(
mtglib.NewEventTraffic("connID", 200, true))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_telegram_traffic{dc="4",direction="to_client",telegram_ip="10.0.0.1"} 200`)
suite.prometheus.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 100,
IsRead: false,
})
suite.prometheus.EventTraffic(
mtglib.NewEventTraffic("connID", 100, false))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_telegram_traffic{dc="4",direction="from_client",telegram_ip="10.0.0.1"} 100`)
suite.prometheus.EventFinish(mtglib.EventFinish{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.prometheus.EventFinish(mtglib.NewEventFinish("connID"))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
@@ -115,21 +97,15 @@ func (suite *PrometheusTestSuite) TestTelegramPath() {
}
func (suite *PrometheusTestSuite) TestDomainFrontingPath() {
suite.prometheus.EventStart(mtglib.EventStart{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("10.0.0.10"),
})
suite.prometheus.EventStart(
mtglib.NewEventStart("connID", net.ParseIP("10.0.0.10")))
time.Sleep(100 * time.Millisecond)
data, err := suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_client_connections{ip_family="ipv4"} 1`)
suite.prometheus.EventDomainFronting(mtglib.EventDomainFronting{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.prometheus.EventDomainFronting(mtglib.NewEventDomainFronting("connID"))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
@@ -137,34 +113,23 @@ func (suite *PrometheusTestSuite) TestDomainFrontingPath() {
suite.Contains(data, `mtg_domain_fronting 1`)
suite.Contains(data, `mtg_domain_fronting_connections{ip_family="ipv4"} 1`)
suite.prometheus.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 200,
IsRead: true,
})
suite.prometheus.EventTraffic(
mtglib.NewEventTraffic("connID", 200, true))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_domain_fronting_traffic{direction="to_client"} 200`)
suite.prometheus.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 100,
IsRead: false,
})
suite.prometheus.EventTraffic(
mtglib.NewEventTraffic("connID", 100, false))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
suite.NoError(err)
suite.Contains(data, `mtg_domain_fronting_traffic{direction="from_client"} 100`)
suite.prometheus.EventFinish(mtglib.EventFinish{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.prometheus.EventFinish(mtglib.NewEventFinish("connID"))
time.Sleep(100 * time.Millisecond)
data, err = suite.Get()
@@ -174,9 +139,7 @@ func (suite *PrometheusTestSuite) TestDomainFrontingPath() {
}
func (suite *PrometheusTestSuite) TestEventConcurrencyLimited() {
suite.prometheus.EventConcurrencyLimited(mtglib.EventConcurrencyLimited{
CreatedAt: time.Now(),
})
suite.prometheus.EventConcurrencyLimited(mtglib.NewEventConcurrencyLimited())
time.Sleep(100 * time.Millisecond)
@@ -186,10 +149,8 @@ func (suite *PrometheusTestSuite) TestEventConcurrencyLimited() {
}
func (suite *PrometheusTestSuite) TestEventIPBlocklisted() {
suite.prometheus.EventIPBlocklisted(mtglib.EventIPBlocklisted{
CreatedAt: time.Now(),
RemoteIP: net.ParseIP("2001:db8::68"),
})
suite.prometheus.EventIPBlocklisted(
mtglib.NewEventIPBlocklisted(net.ParseIP("2001:db8::68")))
time.Sleep(100 * time.Millisecond)
@@ -199,10 +160,7 @@ func (suite *PrometheusTestSuite) TestEventIPBlocklisted() {
}
func (suite *PrometheusTestSuite) TestEventReplayAttack() {
suite.prometheus.EventReplayAttack(mtglib.EventReplayAttack{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.prometheus.EventReplayAttack(mtglib.NewEventReplayAttack("connID"))
time.Sleep(100 * time.Millisecond)
+1 -6
View File
@@ -4,7 +4,6 @@ import (
"fmt"
"strconv"
"strings"
"time"
"github.com/9seconds/mtg/v2/events"
"github.com/9seconds/mtg/v2/logger"
@@ -123,14 +122,10 @@ func (s statsdProcessor) EventReplayAttack(_ mtglib.EventReplayAttack) {
}
func (s statsdProcessor) Shutdown() {
now := time.Now()
events := make([]mtglib.EventFinish, 0, len(s.streams))
for k := range s.streams {
events = append(events, mtglib.EventFinish{
CreatedAt: now,
ConnID: k,
})
events = append(events, mtglib.NewEventFinish(k))
}
for i := range events {
+21 -63
View File
@@ -105,48 +105,30 @@ func (suite *StatsdTestSuite) TearDownTest() {
}
func (suite *StatsdTestSuite) TestTelegramPath() {
suite.statsd.EventStart(mtglib.EventStart{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("10.0.0.10"),
})
suite.statsd.EventStart(
mtglib.NewEventStart("connID", net.ParseIP("10.0.0.10")))
time.Sleep(statsdSleepTime)
suite.Equal("mtg.client_connections:+1|g|#ip_family:ipv4", suite.statsdServer.String())
suite.statsd.EventConnectedToDC(mtglib.EventConnectedToDC{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("10.1.0.10"),
DC: 2,
})
suite.statsd.EventConnectedToDC(
mtglib.NewEventConnectedToDC("connID", net.ParseIP("10.1.0.10"), 2))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
"mtg.telegram_connections:+1|g|#telegram_ip:10.1.0.10,dc:2")
suite.statsd.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 30,
IsRead: true,
})
suite.statsd.EventTraffic(
mtglib.NewEventTraffic("connID", 30, true))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
"mtg.telegram_traffic:30|c|#telegram_ip:10.1.0.10,dc:2,direction:to_client")
suite.statsd.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 90,
IsRead: false,
})
suite.statsd.EventTraffic(
mtglib.NewEventTraffic("connID", 90, false))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
"mtg.telegram_traffic:90|c|#telegram_ip:10.1.0.10,dc:2,direction:from_client")
suite.statsd.EventFinish(mtglib.EventFinish{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.statsd.EventFinish(mtglib.NewEventFinish("connID"))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
"mtg.telegram_connections:-1|g|#telegram_ip:10.1.0.10,dc:2")
@@ -158,47 +140,30 @@ func (suite *StatsdTestSuite) TestTelegramPath() {
}
func (suite *StatsdTestSuite) TestDomainFrontingPath() {
suite.statsd.EventStart(mtglib.EventStart{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("10.0.0.10"),
})
suite.statsd.EventStart(
mtglib.NewEventStart("connID", net.ParseIP("10.0.0.10")))
time.Sleep(statsdSleepTime)
suite.Equal("mtg.client_connections:+1|g|#ip_family:ipv4", suite.statsdServer.String())
suite.statsd.EventDomainFronting(mtglib.EventDomainFronting{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.statsd.EventDomainFronting(mtglib.NewEventDomainFronting("connID"))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(), "mtg.domain_fronting:1|c")
suite.Contains(suite.statsdServer.String(),
`mtg.domain_fronting_connections:+1|g|#ip_family:ipv4`)
suite.statsd.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 30,
IsRead: true,
})
suite.statsd.EventTraffic(
mtglib.NewEventTraffic("connID", 30, true))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
`mtg.domain_fronting_traffic:30|c|#direction:to_client`)
suite.statsd.EventTraffic(mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 90,
IsRead: false,
})
suite.statsd.EventTraffic(
mtglib.NewEventTraffic("connID", 90, false))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
`mtg.domain_fronting_traffic:90|c|#direction:from_client`)
suite.statsd.EventFinish(mtglib.EventFinish{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.statsd.EventFinish(mtglib.NewEventFinish("connID"))
time.Sleep(statsdSleepTime)
suite.Contains(suite.statsdServer.String(),
"mtg.domain_fronting_connections:-1|g|#ip_family:ipv4")
@@ -210,29 +175,22 @@ func (suite *StatsdTestSuite) TestDomainFrontingPath() {
}
func (suite *StatsdTestSuite) TestEventConcurrencyLimited() {
suite.statsd.EventConcurrencyLimited(mtglib.EventConcurrencyLimited{
CreatedAt: time.Now(),
})
suite.statsd.EventConcurrencyLimited(mtglib.NewEventConcurrencyLimited())
time.Sleep(statsdSleepTime)
suite.Equal("mtg.concurrency_limited:1|c", suite.statsdServer.String())
}
func (suite *StatsdTestSuite) TestEventIPBlocklisted() {
suite.statsd.EventIPBlocklisted(mtglib.EventIPBlocklisted{
CreatedAt: time.Now(),
RemoteIP: net.ParseIP("10.0.0.10"),
})
suite.statsd.EventIPBlocklisted(
mtglib.NewEventIPBlocklisted(net.ParseIP("10.0.0.10")))
time.Sleep(statsdSleepTime)
suite.Equal("mtg.ip_blocklisted:1|c", suite.statsdServer.String())
}
func (suite *StatsdTestSuite) TestEventReplayAttack() {
suite.statsd.EventReplayAttack(mtglib.EventReplayAttack{
CreatedAt: time.Now(),
ConnID: "connID",
})
suite.statsd.EventReplayAttack(mtglib.NewEventReplayAttack("connID"))
time.Sleep(statsdSleepTime)
suite.Equal("mtg.replay_attacks:1|c", suite.statsdServer.String())