fox/etcd/etcd_test.go
2025-05-25 20:02:15 +08:00

92 lines
2.0 KiB
Go

package etcd
import (
"github.com/fox/fox/log"
"testing"
"time"
)
const (
etcdAddress1 = "192.168.232.128:2379"
etcdAddress2 = "114.132.124.145:2379"
)
/*
sudo docker run -d \
--name my-etcd \
-p 2379:2379 \
-p 2380:2380 \
quay.io/coreos/etcd:v3.6.0 \
etcd \
--name etcd-single \
--data-dir /etcd-data \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--listen-peer-urls http://0.0.0.0:2380 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-client-urls http://0.0.0.0:2379 \
--initial-cluster etcd-single=http://0.0.0.0:2380
sudo docker run -d --name etcdkeeper -p 8080:8080 evildecay/etcdkeeper
*/
func TestService(t *testing.T) {
_ = etcdAddress1
_ = etcdAddress2
log.Open("test.log", log.DebugL)
// 创建注册中心
registry, err := NewRegistry[ServiceNode]([]string{etcdAddress2}, rootKeyServices, "", "")
if err != nil {
log.Fatal(err.Error())
}
// 注册示例服务
service := &ServiceNode{
Name: "instance-1",
Type: "user-service",
Address: "localhost",
Port: 8080,
}
if err := registry.Register(service); err != nil {
log.Fatal(err.Error())
}
// 监控服务变化
registry.WatchServices()
time.Sleep(10 * time.Second)
registry.UnregisterService()
}
func TestTopicRegistry(t *testing.T) {
_ = etcdAddress1
_ = etcdAddress2
log.Open("test.log", log.DebugL)
// 创建注册中心
registry, err := NewRegistry[TopicNode]([]string{etcdAddress2}, rootKeyTopic, "", "")
if err != nil {
log.Fatal(err.Error())
}
// 注册示例服务
node := &TopicNode{
Name: "instance-1",
Creator: "instance-1",
}
if err := registry.Register(node); err != nil {
log.Fatal(err.Error())
}
// 监控服务变化
registry.WatchServices()
for _, n := range registry.GetNodes() {
log.DebugF("发现topic:%v, 创建者:%v", n.Name, n.Creator)
if v, err := registry.FindNode(n.MapKey()); err == nil {
log.DebugF("topic:%v exist", v.Name)
}
}
time.Sleep(60 * time.Second)
registry.UnregisterService()
}