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)

Reply via email to