From aa8e09d3834aab5127031a382ae38a9f6fe885d4 Mon Sep 17 00:00:00 2001 From: Sofia Papagiannaki Date: Fri, 11 Jun 2021 14:12:11 +0300 Subject: [PATCH] Revert "Test datasource: Returns always float values (#34986)" (#35316) This reverts commit 51afde34bd935cd3b6c65032fabebe5db7ccdf4f. --- pkg/tsdb/testdatasource/csv_data.go | 23 +++++++++++++++++-- pkg/tsdb/testdatasource/csv_data_test.go | 2 +- .../testdatasource/testdata/mixed.golden.txt | 18 +++++++-------- .../testdatasource/testdata/simple.golden.txt | 18 +++++++-------- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/pkg/tsdb/testdatasource/csv_data.go b/pkg/tsdb/testdatasource/csv_data.go index cb53c652f7a..9b4841162a0 100644 --- a/pkg/tsdb/testdatasource/csv_data.go +++ b/pkg/tsdb/testdatasource/csv_data.go @@ -183,9 +183,28 @@ func csvValuesToField(parts []string) (*data.Field, error) { return field, nil } - // Try parsing values as floats + // Try parsing values as numbers ok := false - field := data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, len(parts)) + field := data.NewFieldFromFieldType(data.FieldTypeNullableInt64, len(parts)) + for idx, strVal := range parts { + if strVal == "null" || strVal == "" { + continue + } + + val, err := strconv.ParseInt(strVal, 10, 64) + if err != nil { + ok = false + break + } + field.SetConcrete(idx, val) + ok = true + } + if ok { + return field, nil + } + + // Maybe floats + field = data.NewFieldFromFieldType(data.FieldTypeNullableFloat64, len(parts)) for idx, strVal := range parts { if strVal == "null" || strVal == "" { continue diff --git a/pkg/tsdb/testdatasource/csv_data_test.go b/pkg/tsdb/testdatasource/csv_data_test.go index 12dfebb1f60..6e0a389e155 100644 --- a/pkg/tsdb/testdatasource/csv_data_test.go +++ b/pkg/tsdb/testdatasource/csv_data_test.go @@ -77,7 +77,7 @@ func TestReadCSV(t *testing.T) { "fields":[ {"type":"boolean","typeInfo":{"frame":"bool","nullable":true}}, {"type":"boolean","typeInfo":{"frame":"bool","nullable":true}}, - {"type":"number","typeInfo":{"frame":"float64","nullable":true}}, + {"type":"number","typeInfo":{"frame":"int64","nullable":true}}, {"type":"string","typeInfo":{"frame":"string","nullable":true}} ]},"data":{ "values":[ diff --git a/pkg/tsdb/testdatasource/testdata/mixed.golden.txt b/pkg/tsdb/testdatasource/testdata/mixed.golden.txt index 37d4d5f5319..8ce3a3d10a0 100644 --- a/pkg/tsdb/testdatasource/testdata/mixed.golden.txt +++ b/pkg/tsdb/testdatasource/testdata/mixed.golden.txt @@ -3,15 +3,15 @@ Frame[0] Name: mixed Dimensions: 4 Fields by 2 Rows -+---------------+-----------------+-----------------+------------------+ -| Name: Field1 | Name: Field2 | Name: Field3 | Name: 123 | -| Labels: | Labels: | Labels: | Labels: | -| Type: []*bool | Type: []*string | Type: []*string | Type: []*float64 | -+---------------+-----------------+-----------------+------------------+ -| true | Hello | 6 | null | -| false | 6 | World | 6 | -+---------------+-----------------+-----------------+------------------+ ++---------------+-----------------+-----------------+----------------+ +| Name: Field1 | Name: Field2 | Name: Field3 | Name: 123 | +| Labels: | Labels: | Labels: | Labels: | +| Type: []*bool | Type: []*string | Type: []*string | Type: []*int64 | ++---------------+-----------------+-----------------+----------------+ +| true | Hello | 6 | null | +| false | 6 | World | 6 | ++---------------+-----------------+-----------------+----------------+ ====== TEST DATA RESPONSE (arrow base64) ====== -FRAME=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 +FRAME=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 diff --git a/pkg/tsdb/testdatasource/testdata/simple.golden.txt b/pkg/tsdb/testdatasource/testdata/simple.golden.txt index 46d94302377..51908530450 100644 --- a/pkg/tsdb/testdatasource/testdata/simple.golden.txt +++ b/pkg/tsdb/testdatasource/testdata/simple.golden.txt @@ -3,15 +3,15 @@ Frame[0] Name: simple Dimensions: 5 Fields by 2 Rows -+-----------------+------------------+------------------+------------------+-------------------------------+ -| Name: Field1 | Name: Field2 | Name: Field3 | Name: Float | Name: Time | -| Labels: | Labels: | Labels: | Labels: | Labels: | -| Type: []*string | Type: []*float64 | Type: []*float64 | Type: []*float64 | Type: []*time.Time | -+-----------------+------------------+------------------+------------------+-------------------------------+ -| A | 5 | 6 | 6.7 | 2021-05-25 23:56:40 +0000 UTC | -| B | 6 | 7 | 8.9 | 2021-05-26 00:13:20 +0000 UTC | -+-----------------+------------------+------------------+------------------+-------------------------------+ ++-----------------+----------------+----------------+------------------+-------------------------------+ +| Name: Field1 | Name: Field2 | Name: Field3 | Name: Float | Name: Time | +| Labels: | Labels: | Labels: | Labels: | Labels: | +| Type: []*string | Type: []*int64 | Type: []*int64 | Type: []*float64 | Type: []*time.Time | ++-----------------+----------------+----------------+------------------+-------------------------------+ +| A | 5 | 6 | 6.7 | 2021-05-25 23:56:40 +0000 UTC | +| B | 6 | 7 | 8.9 | 2021-05-26 00:13:20 +0000 UTC | ++-----------------+----------------+----------------+------------------+-------------------------------+ ====== TEST DATA RESPONSE (arrow base64) ====== -FRAME=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 +FRAME=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