You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ro...@apache.org on 2022/01/04 08:11:01 UTC
[servicecomb-service-center] branch master updated: [fix] distinguish creating and updating dep tasks
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 <79...@qq.com>
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)