This is an automated email from the ASF dual-hosted git repository. robotljw pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git
The following commit(s) were added to refs/heads/master by this push: new 7c143e8 unified system ut file new cebfbbe Merge pull request #934 from DFSOrange/46 7c143e8 is described below commit 7c143e8c2ab140c33a0c89160443a88b68a7cf82 Author: DFSOrange <pqa1996...@163.com> AuthorDate: Tue Apr 6 20:11:12 2021 +0800 unified system ut file --- datasource/etcd/system_test.go | 30 - datasource/mongo/ms_test.go | 3358 --------------------------------- datasource/{mongo => }/system_test.go | 16 +- 3 files changed, 3 insertions(+), 3401 deletions(-) diff --git a/datasource/etcd/system_test.go b/datasource/etcd/system_test.go deleted file mode 100644 index 09e11ba..0000000 --- a/datasource/etcd/system_test.go +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package etcd_test - -import ( - "testing" - - "github.com/apache/servicecomb-service-center/datasource" - "github.com/stretchr/testify/assert" -) - -func TestAdminService_Dump(t *testing.T) { - t.Log("execute 'dump' operation,when get all,should be passed") - cache := datasource.Instance().DumpCache(getContext()) - assert.Equal(t, len(cache.Indexes), len(cache.Microservices)) -} diff --git a/datasource/mongo/ms_test.go b/datasource/mongo/ms_test.go deleted file mode 100644 index d58bbcc..0000000 --- a/datasource/mongo/ms_test.go +++ /dev/null @@ -1,3358 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package mongo_test - -import ( - "fmt" - "strconv" - "strings" - "testing" - "time" - - pb "github.com/go-chassis/cari/discovery" - "github.com/stretchr/testify/assert" - "go.mongodb.org/mongo-driver/bson" - - "github.com/apache/servicecomb-service-center/datasource" - "github.com/apache/servicecomb-service-center/datasource/mongo" - "github.com/apache/servicecomb-service-center/datasource/mongo/client" - "github.com/apache/servicecomb-service-center/datasource/mongo/client/model" - "github.com/apache/servicecomb-service-center/pkg/log" - "github.com/apache/servicecomb-service-center/pkg/util" - "github.com/apache/servicecomb-service-center/server/config" - "github.com/apache/servicecomb-service-center/server/core" - "github.com/apache/servicecomb-service-center/server/plugin/quota" - "github.com/apache/servicecomb-service-center/server/service" -) - -func TestService_Register(t *testing.T) { - t.Run("Register service after init & install, should pass", func(t *testing.T) { - size := quota.DefaultSchemaQuota + 1 - paths := make([]*pb.ServicePath, 0, size) - properties := make(map[string]string, size) - request := &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "service-ms-appID", - ServiceName: "service-ms-serviceName", - Version: "32767.32767.32767.32767", - Alias: "service-ms-alias", - Level: "BACK", - Status: "UP", - Schemas: []string{"service-ms-schema"}, - Paths: paths, - Properties: properties, - Framework: &pb.FrameWorkProperty{ - Name: "service-ms-frameworkName", - Version: "service-ms-frameworkVersion", - }, - RegisterBy: "SDK", - Timestamp: strconv.FormatInt(time.Now().Unix(), 10), - }, - } - request.Service.ModTimestamp = request.Service.Timestamp - resp, err := datasource.Instance().RegisterService(getContext(), request) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("register service with same key, should pass", func(t *testing.T) { - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "some-relay-ms-service-name", - Alias: "sr-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - sameId := resp.ServiceId - - // serviceName: some-relay-ms-service-name - // alias: sr1-ms-service-name - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "some-relay-ms-service-name", - Alias: "sr1-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - // serviceName: some-relay1-ms-service-name - // alias: sr-ms-service-name - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "some-relay1-ms-service-name", - Alias: "sr-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - // serviceName: some-relay1-ms-service-name - // alias: sr-ms-service-name - // add serviceId field: sameId - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: sameId, - ServiceName: "some-relay1-ms-service-name", - Alias: "sr-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - // serviceName: some-relay-ms-service-name - // alias: sr1-ms-service-name - // serviceId: sameId - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: sameId, - ServiceName: "some-relay-ms-service-name", - Alias: "sr1-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - // serviceName: some-relay-ms-service-name - // alias: sr1-ms-service-name - // serviceId: custom-id-ms-service-id -- different - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: "custom-id-ms-service-id", - ServiceName: "some-relay-ms-service-name", - Alias: "sr1-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceAlreadyExists, resp.Response.GetCode()) - - // serviceName: some-relay1-ms-service-name - // alias: sr-ms-service-name - // serviceId: custom-id-ms-service-id -- different - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: "custom-id-ms-service-id", - ServiceName: "some-relay1-ms-service-name", - Alias: "sr-ms-service-name", - AppId: "default", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceAlreadyExists, resp.Response.GetCode()) - }) - - t.Run("same serviceId,different service, can not register again,error is same as the service register twice", - func(t *testing.T) { - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: "same-serviceId-service-ms", - ServiceName: "serviceA-service-ms", - AppId: "default-service-ms", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, resp.Response.GetCode(), pb.ResponseSuccess) - - // same serviceId with different service name - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: "same-serviceId-service-ms", - ServiceName: "serviceB-service-ms", - AppId: "default-service-ms", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "xxxxxxxx", - }, - Status: "UP", - }, - }) - assert.NotNil(t, resp) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceAlreadyExists, resp.Response.GetCode()) - }) -} - -func TestService_Get(t *testing.T) { - t.Run("get a exist service, should pass", func(t *testing.T) { - request := &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceId: "ms-service-query-id", - ServiceName: "ms-service-query", - AppId: "default", - Version: "1.0.4", - Level: "BACK", - Properties: make(map[string]string), - }, - } - - resp, err := datasource.Instance().RegisterService(getContext(), request) - assert.NoError(t, err) - assert.Equal(t, resp.Response.GetCode(), pb.ResponseSuccess) - - // search service by serviceID - queryResp, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: "ms-service-query-id", - }) - assert.NoError(t, err) - assert.Equal(t, queryResp.Response.GetCode(), pb.ResponseSuccess) - }) - t.Run("query all services, should pass", func(t *testing.T) { - resp, err := datasource.Instance().GetServices(getContext(), &pb.GetServicesRequest{}) - assert.NoError(t, err) - assert.Greater(t, len(resp.Services), 0) - }) - - t.Run("query a service by a not existed serviceId, should not pass", func(t *testing.T) { - // not exist service - resp, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: "no-exist-service", - }) - assert.NoError(t, err) - assert.Equal(t, resp.Response.GetCode(), pb.ErrServiceNotExists) - }) -} - -func TestService_Update(t *testing.T) { - var serviceId string - - t.Run("create service", func(t *testing.T) { - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - Alias: "es_service_ms", - ServiceName: "update_prop_service_service_ms", - AppId: "update_prop_appId_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: "UP", - }, - }) - assert.NoError(t, err) - assert.NotNil(t, resp) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.NotEqual(t, "", resp.ServiceId) - serviceId = resp.ServiceId - }) - - t.Run("update properties while properties not nil", func(t *testing.T) { - request := &pb.UpdateServicePropsRequest{ - ServiceId: serviceId, - Properties: make(map[string]string), - } - request2 := &pb.UpdateServicePropsRequest{ - ServiceId: serviceId, - Properties: make(map[string]string), - } - request.Properties["test"] = "1" - request2.Properties["k"] = "v" - resp, err := datasource.Instance().UpdateService(getContext(), request) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().UpdateService(getContext(), request2) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - respGetService, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.Equal(t, serviceId, respGetService.Service.ServiceId) - assert.Equal(t, "", respGetService.Service.Properties["test"]) - assert.Equal(t, "v", respGetService.Service.Properties["k"]) - }) - - t.Run("update service that does not exist", func(t *testing.T) { - r := &pb.UpdateServicePropsRequest{ - ServiceId: "not_exist_service_service_ms", - Properties: make(map[string]string), - } - resp, err := datasource.Instance().UpdateService(getContext(), r) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("update service by removing the properties", func(t *testing.T) { - r := &pb.UpdateServicePropsRequest{ - ServiceId: serviceId, - Properties: nil, - } - resp, err := datasource.Instance().UpdateService(getContext(), r) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - r = &pb.UpdateServicePropsRequest{ - ServiceId: "", - Properties: map[string]string{}, - } - resp, err = datasource.Instance().UpdateService(getContext(), r) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestService_Detail(t *testing.T) { - var ( - serviceId string - ) - - t.Run("execute 'get detail' operation", func(t *testing.T) { - log.Info("should be passed") - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "govern_service_group", - ServiceName: "govern_service_name", - Version: "3.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceId = resp.ServiceId - - datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId, - SchemaId: "schemaId", - Schema: "detail", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceId, - Endpoints: []string{ - "govern:127.0.0.1:8080", - }, - HostName: "UT-HOST", - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("when get invalid service detail, should be failed") - respD, err := datasource.Instance().GetServiceDetail(getContext(), &pb.GetServiceRequest{ - ServiceId: "", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respD.Response.GetCode()) - // - log.Info("when get a service detail, should be passed") - respGetServiceDetail, err := datasource.Instance().GetServiceDetail(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetServiceDetail.Response.GetCode()) - // - respDelete, err := datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceId, - Force: true, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respDelete.Response.GetCode()) - // - respGetServiceDetail, err = datasource.Instance().GetServiceDetail(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respGetServiceDetail.Response.GetCode()) - }) -} - -func TestService_Info(t *testing.T) { - t.Run("get all services", func(t *testing.T) { - log.Info("should be passed") - resp, err := datasource.Instance().GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{ - Options: []string{"all"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{ - Options: []string{""}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{ - Options: []string{"tags", "rules", "instances", "schemas", "statistics"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{ - Options: []string{"statistics"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{ - Options: []string{"instances"}, - CountOnly: true, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestService_Delete(t *testing.T) { - var ( - serviceContainInstId string - serviceNoInstId string - ) - - t.Run("create service & instance", func(t *testing.T) { - respCreate, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "delete_service_with_inst_ms", - AppId: "delete_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: "UP", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreate.Response.GetCode()) - serviceContainInstId = respCreate.ServiceId - - log.Info("attach instance") - instance := &pb.MicroServiceInstance{ - ServiceId: serviceContainInstId, - Endpoints: []string{ - "deleteService:127.0.0.1:8080", - }, - HostName: "delete-host-ms", - Status: pb.MSI_UP, - } - respCreateIns, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: instance, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateIns.Response.GetCode()) - - log.Info("create service without instance") - provider := &pb.MicroService{ - ServiceName: "delete_service_no_inst_ms", - AppId: "delete_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: "UP", - } - respCreate, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: provider, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreate.Response.GetCode()) - serviceNoInstId = respCreate.ServiceId - - respCreate, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "delete_service_consumer_ms", - AppId: "delete_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: "UP", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreate.Response.GetCode()) - }) - - t.Run("delete a service which contains instances with no force flag", func(t *testing.T) { - log.Info("should not pass") - resp, err := datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceContainInstId, - Force: false, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("delete a service which contains instances with force flag", func(t *testing.T) { - log.Info("should pass") - resp, err := datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceContainInstId, - Force: true, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - // todo: add delete service depended by consumer after finishing dependency management - - t.Run("delete a service which depended by consumer with force flag", func(t *testing.T) { - log.Info("should pass") - resp, err := datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceNoInstId, - Force: true, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("delete a service with no force flag", func(t *testing.T) { - log.Info("should not pass") - resp, err := datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceNoInstId, - Force: false, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestApplication_Get(t *testing.T) { - t.Run("execute 'get apps' operation", func(t *testing.T) { - log.Info("when request is valid, should be passed") - resp, err := datasource.Instance().GetApplications(getContext(), &pb.GetAppsRequest{}) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetApplications(getContext(), &pb.GetAppsRequest{ - Environment: pb.ENV_ACCEPT, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestTags_Add(t *testing.T) { - var ( - serviceId1 string - ) - - // create service - t.Run("create service", func(t *testing.T) { - svc1 := &pb.MicroService{ - AppId: "create_tag_group_ms", - ServiceName: "create_tag_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - } - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: svc1, - }) - assert.NoError(t, err) - assert.NotEqual(t, "", resp.ServiceId) - serviceId1 = resp.ServiceId - }) - - t.Run("the request is invalid", func(t *testing.T) { - resp, err := datasource.Instance().AddTags(getContext(), &pb.AddServiceTagsRequest{ - ServiceId: "noServiceTest", - Tags: map[string]string{ - "a": "test", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - }) - - t.Run("the request is valid", func(t *testing.T) { - defaultQuota := quota.DefaultTagQuota - tags := make(map[string]string, defaultQuota) - for i := 0; i < defaultQuota; i++ { - s := "tag" + strconv.Itoa(i) - tags[s] = s - } - resp, err := datasource.Instance().AddTags(getContext(), &pb.AddServiceTagsRequest{ - ServiceId: serviceId1, - Tags: tags, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestTags_Get(t *testing.T) { - var serviceId string - t.Run("create service and add tags", func(t *testing.T) { - svc := &pb.MicroService{ - AppId: "get_tag_group_ms", - ServiceName: "get_tag_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - } - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: svc, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceId = resp.ServiceId - - respAddTags, err := datasource.Instance().AddTags(getContext(), &pb.AddServiceTagsRequest{ - ServiceId: serviceId, - Tags: map[string]string{ - "a": "test", - "b": "b", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddTags.Response.GetCode()) - }) - - t.Run("the request is invalid", func(t *testing.T) { - resp, err := datasource.Instance().GetTags(getContext(), &pb.GetServiceTagsRequest{ - ServiceId: "noThisService", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetTags(getContext(), &pb.GetServiceTagsRequest{ - ServiceId: "", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - - resp, err = datasource.Instance().GetTags(getContext(), &pb.GetServiceTagsRequest{ - ServiceId: strings.Repeat("x", 65), - }) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - }) - - t.Run("the request is valid", func(t *testing.T) { - resp, err := datasource.Instance().GetTags(getContext(), &pb.GetServiceTagsRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, "test", resp.Tags["a"]) - }) -} - -func TestTag_Update(t *testing.T) { - var serviceId string - t.Run("add service and add tags", func(t *testing.T) { - svc := &pb.MicroService{ - AppId: "update_tag_group_ms", - ServiceName: "update_tag_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - } - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: svc, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceId = resp.ServiceId - - respAddTags, err := datasource.Instance().AddTags(getContext(), &pb.AddServiceTagsRequest{ - ServiceId: serviceId, - Tags: map[string]string{ - "a": "test", - "b": "b", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddTags.Response.GetCode()) - }) - - t.Run("the request is invalid", func(t *testing.T) { - - resp, err := datasource.Instance().UpdateTag(getContext(), &pb.UpdateServiceTagRequest{ - ServiceId: "noneservice", - Key: "a", - Value: "update", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - - resp, err = datasource.Instance().UpdateTag(getContext(), &pb.UpdateServiceTagRequest{ - ServiceId: serviceId, - Key: "notexisttag", - Value: "update", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrTagNotExists, resp.Response.GetCode()) - - resp, err = datasource.Instance().UpdateTag(getContext(), &pb.UpdateServiceTagRequest{ - ServiceId: serviceId, - Key: strings.Repeat("x", 65), - Value: "v", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrTagNotExists, resp.Response.GetCode()) - }) - - t.Run("the request is valid", func(t *testing.T) { - resp, err := datasource.Instance().UpdateTag(getContext(), &pb.UpdateServiceTagRequest{ - ServiceId: serviceId, - Key: "a", - Value: "update", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestTags_Delete(t *testing.T) { - var serviceId string - t.Run("create service and add tags", func(t *testing.T) { - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "delete_tag_group_ms", - ServiceName: "delete_tag_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceId = resp.ServiceId - - respAddTages, err := datasource.Instance().AddTags(getContext(), &pb.AddServiceTagsRequest{ - ServiceId: serviceId, - Tags: map[string]string{ - "a": "test", - "b": "b", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddTages.Response.GetCode()) - }) - - t.Run("the request is invalid", func(t *testing.T) { - resp, err := datasource.Instance().DeleteTags(getContext(), &pb.DeleteServiceTagsRequest{ - ServiceId: "noneservice", - Keys: []string{"a", "b"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - - resp, err = datasource.Instance().DeleteTags(getContext(), &pb.DeleteServiceTagsRequest{ - ServiceId: serviceId, - Keys: []string{"c"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrTagNotExists, resp.Response.GetCode()) - }) - - t.Run("the request is valid", func(t *testing.T) { - resp, err := datasource.Instance().DeleteTags(getContext(), &pb.DeleteServiceTagsRequest{ - ServiceId: serviceId, - Keys: []string{"a", "b"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - respGetTags, err := datasource.Instance().GetTags(getContext(), &pb.GetServiceTagsRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, "", respGetTags.Tags["a"]) - }) -} - -func TestRule_Add(t *testing.T) { - var ( - serviceId1 string - serviceId2 string - ) - - t.Run("register service and instance", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_rule_group_ms", - ServiceName: "create_rule_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_rule_group_ms", - ServiceName: "create_rule_service_ms", - Version: "1.0.1", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId2 = respCreateService.ServiceId - }) - - t.Run("invalid request", func(t *testing.T) { - respAddRule, err := datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: "not_exist_service_ms", - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test white", - }, - }, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respAddRule) - }) - - t.Run("request is valid", func(t *testing.T) { - respAddRule, err := datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId1, - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test black", - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddRule.Response.GetCode()) - ruleId := respAddRule.RuleIds[0] - assert.NotEqual(t, "", ruleId) - - respAddRule, err = datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId1, - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test change black", - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddRule.Response.GetCode()) - assert.Equal(t, 0, len(respAddRule.RuleIds)) - - respAddRule, err = datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId1, - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "WHITE", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test white", - }, - }, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respAddRule.Response.GetCode()) - }) - - t.Run("create rule out of quota", func(t *testing.T) { - size := quota.DefaultRuleQuota + 1 - rules := make([]*pb.AddOrUpdateServiceRule, 0, size) - for i := 0; i < size; i++ { - rules = append(rules, &pb.AddOrUpdateServiceRule{ - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: strconv.Itoa(i), - Description: "test white", - }) - } - - resp, err := datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId2, - Rules: rules[:size-1], - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId2, - Rules: rules[size-1:], - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrNotEnoughQuota, resp.Response.GetCode()) - }) -} - -func TestRule_Get(t *testing.T) { - var ( - serviceId string - ruleId string - ) - - t.Run("register service and rules", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_rule_group_ms", - ServiceName: "get_rule_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - respAddRule, err := datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId, - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test BLACK", - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddRule.Response.GetCode()) - ruleId = respAddRule.RuleIds[0] - assert.NotEqual(t, "", ruleId) - }) - - t.Run("get when request is invalid", func(t *testing.T) { - respGetRule, err := datasource.Instance().GetRules(getContext(), &pb.GetServiceRulesRequest{ - ServiceId: "not_exist_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, respGetRule.Response.GetCode()) - }) - - t.Run("get when request is valid", func(t *testing.T) { - respGetRule, err := datasource.Instance().GetRules(getContext(), &pb.GetServiceRulesRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetRule.Response.GetCode()) - assert.Equal(t, ruleId, respGetRule.Rules[0].RuleId) - }) -} - -func TestRule_Delete(t *testing.T) { - var ( - serviceId string - ruleId string - ) - t.Run("register service and rules", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "delete_rule_group_ms", - ServiceName: "delete_rule_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - respAddRule, err := datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId, - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test BLACK", - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddRule.Response.GetCode()) - ruleId = respAddRule.RuleIds[0] - assert.NotEqual(t, "", ruleId) - }) - - t.Run("delete when request is invalid", func(t *testing.T) { - resp, err := datasource.Instance().DeleteRule(getContext(), &pb.DeleteServiceRulesRequest{ - ServiceId: "not_exist_service_ms", - RuleIds: []string{"1000000"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode()) - - resp, err = datasource.Instance().DeleteRule(getContext(), &pb.DeleteServiceRulesRequest{ - ServiceId: serviceId, - RuleIds: []string{"not_exist_rule"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrRuleNotExists, resp.Response.GetCode()) - }) - - t.Run("delete when request is valid", func(t *testing.T) { - resp, err := datasource.Instance().DeleteRule(getContext(), &pb.DeleteServiceRulesRequest{ - ServiceId: serviceId, - RuleIds: []string{ruleId}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - respGetRule, err := datasource.Instance().GetRules(getContext(), &pb.GetServiceRulesRequest{ - ServiceId: serviceId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, 0, len(respGetRule.Rules)) - }) -} - -func TestRule_Update(t *testing.T) { - var ( - serviceId string - ruleId string - ) - - t.Run("create service and rules", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "update_rule_group_ms", - ServiceName: "update_rule_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - respAddRule, err := datasource.Instance().AddRule(getContext(), &pb.AddServiceRulesRequest{ - ServiceId: serviceId, - Rules: []*pb.AddOrUpdateServiceRule{ - { - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test BLACK", - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAddRule.Response.GetCode()) - ruleId = respAddRule.RuleIds[0] - assert.NotEqual(t, "", ruleId) - }) - - t.Run("update when request is invalid", func(t *testing.T) { - rule := &pb.AddOrUpdateServiceRule{ - RuleType: "BLACK", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test BLACK update", - } - resp, err := datasource.Instance().UpdateRule(getContext(), &pb.UpdateServiceRuleRequest{ - ServiceId: "not_exist_service_ms", - RuleId: ruleId, - Rule: rule, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().UpdateRule(getContext(), &pb.UpdateServiceRuleRequest{ - ServiceId: serviceId, - RuleId: "not_exist_rule_ms", - Rule: rule, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().UpdateRule(getContext(), &pb.UpdateServiceRuleRequest{ - ServiceId: serviceId, - RuleId: ruleId, - Rule: &pb.AddOrUpdateServiceRule{ - RuleType: "WHITE", - Attribute: "ServiceName", - Pattern: "Test*", - Description: "test white update", - }, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("update when request is valid", func(t *testing.T) { - resp, err := datasource.Instance().UpdateRule(getContext(), &pb.UpdateServiceRuleRequest{ - ServiceId: serviceId, - RuleId: ruleId, - Rule: &pb.AddOrUpdateServiceRule{ - RuleType: "BLACK", - Attribute: "AppId", - Pattern: "Test*", - Description: "test white update", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} - -func TestSchema_Create(t *testing.T) { - var ( - serviceIdDev string - ) - - t.Run("create service, should pass", func(t *testing.T) { - svc := &pb.MicroService{ - Alias: "create_schema_group_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - } - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: svc, - }) - assert.NoError(t, err) - assert.NotEqual(t, "", resp.ServiceId) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceIdDev = resp.ServiceId - - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_group_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.NotEqual(t, "", resp.ServiceId) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("create schemas out of gauge", func(t *testing.T) { - size := quota.DefaultSchemaQuota + 1 - schemaIds := make([]string, 0, size) - schemas := make([]*pb.Schema, 0, size) - for i := 0; i < size; i++ { - s := "ServiceCombTestTheLimitOfSchemasServiceMS" + strconv.Itoa(i) - - schemaIds = append(schemaIds, s) - schemas = append(schemas, &pb.Schema{ - SchemaId: s, - Schema: s, - Summary: s, - }) - } - - resp, err := datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdDev, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrNotEnoughQuota, resp.Response.GetCode()) - - resp, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdDev, - Schemas: schemas[:quota.DefaultSchemaQuota], - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - //resp, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - // ServiceId: serviceIdDev, - // Schemas: schemas, - //}) - //assert.NoError(t, err) - //assert.Equal(t, pb.ErrNotEnoughQuota, resp.Response.GetCode()) - }) - - // - t.Run("batch create schemas in dev env", func(t *testing.T) { - var ( - serviceIdDev1 string - serviceIdDev2 string - ) - - resp, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schemas_dev_service_ms", - ServiceName: "create_schemas_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceIdDev1 = resp.ServiceId - - resp, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schemas_dev_service_ms", - ServiceName: "create_schemas_service_service_ms", - Version: "1.0.1", - Level: "FRONT", - Schemas: []string{ - "first_schemaId_service_ms", - }, - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - serviceIdDev2 = resp.ServiceId - - schemas := []*pb.Schema{ - { - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }, - { - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }, - } - respCreateSchema, err := datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdDev1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateSchema.Response.GetCode()) - // - schemas = []*pb.Schema{ - { - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_change_service_ms", - Summary: "first0summary1change_service_ms", - }, - } - respCreateSchema, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdDev1, - Schemas: schemas, - }) - - schemas = []*pb.Schema{ - { - SchemaId: "second_schemaId_service_ms", - Schema: "second_schema_service_ms", - Summary: "second0summary_service_ms", - }, - } - respCreateSchema, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdDev1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateSchema.Response.GetCode()) - - respGetService, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceIdDev1, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetService.Response.GetCode()) - assert.Equal(t, []string{"second_schemaId_service_ms"}, respGetService.Service.Schemas) - - schemas = []*pb.Schema{ - { - SchemaId: "second_schemaId_service_ms", - Schema: "second_schema_service_ms", - Summary: "second0summary_service_ms", - }, - } - respCreateSchema, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdDev2, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateSchema.Response.GetCode()) - - respGetService, err = datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceIdDev2, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetService.Response.GetCode()) - assert.Equal(t, []string{"second_schemaId_service_ms"}, respGetService.Service.Schemas) - }) - // - t.Run("batch create schemas in production env", func(t *testing.T) { - var ( - serviceIdPro1 string - serviceIdPro2 string - ) - - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schemas_prod_service_ms", - ServiceName: "create_schemas_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schemas_prod_service_ms", - ServiceName: "create_schemas_service_service_ms", - Version: "1.0.1", - Level: "FRONT", - Schemas: []string{ - "first_schemaId_service_ms", - "second_schemaId_service_ms", - }, - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro2 = respCreateService.ServiceId - - schemas := []*pb.Schema{ - { - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }, - { - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }, - } - respModifySchemas, err := datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - - respGetService, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceIdPro1, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetService.Response.GetCode()) - assert.Equal(t, []string{"first_schemaId_service_ms"}, respGetService.Service.Schemas) - - respModifySchemas, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - - schemas = []*pb.Schema{ - { - SchemaId: "second_schemaId_service_ms", - Schema: "second_schema_service_ms", - Summary: "second0summary_service_ms", - }, - } - respModifySchemas, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrUndefinedSchemaID, respModifySchemas.Response.GetCode()) - fmt.Println(serviceIdPro2) - - respModifySchema, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro2, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - schemas = []*pb.Schema{ - { - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }, - } - respModifySchemas, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro2, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - // - respExist, err := datasource.Instance().ExistSchema(getContext(), &pb.GetExistenceRequest{ - Type: service.ExistTypeSchema, - ServiceId: serviceIdPro2, - SchemaId: "first_schemaId_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, "first0summary_service_ms", respExist.Summary) - // - respModifySchemas, err = datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro2, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - }) - - // - t.Run("create a schema in dev env", func(t *testing.T) { - var ( - serviceIdDev1 string - serviceIdDev2 string - ) - - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_dev_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdDev1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_dev_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.1", - Level: "FRONT", - Schemas: []string{ - "first_schemaId_service_ms", - }, - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdDev2 = respCreateService.ServiceId - - respModifySchema, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdDev1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdDev2, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdDev1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_change_service_ms", - Summary: "first0summary1change_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdDev1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdDev1, - SchemaId: "second_schemaId_service_ms", - Schema: "second_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - }) - // - t.Run("create a schema in production env", func(t *testing.T) { - var ( - serviceIdPro1 string - serviceIdPro2 string - ) - - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_prod_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_prod_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.1", - Level: "FRONT", - Schemas: []string{ - "first_schemaId_service_ms", - "second_schemaId_service_ms", - }, - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro2 = respCreateService.ServiceId - - respModifySchema, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_change_service_ms", - Summary: "first0summary1change_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "second_schemaId_service_ms", - Schema: "second_schema_service_ms", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro2, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - }) - // - t.Run("create a schema in empty env", func(t *testing.T) { - var ( - serviceIdPro1 string - serviceIdPro2 string - ) - - log.Info("register service") - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_empty_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "create_schema_empty_service_ms", - ServiceName: "create_schema_service_service_ms", - Version: "1.0.1", - Level: "FRONT", - Schemas: []string{ - "first_schemaId_service_ms", - "second_schemaId_service_ms", - }, - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro2 = respCreateService.ServiceId - - log.Info("create a schema for service whose schemaID is empty") - respModifySchema, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - log.Info("modify schema for the service whose schema summary is empty") - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_change_service_ms", - Summary: "first0summary1change_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - log.Info("modify schema for the service whose schema summary already exist") - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - Summary: "first0summary_service_ms", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - log.Info("add schema") - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: "second_schemaId_service_ms", - Schema: "second_schema_service_ms", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - - log.Info("modify schema for the service whose schemaId already exist") - respModifySchema, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro2, - SchemaId: "first_schemaId_service_ms", - Schema: "first_schema_service_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - }) - // - t.Run("add a schemaId in production env while schema editable is set", func(t *testing.T) { - var ( - serviceIdPro1 string - ) - log.Info("register service") - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "add_a_schemaId_prod_schema_lock_ms", - ServiceName: "add_a_schemaId_prod_schema_lock_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro1 = respCreateService.ServiceId - - log.Info("add a schema with new schemaId, should pass") - schemas := []*pb.Schema{ - { - SchemaId: "first_schemaId_ms", - Schema: "first_schema_ms", - Summary: "first0summary_ms", - }, - } - respModifySchemas, err := datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - - respService, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceIdPro1, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respService.Response.GetCode()) - assert.Equal(t, []string{"first_schemaId_ms"}, respService.Service.Schemas) - - schemas = []*pb.Schema{ - { - SchemaId: "second_schemaId_ms", - Schema: "second_schema_ms", - Summary: "second0summary_ms", - }, - } - log.Info("schema edit not allowed, add a schema with new schemaId should fail") - - localMicroServiceDs := &mongo.DataSource{SchemaEditable: false} - respModifySchemas, err = localMicroServiceDs.ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrUndefinedSchemaID, respModifySchemas.Response.GetCode()) - - log.Info("schema edit allowed, add a schema with new schemaId, should pass") - localMicroServiceDs = &mongo.DataSource{SchemaEditable: true} - respModifySchemas, err = localMicroServiceDs.ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - }) - // - t.Run("modify a schema in production env while schema editable is set", func(t *testing.T) { - var ( - serviceIdPro1 string - ) - log.Info("register service") - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "modify_a_schema_prod_schema_lock_ms", - ServiceName: "modify_a_schema_prod_schema_lock_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_PROD, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceIdPro1 = respCreateService.ServiceId - - log.Info("add schemas, should pass") - schemas := []*pb.Schema{ - { - SchemaId: "first_schemaId_ms", - Schema: "first_schema_ms", - Summary: "first0summary_ms", - }, - } - respModifySchemas, err := datasource.Instance().ModifySchemas(getContext(), &pb.ModifySchemasRequest{ - ServiceId: serviceIdPro1, - Schemas: schemas, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchemas.Response.GetCode()) - - respService, err := datasource.Instance().GetService(getContext(), &pb.GetServiceRequest{ - ServiceId: serviceIdPro1, - }) - assert.NoError(t, err) - assert.Equal(t, []string{"first_schemaId_ms"}, respService.Service.Schemas) - - log.Info("schema edit not allowed, modify schema should fail") - localMicroServiceDs := &mongo.DataSource{SchemaEditable: false} - respModifySchema, err := localMicroServiceDs.ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: schemas[0].SchemaId, - Summary: schemas[0].Summary, - Schema: schemas[0].SchemaId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrModifySchemaNotAllow, respModifySchema.Response.GetCode()) - - log.Info("schema edit allowed, add a schema with new schemaId, should pass") - localMicroServiceDs = &mongo.DataSource{SchemaEditable: true} - respModifySchema, err = localMicroServiceDs.ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceIdPro1, - SchemaId: schemas[0].SchemaId, - Summary: schemas[0].Summary, - Schema: schemas[0].SchemaId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respModifySchema.Response.GetCode()) - }) -} - -func TestSchema_Exist(t *testing.T) { - var ( - serviceId string - ) - - t.Run("register service and add schema", func(t *testing.T) { - log.Info("register service") - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "query_schema_group_ms", - ServiceName: "query_schema_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - log.Info("add schemas, should pass") - resp, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - Schema: "query schema ms", - Summary: "summary_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.no.summary.ms", - Schema: "query schema ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("check exists", func(t *testing.T) { - log.Info("check schema exist, should pass") - resp, err := datasource.Instance().ExistSchema(getContext(), &pb.GetExistenceRequest{ - Type: service.ExistTypeSchema, - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, "summary_ms", resp.Summary) - - resp, err = datasource.Instance().ExistSchema(getContext(), &pb.GetExistenceRequest{ - Type: service.ExistTypeSchema, - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - AppId: "()", - ServiceName: "", - Version: "()", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().ExistSchema(getContext(), &pb.GetExistenceRequest{ - Type: service.ExistTypeSchema, - ServiceId: serviceId, - SchemaId: "com.huawei.test.no.summary.ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, "com.huawei.test.no.summary.ms", resp.SchemaId) - assert.Equal(t, "", resp.Summary) - }) -} - -func TestSchema_Delete(t *testing.T) { - var ( - serviceId string - ) - - t.Run("register service and instance", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "delete_schema_group_ms", - ServiceName: "delete_schema_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - resp, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - Schema: "delete schema ms", - Summary: "summary_ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("test delete when request is invalid", func(t *testing.T) { - log.Info("schema id does not exist") - resp, err := datasource.Instance().DeleteSchema(getContext(), &pb.DeleteSchemaRequest{ - ServiceId: serviceId, - SchemaId: "none_exist_schema", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("service id does not exist") - resp, err = datasource.Instance().DeleteSchema(getContext(), &pb.DeleteSchemaRequest{ - ServiceId: "not_exist_service", - SchemaId: "com.huawei.test.ms", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - // - t.Run("test delete when request is valid", func(t *testing.T) { - resp, err := datasource.Instance().DeleteSchema(getContext(), &pb.DeleteSchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - respGet, err := datasource.Instance().GetSchema(getContext(), &pb.GetSchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrSchemaNotExists, respGet.Response.GetCode()) - - respExist, err := datasource.Instance().ExistSchema(getContext(), &pb.GetExistenceRequest{ - Type: "schema", - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrSchemaNotExists, respExist.Response.GetCode()) - }) -} - -func TestSchema_Get(t *testing.T) { - var ( - serviceId string - serviceId1 string - ) - - var ( - schemaId1 string = "all_schema1_ms" - schemaId2 string = "all_schema2_ms" - schemaId3 string = "all_schema3_ms" - summary string = "this0is1a2test3ms" - schemaContent string = "the content is vary large" - ) - - t.Run("register service and instance", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_schema_group_ms", - ServiceName: "get_schema_service_ms", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - "non-schema-content", - }, - Status: pb.MS_UP, - Environment: pb.ENV_DEV, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - respCreateSchema, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - Schema: "get schema ms", - Summary: "schema0summary1ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateSchema.Response.GetCode()) - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_all_schema_ms", - ServiceName: "get_all_schema_ms", - Version: "1.0.0", - Level: "FRONT", - Schemas: []string{ - schemaId1, - schemaId2, - schemaId3, - }, - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId1 = respCreateService.ServiceId - // - respPutData, err := datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId1, - SchemaId: schemaId2, - Schema: schemaContent, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respPutData.Response.GetCode()) - // - respPutData, err = datasource.Instance().ModifySchema(getContext(), &pb.ModifySchemaRequest{ - ServiceId: serviceId1, - SchemaId: schemaId3, - Schema: schemaContent, - Summary: summary, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respPutData.Response.GetCode()) - // - respGetAllSchema, err := datasource.Instance().GetAllSchemas(getContext(), &pb.GetAllSchemaRequest{ - ServiceId: serviceId1, - WithSchema: false, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetAllSchema.Response.GetCode()) - schemas := respGetAllSchema.Schemas - for _, schema := range schemas { - fmt.Println(schema.SchemaId) - if schema.SchemaId == schemaId1 && schema.SchemaId == schemaId2 { - assert.Empty(t, schema.Summary) - assert.Empty(t, schema.Schema) - } - if schema.SchemaId == schemaId3 { - assert.Equal(t, summary, schema.Summary) - assert.Empty(t, schema.Schema) - } - } - // - respGetAllSchema, err = datasource.Instance().GetAllSchemas(getContext(), &pb.GetAllSchemaRequest{ - ServiceId: serviceId1, - WithSchema: true, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respGetAllSchema.Response.GetCode()) - schemas = respGetAllSchema.Schemas - for _, schema := range schemas { - switch schema.SchemaId { - case schemaId1: - assert.Empty(t, schema.Summary) - assert.Empty(t, schema.Schema) - case schemaId2: - assert.Empty(t, schema.Summary) - assert.Equal(t, schemaContent, schema.Schema) - case schemaId3: - assert.Equal(t, summary, schema.Summary) - assert.Equal(t, schemaContent, schema.Schema) - } - } - }) - - t.Run("test get when request is invalid", func(t *testing.T) { - log.Info("service does not exist") - respGetSchema, err := datasource.Instance().GetSchema(getContext(), &pb.GetSchemaRequest{ - ServiceId: "none_exist_service", - SchemaId: "com.huawei.test", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, respGetSchema.Response.GetCode()) - - respGetAllSchemas, err := datasource.Instance().GetAllSchemas(getContext(), &pb.GetAllSchemaRequest{ - ServiceId: "none_exist_service", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, respGetAllSchemas.Response.GetCode()) - - log.Info("schema id doest not exist") - respGetSchema, err = datasource.Instance().GetSchema(getContext(), &pb.GetSchemaRequest{ - ServiceId: serviceId, - SchemaId: "none_exist_schema", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrSchemaNotExists, respGetSchema.Response.GetCode()) - }) - - t.Run("test get when request is valid", func(t *testing.T) { - resp, err := datasource.Instance().GetSchema(getContext(), &pb.GetSchemaRequest{ - ServiceId: serviceId, - SchemaId: "com.huawei.test.ms", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, "get schema ms", resp.Schema) - assert.Equal(t, "schema0summary1ms", resp.SchemaSummary) - - }) -} - -func TestInstance_Create(t *testing.T) { - var serviceID string - - t.Run("create service, when request is valid, should pass", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "create_instance_service_ms", - AppId: "create_instance_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID = respCreateService.ServiceId - }) - - t.Run("register instance, when request is valid, should pass", func(t *testing.T) { - respCreateInst, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID, - Endpoints: []string{ - "createInstance_ms:127.0.0.1:8080", - }, - HostName: "UT-HOST", - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInst.Response.GetCode()) - assert.NotEqual(t, "", respCreateInst.InstanceId) - // delete instance - _, err = datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceID, - InstanceId: respCreateInst.InstanceId, - }) - assert.NoError(t, err) - - respCreateInst, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - InstanceId: "customId_ms", - ServiceId: serviceID, - Endpoints: []string{ - "createInstance_ms:127.0.0.1:8080", - }, - HostName: "UT-HOST", - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInst.Response.GetCode()) - assert.Equal(t, "customId_ms", respCreateInst.InstanceId) - // delete instance - _, err = datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceID, - InstanceId: "customId_ms", - }) - assert.NoError(t, err) - }) - - t.Run("update the same instance, should pass", func(t *testing.T) { - instance := &pb.MicroServiceInstance{ - ServiceId: serviceID, - Endpoints: []string{ - "sameInstance:127.0.0.1:8080", - }, - HostName: "UT-HOST", - Status: pb.MSI_UP, - } - resp, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: instance, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - resp, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: instance, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - assert.Equal(t, instance.InstanceId, resp.InstanceId) - // delete instance - _, err = datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceID, - InstanceId: instance.InstanceId, - }) - assert.NoError(t, err) - }) - - t.Run("delete service data", func(t *testing.T) { - _, err := datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceID, - }) - assert.NoError(t, err) - }) -} - -func TestInstance_HeartBeat(t *testing.T) { - var ( - serviceID string - instanceID1 string - instanceID2 string - ) - - t.Run("register service and instance, should pass", func(t *testing.T) { - log.Info("register service") - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "heartbeat_service_ms", - AppId: "heartbeat_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID = respCreateService.ServiceId - - respCreateInstance, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "heartbeat:127.0.0.1:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID1 = respCreateInstance.InstanceId - - respCreateInstance, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "heartbeat:127.0.0.2:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID2 = respCreateInstance.InstanceId - }) - - t.Run("instance: update a lease", func(t *testing.T) { - log.Info("valid instance") - resp, err := datasource.Instance().Heartbeat(getContext(), &pb.HeartbeatRequest{ - ServiceId: serviceID, - InstanceId: instanceID1, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("serviceId does not exist") - resp, err = datasource.Instance().Heartbeat(getContext(), &pb.HeartbeatRequest{ - ServiceId: "100000000000", - InstanceId: instanceID1, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("instance does not exist") - resp, err = datasource.Instance().Heartbeat(getContext(), &pb.HeartbeatRequest{ - ServiceId: serviceID, - InstanceId: "not-exist-ins", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("batch update lease", func(t *testing.T) { - log.Info("request contains at least 1 instances") - resp, err := datasource.Instance().HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{ - Instances: []*pb.HeartbeatSetElement{ - { - ServiceId: serviceID, - InstanceId: instanceID1, - }, - { - ServiceId: serviceID, - InstanceId: instanceID2, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("delete related instances and services", func(t *testing.T) { - // delete instances - _, err := datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceID, - InstanceId: instanceID1, - }) - assert.NoError(t, err) - _, err = datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceID, - InstanceId: instanceID2, - }) - assert.NoError(t, err) - - // delete service - _, err = datasource.Instance().UnregisterService(getContext(), &pb.DeleteServiceRequest{ - ServiceId: serviceID, - }) - assert.NoError(t, err) - }) -} - -func TestInstance_Update(t *testing.T) { - var ( - serviceID string - instanceID string - ) - - t.Run("register service and instance, should pass", func(t *testing.T) { - log.Info("register service") - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - ServiceName: "update_instance_service_ms", - AppId: "update_instance_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID = respCreateService.ServiceId - - log.Info("create instance") - respCreateInstance, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID, - Endpoints: []string{ - "updateInstance:127.0.0.1:8080", - }, - HostName: "UT-HOST-MS", - Status: pb.MSI_UP, - Properties: map[string]string{"nodeIP": "test"}, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID = respCreateInstance.InstanceId - }) - - t.Run("update instance status, should pass", func(t *testing.T) { - log.Info("update instance status to DOWN") - respUpdateStatus, err := datasource.Instance().UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Status: pb.MSI_DOWN, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateStatus.Response.GetCode()) - - log.Info("update instance status to OUTOFSERVICE") - respUpdateStatus, err = datasource.Instance().UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Status: pb.MSI_OUTOFSERVICE, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateStatus.Response.GetCode()) - - log.Info("update instance status to STARTING") - respUpdateStatus, err = datasource.Instance().UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Status: pb.MSI_STARTING, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateStatus.Response.GetCode()) - - log.Info("update instance status to TESTING") - respUpdateStatus, err = datasource.Instance().UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Status: pb.MSI_TESTING, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateStatus.Response.GetCode()) - - log.Info("update instance status to UP") - respUpdateStatus, err = datasource.Instance().UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Status: pb.MSI_UP, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateStatus.Response.GetCode()) - - log.Info("update instance status with a not exist instance") - respUpdateStatus, err = datasource.Instance().UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{ - ServiceId: serviceID, - InstanceId: "notexistins", - Status: pb.MSI_STARTING, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respUpdateStatus.Response.GetCode()) - }) - - t.Run("update instance properties, should pass", func(t *testing.T) { - log.Info("update one properties") - respUpdateProperties, err := datasource.Instance().UpdateInstanceProperties(getContext(), - &pb.UpdateInstancePropsRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Properties: map[string]string{ - "test": "test", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateProperties.Response.GetCode()) - - log.Info("all max properties updated") - size := 1000 - properties := make(map[string]string, size) - for i := 0; i < size; i++ { - s := strconv.Itoa(i) + strings.Repeat("x", 253) - properties[s] = s - } - respUpdateProperties, err = datasource.Instance().UpdateInstanceProperties(getContext(), - &pb.UpdateInstancePropsRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - Properties: properties, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateProperties.Response.GetCode()) - - log.Info("update instance that does not exist") - respUpdateProperties, err = datasource.Instance().UpdateInstanceProperties(getContext(), - &pb.UpdateInstancePropsRequest{ - ServiceId: serviceID, - InstanceId: "not_exist_ins", - Properties: map[string]string{ - "test": "test", - }, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respUpdateProperties.Response.GetCode()) - - log.Info("remove properties") - respUpdateProperties, err = datasource.Instance().UpdateInstanceProperties(getContext(), - &pb.UpdateInstancePropsRequest{ - ServiceId: serviceID, - InstanceId: instanceID, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respUpdateProperties.Response.GetCode()) - - log.Info("update service that does not exist") - respUpdateProperties, err = datasource.Instance().UpdateInstanceProperties(getContext(), - &pb.UpdateInstancePropsRequest{ - ServiceId: "not_exist_service", - InstanceId: instanceID, - Properties: map[string]string{ - "test": "test", - }, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respUpdateProperties.Response.GetCode()) - }) - - t.Run("delete test data", func(t *testing.T) { - _, err := client.GetMongoClient().Delete(getContext(), model.CollectionService, bson.M{"domain": "default", "project": "default"}) - assert.NoError(t, err) - - _, err = client.GetMongoClient().Delete(getContext(), model.CollectionInstance, bson.M{"domain": "default", "project": "default"}) - assert.NoError(t, err) - }) -} - -func TestInstance_Query(t *testing.T) { - var ( - serviceID1 string - serviceID2 string - serviceID3 string - serviceID4 string - serviceID5 string - serviceID6 string - serviceID7 string - serviceID8 string - serviceID9 string - instanceID1 string - instanceID2 string - instanceID4 string - instanceID5 string - ) - - t.Run("register services and instances for testInstance_query, when request is invalid, should pass", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - Version: "1.0.5", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID2 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "query_instance_diff_app_ms", - ServiceName: "query_instance_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID3 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - Environment: pb.ENV_PROD, - AppId: "query_instance_ms", - ServiceName: "query_instance_diff_env_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID4 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - Environment: pb.ENV_PROD, - AppId: "default", - ServiceName: "query_instance_shared_provider_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - Properties: map[string]string{ - pb.PropAllowCrossApp: "true", - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID5 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService( - util.SetDomainProject(util.CloneContext(getContext()), "user", "user"), - &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "default", - ServiceName: "query_instance_diff_domain_consumer_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID6 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "default", - ServiceName: "query_instance_shared_consumer_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID7 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "query_instance_ms", - ServiceName: "query_instance_with_rev_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID8 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "query_instance_ms", - ServiceName: "batch_query_instance_with_rev_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID9 = respCreateService.ServiceId - - respCreateInstance, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID1, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "find:127.0.0.1:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID1 = respCreateInstance.InstanceId - - respCreateInstance, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID2, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "find:127.0.0.2:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID2 = respCreateInstance.InstanceId - - respCreateInstance, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID4, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "find:127.0.0.4:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID4 = respCreateInstance.InstanceId - - respCreateInstance, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID5, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "find:127.0.0.5:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceID5 = respCreateInstance.InstanceId - - respCreateInstance, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID8, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "find:127.0.0.8:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - - respCreateInstance, err = datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID9, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "find:127.0.0.9:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - }) - - t.Run("query instance, when request is invalid, should pass", func(t *testing.T) { - log.Info("find with version rule") - respFind, err := datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID1, - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - VersionRule: "latest", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, instanceID2, respFind.Instances[0].InstanceId) - - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID1, - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - VersionRule: "1.0.0+", - Tags: []string{}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, instanceID2, respFind.Instances[0].InstanceId) - - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID1, - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - VersionRule: "1.0.0", - Tags: []string{}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, instanceID1, respFind.Instances[0].InstanceId) - - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID1, - AppId: "query_instance", - ServiceName: "query_instance_service", - VersionRule: "0.0.0", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ErrServiceNotExists, respFind.Response.GetCode()) - - log.Info("find with env") - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID4, - AppId: "query_instance_ms", - ServiceName: "query_instance_diff_env_service_ms", - VersionRule: "1.0.0", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Instances)) - assert.Equal(t, instanceID4, respFind.Instances[0].InstanceId) - - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - Environment: pb.ENV_PROD, - AppId: "query_instance_ms", - ServiceName: "query_instance_diff_env_service_ms", - VersionRule: "1.0.0", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Instances)) - assert.Equal(t, instanceID4, respFind.Instances[0].InstanceId) - - log.Info("find should return 200 if consumer is diff apps") - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID3, - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - VersionRule: "1.0.5", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 0, len(respFind.Instances)) - - log.Info("provider tag does not exist") - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID1, - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - VersionRule: "latest", - Tags: []string{"not_exist_tag"}, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 0, len(respFind.Instances)) - - log.Info("shared service discovery") - config.ServerInfo.Config.GlobalVisible = "query_instance_shared_provider_ms" - core.RegisterGlobalServices() - core.Service.Environment = pb.ENV_PROD - respFind, err = datasource.Instance().FindInstances( - util.SetTargetDomainProject( - util.SetDomainProject(util.CloneContext(getContext()), "user", "user"), - "default", "default"), - &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID6, - AppId: "default", - ServiceName: "query_instance_shared_provider_ms", - VersionRule: "1.0.0", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Instances)) - assert.Equal(t, instanceID5, respFind.Instances[0].InstanceId) - - respFind, err = datasource.Instance().FindInstances(getContext(), &pb.FindInstancesRequest{ - ConsumerServiceId: serviceID7, - AppId: "default", - ServiceName: "query_instance_shared_provider_ms", - VersionRule: "1.0.0", - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Instances)) - assert.Equal(t, instanceID5, respFind.Instances[0].InstanceId) - - log.Info("query same domain deps") - // todo finish ut after implementing GetConsumerDependencies interface - - core.Service.Environment = pb.ENV_DEV - }) - - t.Run("batch query instances, when request is invalid, should pass", func(t *testing.T) { - log.Info("find with version rule") - respFind, err := datasource.Instance().BatchFind(getContext(), &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID1, - Services: []*pb.FindService{ - { - Service: &pb.MicroServiceKey{ - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - Version: "latest", - }, - }, - { - Service: &pb.MicroServiceKey{ - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - Version: "1.0.0+", - }, - }, - { - Service: &pb.MicroServiceKey{ - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - Version: "0.0.0", - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, int64(0), respFind.Services.Updated[0].Index) - assert.Equal(t, instanceID2, respFind.Services.Updated[0].Instances[0].InstanceId) - assert.Equal(t, int64(1), respFind.Services.Updated[1].Index) - assert.Equal(t, instanceID2, respFind.Services.Updated[1].Instances[0].InstanceId) - assert.Equal(t, int64(2), respFind.Services.Failed[0].Indexes[0]) - assert.Equal(t, pb.ErrServiceNotExists, respFind.Services.Failed[0].Error.Code) - - log.Info("find with env") - respFind, err = datasource.Instance().BatchFind(getContext(), &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID4, - Services: []*pb.FindService{ - { - Service: &pb.MicroServiceKey{ - AppId: "query_instance_ms", - ServiceName: "query_instance_diff_env_service_ms", - Version: "1.0.0", - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Services.Updated[0].Instances)) - assert.Equal(t, instanceID4, respFind.Services.Updated[0].Instances[0].InstanceId) - - log.Info("find should return 200 even if consumer is diff apps") - respFind, err = datasource.Instance().BatchFind(getContext(), &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID3, - Services: []*pb.FindService{ - { - Service: &pb.MicroServiceKey{ - AppId: "query_instance_ms", - ServiceName: "query_instance_service_ms", - Version: "1.0.5", - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 0, len(respFind.Services.Updated[0].Instances)) - - log.Info("shared service discovery") - config.ServerInfo.Config.GlobalVisible = "query_instance_shared_provider_ms" - core.RegisterGlobalServices() - core.Service.Environment = pb.ENV_PROD - respFind, err = datasource.Instance().BatchFind( - util.SetTargetDomainProject( - util.SetDomainProject(util.CloneContext(getContext()), "user", "user"), - "default", "default"), - &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID6, - Services: []*pb.FindService{ - { - Service: &pb.MicroServiceKey{ - AppId: "default", - ServiceName: "query_instance_shared_provider_ms", - Version: "1.0.0", - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Services.Updated[0].Instances)) - assert.Equal(t, instanceID5, respFind.Services.Updated[0].Instances[0].InstanceId) - - respFind, err = datasource.Instance().BatchFind(getContext(), &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID7, - Services: []*pb.FindService{ - { - Service: &pb.MicroServiceKey{ - AppId: "default", - ServiceName: "query_instance_shared_provider_ms", - Version: "1.0.0", - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Services.Updated[0].Instances)) - assert.Equal(t, instanceID5, respFind.Services.Updated[0].Instances[0].InstanceId) - - respFind, err = datasource.Instance().BatchFind(util.SetTargetDomainProject( - util.SetDomainProject(util.CloneContext(getContext()), "user", "user"), - "default", "default"), - &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID6, - Instances: []*pb.FindInstance{ - { - Instance: &pb.HeartbeatSetElement{ - ServiceId: serviceID5, - InstanceId: instanceID5, - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, pb.ErrServiceNotExists, respFind.Instances.Failed[0].Error.Code) - - respFind, err = datasource.Instance().BatchFind(getContext(), &pb.BatchFindInstancesRequest{ - ConsumerServiceId: serviceID7, - Instances: []*pb.FindInstance{ - { - Instance: &pb.HeartbeatSetElement{ - ServiceId: serviceID5, - InstanceId: instanceID5, - }, - }, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respFind.Response.GetCode()) - assert.Equal(t, 1, len(respFind.Instances.Updated[0].Instances)) - assert.Equal(t, instanceID5, respFind.Instances.Updated[0].Instances[0].InstanceId) - - core.Service.Environment = pb.ENV_DEV - }) - - t.Run("query instances between diff dimensions", func(t *testing.T) { - log.Info("diff appId") - UTFunc := func(consumerId string, code int32) { - respFind, err := datasource.Instance().GetInstances(getContext(), &pb.GetInstancesRequest{ - ConsumerServiceId: consumerId, - ProviderServiceId: serviceID2, - }) - assert.NoError(t, err) - assert.Equal(t, code, respFind.Response.GetCode()) - } - - UTFunc(serviceID3, pb.ErrServiceNotExists) - - UTFunc(serviceID1, pb.ResponseSuccess) - - log.Info("diff env") - respFind, err := datasource.Instance().GetInstances(getContext(), &pb.GetInstancesRequest{ - ConsumerServiceId: serviceID4, - ProviderServiceId: serviceID2, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respFind.Response.GetCode()) - }) - - t.Run("delete test data", func(t *testing.T) { - _, err := client.GetMongoClient().Delete(getContext(), model.CollectionService, bson.M{"domain": "default", "project": "default"}) - assert.NoError(t, err) - - _, err = client.GetMongoClient().Delete(getContext(), model.CollectionInstance, bson.M{"domain": "default", "project": "default"}) - assert.NoError(t, err) - - _, err = client.GetMongoClient().Delete(getContext(), model.CollectionService, bson.M{"domain": "user", "project": "user"}) - assert.NoError(t, err) - - _, err = client.GetMongoClient().Delete(getContext(), model.CollectionInstance, bson.M{"domain": "user", "project": "user"}) - assert.NoError(t, err) - }) -} - -func TestInstance_GetOne(t *testing.T) { - var ( - serviceID1 string - serviceID2 string - serviceID3 string - instanceID2 string - ) - - t.Run("register service and instances, when request is invalid, should pass", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_instance_ms", - ServiceName: "get_instance_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_instance_ms", - ServiceName: "get_instance_service_ms", - Version: "1.0.5", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID2 = respCreateService.ServiceId - - respCreateInstance, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceID2, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "get:127.0.0.2:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - instanceID2 = respCreateInstance.InstanceId - - respCreateService, err = datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_instance_cross_ms", - ServiceName: "get_instance_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceID3 = respCreateService.ServiceId - }) - - t.Run("get one instance when invalid request", func(t *testing.T) { - log.Info("find service itself") - resp, err := datasource.Instance().GetInstance(getContext(), &pb.GetOneInstanceRequest{ - ConsumerServiceId: serviceID2, - ProviderServiceId: serviceID2, - ProviderInstanceId: instanceID2, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("consumer does not exist") - resp, err = datasource.Instance().GetInstance(getContext(), &pb.GetOneInstanceRequest{ - ConsumerServiceId: "not-exist-id-ms", - ProviderServiceId: serviceID2, - ProviderInstanceId: instanceID2, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("get between diff apps", func(t *testing.T) { - resp, err := datasource.Instance().GetInstance(getContext(), &pb.GetOneInstanceRequest{ - ConsumerServiceId: serviceID3, - ProviderServiceId: serviceID2, - ProviderInstanceId: instanceID2, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - respAll, err := datasource.Instance().GetInstances(getContext(), &pb.GetInstancesRequest{ - ConsumerServiceId: serviceID3, - ProviderServiceId: serviceID2, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, respAll.Response.GetCode()) - }) - - t.Run("get instances when request is invalid", func(t *testing.T) { - log.Info("consumer does not exist") - resp, err := datasource.Instance().GetInstances(getContext(), &pb.GetInstancesRequest{ - ConsumerServiceId: "not-exist-service-ms", - ProviderServiceId: serviceID2, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("consumer does not exist") - resp, err = datasource.Instance().GetInstances(getContext(), &pb.GetInstancesRequest{ - ConsumerServiceId: serviceID1, - ProviderServiceId: serviceID2, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("delete test data", func(t *testing.T) { - _, err := client.GetMongoClient().Delete(getContext(), model.CollectionService, bson.M{"domain": "default", "project": "default"}) - assert.NoError(t, err) - - _, err = client.GetMongoClient().Delete(getContext(), model.CollectionInstance, bson.M{"domain": "default", "project": "default"}) - assert.NoError(t, err) - }) -} - -func TestInstance_GetAll(t *testing.T) { - - t.Run("register 2 instances, get all instances count should return 2", func(t *testing.T) { - var ( - serviceId1 string - serviceId2 string - ) - ctx := util.WithNoCache(util.SetDomainProject(getContext(), "TestInstance_GetAll", "1")) - respCreateService, err := datasource.Instance().RegisterService(ctx, &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_instance_ms", - ServiceName: "get_instance_service_ms", - Version: "1.0.0", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId1 = respCreateService.ServiceId - - respCreateService, err = datasource.Instance().RegisterService(ctx, &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "get_instance_ms", - ServiceName: "get_instance_service_ms", - Version: "1.0.5", - Level: "FRONT", - Status: pb.MS_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId2 = respCreateService.ServiceId - - respCreateInstance, err := datasource.Instance().RegisterInstance(ctx, &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceId1, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "get:127.0.0.2:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - - respCreateInstance, err = datasource.Instance().RegisterInstance(ctx, &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceId2, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "get:127.0.0.3:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - - respAll, err := datasource.Instance().GetAllInstances(ctx, &pb.GetAllInstancesRequest{}) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAll.Response.GetCode()) - assert.Equal(t, 2, len(respAll.Instances)) - }) - - t.Run("domain contain no instances, get all instances should be pass, return 0 instance", func(t *testing.T) { - ctx := util.WithNoCache(util.SetDomainProject(getContext(), "TestInstance_GetAll", "2")) - respAll, err := datasource.Instance().GetAllInstances(ctx, &pb.GetAllInstancesRequest{}) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respAll.Response.GetCode()) - assert.Equal(t, 0, len(respAll.Instances)) - }) - - t.Run("delete test data", func(t *testing.T) { - _, err := client.GetMongoClient().Delete(getContext(), model.CollectionService, bson.M{"domain": "TestInstance_GetAll", "project": "1"}) - assert.NoError(t, err) - - _, err = client.GetMongoClient().Delete(getContext(), model.CollectionInstance, bson.M{"domain": "TestInstance_GetAll", "project": "1"}) - assert.NoError(t, err) - }) -} - -func TestInstance_Unregister(t *testing.T) { - var ( - serviceId string - instanceId string - ) - - t.Run("register service and instances", func(t *testing.T) { - respCreateService, err := datasource.Instance().RegisterService(getContext(), &pb.CreateServiceRequest{ - Service: &pb.MicroService{ - AppId: "unregister_instance_ms", - ServiceName: "unregister_instance_service_ms", - Version: "1.0.5", - Level: "FRONT", - Status: pb.MS_UP, - }, - Tags: map[string]string{ - "test": "test", - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateService.Response.GetCode()) - serviceId = respCreateService.ServiceId - - respCreateInstance, err := datasource.Instance().RegisterInstance(getContext(), &pb.RegisterInstanceRequest{ - Instance: &pb.MicroServiceInstance{ - ServiceId: serviceId, - HostName: "UT-HOST-MS", - Endpoints: []string{ - "unregister:127.0.0.2:8080", - }, - Status: pb.MSI_UP, - }, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, respCreateInstance.Response.GetCode()) - instanceId = respCreateInstance.InstanceId - }) - - t.Run("unregister instance", func(t *testing.T) { - resp, err := datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceId, - InstanceId: instanceId, - }) - assert.NoError(t, err) - assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) - - t.Run("unregister instance when request is invalid", func(t *testing.T) { - log.Info("service id does not exist") - resp, err := datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: "not-exist-id-ms", - InstanceId: instanceId, - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - - log.Info("instance id does not exist") - resp, err = datasource.Instance().UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{ - ServiceId: serviceId, - InstanceId: "not-exist-id-ms", - }) - assert.NoError(t, err) - assert.NotEqual(t, pb.ResponseSuccess, resp.Response.GetCode()) - }) -} diff --git a/datasource/mongo/system_test.go b/datasource/system_test.go similarity index 83% rename from datasource/mongo/system_test.go rename to datasource/system_test.go index 1ac7853..a5dd205 100644 --- a/datasource/mongo/system_test.go +++ b/datasource/system_test.go @@ -15,27 +15,17 @@ * limitations under the License. */ -package mongo_test +package datasource_test import ( "testing" - pb "github.com/go-chassis/cari/discovery" - "github.com/stretchr/testify/assert" - "go.mongodb.org/mongo-driver/bson" - "github.com/apache/servicecomb-service-center/datasource" - "github.com/apache/servicecomb-service-center/datasource/mongo/client" - "github.com/apache/servicecomb-service-center/datasource/mongo/client/model" "github.com/apache/servicecomb-service-center/datasource/mongo/sd" + pb "github.com/go-chassis/cari/discovery" + "github.com/stretchr/testify/assert" ) -func init() { - // clean the mongodb - client.GetMongoClient().Delete(getContext(), model.CollectionInstance, bson.M{}) - client.GetMongoClient().Delete(getContext(), model.CollectionService, bson.M{}) -} - func TestDumpCache(t *testing.T) { var store = &sd.TypeStore{} store.Initialize()