Skip to content
Snippets Groups Projects
Commit fb6e04db authored by vito.he's avatar vito.he
Browse files

Fix:method param merge

parent 6de73e04
No related branches found
No related tags found
No related merge requests found
......@@ -419,7 +419,7 @@ func (c URL) ToMap() map[string]string {
//TODO configuration merge, in the future , the configuration center's config should merge too.
func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
mergedUrl := serviceUrl
var methodConfigMergeFcn = []func(method string){}
//iterator the referenceUrl if serviceUrl not have the key ,merge in
for k, v := range referenceUrl.Params {
......@@ -428,7 +428,7 @@ func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
}
}
//loadBalance,cluster,retries strategy config
mergeNormalParam(mergedUrl, referenceUrl, methodConfigMergeFcn, []string{constant.LOADBALANCE_KEY, constant.CLUSTER_KEY, constant.RETRIES_KEY})
methodConfigMergeFcn := mergeNormalParam(mergedUrl, referenceUrl, []string{constant.LOADBALANCE_KEY, constant.CLUSTER_KEY, constant.RETRIES_KEY})
//remote timestamp
if v := serviceUrl.Params.Get(constant.TIMESTAMP_KEY); len(v) > 0 {
......@@ -446,7 +446,8 @@ func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
return mergedUrl
}
func mergeNormalParam(mergedUrl URL, referenceUrl *URL, methodConfigMergeFcn []func(method string), paramKeys []string) {
func mergeNormalParam(mergedUrl URL, referenceUrl *URL, paramKeys []string) []func(method string) {
var methodConfigMergeFcn = []func(method string){}
for _, paramKey := range paramKeys {
if v := referenceUrl.Params.Get(paramKey); len(v) > 0 {
mergedUrl.Params.Set(paramKey, v)
......@@ -457,5 +458,5 @@ func mergeNormalParam(mergedUrl URL, referenceUrl *URL, methodConfigMergeFcn []f
}
})
}
return methodConfigMergeFcn
}
......@@ -222,11 +222,13 @@ func TestMergeUrl(t *testing.T) {
referenceUrlParams.Set(constant.CLUSTER_KEY, "random")
referenceUrlParams.Set(constant.RETRIES_KEY, "1")
referenceUrlParams.Set("test3", "1")
referenceUrlParams.Set("methods.testMethod."+constant.RETRIES_KEY, "1")
serviceUrlParams := url.Values{}
serviceUrlParams.Set("test2", "1")
serviceUrlParams.Set(constant.CLUSTER_KEY, "roundrobin")
serviceUrlParams.Set(constant.RETRIES_KEY, "2")
referenceUrl, _ := NewURL(context.TODO(), "mock1://127.0.0.1:1111", WithParams(referenceUrlParams))
serviceUrlParams.Set("methods.testMethod."+constant.RETRIES_KEY, "2")
referenceUrl, _ := NewURL(context.TODO(), "mock1://127.0.0.1:1111", WithParams(referenceUrlParams), WithMethods([]string{"testMethod"}))
serviceUrl, _ := NewURL(context.TODO(), "mock2://127.0.0.1:20000", WithParams(serviceUrlParams))
mergedUrl := MergeUrl(serviceUrl, &referenceUrl)
......@@ -234,4 +236,5 @@ func TestMergeUrl(t *testing.T) {
assert.Equal(t, "1", mergedUrl.GetParam("test2", ""))
assert.Equal(t, "1", mergedUrl.GetParam("test3", ""))
assert.Equal(t, "1", mergedUrl.GetParam(constant.RETRIES_KEY, ""))
assert.Equal(t, "1", mergedUrl.GetParam("methods.testMethod."+constant.RETRIES_KEY, ""))
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment