mirror of
https://github.com/grafana/grafana.git
synced 2025-01-13 09:32:12 -06:00
6750e881e3
* Add search index table * Stab a test * Add more tests * Add basic index * Switch to UID and add a test for the index * Improve tests coverage * Remove redundant whitespaces * Load all data source APIs when query history is loaded * Fix column type * Fix migration * Clean-up the index * Fix linting * Fix migrations * Fix migrations * Fix migrations * Rename index to details
62 lines
4.2 KiB
Go
62 lines
4.2 KiB
Go
package queryhistory
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana/pkg/components/simplejson"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var mixedQuery []byte = []byte(`[{"alias":"","bucketAggs":[{"field":"@timestamp","id":"2","settings":{"interval":"auto"},"type":"date_histogram"}],"datasource":{"type":"elasticsearch","uid":"gdev-elasticsearch"},"key":"Q-15d3139f-a942-491c-8fb6-46982475ab07-0","metrics":[{"id":"1","type":"count"}],"query":"test","refId":"A","timeField":"@timestamp"},{"datasource":{"type":"loki","uid":"gdev-loki"},"editorMode":"code","expr":"test","key":"Q-67b4a119-37dd-4276-beac-4ec76b089f10-0","queryType":"range","refId":"B"}]`)
|
|
var mixedQueryWithDuplicates = []byte(`[{"alias":"","bucketAggs":[{"field":"@timestamp","id":"2","settings":{"interval":"auto"},"type":"date_histogram"}],"datasource":{"type":"elasticsearch","uid":"gdev-elasticsearch"},"key":"Q-15d3139f-a942-491c-8fb6-46982475ab07-0","metrics":[{"id":"1","type":"count"}],"query":"test","refId":"A","timeField":"@timestamp"},{"datasource":{"type":"loki","uid":"gdev-loki"},"editorMode":"code","expr":"test","key":"Q-67b4a119-37dd-4276-beac-4ec76b089f10-0","queryType":"range","refId":"B"},{"datasource":{"type":"loki","uid":"gdev-loki"},"editorMode":"code","expr":"test2","key":"Q-28825351-32c3-4c46-98b4-b8cfffae0b42-2","queryType":"range","refId":"C"}]`)
|
|
var nonMixedQuery = []byte(`[{"datasource":{"type":"loki","uid":"gdev-loki"},"editorMode":"code","expr":"test","key":"Q-95a6d6ef-7a5e-4e2a-a212-f1f2df4a349a-0","queryType":"range","refId":"A"},{"datasource":{"type":"loki","uid":"gdev-loki"},"editorMode":"code","expr":"test 2","key":"Q-b838fc6b-bcd7-4538-962a-d35209a8783f-1","queryType":"range","refId":"B"}]`)
|
|
var mixedQueryMissingDatasource = []byte(`[{"alias":"","bucketAggs":[{"field":"@timestamp","id":"2","settings":{"interval":"auto"},"type":"date_histogram"}],"key":"Q-15d3139f-a942-491c-8fb6-46982475ab07-0","metrics":[{"id":"1","type":"count"}],"query":"test","refId":"A","timeField":"@timestamp"},{"datasource":{"type":"loki","uid":"PDDA8E780A17E7EF1"},"editorMode":"code","expr":"test","key":"Q-67b4a119-37dd-4276-beac-4ec76b089f10-0","queryType":"range","refId":"B"}]`)
|
|
var mixedQueryMissingUID = []byte(`[{"alias":"","bucketAggs":[{"field":"@timestamp","id":"2","settings":{"interval":"auto"},"type":"date_histogram"}],"datasource":{"type":"elasticsearch"},"key":"Q-15d3139f-a942-491c-8fb6-46982475ab07-0","metrics":[{"id":"1","type":"count"}],"query":"test","refId":"A","timeField":"@timestamp"},{"datasource":{"type":"loki","uid":"PDDA8E780A17E7EF1"},"editorMode":"code","expr":"test","key":"Q-67b4a119-37dd-4276-beac-4ec76b089f10-0","queryType":"range","refId":"B"}]`)
|
|
var invalidJSON = []byte(`{`)
|
|
|
|
func TestQueryHistoryDetails(t *testing.T) {
|
|
t.Run("should return error when json is invalid", func(t *testing.T) {
|
|
json, _ := simplejson.NewJson(invalidJSON)
|
|
_, err := FindDataSourceUIDs(json)
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("should return no error when data source uid is missing", func(t *testing.T) {
|
|
json, _ := simplejson.NewJson(mixedQueryMissingUID)
|
|
_, err := FindDataSourceUIDs(json)
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
t.Run("should return no error when data source property is missing", func(t *testing.T) {
|
|
json, _ := simplejson.NewJson(mixedQueryMissingDatasource)
|
|
_, err := FindDataSourceUIDs(json)
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
t.Run("should find data source uids in mixed queries", func(t *testing.T) {
|
|
json, _ := simplejson.NewJson(mixedQuery)
|
|
uids, err := FindDataSourceUIDs(json)
|
|
require.NoError(t, err)
|
|
require.Len(t, uids, 2)
|
|
require.Equal(t, uids[0], "gdev-elasticsearch")
|
|
require.Equal(t, uids[1], "gdev-loki")
|
|
})
|
|
|
|
t.Run("should find data source uids in non-mixed queries", func(t *testing.T) {
|
|
json, _ := simplejson.NewJson(nonMixedQuery)
|
|
uids, err := FindDataSourceUIDs(json)
|
|
require.NoError(t, err)
|
|
require.Len(t, uids, 1)
|
|
require.Equal(t, uids[0], "gdev-loki")
|
|
})
|
|
|
|
t.Run("should remove duplicated uids", func(t *testing.T) {
|
|
json, _ := simplejson.NewJson(mixedQueryWithDuplicates)
|
|
uids, err := FindDataSourceUIDs(json)
|
|
require.NoError(t, err)
|
|
require.Len(t, uids, 2)
|
|
require.Equal(t, uids[0], "gdev-elasticsearch")
|
|
require.Equal(t, uids[1], "gdev-loki")
|
|
})
|
|
}
|