blob: 4e7eaf621f88a2ccc96b77cb699f4b82a84cdc0d [file] [log] [blame]
/*
* 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 service_test
import (
pb "github.com/apache/servicecomb-service-center/server/core/proto"
scerr "github.com/apache/servicecomb-service-center/server/error"
"github.com/apache/servicecomb-service-center/server/service/event"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"strconv"
)
var deh event.DependencyEventHandler
var _ = Describe("'Dependency' service", func() {
Describe("execute 'create' operation", func() {
var (
consumerId1 string
consumerId2 string
consumerId3 string
)
It("should be passed", func() {
respCreateService, err := serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
consumerId1 = respCreateService.ServiceId
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer_all",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
consumerId3 = respCreateService.ServiceId
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
Environment: pb.ENV_PROD,
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
consumerId2 = respCreateService.ServiceId
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.1",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
Environment: pb.ENV_PROD,
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
})
Context("when request is invalid", func() {
It("should be failed", func() {
By("dependency is nil")
respCreateDependency, err := serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
consumer := &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "1.0.0",
}
providers := []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0",
},
}
By("consumer does not exist")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "noexistapp",
ServiceName: "noexistservice",
Version: "1.0.0",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("provider version is invalid")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.32768",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
By("consumer version is invalid")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "1.0.0+",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "1.0.0-1.0.1",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "latest",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer",
Version: "1.0.32768",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
By("consumer serviceName is invalid")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "*",
Version: "1.0.0",
},
Providers: providers,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("provider app is invalid")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "*",
ServiceName: "service_name_provider",
Version: "2.0.0",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("provider serviceName is invalid")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "service_group_provider",
ServiceName: "-",
Version: "2.0.0",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("provider version is invalid")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "service_group_provider",
ServiceName: "service_name_provider",
Version: "",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("provider in diff env")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
Environment: pb.ENV_PROD,
AppId: "service_group_provider",
ServiceName: "service_name_provider",
Version: "latest",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
By("consumer in diff env")
consumer.Environment = pb.ENV_PROD
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "service_group_provider",
ServiceName: "service_name_provider",
Version: "latest",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respCon, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respCon.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respCon.Providers)).To(Equal(0))
respCon, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId2,
})
Expect(err).To(BeNil())
Expect(respCon.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respCon.Providers)).To(Equal(0))
By("dependencies is invalid")
var deps []*pb.ConsumerDependency
for i := 0; i < 101; i++ {
deps = append(deps, &pb.ConsumerDependency{
Consumer: &pb.MicroServiceKey{
AppId: "create_dep_group",
ServiceName: "create_dep_consumer" + strconv.Itoa(i),
Version: "1.0.0",
},
Providers: []*pb.MicroServiceKey{
{
AppId: "service_group_provider",
ServiceName: "service_name_provider",
Version: "latest",
},
},
})
}
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: deps,
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
})
})
Context("when request is valid", func() {
It("should be passed", func() {
consumer := &pb.MicroServiceKey{
ServiceName: "create_dep_consumer",
AppId: "create_dep_group",
Version: "1.0.0",
}
By("add latest")
respCreateDependency, err := serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "latest",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respPro, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respPro.Providers)).To(Equal(1))
Expect(respPro.Providers[0].Version).To(Equal("1.0.1"))
By("add 1.0.0+")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0+",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respPro, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respPro.Providers)).To(Equal(2))
By("add *")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
ServiceName: "create_dep_consumer_all",
AppId: "create_dep_group",
Version: "1.0.0",
},
Providers: []*pb.MicroServiceKey{
{
ServiceName: "*",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respPro, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId3,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respPro.Providers)).ToNot(Equal(0))
By("clean all")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: &pb.MicroServiceKey{
ServiceName: "create_dep_consumer_all",
AppId: "create_dep_group",
Version: "1.0.0",
},
Providers: nil,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
By("add multiple providers")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0",
},
{
ServiceName: "*",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
By("add 1.0.0-2.0.0 to override *")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0-1.0.1",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respPro, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respPro.Providers)).To(Equal(1))
Expect(respPro.Providers[0].Version).To(Equal("1.0.0"))
By("add not override")
respAddDependency, err := serviceResource.AddDependenciesForMicroServices(getContext(), &pb.AddDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{
{
AppId: "create_dep_group",
ServiceName: "create_dep_provider",
Version: "1.0.0-3.0.0",
},
},
},
},
})
Expect(err).To(BeNil())
Expect(respAddDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respPro, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respPro.Providers)).To(Equal(2))
By("add provider is empty")
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
Providers: []*pb.MicroServiceKey{},
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
Dependencies: []*pb.ConsumerDependency{
{
Consumer: consumer,
},
},
})
Expect(err).To(BeNil())
Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respPro, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respPro.Providers)).To(Equal(0))
})
})
})
Describe("execute 'get' operartion", func() {
var (
consumerId1 string
providerId1 string
providerId2 string
)
It("should be passed", func() {
respCreateService, err := serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "get_dep_group",
ServiceName: "get_dep_consumer",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
consumerId1 = respCreateService.ServiceId
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "get_dep_group",
ServiceName: "get_dep_provider",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
providerId1 = respCreateService.ServiceId
respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "get_dep_group",
ServiceName: "get_dep_provider",
Version: "2.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
providerId2 = respCreateService.ServiceId
})
Context("when request is invalid", func() {
It("should be failed", func() {
By("service id is empty when get provider")
respPro, err := serviceResource.GetProviderDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: "",
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("service does not exist when get provider")
respPro, err = serviceResource.GetProviderDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: "noneservice",
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("service id is empty when get consumer")
respCon, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: "",
})
Expect(err).To(BeNil())
Expect(respCon.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
By("service does not exist when get consumer")
respCon, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: "noneservice",
})
Expect(err).To(BeNil())
Expect(respCon.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
})
})
Context("when request is valid", func() {
It("should be passed", func() {
By("get provider")
respPro, err := serviceResource.GetProviderDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: providerId1,
})
Expect(err).To(BeNil())
Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
By("get consumer")
respCon, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respCon.Response.Code).To(Equal(pb.Response_SUCCESS))
})
})
Context("when after finding instance", func() {
It("should created dependencies between C and P", func() {
By("find provider")
resp, err := instanceResource.Find(getContext(), &pb.FindInstancesRequest{
ConsumerServiceId: consumerId1,
AppId: "get_dep_group",
ServiceName: "get_dep_provider",
VersionRule: "1.0.0+",
})
Expect(err).To(BeNil())
Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
By("get consumer's deps")
respGetP, err := serviceResource.GetProviderDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: providerId1,
})
Expect(err).To(BeNil())
Expect(respGetP.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(respGetP.Consumers[0].ServiceId).To(Equal(consumerId1))
By("get provider's deps")
respGetC, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetC.Providers)).To(Equal(2))
//重复find
resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
ConsumerServiceId: consumerId1,
AppId: "get_dep_group",
ServiceName: "get_dep_provider",
VersionRule: "2.0.0+",
})
Expect(err).To(BeNil())
Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
By("get consumer again")
respGetP, err = serviceResource.GetProviderDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: providerId1,
})
Expect(err).To(BeNil())
Expect(respGetP.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetP.Consumers)).To(Equal(0))
By("get provider again")
respGetC, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
})
Expect(err).To(BeNil())
Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetC.Providers)).To(Equal(1))
Expect(respGetC.Providers[0].ServiceId).To(Equal(providerId2))
By("get self deps")
resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
ConsumerServiceId: consumerId1,
AppId: "get_dep_group",
ServiceName: "get_dep_consumer",
VersionRule: "1.0.0+",
})
Expect(err).To(BeNil())
Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respGetC, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: consumerId1,
NoSelf: true,
})
Expect(err).To(BeNil())
Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetC.Providers)).To(Equal(1))
By("find before provider register")
resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
ConsumerServiceId: providerId2,
AppId: "get_dep_group",
ServiceName: "get_dep_finder",
VersionRule: "1.0.0+",
})
Expect(err).To(BeNil())
Expect(resp.Response.Code).To(Equal(scerr.ErrServiceNotExists))
respCreateF, err := serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "get_dep_group",
ServiceName: "get_dep_finder",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateF.Response.Code).To(Equal(pb.Response_SUCCESS))
finder1 := respCreateF.ServiceId
resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
ConsumerServiceId: providerId2,
AppId: "get_dep_group",
ServiceName: "get_dep_finder",
VersionRule: "1.0.0+",
})
Expect(err).To(BeNil())
Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respGetC, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: providerId2,
})
Expect(err).To(BeNil())
Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetC.Providers)).To(Equal(1))
Expect(respGetC.Providers[0].ServiceId).To(Equal(finder1))
By("find after delete micro service")
respDelP, err := serviceResource.Delete(getContext(), &pb.DeleteServiceRequest{
ServiceId: finder1, Force: true,
})
Expect(err).To(BeNil())
Expect(respDelP.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respGetC, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: providerId2,
})
Expect(err).To(BeNil())
Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetC.Providers)).To(Equal(0))
respCreateF, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
Service: &pb.MicroService{
ServiceId: finder1,
AppId: "get_dep_group",
ServiceName: "get_dep_finder",
Version: "1.0.0",
Level: "FRONT",
Status: pb.MS_UP,
},
})
Expect(err).To(BeNil())
Expect(respCreateF.Response.Code).To(Equal(pb.Response_SUCCESS))
resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
ConsumerServiceId: providerId2,
AppId: "get_dep_group",
ServiceName: "get_dep_finder",
VersionRule: "1.0.0+",
})
Expect(err).To(BeNil())
Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(deh.Handle()).To(BeNil())
respGetC, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
ServiceId: providerId2,
})
Expect(err).To(BeNil())
Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
Expect(len(respGetC.Providers)).To(Equal(1))
Expect(respGetC.Providers[0].ServiceId).To(Equal(finder1))
})
})
})
})