Loki: Add backend functionality to parse structured metadata from Loki (#77361)
* prepare backend for structured metadata * add `lokiStructuredMetadata` feature toggle * use `lokiStructuredMetadata` feature flag * add field type check to `labelTypesField` * remove fixme * fix feature toggle * add field in dataplane mode * use `data.Labels` where possible * adjust framing tests * improve verbiage * improve naming * update tests to "attributes"
This commit is contained in:
@@ -26,7 +26,7 @@ func TestApiLogVolume(t *testing.T) {
|
||||
api := makeMockedAPI(200, "application/json", response, func(req *http.Request) {
|
||||
called = true
|
||||
require.Equal(t, "Source=logvolhist", req.Header.Get("X-Query-Tags"))
|
||||
})
|
||||
}, false)
|
||||
|
||||
_, err := api.DataQuery(context.Background(), lokiQuery{Expr: "", SupportingQueryType: SupportingQueryLogsVolume, QueryType: QueryTypeRange}, ResponseOpts{})
|
||||
require.NoError(t, err)
|
||||
@@ -38,7 +38,7 @@ func TestApiLogVolume(t *testing.T) {
|
||||
api := makeMockedAPI(200, "application/json", response, func(req *http.Request) {
|
||||
called = true
|
||||
require.Equal(t, "Source=logsample", req.Header.Get("X-Query-Tags"))
|
||||
})
|
||||
}, false)
|
||||
|
||||
_, err := api.DataQuery(context.Background(), lokiQuery{Expr: "", SupportingQueryType: SupportingQueryLogsSample, QueryType: QueryTypeRange}, ResponseOpts{})
|
||||
require.NoError(t, err)
|
||||
@@ -50,7 +50,7 @@ func TestApiLogVolume(t *testing.T) {
|
||||
api := makeMockedAPI(200, "application/json", response, func(req *http.Request) {
|
||||
called = true
|
||||
require.Equal(t, "Source=datasample", req.Header.Get("X-Query-Tags"))
|
||||
})
|
||||
}, false)
|
||||
|
||||
_, err := api.DataQuery(context.Background(), lokiQuery{Expr: "", SupportingQueryType: SupportingQueryDataSample, QueryType: QueryTypeRange}, ResponseOpts{})
|
||||
require.NoError(t, err)
|
||||
@@ -62,12 +62,24 @@ func TestApiLogVolume(t *testing.T) {
|
||||
api := makeMockedAPI(200, "application/json", response, func(req *http.Request) {
|
||||
called = true
|
||||
require.Equal(t, "", req.Header.Get("X-Query-Tags"))
|
||||
})
|
||||
}, false)
|
||||
|
||||
_, err := api.DataQuery(context.Background(), lokiQuery{Expr: "", SupportingQueryType: SupportingQueryNone, QueryType: QueryTypeRange}, ResponseOpts{})
|
||||
require.NoError(t, err)
|
||||
require.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("with `structuredMetadata` should set correct http header", func(t *testing.T) {
|
||||
called := false
|
||||
api := makeMockedAPI(200, "application/json", response, func(req *http.Request) {
|
||||
called = true
|
||||
require.Equal(t, "categorize-labels", req.Header.Get("X-Loki-Response-Encoding-Flags"))
|
||||
}, true)
|
||||
|
||||
_, err := api.DataQuery(context.Background(), lokiQuery{Expr: "", SupportingQueryType: SupportingQueryLogsVolume, QueryType: QueryTypeRange}, ResponseOpts{})
|
||||
require.NoError(t, err)
|
||||
require.True(t, called)
|
||||
})
|
||||
}
|
||||
|
||||
func TestApiUrlHandling(t *testing.T) {
|
||||
@@ -127,7 +139,7 @@ func TestApiUrlHandling(t *testing.T) {
|
||||
wantedPrefix := test.rangeQueryPrefix
|
||||
failMessage := fmt.Sprintf(`wanted prefix: [%s], got string [%s]`, wantedPrefix, urlString)
|
||||
require.True(t, strings.HasPrefix(urlString, wantedPrefix), failMessage)
|
||||
})
|
||||
}, false)
|
||||
|
||||
query := lokiQuery{
|
||||
QueryType: QueryTypeRange,
|
||||
@@ -148,7 +160,7 @@ func TestApiUrlHandling(t *testing.T) {
|
||||
wantedPrefix := test.instantQueryPrefix
|
||||
failMessage := fmt.Sprintf(`wanted prefix: [%s], got string [%s]`, wantedPrefix, urlString)
|
||||
require.True(t, strings.HasPrefix(urlString, wantedPrefix), failMessage)
|
||||
})
|
||||
}, false)
|
||||
|
||||
query := lokiQuery{
|
||||
QueryType: QueryTypeInstant,
|
||||
@@ -166,7 +178,7 @@ func TestApiUrlHandling(t *testing.T) {
|
||||
api := makeMockedAPIWithUrl(test.dsUrl, 200, "application/json", response, func(req *http.Request) {
|
||||
called = true
|
||||
require.Equal(t, test.metaUrl, req.URL.String())
|
||||
})
|
||||
}, false)
|
||||
|
||||
_, err := api.RawQuery(context.Background(), "/loki/api/v1/labels?start=1&end=2")
|
||||
require.NoError(t, err)
|
||||
|
||||
Reference in New Issue
Block a user