mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 14:44:02 +03:00
Rework events
This commit is contained in:
+21
-63
@@ -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
@@ -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
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user