[fix] when domain or project is empty should return default (#1268)
diff --git a/datasource/etcd/sync/sync.go b/datasource/etcd/sync/sync.go
index 9998b8a..6f826ae 100644
--- a/datasource/etcd/sync/sync.go
+++ b/datasource/etcd/sync/sync.go
@@ -95,6 +95,12 @@
syncOpts *Options) (etcdadpt.OpOptions, error) {
domain := util.ParseDomain(ctx)
project := util.ParseProject(ctx)
+ if len(domain) == 0 {
+ domain = sync.Default
+ }
+ if len(project) == 0 {
+ project = sync.Default
+ }
task, err := sync.NewTask(domain, project, action, resourceType, resource)
if err != nil {
return etcdadpt.OpOptions{}, err
@@ -114,6 +120,12 @@
func genTombstoneOpt(ctx context.Context, resourceType, resourceID string) (etcdadpt.OpOptions, error) {
domain := util.ParseDomain(ctx)
project := util.ParseProject(ctx)
+ if len(domain) == 0 {
+ domain = sync.Default
+ }
+ if len(project) == 0 {
+ project = sync.Default
+ }
tombstone := sync.NewTombstone(domain, project, resourceType, resourceID)
tombstoneBytes, err := json.Marshal(tombstone)
if err != nil {
diff --git a/datasource/etcd/sync_test.go b/datasource/etcd/sync_test.go
index eed303c..0624e74 100644
--- a/datasource/etcd/sync_test.go
+++ b/datasource/etcd/sync_test.go
@@ -133,8 +133,8 @@
assert.NoError(t, err)
assert.Equal(t, a1, *r)
listTaskReq := model.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceAccount,
}
tasks, err := task.List(syncAllContext(), &listTaskReq)
@@ -162,8 +162,8 @@
assert.Equal(t, r.CreateTime, r.UpdateTime)
roleName = r1.Name
listTaskReq := model.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceRole,
}
tasks, err := task.List(syncAllContext(), &listTaskReq)
@@ -458,8 +458,8 @@
assert.NoError(t, err)
assert.Equal(t, 0, len(tasks))
listAccountTaskReq := model.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceAccount,
}
tasks, err = task.List(syncAllContext(), &listAccountTaskReq)
@@ -472,8 +472,8 @@
assert.Equal(t, 0, len(tasks))
listRoleTaskReq := model.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceRole,
}
tasks, err = task.List(syncAllContext(), &listRoleTaskReq)
@@ -532,8 +532,8 @@
assert.NoError(t, err)
assert.Equal(t, a1, *r)
listTaskReq := model.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all-background",
+ Project: "sync-all-background",
ResourceType: datasource.ResourceAccount,
}
tasks, err := task.List(ctx, &listTaskReq)
@@ -557,6 +557,10 @@
tasks, err := task.List(ctx, &listAccountTaskReq)
assert.NoError(t, err)
assert.Equal(t, 1, len(tasks))
+ for _, v := range tasks {
+ assert.Equal(t, sync.Default, v.Domain)
+ assert.Equal(t, sync.Default, v.Project)
+ }
err = task.Delete(ctx, tasks...)
assert.NoError(t, err)
tasks, err = task.List(ctx, &listAccountTaskReq)
@@ -564,7 +568,8 @@
assert.Equal(t, 0, len(tasks))
})
t.Run("delete account resource should pass", func(t *testing.T) {
- _, err := rbac.Instance().DeleteAccount(ctx, []string{accountName})
+ _, err := rbac.Instance().DeleteAccount(util.SetContext(context.Background(),
+ util.CtxEnableSync, "1"), []string{accountName})
assert.NoError(t, err)
listAccountTaskReq := model.ListTaskRequest{
Domain: "",
@@ -574,16 +579,25 @@
tasks, err := task.List(ctx, &listAccountTaskReq)
assert.NoError(t, err)
assert.Equal(t, 1, len(tasks))
+ for _, v := range tasks {
+ assert.Equal(t, sync.Default, v.Domain)
+ assert.Equal(t, sync.Default, v.Project)
+ }
err = task.Delete(ctx, tasks...)
assert.NoError(t, err)
tombstoneListReq := model.ListTombstoneRequest{
- Domain: "sync-all-background",
- Project: "sync-all-background",
+ Domain: "",
+ Project: "",
+ ResourceType: datasource.ResourceAccount,
}
tombstones, err := tombstone.List(ctx, &tombstoneListReq)
assert.NoError(t, err)
assert.Equal(t, 1, len(tombstones))
+ for _, v := range tasks {
+ assert.Equal(t, sync.Default, v.Domain)
+ assert.Equal(t, sync.Default, v.Project)
+ }
err = tombstone.Delete(ctx, tombstones...)
assert.NoError(t, err)
})
diff --git a/datasource/mongo/sync_test.go b/datasource/mongo/sync_test.go
index 99a090e..040dbfd 100644
--- a/datasource/mongo/sync_test.go
+++ b/datasource/mongo/sync_test.go
@@ -86,8 +86,8 @@
assert.NoError(t, err)
assert.Equal(t, a1, *r)
listTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceAccount,
}
tasks, err := task.List(syncAllContext(), &listTaskReq)
@@ -115,8 +115,8 @@
assert.Equal(t, r.CreateTime, r.UpdateTime)
roleName = r1.Name
listTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceRole,
}
tasks, err := task.List(syncAllContext(), &listTaskReq)
@@ -203,8 +203,8 @@
assert.Equal(t, 0, len(tasks))
listAccountTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceAccount,
}
tasks, err = task.List(syncAllContext(), &listAccountTaskReq)
@@ -217,8 +217,8 @@
assert.Equal(t, 0, len(tasks))
listRoleTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceRole,
}
tasks, err = task.List(syncAllContext(), &listRoleTaskReq)
@@ -243,8 +243,8 @@
_, err := rbac.Instance().DeleteAccount(syncAllContext(), []string{accountName})
assert.NoError(t, err)
listAccountTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceAccount,
}
tasks, err := task.List(syncAllContext(), &listAccountTaskReq)
@@ -259,8 +259,8 @@
_, err = rbac.Instance().DeleteRole(syncAllContext(), roleName)
assert.NoError(t, err)
listRoleTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all",
+ Project: "sync-all",
ResourceType: datasource.ResourceRole,
}
tasks, err = task.List(syncAllContext(), &listRoleTaskReq)
@@ -319,8 +319,8 @@
assert.NoError(t, err)
assert.Equal(t, a1, *r)
listTaskReq := emodel.ListTaskRequest{
- Domain: "",
- Project: "",
+ Domain: "sync-all-background",
+ Project: "sync-all-background",
ResourceType: datasource.ResourceAccount,
}
tasks, err := task.List(ctx, &listTaskReq)
@@ -344,6 +344,10 @@
tasks, err := task.List(ctx, &listAccountTaskReq)
assert.NoError(t, err)
assert.Equal(t, 1, len(tasks))
+ for _, v := range tasks {
+ assert.Equal(t, sync.Default, v.Domain)
+ assert.Equal(t, sync.Default, v.Project)
+ }
err = task.Delete(ctx, tasks...)
assert.NoError(t, err)
tasks, err = task.List(ctx, &listAccountTaskReq)
@@ -351,7 +355,8 @@
assert.Equal(t, 0, len(tasks))
})
t.Run("delete account resource should pass", func(t *testing.T) {
- _, err := rbac.Instance().DeleteAccount(ctx, []string{accountName})
+ _, err := rbac.Instance().DeleteAccount(util.SetContext(context.Background(),
+ util.CtxEnableSync, "1"), []string{accountName})
assert.NoError(t, err)
listAccountTaskReq := emodel.ListTaskRequest{
Domain: "",
@@ -361,16 +366,24 @@
tasks, err := task.List(ctx, &listAccountTaskReq)
assert.NoError(t, err)
assert.Equal(t, 1, len(tasks))
+ for _, v := range tasks {
+ assert.Equal(t, sync.Default, v.Domain)
+ assert.Equal(t, sync.Default, v.Project)
+ }
err = task.Delete(ctx, tasks...)
assert.NoError(t, err)
tombstoneListReq := emodel.ListTombstoneRequest{
- Domain: "sync-all-background",
- Project: "sync-all-background",
+ Domain: "",
+ Project: "",
}
tombstones, err := tombstone.List(ctx, &tombstoneListReq)
assert.NoError(t, err)
assert.Equal(t, 1, len(tombstones))
+ for _, v := range tasks {
+ assert.Equal(t, sync.Default, v.Domain)
+ assert.Equal(t, sync.Default, v.Project)
+ }
err = tombstone.Delete(ctx, tombstones...)
assert.NoError(t, err)
})
diff --git a/eventbase/datasource/etcd/key/key.go b/eventbase/datasource/etcd/key/key.go
index b2c954c..f97fe89 100644
--- a/eventbase/datasource/etcd/key/key.go
+++ b/eventbase/datasource/etcd/key/key.go
@@ -73,4 +73,4 @@
func JoinResourceID(infos []string) string {
return strings.Join(infos, split)
-}
+}
\ No newline at end of file
diff --git a/eventbase/go.mod b/eventbase/go.mod
index d53d1ba..ae279ae 100644
--- a/eventbase/go.mod
+++ b/eventbase/go.mod
@@ -1,7 +1,7 @@
module github.com/apache/servicecomb-service-center/eventbase
require (
- github.com/go-chassis/cari v0.5.1-0.20220121124340-cbf87fbeb1d7
+ github.com/go-chassis/cari v0.5.1-0.20220216075429-46c79de3311f
github.com/go-chassis/go-archaius v1.5.4
github.com/go-chassis/openlog v1.1.3
github.com/little-cui/etcdadpt v0.3.2
diff --git a/eventbase/go.sum b/eventbase/go.sum
index 012ccc6..23dfd9d 100644
--- a/eventbase/go.sum
+++ b/eventbase/go.sum
@@ -112,8 +112,8 @@
github.com/go-chassis/cari v0.0.0-20201210041921-7b6fbef2df11/go.mod h1:MgtsEI0AM4Ush6Lyw27z9Gk4nQ/8GWTSXrFzupawWDM=
github.com/go-chassis/cari v0.4.0/go.mod h1:av/19fqwEP4eOC8unL/z67AAbFDwXUCko6SKa4Avrd8=
github.com/go-chassis/cari v0.5.0/go.mod h1:av/19fqwEP4eOC8unL/z67AAbFDwXUCko6SKa4Avrd8=
-github.com/go-chassis/cari v0.5.1-0.20220121124340-cbf87fbeb1d7 h1:21IJymFsx+TEMY+KwqfyB/no/RpEhN9jld8uALvkU68=
-github.com/go-chassis/cari v0.5.1-0.20220121124340-cbf87fbeb1d7/go.mod h1:tKTzguHTGohMCgkcWNZWtA4TwfcsJrIXpfYxsQtb7uw=
+github.com/go-chassis/cari v0.5.1-0.20220216075429-46c79de3311f h1:NQqJFcsvoCMuRmgj5A6LsJ1nNkg6DkMQpEZy+eZjkOk=
+github.com/go-chassis/cari v0.5.1-0.20220216075429-46c79de3311f/go.mod h1:tKTzguHTGohMCgkcWNZWtA4TwfcsJrIXpfYxsQtb7uw=
github.com/go-chassis/foundation v0.2.2-0.20201210043510-9f6d3de40234/go.mod h1:2PjwqpVwYEVaAldl5A58a08viH8p27pNeYaiE3ZxOBA=
github.com/go-chassis/foundation v0.2.2/go.mod h1:2PjwqpVwYEVaAldl5A58a08viH8p27pNeYaiE3ZxOBA=
github.com/go-chassis/foundation v0.3.0/go.mod h1:2PjwqpVwYEVaAldl5A58a08viH8p27pNeYaiE3ZxOBA=
diff --git a/eventbase/service/task/task_svc.go b/eventbase/service/task/task_svc.go
index ee5b436..89519b4 100644
--- a/eventbase/service/task/task_svc.go
+++ b/eventbase/service/task/task_svc.go
@@ -35,6 +35,12 @@
}
func List(ctx context.Context, request *model.ListTaskRequest) ([]*sync.Task, error) {
+ if len(request.Domain) == 0 {
+ request.Domain = sync.Default
+ }
+ if len(request.Project) == 0 {
+ request.Project = sync.Default
+ }
opts := []datasource.TaskFindOption{
datasource.WithDomain(request.Domain),
datasource.WithProject(request.Project),
diff --git a/eventbase/service/task/task_svc_test.go b/eventbase/service/task/task_svc_test.go
index 004bfcc..c1de3c4 100644
--- a/eventbase/service/task/task_svc_test.go
+++ b/eventbase/service/task/task_svc_test.go
@@ -63,6 +63,14 @@
ServiceName: "svc3",
Version: "1.0",
})
+ taskFour, _ := sync.NewTask("", "", sync.UpdateAction, "service",
+ discovery.MicroService{
+ ServiceId: "101",
+ AppId: "appId4",
+ ServiceName: "svc4",
+ Version: "1.0",
+ })
+
t.Run("to create three tasks for next delete update and list operations, should pass", func(t *testing.T) {
_, err := datasource.GetDataSource().TaskDao().Create(context.Background(), taskOne)
assert.Nil(t, err)
@@ -70,6 +78,8 @@
assert.Nil(t, err)
_, err = datasource.GetDataSource().TaskDao().Create(context.Background(), taskThree)
assert.Nil(t, err)
+ _, err = datasource.GetDataSource().TaskDao().Create(context.Background(), taskFour)
+ assert.Nil(t, err)
})
t.Run("list task service", func(t *testing.T) {
@@ -103,7 +113,7 @@
})
t.Run("delete task service", func(t *testing.T) {
- t.Run("delete all tasks in default domain and default project should pass", func(t *testing.T) {
+ t.Run("delete all tasks in task domain and task project should pass", func(t *testing.T) {
listReq := model.ListTaskRequest{
Domain: "task",
Project: "task",
@@ -117,5 +127,20 @@
assert.Nil(t, err)
assert.Equal(t, 0, len(dTasks))
})
+ t.Run("delete all tasks in empty domain and empty project should pass", func(t *testing.T) {
+ listReq := model.ListTaskRequest{
+ Domain: "",
+ Project: "",
+ ResourceType: "service",
+ }
+ tasks, err := task.List(context.Background(), &listReq)
+ assert.Nil(t, err)
+ assert.Equal(t, 1, len(tasks))
+ err = task.Delete(context.Background(), tasks...)
+ assert.Nil(t, err)
+ dTasks, err := task.List(context.Background(), &listReq)
+ assert.Nil(t, err)
+ assert.Equal(t, 0, len(dTasks))
+ })
})
}
diff --git a/eventbase/service/tombstone/tombstone_svc.go b/eventbase/service/tombstone/tombstone_svc.go
index dfb64e4..5ad6753 100644
--- a/eventbase/service/tombstone/tombstone_svc.go
+++ b/eventbase/service/tombstone/tombstone_svc.go
@@ -27,6 +27,12 @@
)
func Get(ctx context.Context, req *model.GetTombstoneRequest) (*sync.Tombstone, error) {
+ if len(req.Domain) == 0 {
+ req.Domain = sync.Default
+ }
+ if len(req.Project) == 0 {
+ req.Project = sync.Default
+ }
return datasource.GetTombstoneDao().Get(ctx, req)
}
@@ -35,6 +41,12 @@
}
func List(ctx context.Context, request *model.ListTombstoneRequest) ([]*sync.Tombstone, error) {
+ if len(request.Domain) == 0 {
+ request.Domain = sync.Default
+ }
+ if len(request.Project) == 0 {
+ request.Project = sync.Default
+ }
opts := []datasource.TombstoneFindOption{
datasource.WithTombstoneDomain(request.Domain),
datasource.WithTombstoneProject(request.Project),
diff --git a/eventbase/service/tombstone/tombstone_svc_test.go b/eventbase/service/tombstone/tombstone_svc_test.go
index 9443a15..fe0d148 100644
--- a/eventbase/service/tombstone/tombstone_svc_test.go
+++ b/eventbase/service/tombstone/tombstone_svc_test.go
@@ -21,13 +21,13 @@
"context"
"testing"
- "github.com/apache/servicecomb-service-center/eventbase/test"
"github.com/go-chassis/cari/sync"
"github.com/stretchr/testify/assert"
"github.com/apache/servicecomb-service-center/eventbase/datasource"
"github.com/apache/servicecomb-service-center/eventbase/model"
"github.com/apache/servicecomb-service-center/eventbase/service/tombstone"
+ "github.com/apache/servicecomb-service-center/eventbase/test"
)
func init() {
@@ -44,6 +44,7 @@
tombstoneOne := sync.NewTombstone("tombstone", "tombstone", "config", "111111")
tombstoneTwo := sync.NewTombstone("tombstone", "tombstone", "config", "222222")
tombstoneThree := sync.NewTombstone("tombstone", "tombstone", "config", "333333")
+ tombstoneFour := sync.NewTombstone("", "", "config", "444444")
t.Run("to create three tasks for next get delete and list operations, should pass", func(t *testing.T) {
_, err := datasource.GetDataSource().TombstoneDao().Create(context.Background(), tombstoneOne)
@@ -52,6 +53,8 @@
assert.Nil(t, err)
_, err = datasource.GetDataSource().TombstoneDao().Create(context.Background(), tombstoneThree)
assert.Nil(t, err)
+ _, err = datasource.GetDataSource().TombstoneDao().Create(context.Background(), tombstoneFour)
+ assert.Nil(t, err)
})
t.Run("get tombstone service", func(t *testing.T) {
@@ -84,7 +87,7 @@
})
t.Run("delete tombstone service", func(t *testing.T) {
- t.Run("delete all tombstones in default domain and default project should pass", func(t *testing.T) {
+ t.Run("delete all tombstones in tombstone domain and tombstone project should pass", func(t *testing.T) {
listReq := model.ListTombstoneRequest{
Domain: "tombstone",
Project: "tombstone",
@@ -98,6 +101,21 @@
assert.Nil(t, err)
assert.Equal(t, 0, len(dTombstones))
})
- })
+ t.Run("delete all tombstones in empty domain and empty project should pass", func(t *testing.T) {
+ listReq := model.ListTombstoneRequest{
+ Domain: "",
+ Project: "",
+ ResourceType: "config",
+ }
+ tombstones, err := tombstone.List(context.Background(), &listReq)
+ assert.Nil(t, err)
+ assert.Equal(t, 1, len(tombstones))
+ err = tombstone.Delete(context.Background(), tombstones...)
+ assert.Nil(t, err)
+ dTombstones, err := tombstone.List(context.Background(), &listReq)
+ assert.Nil(t, err)
+ assert.Equal(t, 0, len(dTombstones))
+ })
+ })
}
diff --git a/go.mod b/go.mod
index c8bf86c..a9aa821 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,7 @@
github.com/deckarep/golang-set v1.7.1
github.com/elithrar/simple-scrypt v1.3.0
github.com/ghodss/yaml v1.0.0
- github.com/go-chassis/cari v0.5.1-0.20220121124340-cbf87fbeb1d7
+ github.com/go-chassis/cari v0.5.1-0.20220216075429-46c79de3311f
github.com/go-chassis/foundation v0.4.0
github.com/go-chassis/go-archaius v1.5.4
github.com/go-chassis/go-chassis-extension/protocol/grpc v0.0.0-20220208081606-003611df45da
diff --git a/go.sum b/go.sum
index d528282..b81c646 100644
--- a/go.sum
+++ b/go.sum
@@ -179,8 +179,8 @@
github.com/go-chassis/cari v0.4.0/go.mod h1:av/19fqwEP4eOC8unL/z67AAbFDwXUCko6SKa4Avrd8=
github.com/go-chassis/cari v0.5.0/go.mod h1:av/19fqwEP4eOC8unL/z67AAbFDwXUCko6SKa4Avrd8=
github.com/go-chassis/cari v0.5.1-0.20210823023004-74041d1363c4/go.mod h1:av/19fqwEP4eOC8unL/z67AAbFDwXUCko6SKa4Avrd8=
-github.com/go-chassis/cari v0.5.1-0.20220121124340-cbf87fbeb1d7 h1:21IJymFsx+TEMY+KwqfyB/no/RpEhN9jld8uALvkU68=
-github.com/go-chassis/cari v0.5.1-0.20220121124340-cbf87fbeb1d7/go.mod h1:tKTzguHTGohMCgkcWNZWtA4TwfcsJrIXpfYxsQtb7uw=
+github.com/go-chassis/cari v0.5.1-0.20220216075429-46c79de3311f h1:NQqJFcsvoCMuRmgj5A6LsJ1nNkg6DkMQpEZy+eZjkOk=
+github.com/go-chassis/cari v0.5.1-0.20220216075429-46c79de3311f/go.mod h1:tKTzguHTGohMCgkcWNZWtA4TwfcsJrIXpfYxsQtb7uw=
github.com/go-chassis/foundation v0.2.2-0.20201210043510-9f6d3de40234/go.mod h1:2PjwqpVwYEVaAldl5A58a08viH8p27pNeYaiE3ZxOBA=
github.com/go-chassis/foundation v0.2.2/go.mod h1:2PjwqpVwYEVaAldl5A58a08viH8p27pNeYaiE3ZxOBA=
github.com/go-chassis/foundation v0.3.0/go.mod h1:2PjwqpVwYEVaAldl5A58a08viH8p27pNeYaiE3ZxOBA=