Files
utility_go/package/gamelog/test/gamelog_test.go
2025-12-24 15:41:56 +08:00

119 lines
3.9 KiB
Go

package test
import (
"strings"
"testing"
"time"
"github.com/ayflying/utility_go/package/gamelog"
"github.com/gogf/gf/v2/test/gtest"
"github.com/gogf/gf/v2/util/grand"
"github.com/google/uuid"
)
func TestGamelog(t *testing.T) {
glsdk, err := gamelog.INIT(&gamelog.SDKConfig{
// 必填
Pid: "test5", // 项目ID
// BaseUrl: "http://47.76.178.47:10101", // 香港测试服上报地址
// BaseUrl: "http://101.37.28.111:10101", // 香港测试服上报地址
BaseUrl: "http://47.77.200.131:10101", // 美国BIDB服务器
// BaseUrl: "http://127.0.0.1:10101", // 本次测试上报地址
ReportSk: "sngame2025", // xor混淆key
FlushInterval: 5, // 上报间隔
DiskBakPath: "gamelog", // 本地磁盘备份, 用于意外情况下临时保存日志, 请确保该目录持久化(容器内要挂载). 每次启动时或每N次上报时加载到失败队列
// 可填
RetryN: 2, // 默认每10次, 上传检查一次磁盘的失败数据
ChanSize: 500, // 默认1000, 信道size
SendSaveType: 2, // 发送存储类型, 默认不设置为0代表文件存储, 2代表走kafka可实同步日志
})
// 随机测试事件和属性
events := []string{"e1", "e2", "e3", "e4"}
pms := []map[string]any{
{"a": "1"},
{"a": "2"},
{"a": "3"},
{"a": "4"},
}
if err != nil {
t.Fatal(err)
}
gtest.C(t, func(t *gtest.T) {
go func() {
for {
uuidval, _ := uuid.NewUUID()
randUid := strings.ReplaceAll(uuidval.String(), "-", "")
glsdk.LogLtz(randUid, events[grand.Intn(len(events))], pms[grand.Intn(len(pms))])
time.Sleep(time.Millisecond * 100)
}
}()
time.Sleep(time.Second * 14)
// 模拟等待信号后优雅关闭
glsdk.Shutdown()
})
}
func TestPressMQ(t *testing.T) {
glsdk, err := gamelog.INIT(&gamelog.SDKConfig{
// 必填
Pid: "ydspress", // 项目ID
// BaseUrl: "http://47.77.200.131:10101", // 美国BIDB服务器
// BaseUrl: "http://101.37.28.111:10101", // 国内yoyatime服务器BIDB服务器
BaseUrl: "http://47.77.206.131:10201", // 压测服务器
ReportSk: "sngame2025", // xor混淆key
FlushInterval: 6, // 上报间隔
DiskBakPath: "gamelog", // 本地磁盘备份, 用于意外情况下临时保存日志, 请确保该目录持久化(容器内要挂载). 每次启动时或每N次上报时加载到失败队列
// 可填
RetryN: 2, // 默认每10次, 上传检查一次磁盘的失败数据
ChanSize: 500, // 默认1000, 信道size
SendSaveType: 2, // 发送存储类型, 默认不设置为0代表文件存储, 2代表走kafka可实同步日志
})
// 随机测试事件和属性
// events := []string{"e1", "e2", "e3", "e4"}
// pms := []map[string]any{
// {"s1": gconv.String(grand.Intn(100))},
// {"s2": gconv.String(grand.Intn(300))},
// {"s3": gconv.String(grand.Intn(500))},
// {"i1": grand.Intn(1000000)},
// {"i2": grand.Intn(9000000)},
// {"f1": gconv.Float64(grand.Intn(1000)) + (gconv.Float64(grand.Intn(1000000)) / 1000.0)},
// {"f2": gconv.Float64(grand.Intn(9000)) + (gconv.Float64(grand.Intn(1000000)) / 1000.0)},
// {"b1": true},
// {"b2": false},
// }
testProp := map[string]any{
"version": "1.18",
"country": "ZH-CN",
}
uuids := []string{}
for i := 0; i < 100; i++ {
uuidval, _ := uuid.NewUUID()
randUid := strings.ReplaceAll(uuidval.String(), "-", "")
uuids = append(uuids, randUid)
}
if err != nil {
t.Fatal(err)
}
n := 0
const limit = 20000
gtest.C(t, func(t *gtest.T) {
go func() {
for {
// glsdk.LogLtz(uuids[grand.Intn(len(uuids))], events[grand.Intn(len(events))], pms[grand.Intn(len(pms))])
glsdk.LogLtz(uuids[grand.Intn(len(uuids))], "PKGame:Default:StepComplete:1:1010", testProp)
// 并发控制
n++
if n%limit == 0 {
time.Sleep(time.Second * 1)
}
}
}()
time.Sleep(time.Second * 1200)
// 模拟等待信号后优雅关闭
glsdk.Shutdown()
})
}