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}, "", "") if err != nil { log.Fatal(err.Error()) return } // 注册示例服务 service := &ServiceNode{ Name: "instance-1", Type: "user-service", } if err := registry.Register(service); err != nil { log.Fatal(err.Error()) return } // 监控服务变化 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}, "", "") if err != nil { log.Fatal(err.Error()) return } // 注册示例服务 node := &TopicNode{ Name: "instance-1", Creator: "instance-1", } if err := registry.Register(node); err != nil { log.Fatal(err.Error()) } // 监控服务变化 registry.WatchServices() registry.GetNodes().Range(func(k, v interface{}) bool { if node, ok := v.(TopicNode); ok { log.DebugF("this is topic:%v", node.Name) } return true }) time.Sleep(60 * time.Second) registry.UnregisterService() }