Skip to content

Commit

Permalink
Add:retries mergeUrl
Browse files Browse the repository at this point in the history
  • Loading branch information
hxmhlt committed Sep 10, 2019
1 parent 359bdab commit bd8323b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 19 deletions.
35 changes: 16 additions & 19 deletions common/url.go
Original file line number Diff line number Diff line change
Expand Up @@ -427,25 +427,8 @@ func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
mergedUrl.Params.Set(k, v[0])
}
}
//loadBalance strategy config
if v := referenceUrl.Params.Get(constant.LOADBALANCE_KEY); v != "" {
mergedUrl.Params.Set(constant.LOADBALANCE_KEY, v)
}
methodConfigMergeFcn = append(methodConfigMergeFcn, func(method string) {
if v := referenceUrl.Params.Get(method + "." + constant.LOADBALANCE_KEY); v != "" {
mergedUrl.Params.Set(method+"."+constant.LOADBALANCE_KEY, v)
}
})

//cluster strategy config
if v := referenceUrl.Params.Get(constant.CLUSTER_KEY); v != "" {
mergedUrl.Params.Set(constant.CLUSTER_KEY, v)
}
methodConfigMergeFcn = append(methodConfigMergeFcn, func(method string) {
if v := referenceUrl.Params.Get(method + "." + constant.CLUSTER_KEY); v != "" {
mergedUrl.Params.Set(method+"."+constant.CLUSTER_KEY, v)
}
})
//loadBalance,cluster,retries strategy config
mergeNormalParam(mergedUrl, referenceUrl, methodConfigMergeFcn, []string{constant.LOADBALANCE_KEY, constant.CLUSTER_KEY, constant.RETRIES_KEY})

//remote timestamp
if v := serviceUrl.Params.Get(constant.TIMESTAMP_KEY); v != "" {
Expand All @@ -462,3 +445,17 @@ func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {

return mergedUrl
}

func mergeNormalParam(mergedUrl URL, referenceUrl *URL, methodConfigMergeFcn []func(method string), paramKeys []string) {
for _, paramKey := range paramKeys {
if v := referenceUrl.Params.Get(paramKey); v != "" {
mergedUrl.Params.Set(paramKey, v)
}
methodConfigMergeFcn = append(methodConfigMergeFcn, func(method string) {
if v := referenceUrl.Params.Get(method + "." + paramKey); v != "" {
mergedUrl.Params.Set(method+"."+paramKey, v)
}
})
}

}
3 changes: 3 additions & 0 deletions common/url_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,15 +220,18 @@ func TestURL_GetMethodParam(t *testing.T) {
func TestMergeUrl(t *testing.T) {
referenceUrlParams := url.Values{}
referenceUrlParams.Set(constant.CLUSTER_KEY, "random")
referenceUrlParams.Set(constant.RETRIES_KEY, "1")
referenceUrlParams.Set("test3", "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))
serviceUrl, _ := NewURL(context.TODO(), "mock2://127.0.0.1:20000", WithParams(serviceUrlParams))

mergedUrl := MergeUrl(serviceUrl, &referenceUrl)
assert.Equal(t, "random", mergedUrl.GetParam(constant.CLUSTER_KEY, ""))
assert.Equal(t, "1", mergedUrl.GetParam("test2", ""))
assert.Equal(t, "1", mergedUrl.GetParam("test3", ""))
assert.Equal(t, "1", mergedUrl.GetParam(constant.RETRIES_KEY, ""))
}

0 comments on commit bd8323b

Please sign in to comment.