etcd_test.go 1.36 KB
package etcd

import (
	"context"
	"fmt"
	"go.etcd.io/etcd/api/v3/mvccpb"
	clientv3 "go.etcd.io/etcd/client/v3"
	"pro2d/common"
	"pro2d/common/logger"
	"testing"
)

func TestEtcdClient_GetByPrefix(t *testing.T) {
	err := NewEtcdClient(common.GlobalConf.Etcd)
	if err != nil {
		logger.Error(err)
		return
	}
	gameInfo := GEtcdClient().GetByPrefix(common.GlobalConf.AccountConf.Name)
	for k, v := range gameInfo {
		logger.Debug("game info key:  %v val: %v", k, v)
	}

	rch := GEtcdClient().etcd.Watch(context.Background(), fmt.Sprintf("/%s/", common.GlobalConf.AccountConf.Name), clientv3.WithPrefix())
	go func() {
		for wresp := range rch {
			for _, ev := range wresp.Events {
				switch ev.Type {
				case mvccpb.PUT: //修改或者新增
					logger.Debug("account put key:  %s val: %s", ev.Kv.Key, ev.Kv.Value)
				case mvccpb.DELETE: //删除
					logger.Debug("account delete key:  %s val: %s", ev.Kv.Key, ev.Kv.Value)
				}
			}
		}
	}()

	game := GEtcdClient().etcd.Watch(context.Background(), fmt.Sprintf("/%s/", common.GlobalConf.GameConf.Name), clientv3.WithPrefix())
	for wresp := range game {
		for _, ev := range wresp.Events {
			switch ev.Type {
			case mvccpb.PUT: //修改或者新增
				logger.Debug("game put key:  %s val: %s", ev.Kv.Key, ev.Kv.Value)
			case mvccpb.DELETE: //删除
				logger.Debug("game delete key:  %s val: %s", ev.Kv.Key, ev.Kv.Value)
			}
		}
	}

}