Move formatAndClearCountryStats test into a new metrics_test.go.

This is more unit test–y. We don't need a full broker instantiation for
testing this function, unlike other tests in snowflake-broker_test.go.
This commit is contained in:
David Fifield 2025-08-15 18:24:26 +00:00 committed by Cecylia Bocovich
parent ec39237e69
commit cc0a33faea
No known key found for this signature in database
GPG key ID: 009DE379FD9B7B90
2 changed files with 33 additions and 22 deletions

33
broker/metrics_test.go Normal file
View file

@ -0,0 +1,33 @@
package main
import (
"sync"
"sync/atomic"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestFormatAndClearCountryStats(t *testing.T) {
Convey("for country stats order", t, func() {
stats := new(sync.Map)
for cc, count := range map[string]uint64{
"IT": 50,
"FR": 200,
"TZ": 100,
"CN": 250,
"RU": 150,
"CA": 1,
"BE": 1,
"PH": 1,
} {
stats.LoadOrStore(cc, new(uint64))
val, _ := stats.Load(cc)
ptr := val.(*uint64)
atomic.AddUint64(ptr, count)
}
So(formatAndClearCountryStats(stats, false), ShouldEqual, "CN=250,FR=200,RU=150,TZ=100,IT=50,BE=1,CA=1,PH=1")
// The map should be cleared on return.
stats.Range(func(_, _ any) bool { panic("map was not cleared") })
})
}

View file

@ -11,7 +11,6 @@ import (
"net/http/httptest"
"os"
"sync"
"sync/atomic"
"testing"
"time"
@ -1030,26 +1029,5 @@ snowflake-ips-nat-unknown 0
ctx.metrics.printMetrics()
So(buf.String(), ShouldContainSubstring, "client-denied-count 8\nclient-restricted-denied-count 8\nclient-unrestricted-denied-count 0\nclient-snowflake-match-count 0")
})
Convey("for country stats order", func() {
stats := new(sync.Map)
for cc, count := range map[string]uint64{
"IT": 50,
"FR": 200,
"TZ": 100,
"CN": 250,
"RU": 150,
"CA": 1,
"BE": 1,
"PH": 1,
} {
stats.LoadOrStore(cc, new(uint64))
val, _ := stats.Load(cc)
ptr := val.(*uint64)
atomic.AddUint64(ptr, count)
}
So(formatAndClearCountryStats(stats, false), ShouldEqual, "CN=250,FR=200,RU=150,TZ=100,IT=50,BE=1,CA=1,PH=1")
// The map should be cleared on return.
stats.Range(func(_, _ any) bool { panic("map was not cleared") })
})
})
}