From 054d85e6c46c013b19b67098bb735832f1931f94 Mon Sep 17 00:00:00 2001 From: rick Date: Mon, 1 Feb 2021 15:07:40 +0800 Subject: [PATCH 1/2] Fix the wrong count of total Pipeline Run number Signed-off-by: rick --- .../client/devops/jenkins/pure_request.go | 5 +- pkg/simple/client/devops/jenkins/utils.go | 25 +++----- .../client/devops/jenkins/utils_test.go | 57 +++++++++++++++++++ 3 files changed, 67 insertions(+), 20 deletions(-) create mode 100644 pkg/simple/client/devops/jenkins/utils_test.go diff --git a/pkg/simple/client/devops/jenkins/pure_request.go b/pkg/simple/client/devops/jenkins/pure_request.go index 89a28a871..78837d570 100644 --- a/pkg/simple/client/devops/jenkins/pure_request.go +++ b/pkg/simple/client/devops/jenkins/pure_request.go @@ -34,12 +34,13 @@ func (j *Jenkins) SendPureRequest(path string, httpParameters *devops.HttpParame // provider request header to call jenkins api. // transfer bearer token to basic token for inner Oauth and Jeknins func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *devops.HttpParameters) ([]byte, http.Header, error) { - Url, err := url.Parse(j.Server + path) + apiURL, err := url.Parse(j.Server + path) if err != nil { klog.Error(err) return nil, nil, err } + apiURL.RawQuery = httpParameters.Url.RawQuery client := &http.Client{Timeout: 30 * time.Second} header := httpParameters.Header @@ -47,7 +48,7 @@ func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *dev newRequest := &http.Request{ Method: httpParameters.Method, - URL: Url, + URL: apiURL, Header: header, Body: httpParameters.Body, Form: httpParameters.Form, diff --git a/pkg/simple/client/devops/jenkins/utils.go b/pkg/simple/client/devops/jenkins/utils.go index 10ea4c7e8..1987f778b 100644 --- a/pkg/simple/client/devops/jenkins/utils.go +++ b/pkg/simple/client/devops/jenkins/utils.go @@ -74,10 +74,9 @@ func getRespBody(resp *http.Response) ([]byte, error) { // ParseJenkinsQuery Parse the special query of jenkins. // ParseQuery in the standard library makes the query not re-encode -func ParseJenkinsQuery(query string) (url.Values, error) { - m := make(url.Values) - err := error(nil) - for query != "" { +func ParseJenkinsQuery(query string) (result url.Values, err error) { + result = make(url.Values) + for query != "" && err == nil { key := query if i := strings.IndexAny(key, "&"); i >= 0 { key, query = key[:i], key[i+1:] @@ -91,23 +90,13 @@ func ParseJenkinsQuery(query string) (url.Values, error) { if i := strings.Index(key, "="); i >= 0 { key, value = key[:i], key[i+1:] } - key, err1 := url.QueryUnescape(key) - if err1 != nil { - if err == nil { - err = err1 + if key, err = url.QueryUnescape(key); err == nil { + if value, err = url.QueryUnescape(value); err == nil { + result[key] = append(result[key], value) } - continue } - value, err1 = url.QueryUnescape(value) - if err1 != nil { - if err == nil { - err = err1 - } - continue - } - m[key] = append(m[key], value) } - return m, err + return } type JenkinsBlueTime time.Time diff --git a/pkg/simple/client/devops/jenkins/utils_test.go b/pkg/simple/client/devops/jenkins/utils_test.go new file mode 100644 index 000000000..71769173a --- /dev/null +++ b/pkg/simple/client/devops/jenkins/utils_test.go @@ -0,0 +1,57 @@ +package jenkins + +import ( + "github.com/stretchr/testify/assert" + "net/url" + "testing" +) + +func TestParseJenkinsQuery(t *testing.T) { + table := []testData{ + { + param: "start=0&limit=10&branch=master", + expected: url.Values{ + "start": []string{"0"}, + "limit": []string{"10"}, + "branch": []string{"master"}, + }, err: false, + }, + { + param: "branch=master", expected: url.Values{ + "branch": []string{"master"}, + }, err: false, + }, + { + param: "&branch=master", expected: url.Values{ + "branch": []string{"master"}, + }, err: false, + }, + { + param: "branch=master&", expected: url.Values{ + "branch": []string{"master"}, + }, err: false, + }, + { + param: "branch=%gg", expected: url.Values{}, err: true, + }, + { + param: "%gg=fake", expected: url.Values{}, err: true, + }, + } + + for index, item := range table { + result, err := parseJenkinsQuery(item.param) + if item.err { + assert.NotNil(t, err, "index: [%d], unexpected error happen %v", index, err) + } else { + assert.Nil(t, err, "index: [%d], unexpected error happen %v", index, err) + } + assert.Equal(t, item.expected, result, "index: [%d], result do not match with the expect value", index) + } +} + +type testData struct { + param string + expected interface{} + err bool +} From a5ec7b4b00e939cc0d259d63a56d5861642504f7 Mon Sep 17 00:00:00 2001 From: rick <1450685+LinuxSuRen@users.noreply.github.com> Date: Sat, 20 Feb 2021 10:15:03 +0800 Subject: [PATCH 2/2] Set a explicit loggger level in func SendPureRequestWithHeaderResp Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com> --- pkg/simple/client/devops/jenkins/pure_request.go | 2 +- pkg/simple/client/devops/jenkins/utils_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/simple/client/devops/jenkins/pure_request.go b/pkg/simple/client/devops/jenkins/pure_request.go index 78837d570..875cf67b7 100644 --- a/pkg/simple/client/devops/jenkins/pure_request.go +++ b/pkg/simple/client/devops/jenkins/pure_request.go @@ -36,7 +36,7 @@ func (j *Jenkins) SendPureRequest(path string, httpParameters *devops.HttpParame func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *devops.HttpParameters) ([]byte, http.Header, error) { apiURL, err := url.Parse(j.Server + path) if err != nil { - klog.Error(err) + klog.V(8).Info(err) return nil, nil, err } diff --git a/pkg/simple/client/devops/jenkins/utils_test.go b/pkg/simple/client/devops/jenkins/utils_test.go index 71769173a..e29379d68 100644 --- a/pkg/simple/client/devops/jenkins/utils_test.go +++ b/pkg/simple/client/devops/jenkins/utils_test.go @@ -40,7 +40,7 @@ func TestParseJenkinsQuery(t *testing.T) { } for index, item := range table { - result, err := parseJenkinsQuery(item.param) + result, err := ParseJenkinsQuery(item.param) if item.err { assert.NotNil(t, err, "index: [%d], unexpected error happen %v", index, err) } else {