From d6eea0c7b5cd5f7e1d3a740eb663fb540ea4e66b Mon Sep 17 00:00:00 2001 From: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com> Date: Mon, 13 Mar 2023 10:11:18 +0100 Subject: [PATCH] Elasticsearch: Fix histogram fields to be filterale when processed trough backend (#64514) * Elasticsearch: Fix histogram fields to be filterale when processed trough backend * Simplify test and reuse logic --- pkg/tsdb/elasticsearch/response_parser.go | 10 +++++++--- .../elasticsearch/response_parser_frontend_test.go | 11 +++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/tsdb/elasticsearch/response_parser.go b/pkg/tsdb/elasticsearch/response_parser.go index 352d623ac47..615328f1add 100644 --- a/pkg/tsdb/elasticsearch/response_parser.go +++ b/pkg/tsdb/elasticsearch/response_parser.go @@ -732,14 +732,18 @@ func processAggregationDocs(esAgg *simplejson.Json, aggDef *BucketAgg, target *Q } func extractDataField(name string, v interface{}) *data.Field { + var field *data.Field switch v.(type) { case *string: - return data.NewField(name, nil, []*string{}) + field = data.NewField(name, nil, []*string{}) case *float64: - return data.NewField(name, nil, []*float64{}) + field = data.NewField(name, nil, []*float64{}) default: - return &data.Field{} + field = &data.Field{} } + isFilterable := true + field.Config = &data.FieldConfig{Filterable: &isFilterable} + return field } func trimDatapoints(queryResult backend.DataResponse, target *Query) { diff --git a/pkg/tsdb/elasticsearch/response_parser_frontend_test.go b/pkg/tsdb/elasticsearch/response_parser_frontend_test.go index 13f9f0f0ce8..177e33f7a34 100644 --- a/pkg/tsdb/elasticsearch/response_parser_frontend_test.go +++ b/pkg/tsdb/elasticsearch/response_parser_frontend_test.go @@ -812,7 +812,8 @@ func TestHistogramSimple(t *testing.T) { require.Len(t, result.response.Responses, 1) frames := result.response.Responses["A"].Frames - // require.Len(t, frames, 3) // FIXME + require.Len(t, frames, 1) + requireFrameLength(t, frames[0], 3) fields := frames[0].Fields require.Len(t, fields, 2) @@ -822,14 +823,12 @@ func TestHistogramSimple(t *testing.T) { require.Equal(t, "bytes", field1.Name) - // trueValue := true - // filterableConfig := data.FieldConfig{Filterable: &trueValue} + trueValue := true + filterableConfig := data.FieldConfig{Filterable: &trueValue} // we need to test that the only changed setting is `filterable` - // require.Equal(t, filterableConfig, *field1.Config) // FIXME - + require.Equal(t, filterableConfig, *field1.Config) require.Equal(t, "Count", field2.Name) - // we need to test that the fieldConfig is "empty" require.Nil(t, field2.Config) }