You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
4.1 KiB
210 lines
4.1 KiB
3 years ago
|
package nacos
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"log"
|
||
|
"net"
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/go-kratos/kratos/v2/registry"
|
||
|
"github.com/nacos-group/nacos-sdk-go/clients"
|
||
|
"github.com/nacos-group/nacos-sdk-go/common/constant"
|
||
|
"github.com/nacos-group/nacos-sdk-go/vo"
|
||
|
)
|
||
|
|
||
|
func getIntranetIP() string {
|
||
|
addrs, err := net.InterfaceAddrs()
|
||
|
if err != nil {
|
||
|
return "127.0.0.1"
|
||
|
}
|
||
|
|
||
|
for _, address := range addrs {
|
||
|
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
|
||
|
if ipnet.IP.To4() != nil {
|
||
|
return ipnet.IP.String()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return "127.0.0.1"
|
||
|
}
|
||
|
|
||
|
func TestRegistry(t *testing.T) {
|
||
|
ip := getIntranetIP()
|
||
|
serviceName := "golang-sms@grpc"
|
||
|
ctx := context.Background()
|
||
|
|
||
|
sc := []constant.ServerConfig{
|
||
|
*constant.NewServerConfig(ip, 8848),
|
||
|
}
|
||
|
|
||
|
cc := constant.ClientConfig{
|
||
|
NamespaceId: "public", // namespace id
|
||
|
TimeoutMs: 5000,
|
||
|
NotLoadCacheAtStart: true,
|
||
|
LogDir: "/tmp/nacos/log",
|
||
|
CacheDir: "/tmp/nacos/cache",
|
||
|
RotateTime: "1h",
|
||
|
MaxAge: 3,
|
||
|
LogLevel: "debug",
|
||
|
}
|
||
|
|
||
|
// a more graceful way to create naming client
|
||
|
client, err := clients.NewNamingClient(
|
||
|
vo.NacosClientParam{
|
||
|
ClientConfig: &cc,
|
||
|
ServerConfigs: sc,
|
||
|
},
|
||
|
)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
_, err = client.RegisterInstance(vo.RegisterInstanceParam{
|
||
|
Ip: "f",
|
||
|
Port: 8840,
|
||
|
ServiceName: serviceName,
|
||
|
Weight: 10,
|
||
|
Enable: true,
|
||
|
Healthy: true,
|
||
|
Ephemeral: true,
|
||
|
Metadata: map[string]string{"idc": "shanghai-xs"},
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
time.Sleep(time.Second)
|
||
|
|
||
|
is, err := client.GetService(vo.GetServiceParam{
|
||
|
ServiceName: serviceName,
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
t.Logf("is %#v", is)
|
||
|
|
||
|
time.Sleep(time.Second)
|
||
|
r := New(client)
|
||
|
|
||
|
go func() {
|
||
|
var w registry.Watcher
|
||
|
w, err = r.Watch(ctx, "golang-sms@grpc")
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
for {
|
||
|
var res []*registry.ServiceInstance
|
||
|
res, err = w.Next()
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
log.Printf("watch: %d", len(res))
|
||
|
for _, r := range res {
|
||
|
log.Printf("next: %+v", r)
|
||
|
}
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
time.Sleep(time.Second)
|
||
|
|
||
|
ins, err := r.GetService(ctx, serviceName)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
for _, in := range ins {
|
||
|
t.Logf("ins: %#v", in)
|
||
|
}
|
||
|
|
||
|
time.Sleep(time.Second)
|
||
|
}
|
||
|
|
||
|
func TestRegistryMany(t *testing.T) {
|
||
|
ip := getIntranetIP()
|
||
|
serviceName := "golang-sms@grpc"
|
||
|
// ctx := context.Background()
|
||
|
|
||
|
sc := []constant.ServerConfig{
|
||
|
*constant.NewServerConfig(ip, 8848),
|
||
|
}
|
||
|
|
||
|
cc := constant.ClientConfig{
|
||
|
NamespaceId: "public", // namespace id
|
||
|
TimeoutMs: 5000,
|
||
|
NotLoadCacheAtStart: true,
|
||
|
LogDir: "/tmp/nacos/log",
|
||
|
CacheDir: "/tmp/nacos/cache",
|
||
|
RotateTime: "1h",
|
||
|
MaxAge: 3,
|
||
|
LogLevel: "debug",
|
||
|
}
|
||
|
|
||
|
// a more graceful way to create naming client
|
||
|
client, err := clients.NewNamingClient(
|
||
|
vo.NacosClientParam{
|
||
|
ClientConfig: &cc,
|
||
|
ServerConfigs: sc,
|
||
|
},
|
||
|
)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
_, err = client.RegisterInstance(vo.RegisterInstanceParam{
|
||
|
Ip: "f1",
|
||
|
Port: 8840,
|
||
|
ServiceName: serviceName,
|
||
|
Weight: 10,
|
||
|
Enable: true,
|
||
|
Healthy: true,
|
||
|
Ephemeral: true,
|
||
|
Metadata: map[string]string{"idc": "shanghai-xs"},
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
_, err = client.RegisterInstance(vo.RegisterInstanceParam{
|
||
|
Ip: "f2",
|
||
|
Port: 8840,
|
||
|
ServiceName: serviceName,
|
||
|
Weight: 10,
|
||
|
Enable: true,
|
||
|
Healthy: true,
|
||
|
Ephemeral: true,
|
||
|
Metadata: map[string]string{"idc": "shanghai-xs"},
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
_, err = client.RegisterInstance(vo.RegisterInstanceParam{
|
||
|
Ip: "f3",
|
||
|
Port: 8840,
|
||
|
ServiceName: serviceName,
|
||
|
Weight: 10,
|
||
|
Enable: true,
|
||
|
Healthy: true,
|
||
|
Ephemeral: true,
|
||
|
Metadata: map[string]string{"idc": "shanghai-xs"},
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
time.Sleep(time.Second)
|
||
|
|
||
|
is, err := client.GetService(vo.GetServiceParam{
|
||
|
ServiceName: serviceName,
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
for _, host := range is.Hosts {
|
||
|
t.Logf("host: %#v,e: %v", host, err)
|
||
|
}
|
||
|
|
||
|
time.Sleep(time.Second)
|
||
|
}
|