This is an automated email from the ASF dual-hosted git repository. tianxiaoliang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git
commit b3fb75a17d99bad7948679bf65fabc942d90a193 Author: tian <[email protected]> AuthorDate: Fri Jun 28 18:38:05 2019 +0800 add UT for put kv by rest API --- client/client.go | 9 +++--- client/options.go | 11 +++---- go.mod | 2 +- server/config/config.go | 9 +++--- server/resource/v1/kv_resource_test.go | 58 ++++++++++++++++++++++++++++++++++ server/resource/v1/v1_suite_test.go | 1 + 6 files changed, 75 insertions(+), 15 deletions(-) diff --git a/client/client.go b/client/client.go index f9df929..58a3c49 100644 --- a/client/client.go +++ b/client/client.go @@ -23,7 +23,6 @@ import ( "encoding/json" "errors" "fmt" - "github.com/apache/servicecomb-kie/pkg/common" "github.com/apache/servicecomb-kie/pkg/model" "github.com/go-chassis/foundation/httpclient" "github.com/go-chassis/foundation/security" @@ -88,9 +87,6 @@ func (c *Client) Get(ctx context.Context, key string, opts ...GetOption) ([]*mod } url := fmt.Sprintf("%s/%s/%s", c.opts.Endpoint, APIPathKV, key) h := http.Header{} - if options.MatchMode != "" { - h.Set(common.HeaderMatch, options.MatchMode) - } resp, err := c.c.HTTPDoWithContext(ctx, "GET", url, h, nil) if err != nil { return nil, err @@ -100,6 +96,11 @@ func (c *Client) Get(ctx context.Context, key string, opts ...GetOption) ([]*mod if resp.StatusCode == http.StatusNotFound { return nil, ErrKeyNotExist } + openlogging.Error("get failed", openlogging.WithTags(openlogging.Tags{ + "k": key, + "status": resp.Status, + "body": b, + })) return nil, fmt.Errorf("get %s failed,http status [%s], body [%s]", key, resp.Status, b) } diff --git a/client/options.go b/client/options.go index e56b76e..722175d 100644 --- a/client/options.go +++ b/client/options.go @@ -22,8 +22,8 @@ type GetOption func(*GetOptions) //GetOptions is the options of client func type GetOptions struct { - Labels map[string]string - MatchMode string + Labels map[string]string + Depth int } //WithLabels query kv by labels @@ -33,10 +33,9 @@ func WithLabels(l map[string]string) GetOption { } } -//WithMatchMode has 2 modes -//exact and greedy -func WithMatchMode(m string) GetOption { +//WithDepth query keys with partial match query labels +func WithDepth(d int) GetOption { return func(options *GetOptions) { - options.MatchMode = m + options.Depth = d } } diff --git a/go.mod b/go.mod index 2540c72..77abed3 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ require ( github.com/emicklei/go-restful v2.8.0+incompatible github.com/go-chassis/foundation v0.0.0-20190516083152-b8b2476b6db7 github.com/go-chassis/go-archaius v0.18.0 - github.com/go-chassis/go-chassis v1.4.3 + github.com/go-chassis/go-chassis v1.5.0 github.com/go-chassis/paas-lager v1.0.2-0.20190328010332-cf506050ddb2 github.com/go-mesh/openlogging v1.0.1-0.20181205082104-3d418c478b2d github.com/onsi/ginkgo v1.8.0 diff --git a/server/config/config.go b/server/config/config.go index 36b66c2..00494ad 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -24,7 +24,8 @@ import ( "path/filepath" ) -var configurations *Config +//Configurations is kie config items +var Configurations *Config //Init initiate config files func Init(file string) error { @@ -33,8 +34,8 @@ func Init(file string) error { } _, filename := filepath.Split(file) content := archaius.GetString(filename, "") - configurations = &Config{} - if err := yaml.Unmarshal([]byte(content), configurations); err != nil { + Configurations = &Config{} + if err := yaml.Unmarshal([]byte(content), Configurations); err != nil { return err } return nil @@ -42,5 +43,5 @@ func Init(file string) error { //GetDB return db configs func GetDB() DB { - return configurations.DB + return Configurations.DB } diff --git a/server/resource/v1/kv_resource_test.go b/server/resource/v1/kv_resource_test.go new file mode 100644 index 0000000..8119ef0 --- /dev/null +++ b/server/resource/v1/kv_resource_test.go @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package v1_test + +import ( + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + + "bytes" + "context" + "encoding/json" + "github.com/apache/servicecomb-kie/pkg/model" + "github.com/apache/servicecomb-kie/server/config" + "github.com/apache/servicecomb-kie/server/resource/v1" + "github.com/go-chassis/go-chassis/server/restful/restfultest" + "net/http" +) + +var _ = Describe("v1 kv resource", func() { + //for UT + config.Configurations = &config.Config{ + DB: config.DB{}, + } + Describe("put kv", func() { + config.Configurations.DB.URI = "mongodb://kie:[email protected]:27017" + Context("valid param", func() { + kv := &model.KVDoc{ + Value: "1s", + Labels: map[string]string{"service": "tester"}, + } + j, _ := json.Marshal(kv) + r, _ := http.NewRequest("PUT", "/v1/kv/timeout", bytes.NewBuffer(j)) + rctx := restfultest.NewRestfulContext(context.Background(), r) + rctx.ReadRestfulRequest().SetAttribute("domain", "default") + kvr := &v1.KVResource{} + kvr.Put(rctx) + It("should be 200 ", func() { + Expect(rctx.Resp.StatusCode()).Should(Equal(http.StatusOK)) + }) + + }) + }) +}) diff --git a/server/resource/v1/v1_suite_test.go b/server/resource/v1/v1_suite_test.go index 99a2884..545cd80 100644 --- a/server/resource/v1/v1_suite_test.go +++ b/server/resource/v1/v1_suite_test.go @@ -27,4 +27,5 @@ import ( func TestV1(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "V1 Suite") + }
