Skip to content

Commit 69d6316

Browse files
committed
style(mqe): instance dependencies in ctor func
1 parent 549c3ab commit 69d6316

File tree

4 files changed

+34
-29
lines changed

4 files changed

+34
-29
lines changed

pkg/tsdb/mqe/model_parser.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import (
66
"github.com/grafana/grafana/pkg/tsdb"
77
)
88

9+
func NewQueryParser() *MQEQueryParser {
10+
return &MQEQueryParser{}
11+
}
12+
913
type MQEQueryParser struct{}
1014

1115
func (qp *MQEQueryParser) Parse(model *simplejson.Json, dsInfo *models.DataSource, queryContext *tsdb.QueryContext) (*MQEQuery, error) {

pkg/tsdb/mqe/mqe.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ import (
2323

2424
type MQEExecutor struct {
2525
*models.DataSource
26-
QueryParser *MQEQueryParser
27-
ResponseParser *MQEResponseParser
28-
HttpClient *http.Client
26+
queryParser *MQEQueryParser
27+
responseParser *MQEResponseParser
28+
httpClient *http.Client
29+
log log.Logger
30+
tokenClient *TokenClient
2931
}
3032

3133
func NewMQEExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) {
@@ -36,18 +38,15 @@ func NewMQEExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) {
3638

3739
return &MQEExecutor{
3840
DataSource: dsInfo,
39-
QueryParser: &MQEQueryParser{},
40-
ResponseParser: &MQEResponseParser{},
41-
HttpClient: httpclient,
41+
httpClient: httpclient,
42+
log: log.New("tsdb.mqe"),
43+
queryParser: NewQueryParser(),
44+
responseParser: NewResponseParser(),
45+
tokenClient: NewTokenClient(dsInfo),
4246
}, nil
4347
}
4448

45-
var (
46-
glog log.Logger
47-
)
48-
4949
func init() {
50-
glog = log.New("tsdb.mqe")
5150
tsdb.RegisterExecutor("mqe-datasource", NewMQEExecutor)
5251
}
5352

@@ -59,14 +58,14 @@ type QueryToSend struct {
5958
func (e *MQEExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice, queryContext *tsdb.QueryContext) *tsdb.BatchResult {
6059
result := &tsdb.BatchResult{}
6160

62-
availableSeries, err := NewTokenClient(e.HttpClient).GetTokenData(ctx, e.DataSource)
61+
availableSeries, err := e.tokenClient.GetTokenData(ctx)
6362
if err != nil {
6463
return result.WithError(err)
6564
}
6665

6766
var mqeQueries []*MQEQuery
6867
for _, v := range queries {
69-
q, err := e.QueryParser.Parse(v.Model, e.DataSource, queryContext)
68+
q, err := e.queryParser.Parse(v.Model, e.DataSource, queryContext)
7069
if err != nil {
7170
return result.WithError(err)
7271
}
@@ -85,16 +84,16 @@ func (e *MQEExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice, quer
8584

8685
queryResult := &tsdb.QueryResult{}
8786
for _, v := range rawQueries {
88-
glog.Info("Mqe executor", "query", v)
87+
e.log.Info("Mqe executor", "query", v)
8988

9089
req, err := e.createRequest(v.RawQuery)
9190

92-
resp, err := ctxhttp.Do(ctx, e.HttpClient, req)
91+
resp, err := ctxhttp.Do(ctx, e.httpClient, req)
9392
if err != nil {
9493
return result.WithError(err)
9594
}
9695

97-
series, err := e.ResponseParser.Parse(resp, v.QueryRef)
96+
series, err := e.responseParser.Parse(resp, v.QueryRef)
9897
if err != nil {
9998
return result.WithError(err)
10099
}
@@ -132,6 +131,6 @@ func (e *MQEExecutor) createRequest(query string) (*http.Request, error) {
132131
req.SetBasicAuth(e.BasicAuthUser, e.BasicAuthPassword)
133132
}
134133

135-
glog.Debug("Mqe request", "url", req.URL.String())
134+
e.log.Debug("Mqe request", "url", req.URL.String())
136135
return req, nil
137136
}

pkg/tsdb/mqe/token_client.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,35 +17,39 @@ import (
1717

1818
type TokenClient struct {
1919
tlog log.Logger
20+
Datasource *models.DataSource
2021
HttpClient *http.Client
2122
}
2223

23-
func NewTokenClient(httpClient *http.Client) *TokenClient {
24+
func NewTokenClient(datasource *models.DataSource) *TokenClient {
25+
httpClient, _ := datasource.GetHttpClient()
26+
2427
return &TokenClient{
2528
tlog: log.New("tsdb.mqe.tokenclient"),
29+
Datasource: datasource,
2630
HttpClient: httpClient,
2731
}
2832
}
2933

3034
var cache map[int64]*TokenBody = map[int64]*TokenBody{}
3135

3236
//Replace this stupid cache with internal cache from grafana master before merging
33-
func (client *TokenClient) GetTokenData(ctx context.Context, datasource *models.DataSource) (*TokenBody, error) {
34-
_, excist := cache[datasource.Id]
37+
func (client *TokenClient) GetTokenData(ctx context.Context) (*TokenBody, error) {
38+
_, excist := cache[client.Datasource.Id]
3539
if !excist {
36-
b, err := client.RequestTokenData(ctx, datasource)
40+
b, err := client.RequestTokenData(ctx)
3741
if err != nil {
3842
return nil, err
3943
}
4044

41-
cache[datasource.Id] = b
45+
cache[client.Datasource.Id] = b
4246
}
4347

44-
return cache[datasource.Id], nil
48+
return cache[client.Datasource.Id], nil
4549
}
4650

47-
func (client *TokenClient) RequestTokenData(ctx context.Context, datasource *models.DataSource) (*TokenBody, error) {
48-
u, _ := url.Parse(datasource.Url)
51+
func (client *TokenClient) RequestTokenData(ctx context.Context) (*TokenBody, error) {
52+
u, _ := url.Parse(client.Datasource.Url)
4953
u.Path = path.Join(u.Path, "token")
5054

5155
req, err := http.NewRequest(http.MethodGet, u.String(), nil)

pkg/tsdb/mqe/token_client_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import (
44
"context"
55
"testing"
66

7-
"net/http"
8-
97
"github.com/grafana/grafana/pkg/components/simplejson"
108
"github.com/grafana/grafana/pkg/models"
119
. "github.com/smartystreets/goconvey/convey"
@@ -18,9 +16,9 @@ func TestTokenClient(t *testing.T) {
1816
Url: "",
1917
}
2018

21-
client := NewTokenClient(http.DefaultClient)
19+
client := NewTokenClient(dsInfo)
2220

23-
body, err := client.RequestTokenData(context.TODO(), dsInfo)
21+
body, err := client.RequestTokenData(context.TODO())
2422

2523
So(err, ShouldBeNil)
2624
//So(len(body.Functions), ShouldBeGreaterThan, 1)

0 commit comments

Comments
 (0)