This is an automated email from the ASF dual-hosted git repository.

zhaoyunxing pushed a commit to branch revert-2127-feat/polaris_ratelimit
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git

commit 7c349ae2ee5ed2ddfe75ebc4d74c996c5ff95d8d
Author: zhaoyunxing <[email protected]>
AuthorDate: Mon Nov 21 16:52:51 2022 +0800

    Revert "[ISSUE #2123] Feat/polaris ratelimit (#2127)"
    
    This reverts commit cd2e6056d21a5e3c4d5d2583242f390489565c4e.
---
 common/constant/key.go                 |  12 +++
 common/constant/polaris_key.go         |  34 -------
 filter/filter_impl/import.go           |   1 -
 filter/polaris/limit/default.go        |  30 ------
 filter/polaris/limit/limiter.go        | 167 --------------------------------
 go.mod                                 |   1 -
 go.sum                                 |   2 -
 imports/imports.go                     |   1 -
 remoting/polaris/builder.go            |  13 +--
 remoting/polaris/parser/parser.go      | 125 ------------------------
 remoting/polaris/parser/parser_test.go | 168 ---------------------------------
 11 files changed, 15 insertions(+), 539 deletions(-)

diff --git a/common/constant/key.go b/common/constant/key.go
index 7adafa75b..d7fb47884 100644
--- a/common/constant/key.go
+++ b/common/constant/key.go
@@ -264,6 +264,18 @@ const (
        NacosUpdateCacheWhenEmpty = "nacos.updateCacheWhenEmpty"
 )
 
+const (
+       PolarisKey                  = "polaris"
+       PolarisDefaultRoleType      = 3
+       PolarisServiceToken         = "token"
+       PolarisServiceNameSeparator = ":"
+       PolarisDubboPath            = "DUBBOPATH"
+       PolarisInstanceID           = "polaris.instanceID"
+       PolarisDefaultNamespace     = "default"
+       PolarisDubboGroup           = "dubbo.group"
+       PolarisClientName           = "polaris-client"
+)
+
 const (
        FileKey = "file"
 )
diff --git a/common/constant/polaris_key.go b/common/constant/polaris_key.go
deleted file mode 100644
index 97d0ab552..000000000
--- a/common/constant/polaris_key.go
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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 constant
-
-const (
-       PolarisKey                  = "polaris"
-       PolarisDefaultRoleType      = 3
-       PolarisServiceToken         = "token"
-       PolarisServiceNameSeparator = ":"
-       PolarisDubboPath            = "DUBBOPATH"
-       PolarisInstanceID           = "polaris.instanceID"
-       PolarisDefaultNamespace     = "default"
-       PolarisDubboGroup           = "dubbo.group"
-       PolarisClientName           = "polaris-client"
-)
-
-const (
-       PluginPolarisTpsLimiter = "polaris-limit"
-)
diff --git a/filter/filter_impl/import.go b/filter/filter_impl/import.go
index 2e389b90a..ca38303ca 100644
--- a/filter/filter_impl/import.go
+++ b/filter/filter_impl/import.go
@@ -30,7 +30,6 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/filter/graceful_shutdown"
        _ "dubbo.apache.org/dubbo-go/v3/filter/hystrix"
        _ "dubbo.apache.org/dubbo-go/v3/filter/metrics"
-       _ "dubbo.apache.org/dubbo-go/v3/filter/polaris/limit"
        _ "dubbo.apache.org/dubbo-go/v3/filter/seata"
        _ "dubbo.apache.org/dubbo-go/v3/filter/sentinel"
        _ "dubbo.apache.org/dubbo-go/v3/filter/token"
