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)