Loki: Apply scopes to expression if feature toggle is enabled. (#95917)

Signed-off-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
This commit is contained in:
Carl Bergquist
2024-11-11 12:53:24 +01:00
committed by GitHub
co-authored by Kyle Brandt
parent 8148f0c3bb
commit c7b6822a5e
9 changed files with 79 additions and 10 deletions
+35 -4
View File
@@ -30,7 +30,7 @@ func TestParseQuery(t *testing.T) {
},
},
}
models, err := parseQuery(queryContext)
models, err := parseQuery(queryContext, false)
require.NoError(t, err)
require.Equal(t, time.Second*15, models[0].Step)
require.Equal(t, "go_goroutines 15s 15000 3000s 3000 3000000", models[0].Expr)
@@ -57,7 +57,7 @@ func TestParseQuery(t *testing.T) {
},
},
}
models, err := parseQuery(queryContext)
models, err := parseQuery(queryContext, false)
require.NoError(t, err)
require.Equal(t, SupportingQueryLogsVolume, models[0].SupportingQueryType)
})
@@ -83,7 +83,7 @@ func TestParseQuery(t *testing.T) {
},
},
}
models, err := parseQuery(queryContext)
models, err := parseQuery(queryContext, false)
require.NoError(t, err)
require.Equal(t, SupportingQueryType("foo"), models[0].SupportingQueryType)
})
@@ -109,11 +109,42 @@ func TestParseQuery(t *testing.T) {
},
},
}
models, err := parseQuery(queryContext)
models, err := parseQuery(queryContext, false)
require.NoError(t, err)
require.Equal(t, SupportingQueryNone, models[0].SupportingQueryType)
})
t.Run("parsing query model with scopes", func(t *testing.T) {
queryContext := &backend.QueryDataRequest{
Queries: []backend.DataQuery{
{
JSON: []byte(`
{
"expr": "{} |= \"problems\"",
"format": "time_series",
"refId": "A",
"scopes": [{"key": "namespace", "value": "logish", "operator": "equals"}]
}`,
),
TimeRange: backend.TimeRange{
From: time.Now().Add(-3000 * time.Second),
To: time.Now(),
},
Interval: time.Second * 15,
MaxDataPoints: 200,
},
},
}
models, err := parseQuery(queryContext, true)
require.NoError(t, err)
require.Equal(t, time.Second*15, models[0].Step)
require.Equal(t, 1, len(models[0].Scopes))
require.Equal(t, "namespace", models[0].Scopes[0].Key)
require.Equal(t, "logish", models[0].Scopes[0].Value)
require.Equal(t, "equals", string(models[0].Scopes[0].Operator))
require.Equal(t, `{namespace="logish"} |= "problems"`, models[0].Expr)
})
t.Run("interpolate variables, range between 1s and 0.5s", func(t *testing.T) {
expr := "go_goroutines $__interval $__interval_ms $__range $__range_s $__range_ms"
queryType := dataquery.LokiQueryTypeRange