Skip to content

Commit 3e4b7ad

Browse files
author
humingcheng
committed
Use chassis httpclient
1 parent 3af6df2 commit 3e4b7ad

File tree

3 files changed

+35
-33
lines changed

3 files changed

+35
-33
lines changed

csemonitor.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ func NewReporter(r metrics.Registry, addr string, header http.Header, interval t
5353
func (reporter *Reporter) Run() {
5454
var count int
5555
ticker := time.Tick(reporter.Interval)
56-
metricsAPI := NewCseMonitorClient(reporter.Header, reporter.CseMonitorAddr, reporter.TLSConfig, "v2")
56+
metricsAPI, err := NewCseMonitorClient(reporter.Header, reporter.CseMonitorAddr, reporter.TLSConfig, "v2")
57+
if err != nil {
58+
lager.Logger.Errorf(err, "Get cse monitor client failed")
59+
}
5760
IsMonitoringConnected = true
5861
isConnctedForFirstTime := false
5962

csemonitor_test.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ package metricsink
33
import (
44
"crypto/tls"
55
"fmt"
6-
"github.com/go-chassis/go-chassis/core/config"
7-
"github.com/go-chassis/go-chassis/core/config/model"
8-
"github.com/go-chassis/go-chassis/core/lager"
9-
"github.com/rcrowley/go-metrics"
10-
"github.com/stretchr/testify/assert"
116
"gopkg.in/yaml.v2"
127
"net/http"
138
"net/http/httptest"
149
"testing"
1510
"time"
11+
12+
"github.com/go-chassis/go-chassis/core/config"
13+
"github.com/go-chassis/go-chassis/core/config/model"
14+
"github.com/go-chassis/go-chassis/core/lager"
15+
"github.com/rcrowley/go-metrics"
16+
"github.com/stretchr/testify/assert"
1617
)
1718

1819
var globalConf = `
@@ -91,11 +92,12 @@ func TestCseMonitorClient_PostMetrics(t *testing.T) {
9192
assert := assert.New(t)
9293
config.SelfServiceName = "testService"
9394
reporter := NewReporter(metrics.DefaultRegistry, "127.0.0.1:8080", http.Header{"Content-Type": []string{"application/json"}}, time.Second, &tls.Config{}, "default", "0.0.1", "Server", "")
94-
cseMonitClient := NewCseMonitorClient(http.Header{"Content-Type": []string{"application/json"}}, "http://127.0.0.1:9098", &tls.Config{}, "v2")
95+
cseMonitClient, err := NewCseMonitorClient(http.Header{"Content-Type": []string{"application/json"}}, "http://127.0.0.1:9098", &tls.Config{}, "v2")
96+
assert.NoError(err)
9597
assert.Equal(cseMonitClient.URL, "http://127.0.0.1:9098")
9698
assert.Equal(cseMonitClient.Header, http.Header{"Content-Type": []string{"application/json"}})
9799
config.GlobalDefinition.Cse.Monitor.Client.Enable = false
98-
err := cseMonitClient.PostMetrics(reporter.getData("default", "0.0.1", "Server", "", "", ""))
100+
err = cseMonitClient.PostMetrics(reporter.getData("default", "0.0.1", "Server", "", "", ""))
99101
assert.NotNil(err)
100102

101103
config.GlobalDefinition.Cse.Monitor.Client.Enable = true
@@ -109,7 +111,8 @@ func TestCseMonitorClient_PostMetrics(t *testing.T) {
109111
fmt.Fprintln(w, "Hello client")
110112
}))
111113
defer ts.Close()
112-
cseMonitClient = NewCseMonitorClient(http.Header{"Content-Type": []string{"application/json"}}, ts.URL, &tls.Config{}, "v2")
114+
cseMonitClient, err = NewCseMonitorClient(http.Header{"Content-Type": []string{"application/json"}}, ts.URL, &tls.Config{}, "v2")
115+
assert.NoError(err)
113116
err = cseMonitClient.PostMetrics(MonitorData{
114117
Name: "testService",
115118
Instance: "BLRY23283",
@@ -120,7 +123,8 @@ func TestCseMonitorClient_PostMetrics(t *testing.T) {
120123
fmt.Fprintln(w, "Hello client")
121124
}))
122125
defer ts1.Close()
123-
cseMonitClient = NewCseMonitorClient(http.Header{"Content-Type": []string{"application/json"}}, ts1.URL, &tls.Config{}, "v2")
126+
cseMonitClient, err = NewCseMonitorClient(http.Header{"Content-Type": []string{"application/json"}}, ts1.URL, &tls.Config{}, "v2")
127+
assert.Nil(err)
124128
err = cseMonitClient.PostMetrics(MonitorData{
125129
Name: "testService",
126130
Instance: "BLRY23283",

monitoring.go

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package metricsink
22

33
import (
4-
"bytes"
54
"crypto/tls"
65
"encoding/json"
7-
"errors"
86
"fmt"
9-
"github.com/go-chassis/auth"
107
"io/ioutil"
118
"net"
129
"net/http"
1310
"os"
1411
"time"
12+
13+
"github.com/go-chassis/go-chassis/pkg/httpclient"
1514
)
1615

1716
// constant for the cse-collector
@@ -32,11 +31,11 @@ var (
3231
type CseMonitorClient struct {
3332
Header http.Header
3433
URL string
35-
Client *http.Client
34+
Client *httpclient.URLClient
3635
}
3736

3837
// NewCseMonitorClient creates an new client for monitoring
39-
func NewCseMonitorClient(header http.Header, url string, tlsConfig *tls.Config, version string) *CseMonitorClient {
38+
func NewCseMonitorClient(header http.Header, url string, tlsConfig *tls.Config, version string) (*CseMonitorClient, error) {
4039
var apiVersion string
4140

4241
switch version {
@@ -53,14 +52,19 @@ func NewCseMonitorClient(header http.Header, url string, tlsConfig *tls.Config,
5352
}
5453
//Update the API Base Path based on the Version
5554
updateAPIPath(apiVersion)
55+
56+
c, err := httpclient.GetURLClient(&httpclient.URLClientOption{
57+
TLSConfig: tlsConfig,
58+
ResponseHeaderTimeout: DefaultTimeout,
59+
})
60+
if err != nil {
61+
return nil, err
62+
}
5663
return &CseMonitorClient{
5764
Header: header,
5865
URL: url,
59-
Client: &http.Client{
60-
Transport: TransportFor(tlsConfig),
61-
Timeout: DefaultTimeout,
62-
},
63-
}
66+
Client: c,
67+
}, nil
6468
}
6569

6670
// updateAPIPath Update the Base PATH and HEADERS Based on the version of MetricServer used.
@@ -86,33 +90,24 @@ func updateAPIPath(apiVersion string) {
8690

8791
// PostMetrics is a functions which sends the monintoring data to monitoring Server
8892
func (cseMonitorClient *CseMonitorClient) PostMetrics(monitorData MonitorData) (err error) {
89-
9093
var (
9194
js []byte
92-
req *http.Request
9395
resp *http.Response
9496
postURL string
97+
h http.Header
9598
)
9699

97100
if js, err = json.Marshal(monitorData); err != nil {
98101
return
99102
}
100103

101104
postURL = cseMonitorClient.URL + MetricServerPath + "?service=" + monitorData.Name
102-
103-
if req, err = http.NewRequest("POST", postURL, bytes.NewBuffer(js)); err != nil {
104-
return
105-
}
106-
req.Header = make(http.Header)
105+
h = make(http.Header)
107106
for k, v := range cseMonitorClient.Header {
108-
req.Header[k] = v
109-
}
110-
111-
if err = auth.AddAuthInfo(req); err != nil {
112-
return errors.New("Add auth info failed, err: " + err.Error())
107+
h[k] = v
113108
}
114109

115-
if resp, err = cseMonitorClient.Client.Do(req); err != nil {
110+
if resp, err = cseMonitorClient.Client.HTTPDo(http.MethodPost, postURL, h, js); err != nil {
116111
return
117112
}
118113
defer resp.Body.Close()

0 commit comments

Comments
 (0)