PublicDashboards: Make mixed datasource calls concurrently (#56421)

PublicDashboards: Make mixed datasource calls concurrently
This commit is contained in:
juanicabanas
2022-10-05 18:45:17 -03:00
committed by GitHub
parent d9cc292066
commit 69c49f6ba2
2 changed files with 63 additions and 9 deletions
+41 -1
View File
@@ -112,6 +112,43 @@ func TestQueryDataMultipleSources(t *testing.T) {
require.NoError(t, err)
})
t.Run("error is returned when one of the queries fails", func(t *testing.T) {
tc := setup(t)
query1, _ := simplejson.NewJson([]byte(`
{
"datasource": {
"type": "mysql",
"uid": "ds1"
}
}
`))
query2, _ := simplejson.NewJson([]byte(`
{
"datasource": {
"type": "prometheus",
"uid": "ds2"
},
"queryType": "FAIL"
}
`))
queries := []*simplejson.Json{query1, query2}
reqDTO := dtos.MetricRequest{
From: "2022-01-01",
To: "2022-01-02",
Queries: queries,
Debug: false,
PublicDashboardAccessToken: "abc123",
HTTPRequest: nil,
}
_, err := tc.queryService.QueryDataMultipleSources(context.Background(), nil, true, reqDTO, false)
require.Error(t, err)
})
}
func TestQueryData(t *testing.T) {
@@ -255,7 +292,6 @@ func (c *fakeDataSourceCache) GetDatasourceByUID(ctx context.Context, datasource
type fakePluginClient struct {
plugins.Client
req *backend.QueryDataRequest
}
@@ -267,5 +303,9 @@ func (c *fakePluginClient) QueryData(ctx context.Context, req *backend.QueryData
return nil, errors.New("cant query an expression datasource")
}
if req.Queries[0].QueryType == "FAIL" {
return nil, errors.New("plugin client failed")
}
return &backend.QueryDataResponse{Responses: make(backend.Responses)}, nil
}