| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729 |
- package redis
- import (
- "context"
- "f1-game/internal/enum"
- nameRedis "f1-game/internal/name/redis"
- "f1-game/internal/pb"
- "fmt"
- "strings"
- "testing"
- "time"
- clog "github.com/cherry-game/cherry/logger"
- cprofile "github.com/cherry-game/cherry/profile"
- "github.com/go-redis/redis/v8"
- jsoniter "github.com/json-iterator/go"
- )
- func TestMain(m *testing.M) {
- path := "../../../etc/profile/dev.json"
- _, err := cprofile.Init(path, "1")
- if err != nil {
- return
- }
- Game = newGame()
- Game.setKey()
- Game.client = newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected!", "test")
- return nil
- },
- })
- m.Run()
- }
- func TestNew111(t *testing.T) {
- msg := &pb.ChatMsg{
- MsgID: 1000,
- Sender: &pb.ChatPlayer{
- GameNodeID: "1",
- PlayerID: 100000001,
- PlayerName: "qwqa",
- },
- SendTime: 0,
- Type: 0,
- Text: "",
- }
- str, _ := jsoniter.MarshalToString(msg)
- fmt.Println(str)
- }
- func TestLua1(t *testing.T) {
- lua := `local uid = redis.call("GET", KEYS[1])
- if not uid or tonumber(uid) < 1 then
- redis.call("SET", KEYS[1], ARGV[1])
- return ARGV[1]
- else
- return uid
- end`
- script := redis.NewScript(lua)
- rdb := newTestRedis("dev.com:6379", "z~DquqVqQbGwD78^", 1)
- cmd := script.Run(context.Background(), rdb, []string{"uid_1"}, 2)
- fmt.Println(cmd.Int())
- }
- func TestLua2(t *testing.T) {
- lua := `
- redis.call('RPUSH', KEYS[1], ARGV[1])
- local currentSize = redis.call('LLEN', KEYS[1])
- local maxSize = tonumber(ARGV[2])
- while currentSize > maxSize do
- redis.call('LPOP', KEYS[1])
- currentSize = currentSize - 1
- end
- return currentSize
- `
- script := redis.NewScript(lua)
- rdb := newTestRedis("dev.com:6379", "z~DquqVqQbGwD78^", 1)
- cmd := script.Run(context.Background(), rdb, []string{"queue"}, 333, 20)
- fmt.Println(cmd.Int())
- }
- func TestGetRedis(t *testing.T) {
- address := "dev.com:6379"
- pwd := "123456"
- rdb := newTestRedis(address, pwd, 5)
- key := "key"
- value := "hello world"
- rdb.Set(context.Background(), key, value, 10*time.Minute)
- }
- func BenchmarkRedisSet(b *testing.B) {
- address := "dev.com:6379"
- pwd := "123456"
- rdb := newTestRedis(address, pwd, 5)
- key := "key"
- value := "hello world"
- expiration := 10 * time.Minute
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- rdb.Set(context.Background(), key, value, expiration)
- }
- }
- func BenchmarkRedisGet(b *testing.B) {
- address := "dev.com:6379"
- pwd := "123456"
- rdb := newTestRedis(address, pwd, 5)
- key := "key"
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- rdb.Get(context.Background(), key)
- }
- }
- func BenchmarkRedisIncr(b *testing.B) {
- address := "dev.com:6379"
- pwd := "123456"
- rdb := newTestRedis(address, pwd, 5)
- key := "incr"
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- rdb.Incr(context.Background(), key)
- }
- }
- func newTestRedis(address, pwd string, db int) *redis.Client {
- rdb := redis.NewClient(&redis.Options{
- Addr: address,
- Password: pwd,
- DB: db,
- PoolSize: 32,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Info("connected!")
- return nil
- },
- })
- return rdb
- }
- func TestSyncUIDKey(t *testing.T) {
- db := 4 // 2
- rdb := newTestRedis("dev.com:6379", "z~DquqVqQbGwD78^", db)
- newKeyPattern := "center:uids:%s" // pid
- keyPattern := "center:uid:*"
- keyList, err := rdb.Keys(context.Background(), keyPattern).Result()
- if err != nil {
- return
- }
- uidMaps := map[string]map[string]string{}
- for _, k := range keyList {
- splits := strings.Split(k, ":")
- if len(splits) != 3 {
- fmt.Println("splits error")
- continue
- }
- kv := strings.Split(splits[2], "_")
- if len(kv) != 2 {
- fmt.Println("kv error")
- continue
- }
- uid, err := rdb.Get(context.Background(), k).Result()
- if err != nil {
- fmt.Println(err)
- continue
- }
- pid := kv[0]
- openID := kv[1]
- openMaps, found := uidMaps[pid]
- if !found {
- openMaps = map[string]string{}
- uidMaps[pid] = openMaps
- }
- openMaps[openID] = uid
- }
- fmt.Println(len(uidMaps))
- for pid, openMap := range uidMaps {
- fmt.Printf("pid = %s, len= %d\n", pid, len(openMap))
- key := fmt.Sprintf(newKeyPattern, pid)
- for openID, uid := range openMap {
- rdb.HSetNX(context.Background(), key, openID, uid)
- }
- }
- }
- func TestSyncLastLoginKey(t *testing.T) {
- db := 4 // 2
- rdb := newTestRedis("dev.com:6379", "z~DquqVqQbGwD78^", db)
- newKeyPattern := "center:last-login:%s" // pid
- keyPattern := "center:last_login:*"
- keyList, err := rdb.Keys(context.Background(), keyPattern).Result()
- if err != nil {
- return
- }
- fmt.Println(len(keyList))
- loginMaps := map[string]map[string]string{}
- for _, k := range keyList {
- splits := strings.Split(k, ":")
- if len(splits) != 3 {
- fmt.Println("splits error")
- continue
- }
- kv := strings.Split(splits[2], "_")
- if len(kv) != 2 {
- fmt.Println("kv error")
- continue
- }
- json, err := rdb.Get(context.Background(), k).Result()
- if err != nil {
- fmt.Println(err)
- continue
- }
- pid := kv[0]
- openID := kv[1]
- openMaps, found := loginMaps[pid]
- if !found {
- openMaps = map[string]string{}
- loginMaps[pid] = openMaps
- }
- openMaps[openID] = json
- }
- fmt.Println(len(loginMaps))
- for pid, openMap := range loginMaps {
- fmt.Printf("pid = %s, len= %d\n", pid, len(openMap))
- key := fmt.Sprintf(newKeyPattern, pid)
- for openID, json := range openMap {
- rdb.HSetNX(context.Background(), key, openID, json)
- }
- }
- }
- func TestSyncServerListKey(t *testing.T) {
- db := 4 // 2
- rdb := newTestRedis("dev.com:6379", "z~DquqVqQbGwD78^", db)
- newKeyPattern := "center:server-list:%s" // pid
- keyPattern := "center:server_list:*"
- keyList, err := rdb.Keys(context.Background(), keyPattern).Result()
- if err != nil {
- return
- }
- serverListMaps := map[string]string{}
- for _, k := range keyList {
- splits := strings.Split(k, ":")
- if len(splits) != 3 {
- fmt.Println("splits error")
- continue
- }
- json, err := rdb.Get(context.Background(), k).Result()
- if err != nil {
- fmt.Println(err)
- continue
- }
- pid := splits[2]
- serverListMaps[pid] = json
- }
- fmt.Println(len(serverListMaps))
- for pid, json := range serverListMaps {
- key := fmt.Sprintf(newKeyPattern, pid)
- rdb.Set(context.Background(), key, json, NoExpire)
- }
- }
- func TestSyncPlayer(t *testing.T) {
- db := 1
- rdb := newTestRedis("dev.com:6379", "z~DquqVqQbGwD78^", db)
- newKeyPattern := "cross-1:player"
- keyPattern := "cross-1-player-detail:*"
- keyList, err := rdb.Keys(context.Background(), keyPattern).Result()
- if err != nil {
- return
- }
- fmt.Println(len(keyList))
- for _, key := range keyList {
- sc := rdb.Get(context.Background(), key)
- if sc.Err() != nil {
- t.Error("read fail: ", key, sc.Err().Error())
- continue
- }
- ss := strings.Split(key, ":")
- if len(ss) < 2 {
- t.Error("error key: ", key)
- continue
- }
- ic := rdb.HSet(context.Background(), newKeyPattern, ss[1], sc.Val())
- if ic.Err() != nil {
- t.Error("write fail: ", newKeyPattern, ss[1], ic.Err().Error())
- }
- }
- }
- func TestAddChatMsg(t *testing.T) {
- address := "192.168.1.232:46379"
- pwd := "H+5QfwG0jE3C@Plvgikb"
- redisID := "test"
- options := &redis.Options{
- Addr: address,
- Password: pwd,
- DB: 4,
- PoolSize: 64,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected! [address = %s]", redisID, address)
- return nil
- },
- }
- cli := newClient(redisID, options)
- c := newChat()
- c.load(cli)
- var (
- start = 30000
- count = start + 300
- )
- for i := start; i < count; i++ {
- pb := &pb.ChatMsg{
- MsgID: int64(i),
- Sender: &pb.ChatPlayer{
- PlayerID: int64(100000 + i),
- PlayerName: fmt.Sprintf("玩家_%d", i),
- },
- Type: 1,
- Text: fmt.Sprintf("这是测试%d", i),
- }
- c.AddMsg(enum.ChatType_Game, 1, 200, pb)
- }
- list := c.GetChatMsgs(enum.ChatType_Game, 1, 0)
- for _, message := range list.List {
- fmt.Println(message)
- }
- }
- func TestDelChatMsg(t *testing.T) {
- address := "192.168.1.232:46379"
- pwd := "H+5QfwG0jE3C@Plvgikb"
- redisID := "test_chat_redis_id"
- options := &redis.Options{
- Addr: address,
- Password: pwd,
- DB: 4,
- PoolSize: 64,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected! [address = %s]", redisID, address)
- return nil
- },
- }
- cli := newClient(redisID, options)
- c := newChat()
- c.load(cli)
- c.DelMsgByMsgID(enum.ChatType_Game, 1, 10003)
- list := c.GetChatMsgs(enum.ChatType_Game, 1, 0)
- for _, message := range list.List {
- fmt.Println(message)
- }
- }
- func TestGetChatMsg(t *testing.T) {
- address := "192.168.1.232:46379"
- pwd := "H+5QfwG0jE3C@Plvgikb"
- redisID := "test_chat_redis_id"
- options := &redis.Options{
- Addr: address,
- Password: pwd,
- DB: 4,
- PoolSize: 64,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected! [address = %s]", redisID, address)
- return nil
- },
- }
- cli := newClient(redisID, options)
- c := newChat()
- c.load(cli)
- list := c.GetChatMsgs(enum.ChatType_Game, 1, 0)
- for _, message := range list.List {
- fmt.Println(message)
- }
- }
- func TestPlayerData(t *testing.T) {
- game := newGame()
- game.client = newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected!", "test")
- return nil
- },
- })
- // result := game.SavePlayerDataFields(10001, map[string]any{
- // nameRedis.Player_PlayerID: 10001,
- // nameRedis.Player_PlayerName: "玩家10001",
- // nameRedis.Player_LordLevel: 50,
- // nameRedis.Player_IconID: 1,
- // nameRedis.Player_FrameID: 1,
- // nameRedis.Player_LeagueID: 1,
- // nameRedis.Player_LeagueName: "联盟1",
- // nameRedis.Player_GameNodeID: 1,
- // nameRedis.Player_MapNodeID: 1,
- // })
- // fmt.Println(result)
- // result = game.SavePlayerDataFields(10002, map[string]any{
- // nameRedis.Player_PlayerID: 10002,
- // nameRedis.Player_PlayerName: "玩家10002",
- // nameRedis.Player_LordLevel: 100,
- // nameRedis.Player_IconID: 2,
- // nameRedis.Player_FrameID: 2,
- // nameRedis.Player_LeagueID: 2,
- // nameRedis.Player_LeagueName: "联盟2",
- // nameRedis.Player_GameNodeID: 2,
- // nameRedis.Player_MapNodeID: 2,
- // })
- // fmt.Println(result)
- // playerData := game.GetPlayerData(10001, nameRedis.PlayerChatFields...)
- // if playerData != nil {
- // fmt.Printf("playerData = %+v\n", playerData)
- // }
- // list := game.GetPlayerDataList([]int64{10001, 10002}, nameRedis.PlayerChatFields...)
- // fmt.Printf("list = %+v\n", list)
- // for _, playerData := range list {
- // fmt.Printf("playerData = %+v\n", playerData)
- // }
- maps := game.GetPlayerDataMap([]int64{10001, 10002, 111}, nameRedis.PlayerChatFields...)
- fmt.Printf("map = %+v\n", maps)
- // for _, playerData := range maps {
- // fmt.Printf("playerData = %+v\n", playerData)
- // }
- }
- func BenchmarkGetPlayerData(b *testing.B) {
- game := newGame()
- game.client = newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- })
- b.ResetTimer()
- for b.Loop() {
- game.GetPlayerData(10001, nameRedis.PlayerChatFields...)
- }
- }
- func BenchmarkParllelGetPlayerData(b *testing.B) {
- game := newGame()
- game.client = newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- })
- b.ResetTimer()
- b.RunParallel(func(p *testing.PB) {
- for p.Next() {
- game.GetPlayerData(10001, nameRedis.PlayerChatFields...)
- }
- })
- }
- func TestAddGroupMember(t *testing.T) {
- address := "192.168.1.232:46379"
- pwd := "H+5QfwG0jE3C@Plvgikb"
- redisID := "test_chat_redis_id"
- options := &redis.Options{
- Addr: address,
- Password: pwd,
- DB: 4,
- PoolSize: 64,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected! [address = %s]", redisID, address)
- return nil
- },
- }
- cli := newClient(redisID, options)
- c := newChat()
- c.load(cli)
- var (
- start = 100000
- count = start + 100
- )
- for i := start; i < count; i++ {
- c.AddGroupMember(1, int64(i))
- }
- list, _ := c.GetGroupMembers(1)
- for _, message := range list {
- fmt.Println(message)
- }
- c.DelGroupMember(1, 100000)
- // c.DelAllGroupMembers(1)
- }
- func TestSavePlayerTeam(t *testing.T) {
- var (
- playerID = int64(1)
- teams []*pb.BattleTeam
- )
- teams = append(teams, &pb.BattleTeam{
- TeamID: 1,
- Members: map[int64]*pb.BattleTeamMember{
- 1: {
- Index: 1,
- HeroGUID: 1,
- TroopsNum: 1,
- TroopsLimit: 1,
- },
- },
- })
- teams = append(teams, &pb.BattleTeam{
- TeamID: 2,
- Members: map[int64]*pb.BattleTeamMember{
- 2: {
- Index: 2,
- HeroGUID: 2,
- TroopsNum: 2,
- TroopsLimit: 2,
- },
- },
- })
- Game.UpdatePlayerTeams(playerID, teams...)
- }
- func TestGetPlayerTeams(t *testing.T) {
- // teams := Game.GetPlayerTeams(1)
- teams := Game.GetPlayerTeamsByID(1, 1)
- for _, team := range teams {
- fmt.Println(team)
- }
- }
- func TestGetPlayerTeamBattleSquadParam(t *testing.T) {
- path := "../../../etc/profile/dhc.json"
- _, err := cprofile.Init(path, "4")
- if err != nil {
- clog.Errorf("[TestGetPlayerTeamBattleSquadParam] error: %v", err)
- return
- }
- game := newGame()
- client := newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected!", "test")
- return nil
- },
- })
- game.load(client)
- battleTeamDataList := []*pb.BattleTeamData{
- {
- PlayerID: 1048717,
- TeamID: 1,
- TeamHeros: []int64{1048723, 1048724, 1048718},
- },
- }
- teams, heros := game.GetPlayerBattleData(battleTeamDataList...)
- for _, team := range teams {
- fmt.Printf("team = %+v\n", team)
- }
- for _, hero := range heros {
- fmt.Printf("hero = %+v\n", hero)
- }
- // teams := game.GetBatchPlayerBattleSquadParams(map[int64]int32{1048577: 1, 1048766: 1})
- // for playerID, team := range teams {
- // fmt.Printf("playerID = %d, team = %+v\n", playerID, team)
- // }
- }
- func TestGetPlayerHeroData(t *testing.T) {
- playerData, teamData, heroData := Game.GetPlayerTeamHeroData(13332255, 1, 13332256)
- fmt.Printf("%+v\n", playerData)
- fmt.Printf("%+v\n", teamData)
- fmt.Printf("%+v\n", heroData)
- }
- func TestDelGroupKey(t *testing.T) {
- path := "../../../etc/profile/dhc.json"
- _, err := cprofile.Init(path, "4")
- if err != nil {
- clog.Errorf("[TestDelGroupKey] error: %v", err)
- return
- }
- chat := newChat()
- client := newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected!", "test")
- return nil
- },
- })
- chat.load(client)
- // chat.DelAllGroupMembers(1041)
- memberIDList := []int64{1048950}
- chat.DelGroupMember(1053, memberIDList...)
- }
- func TestPrivateMsg(t *testing.T) {
- path := "../../../etc/profile/dhc.json"
- _, err := cprofile.Init(path, "4")
- if err != nil {
- clog.Errorf("[TestDelGroupKey] error: %v", err)
- return
- }
- chat := newChat()
- client := newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected!", "test")
- return nil
- },
- })
- chat.load(client)
- msg := chat.GetPrivateMsgs(1049577, 1049519, 673969073461377984)
- for _, message := range msg.List {
- fmt.Println(message)
- }
- // msg := chat.GetChatMsgList(enum.ChatType_Game, 4, 673975895220009920)
- // for _, message := range msg.List {
- // fmt.Println(message)
- // }
- }
- func TestExchangeLog(t *testing.T) {
- path := "../../../etc/profile/dhc.json"
- _, err := cprofile.Init(path, "4")
- if err != nil {
- clog.Errorf("[TestDelGroupKey] error: %v", err)
- return
- }
- game := newGame()
- client := newClient("test", &redis.Options{
- Addr: "192.168.1.232:46379",
- Password: "H+5QfwG0jE3C@Plvgikb",
- DB: 0,
- OnConnect: func(ctx context.Context, cn *redis.Conn) error {
- clog.Infof("[redisID = %s] connected!", "test")
- return nil
- },
- })
- game.load(client)
- logs := game.GetMapExchangeLogList("map-1", 1049577, enum.ExchangeLogType_Buy, 673986573804095553)
- fmt.Printf("logs len = %d \n", len(logs.List))
- for _, log := range logs.List {
- fmt.Println(log)
- }
- }
|