diff --git a/contrib/registry/polaris/registry_test.go b/contrib/registry/polaris/registry_test.go index d05640511..7d696064c 100644 --- a/contrib/registry/polaris/registry_test.go +++ b/contrib/registry/polaris/registry_test.go @@ -5,20 +5,26 @@ import ( "testing" "time" - "github.com/polarismesh/polaris-go/pkg/config" - - "github.com/go-kratos/kratos/v2/log" "github.com/go-kratos/kratos/v2/registry" + + "github.com/polarismesh/polaris-go/pkg/config" ) -// TestRegistry . TestRegistryManyService +// TestRegistry func TestRegistry(t *testing.T) { conf := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"}) r := NewRegistryWithConfig( conf, - WithTimeout(time.Second*10), - WithTTL(100), + WithTimeout(time.Second), + WithHeartbeat(true), + WithHealthy(true), + WithIsolate(true), + WithNamespace("default"), + WithProtocol("tcp"), + WithRetryCount(0), + WithWeight(100), + WithTTL(10), ) ctx := context.Background() @@ -35,171 +41,197 @@ func TestRegistry(t *testing.T) { t.Fatal(err) } - err = r.Deregister(ctx, svc) + time.Sleep(time.Second) + + result, err := r.GetService(context.Background(), "kratos-provider-0-tcp") if err != nil { t.Fatal(err) } -} -// TestRegistryMany . TestRegistryManyService -func TestRegistryMany(t *testing.T) { - conf := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"}) + if len(result) != 1 { + t.Fatal("register error") + } - r := NewRegistryWithConfig( - conf, - WithTimeout(time.Second*10), - WithTTL(100), - ) + for _, item := range result { + if item.Name != "kratos-provider-0-tcp" || item.Endpoints[0] != "tcp://127.0.0.1:9000" { + t.Fatal("register error") + } + } - svc := ®istry.ServiceInstance{ - Name: "kratos-provider-1-", - Version: "test", - Metadata: map[string]string{"app": "kratos"}, - Endpoints: []string{"tcp://127.0.0.1:9000?isSecure=false"}, + watch, err := r.Watch(ctx, "kratos-provider-0-tcp") + if err != nil { + t.Fatal(err) + } + + // Test update + svc.Version = "release1.0.0" + + if err = r.Register(ctx, svc); err != nil { + t.Fatal(err) } + + result, err = watch.Next() + + if err != nil { + t.Fatal(err) + } + + if len(result) != 1 || result[0].Version != "release1.0.0" { + t.Fatal("register error") + } + // Test add instance svc1 := ®istry.ServiceInstance{ - Name: "kratos-provider-2-", + Name: "kratos-provider-0-", Version: "test", Metadata: map[string]string{"app": "kratos"}, Endpoints: []string{"tcp://127.0.0.1:9001?isSecure=false"}, } - svc2 := ®istry.ServiceInstance{ - Name: "kratos-provider-3-", - Version: "test", - Metadata: map[string]string{"app": "kratos"}, - Endpoints: []string{"tcp://127.0.0.1:9002?isSecure=false"}, - } - err := r.Register(context.Background(), svc) - if err != nil { + if err = r.Register(ctx, svc1); err != nil { t.Fatal(err) } - err = r.Register(context.Background(), svc1) - if err != nil { + if _, err = watch.Next(); err != nil { t.Fatal(err) } - err = r.Register(context.Background(), svc2) + result, err = r.GetService(ctx, "kratos-provider-0-tcp") + if err != nil { t.Fatal(err) } - err = r.Deregister(context.Background(), svc) - if err != nil { - t.Fatal(err) + if len(result) != 2 { + t.Fatal("register error") } - err = r.Deregister(context.Background(), svc1) - if err != nil { + if err = r.Deregister(ctx, svc); err != nil { + t.Fatal(err) + } + if err = r.Deregister(ctx, svc1); err != nil { t.Fatal(err) } - err = r.Deregister(context.Background(), svc2) + result, err = watch.Next() if err != nil { t.Fatal(err) } + + if len(result) != 0 { + t.Fatal("register error") + } } -// TestGetService . TestGetService -func TestGetService(t *testing.T) { +// TestRegistryMany +func TestRegistryMany(t *testing.T) { conf := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"}) r := NewRegistryWithConfig( conf, - WithTimeout(time.Second*10), - WithTTL(100), + WithTimeout(time.Second), + WithHeartbeat(true), + WithHealthy(true), + WithIsolate(true), + WithNamespace("default"), + WithProtocol("tcp"), + WithRetryCount(0), + WithWeight(100), + WithTTL(10), ) ctx := context.Background() + // Multi endpoint svc := ®istry.ServiceInstance{ - Name: "kratos-provider-4-", + Name: "kratos-provider-1-", Version: "test", Metadata: map[string]string{"app": "kratos"}, - Endpoints: []string{"tcp://127.0.0.1:9000?isSecure=false"}, + Endpoints: []string{"tcp://127.0.0.1:9000?isSecure=false", "tcp://127.0.0.1:9001?isSecure=false"}, + } + // Normal + svc1 := ®istry.ServiceInstance{ + Name: "kratos-provider-2-", + Version: "test", + Metadata: map[string]string{"app": "kratos"}, + Endpoints: []string{"tcp://127.0.0.1:9002?isSecure=false"}, + } + // Without metadata + svc2 := ®istry.ServiceInstance{ + Name: "kratos-provider-3-", + Version: "test", + Endpoints: []string{"tcp://127.0.0.1:9003?isSecure=false"}, } - err := r.Register(ctx, svc) - if err != nil { + if err := r.Register(ctx, svc); err != nil { t.Fatal(err) } - time.Sleep(time.Second * 1) - serviceInstances, err := r.GetService(ctx, "kratos-provider-4-tcp") - if err != nil { + + if err := r.Register(ctx, svc1); err != nil { t.Fatal(err) } - for _, instance := range serviceInstances { - log.Info(instance) - } - err = r.Deregister(ctx, svc) - if err != nil { + if err := r.Register(ctx, svc2); err != nil { t.Fatal(err) } -} -// TestWatch . TestWatch -func TestWatch(t *testing.T) { - conf := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"}) + time.Sleep(3 * time.Second) - r := NewRegistryWithConfig( - conf, - WithTimeout(time.Second*10), - WithTTL(100), - ) + result1, err := r.GetService(ctx, "kratos-provider-1-tcp") - svc := ®istry.ServiceInstance{ - Name: "kratos-provider-4-", - Version: "test", - Metadata: map[string]string{"app": "kratos"}, - Endpoints: []string{"tcp://127.0.0.1:9000?isSecure=false"}, + if err != nil || len(result1) != 2 || result1[0].Name != "kratos-provider-1-tcp" { + t.Fatal(err) } - watch, err := r.Watch(context.Background(), "kratos-provider-4-tcp") - if err != nil { + result2, err := r.GetService(ctx, "kratos-provider-2-tcp") + + if err != nil || len(result2) != 1 || result2[0].Name != "kratos-provider-2-tcp" || result2[0].Endpoints[0] != "tcp://127.0.0.1:9002" { t.Fatal(err) } - err = r.Register(context.Background(), svc) - if err != nil { + result3, err := r.GetService(ctx, "kratos-provider-3-tcp") + + if err != nil || len(result3) != 1 || result3[0].Name != "kratos-provider-3-tcp" || result3[0].Endpoints[0] != "tcp://127.0.0.1:9003" { t.Fatal(err) } - // watch svc - time.Sleep(time.Second * 1) - // svc register, AddEvent - next, err := watch.Next() + watch1, err := r.Watch(ctx, "kratos-provider-1-tcp") if err != nil { t.Fatal(err) } - for _, instance := range next { - // it will output one instance - log.Info(instance) + watch2, err := r.Watch(ctx, "kratos-provider-2-tcp") + if err != nil { + t.Fatal(err) } - - err = r.Deregister(context.Background(), svc) + watch3, err := r.Watch(ctx, "kratos-provider-3-tcp") if err != nil { t.Fatal(err) } - // svc deregister, DeleteEvent - next, err = watch.Next() - if err != nil { + if err = r.Deregister(ctx, svc); err != nil { t.Fatal(err) } - for _, instance := range next { - // it will output nothing - log.Info(instance) + + result1, err = watch1.Next() + if err != nil || len(result1) != 0 { + t.Fatal("deregister error") } - err = watch.Stop() + err = r.Deregister(ctx, svc1) if err != nil { t.Fatal(err) } - _, err = watch.Next() - if err == nil { - // if nil, stop failed - t.Fatal() + + result2, err = watch2.Next() + if err != nil || len(result2) != 0 { + t.Fatal("deregister error") + } + err = r.Deregister(ctx, svc2) + if err != nil { + t.Fatal(err) + } + + result3, err = watch3.Next() + if err != nil || len(result3) != 0 { + t.Fatal("deregister error") } }