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 a844ea0 [fix] distinguish creating and updating dep tasks
new 58645e4 Merge pull request #1201 from robotLJW/master
a844ea0 is described below
commit a844ea099b8141579d3ea6f503637596a3b86820
Author: robotljw <[email protected]>
AuthorDate: Tue Jan 4 15:52:18 2022 +0800
[fix] distinguish creating and updating dep tasks
---
datasource/etcd/dep.go | 10 ++++--
datasource/etcd/dep_test.go | 84 +++++++++++++++++++++++++++++++++++++++------
2 files changed, 82 insertions(+), 12 deletions(-)
diff --git a/datasource/etcd/dep.go b/datasource/etcd/dep.go
index a9faa86..2a719a8 100644
--- a/datasource/etcd/dep.go
+++ b/datasource/etcd/dep.go
@@ -165,9 +165,15 @@ func (dm *DepManager) AddOrUpdateDependencies(ctx
context.Context, dependencyInf
}
if datasource.EnableSync {
- taskOpt, err := GenTaskOpts("", "", sync.UpdateAction,
datasource.ResourceDependency, dependencyInfos)
+ action := sync.UpdateAction
+ if override {
+ action = sync.CreateAction
+ }
+ domain := util.ParseDomain(ctx)
+ project := util.ParseProject(ctx)
+ taskOpt, err := GenTaskOpts(domain, project, action,
datasource.ResourceDependency, dependencyInfos)
if err != nil {
- log.Error("", err)
+ log.Error("fail to create task", err)
return pb.CreateResponse(pb.ErrInternal, err.Error()),
err
}
opts = append(opts, taskOpt)
diff --git a/datasource/etcd/dep_test.go b/datasource/etcd/dep_test.go
index 7dc8c72..769e5c6 100644
--- a/datasource/etcd/dep_test.go
+++ b/datasource/etcd/dep_test.go
@@ -22,6 +22,7 @@ import (
"testing"
pb "github.com/go-chassis/cari/discovery"
+ "github.com/go-chassis/cari/sync"
"github.com/stretchr/testify/assert"
"github.com/apache/servicecomb-service-center/datasource"
@@ -38,8 +39,9 @@ func depGetContext() context.Context {
func TestSyncAddOrUpdateDependencies(t *testing.T) {
datasource.EnableSync = true
var (
- consumerId string
- providerId string
+ consumerId string
+ providerId1 string
+ providerId2 string
)
t.Run("register service", func(t *testing.T) {
@@ -58,7 +60,7 @@ func TestSyncAddOrUpdateDependencies(t *testing.T) {
assert.Equal(t, pb.ResponseSuccess,
resp.Response.GetCode())
consumerId = resp.ServiceId
})
- t.Run("create a provider service should pass", func(t
*testing.T) {
+ t.Run("create two provider services should pass", func(t
*testing.T) {
resp, err :=
datasource.GetMetadataManager().RegisterService(depGetContext(),
&pb.CreateServiceRequest{
Service: &pb.MicroService{
AppId: "sync_dep_group",
@@ -71,12 +73,26 @@ func TestSyncAddOrUpdateDependencies(t *testing.T) {
assert.NotNil(t, resp)
assert.NoError(t, err)
assert.Equal(t, pb.ResponseSuccess,
resp.Response.GetCode())
- providerId = resp.ServiceId
+ providerId1 = resp.ServiceId
+
+ resp, err =
datasource.GetMetadataManager().RegisterService(depGetContext(),
&pb.CreateServiceRequest{
+ Service: &pb.MicroService{
+ AppId: "sync_dep_group",
+ ServiceName: "sync_dep_provider_other",
+ Version: "1.0.0",
+ Level: "FRONT",
+ Status: pb.MS_UP,
+ },
+ })
+ assert.NotNil(t, resp)
+ assert.NoError(t, err)
+ assert.Equal(t, pb.ResponseSuccess,
resp.Response.GetCode())
+ providerId2 = resp.ServiceId
})
})
- t.Run("AddOrUpdateDependencies", func(t *testing.T) {
- t.Run("add dependencies should pass", func(t *testing.T) {
+ t.Run("create dependencies", func(t *testing.T) {
+ t.Run("create dependencies for microServices should pass",
func(t *testing.T) {
consumer := &pb.MicroServiceKey{
ServiceName: "sync_dep_consumer",
AppId: "sync_dep_group",
@@ -92,14 +108,55 @@ func TestSyncAddOrUpdateDependencies(t *testing.T) {
},
},
},
+ }, true)
+ assert.NotNil(t, resp)
+ assert.NoError(t, err)
+ assert.Equal(t, pb.ResponseSuccess, resp.GetCode())
+ listTaskReq := model.ListTaskRequest{
+ Domain: "sync-dep",
+ Project: "sync-dep",
+ ResourceType: datasource.ResourceDependency,
+ Action: sync.CreateAction,
+ Status: sync.PendingStatus,
+ }
+ tasks, err := task.List(context.Background(),
&listTaskReq)
+ assert.NoError(t, err)
+ assert.Equal(t, 1, len(tasks))
+ err = task.Delete(context.Background(), tasks...)
+ assert.NoError(t, err)
+ tasks, err = task.List(context.Background(),
&listTaskReq)
+ assert.NoError(t, err)
+ assert.Equal(t, 0, len(tasks))
+ })
+ })
+
+ t.Run("add dependencies", func(t *testing.T) {
+ t.Run("add dependencies for microServices should pass", func(t
*testing.T) {
+ consumer := &pb.MicroServiceKey{
+ ServiceName: "sync_dep_consumer",
+ AppId: "sync_dep_group",
+ Version: "1.0.0",
+ }
+ resp, err :=
datasource.GetDependencyManager().AddOrUpdateDependencies(depGetContext(),
[]*pb.ConsumerDependency{
+ {
+ Consumer: consumer,
+ Providers: []*pb.MicroServiceKey{
+ {
+ AppId:
"sync_dep_group",
+ ServiceName:
"sync_dep_provider_other",
+ },
+ },
+ },
}, false)
assert.NotNil(t, resp)
assert.NoError(t, err)
assert.Equal(t, pb.ResponseSuccess, resp.GetCode())
listTaskReq := model.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-dep",
+ Project: "sync-dep",
ResourceType: datasource.ResourceDependency,
+ Action: sync.UpdateAction,
+ Status: sync.PendingStatus,
}
tasks, err := task.List(context.Background(),
&listTaskReq)
assert.NoError(t, err)
@@ -113,7 +170,7 @@ func TestSyncAddOrUpdateDependencies(t *testing.T) {
})
t.Run("unregister consumer and provider", func(t *testing.T) {
- t.Run("unregister consumer and provider should pass", func(t
*testing.T) {
+ t.Run("unregister consumer and providers should pass", func(t
*testing.T) {
respDelP, err :=
datasource.GetMetadataManager().UnregisterService(depGetContext(),
&pb.DeleteServiceRequest{
ServiceId: consumerId, Force: true,
})
@@ -122,7 +179,14 @@ func TestSyncAddOrUpdateDependencies(t *testing.T) {
assert.Equal(t, pb.ResponseSuccess,
respDelP.Response.GetCode())
respDelP, err =
datasource.GetMetadataManager().UnregisterService(depGetContext(),
&pb.DeleteServiceRequest{
- ServiceId: providerId, Force: true,
+ ServiceId: providerId1, Force: true,
+ })
+ assert.NotNil(t, respDelP)
+ assert.NoError(t, err)
+ assert.Equal(t, pb.ResponseSuccess,
respDelP.Response.GetCode())
+
+ respDelP, err =
datasource.GetMetadataManager().UnregisterService(depGetContext(),
&pb.DeleteServiceRequest{
+ ServiceId: providerId2, Force: true,
})
assert.NotNil(t, respDelP)
assert.NoError(t, err)