This is an automated email from the ASF dual-hosted git repository. littlecui pushed a commit to branch mod in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git
commit 164d97ece1009c4b6542dd673d0b1d73bf2f5bf7 Author: little-cui <[email protected]> AuthorDate: Wed Sep 7 17:25:58 2022 +0800 [fix]gov list return wrong kind --- pkg/util/util.go | 23 +++++++++++++++++++++++ pkg/util/util_test.go | 23 +++++++++++++++++++++++ server/resource/gov/gov_resource_test.go | 2 +- server/service/grc/config_distributor.go | 3 ++- server/service/grc/kie/kie_distributor.go | 26 ++------------------------ 5 files changed, 51 insertions(+), 26 deletions(-) diff --git a/pkg/util/util.go b/pkg/util/util.go index 51f8710a..08b18d61 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -18,6 +18,7 @@ package util import ( + "bytes" "runtime" "strings" "unsafe" @@ -146,3 +147,25 @@ func ToDomainProject(domain, project string) (domainProject string) { func IsVersionOrHealthPattern(pattern string) bool { return strings.HasSuffix(pattern, "/version") || strings.HasSuffix(pattern, "/health") } + +func ToSnake(name string) string { + if name == "" { + return "" + } + temp := strings.Split(name, "-") + var buffer bytes.Buffer + for num, v := range temp { + vv := []rune(v) + if num == 0 { + buffer.WriteString(string(vv)) + continue + } + if len(vv) > 0 { + if vv[0] >= 'a' && vv[0] <= 'z' { //首字母大写 + vv[0] -= 32 + } + buffer.WriteString(string(vv)) + } + } + return buffer.String() +} diff --git a/pkg/util/util_test.go b/pkg/util/util_test.go index e464a30c..f2f08b69 100644 --- a/pkg/util/util_test.go +++ b/pkg/util/util_test.go @@ -155,3 +155,26 @@ func TestIsVersionOrHealthPattern(t *testing.T) { assert.True(t, IsVersionOrHealthPattern("/v4/a/registry/health")) assert.False(t, IsVersionOrHealthPattern("/health/a")) } + +func TestToSnake(t *testing.T) { + type args struct { + name string + } + tests := []struct { + name string + args args + want string + }{ + {"single word", args{"a"}, "a"}, + {"2 words", args{"a-b"}, "aB"}, + {"3 words", args{"a-b-cc"}, "aBCc"}, + {"invalid", args{"a.b"}, "a.b"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := ToSnake(tt.args.name); got != tt.want { + t.Errorf("ToSnake() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/server/resource/gov/gov_resource_test.go b/server/resource/gov/gov_resource_test.go index bf9a838d..08a7448d 100644 --- a/server/resource/gov/gov_resource_test.go +++ b/server/resource/gov/gov_resource_test.go @@ -25,7 +25,6 @@ import ( "testing" _ "github.com/apache/servicecomb-service-center/server/service/grc/mock" - "k8s.io/kube-openapi/pkg/validation/spec" _ "github.com/apache/servicecomb-service-center/test" @@ -37,6 +36,7 @@ import ( grcsvc "github.com/apache/servicecomb-service-center/server/service/grc" "github.com/go-chassis/go-archaius" "github.com/stretchr/testify/assert" + "k8s.io/kube-openapi/pkg/validation/spec" ) func init() { diff --git a/server/service/grc/config_distributor.go b/server/service/grc/config_distributor.go index 79fbb0e9..eae38c4e 100644 --- a/server/service/grc/config_distributor.go +++ b/server/service/grc/config_distributor.go @@ -23,6 +23,7 @@ import ( model "github.com/apache/servicecomb-service-center/pkg/gov" "github.com/apache/servicecomb-service-center/pkg/log" + "github.com/apache/servicecomb-service-center/pkg/util" "github.com/apache/servicecomb-service-center/server/config" ) @@ -90,7 +91,7 @@ func Init() error { var names []string for kind, policy := range config.GetGov().Policies { RegisterPolicySchema(kind, policy.ValidationSpec) - names = append(names, kind) + names = append(names, util.ToSnake(kind)) } PolicyNames = names } diff --git a/server/service/grc/kie/kie_distributor.go b/server/service/grc/kie/kie_distributor.go index 30ac7ba4..7a4bd508 100644 --- a/server/service/grc/kie/kie_distributor.go +++ b/server/service/grc/kie/kie_distributor.go @@ -18,7 +18,6 @@ package kie import ( - "bytes" "context" "encoding/json" "fmt" @@ -26,6 +25,7 @@ import ( "strings" "time" + "github.com/apache/servicecomb-service-center/pkg/util" "github.com/ghodss/yaml" "github.com/go-chassis/foundation/httpclient" "github.com/go-chassis/kie-client" @@ -259,28 +259,6 @@ func new(opts config.DistributorOptions) (grcsvc.ConfigDistributor, error) { return &Distributor{name: opts.Name, client: initClient(opts.Endpoint)}, nil } -func toSnake(name string) string { - if name == "" { - return "" - } - temp := strings.Split(name, "-") - var buffer bytes.Buffer - for num, v := range temp { - vv := []rune(v) - if num == 0 { - buffer.WriteString(string(vv)) - continue - } - if len(vv) > 0 { - if vv[0] >= 'a' && vv[0] <= 'z' { //首字母大写 - vv[0] -= 32 - } - buffer.WriteString(string(vv)) - } - } - return buffer.String() -} - func (d *Distributor) listDataByKind(ctx context.Context, kind, project, app, env string) (*kie.KVResponse, int, error) { ops := []kie.GetOption{ kie.WithKey("beginWith(" + toGovKeyPrefix(kind) + ")"), @@ -369,7 +347,7 @@ func (d *Distributor) transform(kv *kie.KVDoc, kind string) (*gov.Policy, error) } func toGovKeyPrefix(kind string) string { - return grcsvc.KeyPrefix + toSnake(kind) + "." + return grcsvc.KeyPrefix + util.ToSnake(kind) + "." } func init() {
