Files
EdgeNode/internal/stats/bandwidth_stat_manager_test.go

101 lines
2.6 KiB
Go
Raw Permalink Normal View History

2024-07-27 15:42:50 +08:00
// Copyright 2022 GoEdge goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
2022-07-05 20:37:00 +08:00
package stats_test
import (
2023-04-07 10:52:09 +08:00
"runtime"
2022-07-05 20:37:00 +08:00
"testing"
"time"
2024-07-27 15:42:50 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeNode/internal/stats"
2022-07-05 20:37:00 +08:00
)
func TestBandwidthStatManager_Add(t *testing.T) {
var manager = stats.NewBandwidthStatManager()
2023-09-06 16:34:11 +08:00
manager.AddBandwidth(1, 0, 1, 10, 10)
manager.AddBandwidth(1, 0, 1, 10, 10)
manager.AddBandwidth(1, 0, 1, 10, 10)
2022-07-05 20:37:00 +08:00
time.Sleep(1 * time.Second)
2023-09-06 16:34:11 +08:00
manager.AddBandwidth(1, 0, 1, 85, 85)
2022-07-05 20:37:00 +08:00
time.Sleep(1 * time.Second)
2023-09-06 16:34:11 +08:00
manager.AddBandwidth(1, 0, 1, 25, 25)
manager.AddBandwidth(1, 0, 1, 75, 75)
2022-07-05 20:37:00 +08:00
manager.Inspect()
}
func TestBandwidthStatManager_Loop(t *testing.T) {
var manager = stats.NewBandwidthStatManager()
2023-09-06 16:34:11 +08:00
manager.AddBandwidth(1, 0, 1, 10, 10)
manager.AddBandwidth(1, 0, 1, 10, 10)
manager.AddBandwidth(1, 0, 1, 10, 10)
2022-07-05 20:37:00 +08:00
err := manager.Loop()
if err != nil {
t.Fatal(err)
}
2022-07-07 09:21:18 +08:00
}
2023-04-07 10:52:09 +08:00
2023-04-07 11:23:37 +08:00
func BenchmarkBandwidthStatManager_Add(b *testing.B) {
var manager = stats.NewBandwidthStatManager()
b.RunParallel(func(pb *testing.PB) {
var i int
for pb.Next() {
i++
2023-09-06 16:34:11 +08:00
manager.AddBandwidth(1, 0, int64(i%100), 10, 10)
2023-04-07 11:23:37 +08:00
}
})
}
2023-04-07 10:52:09 +08:00
func BenchmarkBandwidthStatManager_Slice(b *testing.B) {
runtime.GOMAXPROCS(1)
for i := 0; i < b.N; i++ {
var pbStats = []*pb.ServerBandwidthStat{}
for j := 0; j < 100; j++ {
var stat = &stats.BandwidthStat{}
pbStats = append(pbStats, &pb.ServerBandwidthStat{
2023-12-20 11:43:00 +08:00
Id: 0,
UserId: stat.UserId,
ServerId: stat.ServerId,
Day: stat.Day,
TimeAt: stat.TimeAt,
Bytes: stat.MaxBytes / 2,
TotalBytes: stat.TotalBytes,
CachedBytes: stat.CachedBytes,
AttackBytes: stat.AttackBytes,
CountRequests: stat.CountRequests,
CountCachedRequests: stat.CountCachedRequests,
CountAttackRequests: stat.CountAttackRequests,
CountWebsocketConnections: stat.CountWebsocketConnections,
NodeRegionId: 1,
2023-04-07 10:52:09 +08:00
})
}
2023-08-08 12:02:21 +08:00
_ = pbStats
2023-04-07 10:52:09 +08:00
}
}
func BenchmarkBandwidthStatManager_Slice2(b *testing.B) {
runtime.GOMAXPROCS(1)
for i := 0; i < b.N; i++ {
var statsSlice = []*stats.BandwidthStat{}
for j := 0; j < 100; j++ {
var stat = &stats.BandwidthStat{}
statsSlice = append(statsSlice, stat)
}
2023-08-08 12:02:21 +08:00
_ = statsSlice
2023-04-07 10:52:09 +08:00
}
}
func BenchmarkBandwidthStatManager_Slice3(b *testing.B) {
runtime.GOMAXPROCS(1)
for i := 0; i < b.N; i++ {
var statsSlice = make([]*stats.BandwidthStat, 2000)
for j := 0; j < 100; j++ {
var stat = &stats.BandwidthStat{}
statsSlice[j] = stat
}
}
}