diff --git a/filter/polaris/limit/default.go b/filter/polaris/limit/default.go
deleted file mode 100644
index 5f40295c4..000000000
--- a/filter/polaris/limit/default.go
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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 limit
-
-import (
-       "dubbo.apache.org/dubbo-go/v3/common/constant"
-       "dubbo.apache.org/dubbo-go/v3/common/extension"
-       "dubbo.apache.org/dubbo-go/v3/filter"
-)
-
-func init() {
-       extension.SetTpsLimiter(constant.PluginPolarisTpsLimiter, func() 
filter.TpsLimiter {
-               return &polarisTpsLimiter{}
-       })
-}
diff --git a/filter/polaris/limit/limiter.go b/filter/polaris/limit/limiter.go
deleted file mode 100644
index 64ecb6ef6..000000000
--- a/filter/polaris/limit/limiter.go
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * 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 limit
-
-import (
-       "fmt"
-       "time"
-)
-
-import (
-       "github.com/dubbogo/gost/log/logger"
-
-       "github.com/polarismesh/polaris-go"
-       "github.com/polarismesh/polaris-go/pkg/flow/data"
-       "github.com/polarismesh/polaris-go/pkg/model"
-       v1 "github.com/polarismesh/polaris-go/pkg/model/pb/v1"
-)
-
-import (
-       "dubbo.apache.org/dubbo-go/v3/common"
-       "dubbo.apache.org/dubbo-go/v3/common/constant"
-       "dubbo.apache.org/dubbo-go/v3/config"
-       "dubbo.apache.org/dubbo-go/v3/protocol"
-       remotingpolaris "dubbo.apache.org/dubbo-go/v3/remoting/polaris"
-       "dubbo.apache.org/dubbo-go/v3/remoting/polaris/parser"
-)
-
-type polarisTpsLimiter struct {
-       limitApi polaris.LimitAPI
-}
-
-func (pl *polarisTpsLimiter) IsAllowable(url *common.URL, invocation 
protocol.Invocation) bool {
-       var err error
-
-       pl.limitApi, err = remotingpolaris.GetLimiterAPI()
-       if err != nil {
-               logger.Error("[TpsLimiter][Polaris] create polaris LimitAPI 
fail : %+v", err)
-               return true
-       }
-
-       req := pl.buildQuotaRequest(url, invocation)
-       if req == nil {
-               return true
-       }
-       logger.Debugf("[TpsLimiter][Polaris] quota req : %+v", req)
-
-       resp, err := pl.limitApi.GetQuota(req)
-       if err != nil {
-               logger.Error("[TpsLimiter][Polaris] ns:%s svc:%s get quota fail 
: %+v", remotingpolaris.GetNamespace(), url.Service(), err)
-               return true
-       }
-
-       return resp.Get().Code == model.QuotaResultOk
-}
-
-func (pl *polarisTpsLimiter) buildQuotaRequest(url *common.URL, invoaction 
protocol.Invocation) polaris.QuotaRequest {
-       ns := remotingpolaris.GetNamespace()
-       applicationMode := false
-       for _, item := range config.GetRootConfig().Registries {
-               if item.Protocol == constant.PolarisKey {
-                       applicationMode = item.RegistryType == 
constant.ServiceKey
-               }
-       }
-
-       svc := "providers:" + url.Service()
-       method := invoaction.MethodName()
-       if applicationMode {
-               svc = config.GetApplicationConfig().Name
-               method = url.Interface() + "/" + invoaction.MethodName()
-       }
-
-       req := polaris.NewQuotaRequest()
-       req.SetNamespace(ns)
-       req.SetService(svc)
-       req.SetMethod(method)
-
-       matchs, ok := pl.buildArguments(req.(*model.QuotaRequestImpl))
-       if !ok {
-               return nil
-       }
-
-       attachement := invoaction.Attachments()
-       arguments := invoaction.Arguments()
-
-       for i := range matchs {
-               item := matchs[i]
-               switch item.GetType() {
-               case v1.MatchArgument_HEADER:
-                       if val, ok := attachement[item.GetKey()]; ok {
-                               
req.AddArgument(model.BuildHeaderArgument(item.GetKey(), fmt.Sprintf("%+v", 
val)))
-                       }
-               case v1.MatchArgument_QUERY:
-                       if val := 
parser.ParseArgumentsByExpression(item.GetKey(), arguments); val != nil {
-                               
req.AddArgument(model.BuildQueryArgument(item.GetKey(), fmt.Sprintf("%+v", 
val)))
-                       }
-               case v1.MatchArgument_CALLER_IP:
-                       callerIp := url.GetParam(constant.RemoteAddr, "")
-                       if len(callerIp) != 0 {
-                               
req.AddArgument(model.BuildCallerIPArgument(callerIp))
-                       }
-               case model.ArgumentTypeCallerService:
-               }
-       }
-
-       return req
-}
-
-func (pl *polarisTpsLimiter) buildArguments(req *model.QuotaRequestImpl) 
([]*v1.MatchArgument, bool) {
-       engine := pl.limitApi.SDKContext().GetEngine()
-
-       getRuleReq := &data.CommonRateLimitRequest{
-               DstService: model.ServiceKey{
-                       Namespace: req.GetNamespace(),
-                       Service:   req.GetService(),
-               },
-               Trigger: model.NotifyTrigger{
-                       EnableDstRateLimit: true,
-               },
-               ControlParam: model.ControlParam{
-                       Timeout: time.Millisecond * 500,
-               },
-       }
-
-       if err := engine.SyncGetResources(getRuleReq); err != nil {
-               logger.Error("[TpsLimiter][Polaris] ns:%s svc:%s get RateLimit 
Rule fail : %+v", req.GetNamespace(), req.GetService(), err)
-               return nil, false
-       }
-
-       svcRule := getRuleReq.RateLimitRule
-       if svcRule == nil || svcRule.GetValue() == nil {
-               logger.Warnf("[TpsLimiter][Polaris] ns:%s svc:%s get RateLimit 
Rule is nil", req.GetNamespace(), req.GetService())
-               return nil, false
-       }
-
-       rules, ok := svcRule.GetValue().(*v1.RateLimit)
-       if !ok {
-               logger.Error("[TpsLimiter][Polaris] ns:%s svc:%s get RateLimit 
Rule invalid", req.GetNamespace(), req.GetService())
-               return nil, false
-       }
-
-       ret := make([]*v1.MatchArgument, 0, 4)
-       for i := range rules.GetRules() {
-               rule := rules.GetRules()[i]
-               if len(rule.GetArguments()) == 0 {
-                       continue
-               }
-
-               ret = append(ret, rule.Arguments...)
-       }
-
-       return ret, true
-}
diff --git a/go.mod b/go.mod
index 19871490e..b67c712bc 100644
--- a/go.mod
+++ b/go.mod
@@ -38,7 +38,6 @@ require (
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
        github.com/nacos-group/nacos-sdk-go/v2 v2.1.2
        github.com/natefinch/lumberjack v2.0.0+incompatible
-       github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852
        github.com/opentracing/opentracing-go v1.2.0
        github.com/pkg/errors v0.9.1
        github.com/polarismesh/polaris-go v1.2.0
diff --git a/go.sum b/go.sum
index 00fc9ce36..47f43871e 100644
--- a/go.sum
+++ b/go.sum
@@ -598,8 +598,6 @@ github.com/oklog/oklog v0.3.2/go.mod 
h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtb
 github.com/oklog/run v1.0.0/go.mod 
h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
 github.com/oklog/ulid v1.3.1/go.mod 
h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
 github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod 
h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 
h1:Yl0tPBa8QPjGmesFh1D0rDy+q1Twx6FyU7VWHi8wZbI=
-github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852/go.mod 
h1:eqOVx5Vwu4gd2mmMZvVZsgIqNSaW3xxRThUJ0k/TPk4=
 github.com/onsi/ginkgo v1.6.0/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.7.0/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/gomega v1.4.3/go.mod 
h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
diff --git a/imports/imports.go b/imports/imports.go
index f3ecaf225..f818e4322 100644
--- a/imports/imports.go
+++ b/imports/imports.go
@@ -46,7 +46,6 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/filter/hystrix"
        _ "dubbo.apache.org/dubbo-go/v3/filter/metrics"
        _ "dubbo.apache.org/dubbo-go/v3/filter/otel/trace"
-       _ "dubbo.apache.org/dubbo-go/v3/filter/polaris/limit"
        _ "dubbo.apache.org/dubbo-go/v3/filter/seata"
        _ "dubbo.apache.org/dubbo-go/v3/filter/sentinel"
        _ "dubbo.apache.org/dubbo-go/v3/filter/token"
diff --git a/remoting/polaris/builder.go b/remoting/polaris/builder.go
index f384345e1..a45fad7d9 100644
--- a/remoting/polaris/builder.go
+++ b/remoting/polaris/builder.go
@@ -36,13 +36,11 @@ import (
 
 import (
        "dubbo.apache.org/dubbo-go/v3/common"
-       "dubbo.apache.org/dubbo-go/v3/common/constant"
 )
 
 var (
-       once      sync.Once
-       namesapce string
-       sdkCtx    api.SDKContext
+       once   sync.Once
+       sdkCtx api.SDKContext
 )
 
 var (
@@ -85,11 +83,6 @@ func GetLimiterAPI() (polaris.LimitAPI, error) {
        return polaris.NewLimitAPIByContext(sdkCtx), nil
 }
 
-// GetNamespace gets user defined namespace info
-func GetNamespace() string {
-       return namesapce
-}
-
 // InitSDKContext inits polaris SDKContext by URL
 func InitSDKContext(url *common.URL) error {
        if url == nil {
@@ -98,6 +91,7 @@ func InitSDKContext(url *common.URL) error {
 
        var rerr error
        once.Do(func() {
+
                addresses := strings.Split(url.Location, ",")
                serverConfigs := make([]string, 0, len(addresses))
                for _, addr := range addresses {
@@ -113,7 +107,6 @@ func InitSDKContext(url *common.URL) error {
                _sdkCtx, err := api.InitContextByConfig(polarisConf)
                rerr = err
                sdkCtx = _sdkCtx
-               namesapce = url.GetParam(constant.RegistryNamespaceKey, 
constant.PolarisDefaultNamespace)
        })
 
        return rerr
diff --git a/remoting/polaris/parser/parser.go 
b/remoting/polaris/parser/parser.go
deleted file mode 100644
index 42e42b57b..000000000
--- a/remoting/polaris/parser/parser.go
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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 parser
-
-import (
-       "encoding/json"
-       "regexp"
-       "strconv"
-       "strings"
-)
-
-import (
-       "github.com/dubbogo/gost/log/logger"
-
-       "github.com/oliveagle/jsonpath"
-)
-
-const (
-       _pefixParam     = "param"
-       _prefixParamArr = "param["
-)
-
-var (
-       _arrayRegx, _ = regexp.Compile(`"^.+\\[[0-9]+\\]"`)
-)
-
-// ParseArgumentsByExpression follow https://goessner.net/articles/JsonPath/
-//
-//     {
-//         "store":{
-//             "book":[
-//                 {
-//                     "category":"reference",
-//                     "author":"Nigel Rees",
-//                     "title":"Sayings of the Century",
-//                     "price":8.95
-//                 },
-//                 {
-//                     "category":"fiction",
-//                     "author":"Evelyn Waugh",
-//                     "title":"Sword of Honor",
-//                     "price":12.99
-//                 },
-//                 {
-//                     "category":"fiction",
-//                     "author":"Herman Melville",
-//                     "title":"Moby Dick",
-//                     "isbn":"0-553-21311-3",
-//                     "price":8.99
-//                 },
-//                 {
-//                     "category":"fiction",
-//                     "author":"J. R. R. Tolkien",
-//                     "title":"The Lord of the Rings",
-//                     "isbn":"0-395-19395-8",
-//                     "price":22.99
-//                 }
-//             ],
-//             "bicycle":{
-//                 "color":"red",
-//                 "price":19.95
-//             }
-//         }
-//     }
-//
-// examples
-//   - case 1: param.$.store.book[*].author
-func ParseArgumentsByExpression(key string, parameters []interface{}) 
interface{} {
-       index, key := resolveIndex(key)
-       if index == -1 || index >= len(parameters) {
-               logger.Errorf("[Parser][Polaris] invalid expression for : %s", 
key)
-               return nil
-       }
-
-       data, err := json.Marshal(parameters[index])
-       if err != nil {
-               logger.Errorf("[Parser][Polaris] marshal parameter %+v fail : 
%+v", parameters[index], err)
-               return nil
-       }
-       var searchVal interface{}
-       _ = json.Unmarshal(data, &searchVal)
-       res, err := jsonpath.JsonPathLookup(searchVal, key)
-       if err != nil {
-               logger.Errorf("[Parser][Polaris] invalid do json path lookup by 
key : %s, err : %+v", key, err)
-       }
-
-       return res
-}
-
-func resolveIndex(key string) (int, string) {
-       if strings.HasPrefix(key, _prefixParamArr) {
-               // param[0].$.
-               endIndex := strings.Index(key, "]")
-               indexStr := key[len(_prefixParamArr):endIndex]
-               index, err := strconv.ParseInt(indexStr, 10, 32)
-               if err != nil {
-                       return -1, ""
-               }
-               startIndex := endIndex + 2
-               if rune(key[endIndex+1]) != rune('.') {
-                       startIndex = endIndex + 1
-               }
-               return int(index), key[startIndex:]
-       } else if strings.HasPrefix(key, _pefixParam) {
-               key = strings.TrimPrefix(key, _pefixParam+".")
-               return 0, strings.TrimPrefix(key, _pefixParam+".")
-       }
-
-       return -1, ""
-}
diff --git a/remoting/polaris/parser/parser_test.go 
b/remoting/polaris/parser/parser_test.go
deleted file mode 100644
index 1917b4905..000000000
--- a/remoting/polaris/parser/parser_test.go
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * 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 parser
-
-import (
-       "encoding/json"
-       "testing"
-)
-
-import (
-       "github.com/stretchr/testify/assert"
-)
-
-var (
-       testDataStore = `
-       {
-               "book":[
-                       {
-                               "category":"reference",
-                               "author":"Nigel Rees",
-                               "title":"Sayings of the Century",
-                               "price":8.95
-                       },
-                       {
-                               "category":"fiction",
-                               "author":"Evelyn Waugh",
-                               "title":"Sword of Honor",
-                               "price":12.99
-                       },
-                       {
-                               "category":"fiction",
-                               "author":"Herman Melville",
-                               "title":"Moby Dick",
-                               "isbn":"0-553-21311-3",
-                               "price":8.99
-                       },
-                       {
-                               "category":"fiction",
-                               "author":"J. R. R. Tolkien",
-                               "title":"The Lord of the Rings",
-                               "isbn":"0-395-19395-8",
-                               "price":22.99
-                       }
-               ],
-               "bicycle":{
-                       "color":"red",
-                       "price":19.95
-               }
-       }
-       `
-
-       testDataBicyle = `
-       {
-               "color":"red",
-               "price":19.95
-       }
-       `
-)
-
-func TestParseArgumentsByExpression(t *testing.T) {
-
-       var (
-               argStore, argBicyle interface{}
-       )
-
-       json.Unmarshal([]byte(testDataStore), &argStore)
-       json.Unmarshal([]byte(testDataBicyle), &argBicyle)
-
-       t.Run("test-case-1", func(t *testing.T) {
-               ret := ParseArgumentsByExpression("param.$.book[0].category", 
[]interface{}{argStore})
-               assert.Equal(t, "reference", ret)
-       })
-
-       t.Run("test-case-2", func(t *testing.T) {
-               ret := 
ParseArgumentsByExpression("param[0].$.book[0].category", 
[]interface{}{argStore, argBicyle})
-               assert.Equal(t, "reference", ret)
-       })
-
-       t.Run("test-case-2", func(t *testing.T) {
-               ret := ParseArgumentsByExpression("param[1].$.color", 
[]interface{}{argStore, argBicyle})
-               assert.Equal(t, "red", ret)
-       })
-
-       t.Run("test-case-3", func(t *testing.T) {
-               ret := ParseArgumentsByExpression("param.$.color", 
[]interface{}{argBicyle})
-               assert.Equal(t, "red", ret)
-       })
-
-}
-
-func Test_resolveIndex(t *testing.T) {
-       type args struct {
-               key string
-       }
-       tests := []struct {
-               name  string
-               args  args
-               want  int
-               want1 string
-       }{
-               {
-                       name: "case-1",
-                       args: args{
-                               key: "param.$.key",
-                       },
-                       want:  0,
-                       want1: "$.key",
-               },
-               {
-                       name: "case-2",
-                       args: args{
-                               key: "param[1].$.key",
-                       },
-                       want:  1,
-                       want1: "$.key",
-               },
-               {
-                       name: "case-3",
-                       args: args{
-                               key: "param[10].$.key",
-                       },
-                       want:  10,
-                       want1: "$.key",
-               },
-               {
-                       name: "case-4",
-                       args: args{
-                               key: "param[11]$.key",
-                       },
-                       want:  11,
-                       want1: "$.key",
-               },
-               {
-                       name: "case-5",
-                       args: args{
-                               key: "param[11]key",
-                       },
-                       want:  11,
-                       want1: "key",
-               },
-       }
-       for _, tt := range tests {
-               t.Run(tt.name, func(t *testing.T) {
-                       got, got1 := resolveIndex(tt.args.key)
-                       if got != tt.want {
-                               t.Errorf("resolveIndex() got = %v, want %v", 
got, tt.want)
-                       }
-                       if got1 != tt.want1 {
-                               t.Errorf("resolveIndex() got1 = %v, want %v", 
got1, tt.want1)
-                       }
-               })
-       }
-}

Reply via email to