testdata: add query-metadata scenario (#111627)

* testdata: add query-metadata scenario

* updated test specs
This commit is contained in:
Gábor Farkas 2025-10-01 10:49:23 +02:00 committed by GitHub
parent 8f56f1df98
commit b8fd7b5e18
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 45 additions and 3 deletions

View File

@ -72,6 +72,7 @@ const (
TestDataQueryTypeNodeGraph TestDataQueryType = "node_graph" TestDataQueryTypeNodeGraph TestDataQueryType = "node_graph"
TestDataQueryTypePredictableCsvWave TestDataQueryType = "predictable_csv_wave" TestDataQueryTypePredictableCsvWave TestDataQueryType = "predictable_csv_wave"
TestDataQueryTypePredictablePulse TestDataQueryType = "predictable_pulse" TestDataQueryTypePredictablePulse TestDataQueryType = "predictable_pulse"
TestDataQueryTypeQueryMeta TestDataQueryType = "query_meta"
TestDataQueryTypeRandomWalk TestDataQueryType = "random_walk" TestDataQueryTypeRandomWalk TestDataQueryType = "random_walk"
TestDataQueryTypeRandomWalkTable TestDataQueryType = "random_walk_table" TestDataQueryTypeRandomWalkTable TestDataQueryType = "random_walk_table"
TestDataQueryTypeRandomWalkWithError TestDataQueryType = "random_walk_with_error" TestDataQueryTypeRandomWalkWithError TestDataQueryType = "random_walk_with_error"

View File

@ -229,7 +229,7 @@
"additionalProperties": false "additionalProperties": false
}, },
"scenarioId": { "scenarioId": {
"description": "Possible enum values:\n - `\"annotations\"` \n - `\"arrow\"` \n - `\"csv_content\"` \n - `\"csv_file\"` \n - `\"csv_metric_values\"` \n - `\"datapoints_outside_range\"` \n - `\"error_with_source\"` \n - `\"exponential_heatmap_bucket_data\"` \n - `\"flame_graph\"` \n - `\"grafana_api\"` \n - `\"linear_heatmap_bucket_data\"` \n - `\"live\"` \n - `\"logs\"` \n - `\"manual_entry\"` \n - `\"no_data_points\"` \n - `\"node_graph\"` \n - `\"predictable_csv_wave\"` \n - `\"predictable_pulse\"` \n - `\"random_walk\"` \n - `\"random_walk_table\"` \n - `\"random_walk_with_error\"` \n - `\"raw_frame\"` \n - `\"server_error_500\"` \n - `\"steps\"` \n - `\"simulation\"` \n - `\"slow_query\"` \n - `\"streaming_client\"` \n - `\"table_static\"` \n - `\"trace\"` \n - `\"usa\"` \n - `\"variables-query\"` ", "description": "Possible enum values:\n - `\"annotations\"` \n - `\"arrow\"` \n - `\"csv_content\"` \n - `\"csv_file\"` \n - `\"csv_metric_values\"` \n - `\"datapoints_outside_range\"` \n - `\"error_with_source\"` \n - `\"exponential_heatmap_bucket_data\"` \n - `\"flame_graph\"` \n - `\"grafana_api\"` \n - `\"linear_heatmap_bucket_data\"` \n - `\"live\"` \n - `\"logs\"` \n - `\"manual_entry\"` \n - `\"no_data_points\"` \n - `\"node_graph\"` \n - `\"predictable_csv_wave\"` \n - `\"predictable_pulse\"` \n - `\"query_meta\"` \n - `\"random_walk\"` \n - `\"random_walk_table\"` \n - `\"random_walk_with_error\"` \n - `\"raw_frame\"` \n - `\"server_error_500\"` \n - `\"steps\"` \n - `\"simulation\"` \n - `\"slow_query\"` \n - `\"streaming_client\"` \n - `\"table_static\"` \n - `\"trace\"` \n - `\"usa\"` \n - `\"variables-query\"` ",
"type": "string", "type": "string",
"enum": [ "enum": [
"annotations", "annotations",
@ -250,6 +250,7 @@
"node_graph", "node_graph",
"predictable_csv_wave", "predictable_csv_wave",
"predictable_pulse", "predictable_pulse",
"query_meta",
"random_walk", "random_walk",
"random_walk_table", "random_walk_table",
"random_walk_with_error", "random_walk_with_error",

View File

@ -239,7 +239,7 @@
"additionalProperties": false "additionalProperties": false
}, },
"scenarioId": { "scenarioId": {
"description": "Possible enum values:\n - `\"annotations\"` \n - `\"arrow\"` \n - `\"csv_content\"` \n - `\"csv_file\"` \n - `\"csv_metric_values\"` \n - `\"datapoints_outside_range\"` \n - `\"error_with_source\"` \n - `\"exponential_heatmap_bucket_data\"` \n - `\"flame_graph\"` \n - `\"grafana_api\"` \n - `\"linear_heatmap_bucket_data\"` \n - `\"live\"` \n - `\"logs\"` \n - `\"manual_entry\"` \n - `\"no_data_points\"` \n - `\"node_graph\"` \n - `\"predictable_csv_wave\"` \n - `\"predictable_pulse\"` \n - `\"random_walk\"` \n - `\"random_walk_table\"` \n - `\"random_walk_with_error\"` \n - `\"raw_frame\"` \n - `\"server_error_500\"` \n - `\"steps\"` \n - `\"simulation\"` \n - `\"slow_query\"` \n - `\"streaming_client\"` \n - `\"table_static\"` \n - `\"trace\"` \n - `\"usa\"` \n - `\"variables-query\"` ", "description": "Possible enum values:\n - `\"annotations\"` \n - `\"arrow\"` \n - `\"csv_content\"` \n - `\"csv_file\"` \n - `\"csv_metric_values\"` \n - `\"datapoints_outside_range\"` \n - `\"error_with_source\"` \n - `\"exponential_heatmap_bucket_data\"` \n - `\"flame_graph\"` \n - `\"grafana_api\"` \n - `\"linear_heatmap_bucket_data\"` \n - `\"live\"` \n - `\"logs\"` \n - `\"manual_entry\"` \n - `\"no_data_points\"` \n - `\"node_graph\"` \n - `\"predictable_csv_wave\"` \n - `\"predictable_pulse\"` \n - `\"query_meta\"` \n - `\"random_walk\"` \n - `\"random_walk_table\"` \n - `\"random_walk_with_error\"` \n - `\"raw_frame\"` \n - `\"server_error_500\"` \n - `\"steps\"` \n - `\"simulation\"` \n - `\"slow_query\"` \n - `\"streaming_client\"` \n - `\"table_static\"` \n - `\"trace\"` \n - `\"usa\"` \n - `\"variables-query\"` ",
"type": "string", "type": "string",
"enum": [ "enum": [
"annotations", "annotations",
@ -260,6 +260,7 @@
"node_graph", "node_graph",
"predictable_csv_wave", "predictable_csv_wave",
"predictable_pulse", "predictable_pulse",
"query_meta",
"random_walk", "random_walk",
"random_walk_table", "random_walk_table",
"random_walk_with_error", "random_walk_with_error",

View File

@ -151,7 +151,7 @@
"type": "string" "type": "string"
}, },
"scenarioId": { "scenarioId": {
"description": "Possible enum values:\n - `\"annotations\"` \n - `\"arrow\"` \n - `\"csv_content\"` \n - `\"csv_file\"` \n - `\"csv_metric_values\"` \n - `\"datapoints_outside_range\"` \n - `\"error_with_source\"` \n - `\"exponential_heatmap_bucket_data\"` \n - `\"flame_graph\"` \n - `\"grafana_api\"` \n - `\"linear_heatmap_bucket_data\"` \n - `\"live\"` \n - `\"logs\"` \n - `\"manual_entry\"` \n - `\"no_data_points\"` \n - `\"node_graph\"` \n - `\"predictable_csv_wave\"` \n - `\"predictable_pulse\"` \n - `\"random_walk\"` \n - `\"random_walk_table\"` \n - `\"random_walk_with_error\"` \n - `\"raw_frame\"` \n - `\"server_error_500\"` \n - `\"steps\"` \n - `\"simulation\"` \n - `\"slow_query\"` \n - `\"streaming_client\"` \n - `\"table_static\"` \n - `\"trace\"` \n - `\"usa\"` \n - `\"variables-query\"` ", "description": "Possible enum values:\n - `\"annotations\"` \n - `\"arrow\"` \n - `\"csv_content\"` \n - `\"csv_file\"` \n - `\"csv_metric_values\"` \n - `\"datapoints_outside_range\"` \n - `\"error_with_source\"` \n - `\"exponential_heatmap_bucket_data\"` \n - `\"flame_graph\"` \n - `\"grafana_api\"` \n - `\"linear_heatmap_bucket_data\"` \n - `\"live\"` \n - `\"logs\"` \n - `\"manual_entry\"` \n - `\"no_data_points\"` \n - `\"node_graph\"` \n - `\"predictable_csv_wave\"` \n - `\"predictable_pulse\"` \n - `\"query_meta\"` \n - `\"random_walk\"` \n - `\"random_walk_table\"` \n - `\"random_walk_with_error\"` \n - `\"raw_frame\"` \n - `\"server_error_500\"` \n - `\"steps\"` \n - `\"simulation\"` \n - `\"slow_query\"` \n - `\"streaming_client\"` \n - `\"table_static\"` \n - `\"trace\"` \n - `\"usa\"` \n - `\"variables-query\"` ",
"enum": [ "enum": [
"annotations", "annotations",
"arrow", "arrow",
@ -171,6 +171,7 @@
"node_graph", "node_graph",
"predictable_csv_wave", "predictable_csv_wave",
"predictable_pulse", "predictable_pulse",
"query_meta",
"random_walk", "random_walk",
"random_walk_table", "random_walk_table",
"random_walk_with_error", "random_walk_with_error",

View File

@ -158,6 +158,12 @@ Timestamps will line up evenly on timeStepSeconds (For example, 60 seconds means
handler: s.handleRandomWalkWithErrorScenario, handler: s.handleRandomWalkWithErrorScenario,
}) })
s.registerScenario(&Scenario{
ID: kinds.TestDataQueryTypeQueryMeta,
Name: "Query Metadata",
handler: s.handleQueryMetaScenario,
})
s.registerScenario(&Scenario{ s.registerScenario(&Scenario{
// Is no longer strictly a _server_ error scenario, but ID is kept for legacy :) // Is no longer strictly a _server_ error scenario, but ID is kept for legacy :)
ID: kinds.TestDataQueryTypeServerError500, ID: kinds.TestDataQueryTypeServerError500,
@ -390,6 +396,31 @@ func (s *Service) handleCSVMetricValuesScenario(ctx context.Context, req *backen
return resp, nil return resp, nil
} }
func (s *Service) handleQueryMetaScenario(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
resp := backend.NewQueryDataResponse()
if len(req.Queries) == 0 {
return nil, errors.New("no queries")
}
refId := req.Queries[0].RefID
username := req.PluginContext.User.Name
keys := []string{"username"}
values := []string{username}
frame := data.NewFrame("",
data.NewField("keys", nil, keys),
data.NewField("values", nil, values),
)
r := backend.DataResponse{}
r.Frames = data.Frames{frame}
resp.Responses[refId] = r
return resp, nil
}
func (s *Service) handleRandomWalkWithErrorScenario(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) { func (s *Service) handleRandomWalkWithErrorScenario(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
resp := backend.NewQueryDataResponse() resp := backend.NewQueryDataResponse()

View File

@ -21,6 +21,7 @@ export enum TestDataQueryType {
NodeGraph = 'node_graph', NodeGraph = 'node_graph',
PredictableCSVWave = 'predictable_csv_wave', PredictableCSVWave = 'predictable_csv_wave',
PredictablePulse = 'predictable_pulse', PredictablePulse = 'predictable_pulse',
QueryMeta = 'query_meta',
RandomWalk = 'random_walk', RandomWalk = 'random_walk',
RandomWalkTable = 'random_walk_table', RandomWalkTable = 'random_walk_table',
RandomWalkWithError = 'random_walk_with_error', RandomWalkWithError = 'random_walk_with_error',

View File

@ -74,6 +74,12 @@ export const scenarios = [
name: 'Predictable Pulse', name: 'Predictable Pulse',
stringInput: '', stringInput: '',
}, },
{
description: '',
id: TestDataQueryType.QueryMeta,
name: 'Query Metadata',
stringInput: '',
},
{ {
description: '', description: '',
id: TestDataQueryType.RandomWalk, id: TestDataQueryType.RandomWalk,