fox/service/natsService_test.go
2025-05-25 20:02:15 +08:00

98 lines
2.2 KiB
Go

package service
import (
"github.com/fox/fox/etcd"
"github.com/fox/fox/log"
"testing"
"time"
)
const (
GameSrv = "game"
NatsAddress = "nats://192.168.232.128:4222"
EtcdAddress = "192.168.232.128:2379"
EtcdAddress2 = "114.132.124.145:2379"
NatsAddress2 = "nats://114.132.124.145:4222"
)
func newGameService() *gameService {
_ = NatsAddress2
_ = NatsAddress
_ = EtcdAddress2
_ = EtcdAddress
var err error
s := new(gameService)
if s.NatsService, err = NewNatsService(GameSrv, "1", s, NatsAddress2); err != nil {
log.Fatal(err.Error())
return nil
}
if s.etcdService, err = etcd.NewRegistry[etcd.ServiceNode]([]string{EtcdAddress2}, etcd.ServiceNode{}.EtcdRootKey(), "", ""); err != nil {
log.Error(err.Error())
s.NatsService.OnStop()
return nil
}
endpoint := &etcd.ServiceNode{
Name: s.Name(),
Type: s.Type(),
Address: "",
Port: 0,
Version: "",
ServiceType: etcd.Unique,
}
if err = s.etcdService.Register(endpoint); err != nil {
log.Error(err.Error())
s.NatsService.OnStop()
return nil
}
s.OnInit()
return s
}
type gameService struct {
*NatsService
etcdService *etcd.Registry[etcd.ServiceNode]
etcdTopic *etcd.Registry[etcd.TopicNode]
srvTopic string
}
func (s *gameService) OnInit() {
s.etcdService.WatchServices()
s.etcdTopic.WatchServices()
if err := s.NatsService.Subscribe(Topic(s)); err != nil {
log.Error(err.Error())
}
if err := s.NatsService.QueueSubscribe(GroupTopic(s), GroupQueue(s)); err != nil {
log.Error(err.Error())
}
log.Debug("onInit")
}
func (s *gameService) OnStop() {
s.etcdService.UnregisterService()
s.etcdService.UnregisterService()
s.NatsService.OnStop()
log.Debug("OnStop")
}
func (s *gameService) OnMessage(msg []byte) error {
log.Debug(s.Log("on message:%v", string(msg)))
return nil
}
func TestGameService(t *testing.T) {
log.Open("test.log", log.DebugL)
s := newGameService()
msg := "hello world"
if err := s.Send(Topic(s), []byte(msg)); err != nil {
log.Error(err.Error())
}
for _, srv := range s.etcdService.GetNodes() {
log.Debug(s.Log("发现有服务:%v", srv))
}
time.Sleep(1 * time.Second)
s.NotifyStop()
s.WaitStop()
log.Debug("exit")
}