Browse Source

style(mqe): instance dependencies in ctor func

bergquist 9 years ago
parent
commit
69d6316512

+ 4 - 0
pkg/tsdb/mqe/model_parser.go

@@ -6,6 +6,10 @@ import (
 	"github.com/grafana/grafana/pkg/tsdb"
 	"github.com/grafana/grafana/pkg/tsdb"
 )
 )
 
 
+func NewQueryParser() *MQEQueryParser {
+	return &MQEQueryParser{}
+}
+
 type MQEQueryParser struct{}
 type MQEQueryParser struct{}
 
 
 func (qp *MQEQueryParser) Parse(model *simplejson.Json, dsInfo *models.DataSource, queryContext *tsdb.QueryContext) (*MQEQuery, error) {
 func (qp *MQEQueryParser) Parse(model *simplejson.Json, dsInfo *models.DataSource, queryContext *tsdb.QueryContext) (*MQEQuery, error) {

+ 16 - 17
pkg/tsdb/mqe/mqe.go

@@ -23,9 +23,11 @@ import (
 
 
 type MQEExecutor struct {
 type MQEExecutor struct {
 	*models.DataSource
 	*models.DataSource
-	QueryParser    *MQEQueryParser
-	ResponseParser *MQEResponseParser
-	HttpClient     *http.Client
+	queryParser    *MQEQueryParser
+	responseParser *MQEResponseParser
+	httpClient     *http.Client
+	log            log.Logger
+	tokenClient    *TokenClient
 }
 }
 
 
 func NewMQEExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) {
 func NewMQEExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) {
@@ -36,18 +38,15 @@ func NewMQEExecutor(dsInfo *models.DataSource) (tsdb.Executor, error) {
 
 
 	return &MQEExecutor{
 	return &MQEExecutor{
 		DataSource:     dsInfo,
 		DataSource:     dsInfo,
-		QueryParser:    &MQEQueryParser{},
-		ResponseParser: &MQEResponseParser{},
-		HttpClient:     httpclient,
+		httpClient:     httpclient,
+		log:            log.New("tsdb.mqe"),
+		queryParser:    NewQueryParser(),
+		responseParser: NewResponseParser(),
+		tokenClient:    NewTokenClient(dsInfo),
 	}, nil
 	}, nil
 }
 }
 
 
-var (
-	glog log.Logger
-)
-
 func init() {
 func init() {
-	glog = log.New("tsdb.mqe")
 	tsdb.RegisterExecutor("mqe-datasource", NewMQEExecutor)
 	tsdb.RegisterExecutor("mqe-datasource", NewMQEExecutor)
 }
 }
 
 
@@ -59,14 +58,14 @@ type QueryToSend struct {
 func (e *MQEExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice, queryContext *tsdb.QueryContext) *tsdb.BatchResult {
 func (e *MQEExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice, queryContext *tsdb.QueryContext) *tsdb.BatchResult {
 	result := &tsdb.BatchResult{}
 	result := &tsdb.BatchResult{}
 
 
-	availableSeries, err := NewTokenClient(e.HttpClient).GetTokenData(ctx, e.DataSource)
+	availableSeries, err := e.tokenClient.GetTokenData(ctx)
 	if err != nil {
 	if err != nil {
 		return result.WithError(err)
 		return result.WithError(err)
 	}
 	}
 
 
 	var mqeQueries []*MQEQuery
 	var mqeQueries []*MQEQuery
 	for _, v := range queries {
 	for _, v := range queries {
-		q, err := e.QueryParser.Parse(v.Model, e.DataSource, queryContext)
+		q, err := e.queryParser.Parse(v.Model, e.DataSource, queryContext)
 		if err != nil {
 		if err != nil {
 			return result.WithError(err)
 			return result.WithError(err)
 		}
 		}
@@ -85,16 +84,16 @@ func (e *MQEExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice, quer
 
 
 	queryResult := &tsdb.QueryResult{}
 	queryResult := &tsdb.QueryResult{}
 	for _, v := range rawQueries {
 	for _, v := range rawQueries {
-		glog.Info("Mqe executor", "query", v)
+		e.log.Info("Mqe executor", "query", v)
 
 
 		req, err := e.createRequest(v.RawQuery)
 		req, err := e.createRequest(v.RawQuery)
 
 
-		resp, err := ctxhttp.Do(ctx, e.HttpClient, req)
+		resp, err := ctxhttp.Do(ctx, e.httpClient, req)
 		if err != nil {
 		if err != nil {
 			return result.WithError(err)
 			return result.WithError(err)
 		}
 		}
 
 
-		series, err := e.ResponseParser.Parse(resp, v.QueryRef)
+		series, err := e.responseParser.Parse(resp, v.QueryRef)
 		if err != nil {
 		if err != nil {
 			return result.WithError(err)
 			return result.WithError(err)
 		}
 		}
@@ -132,6 +131,6 @@ func (e *MQEExecutor) createRequest(query string) (*http.Request, error) {
 		req.SetBasicAuth(e.BasicAuthUser, e.BasicAuthPassword)
 		req.SetBasicAuth(e.BasicAuthUser, e.BasicAuthPassword)
 	}
 	}
 
 
-	glog.Debug("Mqe request", "url", req.URL.String())
+	e.log.Debug("Mqe request", "url", req.URL.String())
 	return req, nil
 	return req, nil
 }
 }

+ 12 - 8
pkg/tsdb/mqe/token_client.go

@@ -17,12 +17,16 @@ import (
 
 
 type TokenClient struct {
 type TokenClient struct {
 	tlog       log.Logger
 	tlog       log.Logger
+	Datasource *models.DataSource
 	HttpClient *http.Client
 	HttpClient *http.Client
 }
 }
 
 
-func NewTokenClient(httpClient *http.Client) *TokenClient {
+func NewTokenClient(datasource *models.DataSource) *TokenClient {
+	httpClient, _ := datasource.GetHttpClient()
+
 	return &TokenClient{
 	return &TokenClient{
 		tlog:       log.New("tsdb.mqe.tokenclient"),
 		tlog:       log.New("tsdb.mqe.tokenclient"),
+		Datasource: datasource,
 		HttpClient: httpClient,
 		HttpClient: httpClient,
 	}
 	}
 }
 }
@@ -30,22 +34,22 @@ func NewTokenClient(httpClient *http.Client) *TokenClient {
 var cache map[int64]*TokenBody = map[int64]*TokenBody{}
 var cache map[int64]*TokenBody = map[int64]*TokenBody{}
 
 
 //Replace this stupid cache with internal cache from grafana master before merging
 //Replace this stupid cache with internal cache from grafana master before merging
-func (client *TokenClient) GetTokenData(ctx context.Context, datasource *models.DataSource) (*TokenBody, error) {
-	_, excist := cache[datasource.Id]
+func (client *TokenClient) GetTokenData(ctx context.Context) (*TokenBody, error) {
+	_, excist := cache[client.Datasource.Id]
 	if !excist {
 	if !excist {
-		b, err := client.RequestTokenData(ctx, datasource)
+		b, err := client.RequestTokenData(ctx)
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err
 		}
 		}
 
 
-		cache[datasource.Id] = b
+		cache[client.Datasource.Id] = b
 	}
 	}
 
 
-	return cache[datasource.Id], nil
+	return cache[client.Datasource.Id], nil
 }
 }
 
 
-func (client *TokenClient) RequestTokenData(ctx context.Context, datasource *models.DataSource) (*TokenBody, error) {
-	u, _ := url.Parse(datasource.Url)
+func (client *TokenClient) RequestTokenData(ctx context.Context) (*TokenBody, error) {
+	u, _ := url.Parse(client.Datasource.Url)
 	u.Path = path.Join(u.Path, "token")
 	u.Path = path.Join(u.Path, "token")
 
 
 	req, err := http.NewRequest(http.MethodGet, u.String(), nil)
 	req, err := http.NewRequest(http.MethodGet, u.String(), nil)

+ 2 - 4
pkg/tsdb/mqe/token_client_test.go

@@ -4,8 +4,6 @@ import (
 	"context"
 	"context"
 	"testing"
 	"testing"
 
 
-	"net/http"
-
 	"github.com/grafana/grafana/pkg/components/simplejson"
 	"github.com/grafana/grafana/pkg/components/simplejson"
 	"github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/models"
 	. "github.com/smartystreets/goconvey/convey"
 	. "github.com/smartystreets/goconvey/convey"
@@ -18,9 +16,9 @@ func TestTokenClient(t *testing.T) {
 			Url:      "",
 			Url:      "",
 		}
 		}
 
 
-		client := NewTokenClient(http.DefaultClient)
+		client := NewTokenClient(dsInfo)
 
 
-		body, err := client.RequestTokenData(context.TODO(), dsInfo)
+		body, err := client.RequestTokenData(context.TODO())
 
 
 		So(err, ShouldBeNil)
 		So(err, ShouldBeNil)
 		//So(len(body.Functions), ShouldBeGreaterThan, 1)
 		//So(len(body.Functions), ShouldBeGreaterThan, 1)