InfluxDB: Backend parser compatibility with frontend parser (#69865)

* Reformatting and restructuring

* Update unit test

* Always send the default retention policy as first element

* Fix typo

* Update test

* Update test once more

* Field names start with capital letters

* Simplify the condition

* Case-insensitive checks

* Fix typo

* Update response_parser test

* Update imports
This commit is contained in:
ismail simsek
2023-06-26 14:03:02 +02:00
committed by GitHub
parent e50cf55649
commit 903af7e29c
6 changed files with 66 additions and 72 deletions
+6 -6
View File
@@ -122,7 +122,7 @@ func transformRows(rows []Row, query Query) data.Frames {
}
}
field := data.NewField("value", nil, values)
field := data.NewField("Value", nil, values)
frames = append(frames, data.NewFrame(row.Name, field))
} else {
for colIndex, column := range row.Columns {
@@ -169,21 +169,21 @@ func transformRows(rows []Row, query Query) data.Frames {
name := string(formatFrameName(row, column, query, frameName[:]))
timeField := data.NewField("time", nil, timeArray)
timeField := data.NewField("Time", nil, timeArray)
if valType == "string" {
valueField := data.NewField("value", row.Tags, stringArray)
valueField := data.NewField("Value", row.Tags, stringArray)
valueField.SetConfig(&data.FieldConfig{DisplayNameFromDS: name})
frames = append(frames, newDataFrame(name, query.RawQuery, timeField, valueField))
} else if valType == "json.Number" {
valueField := data.NewField("value", row.Tags, floatArray)
valueField := data.NewField("Value", row.Tags, floatArray)
valueField.SetConfig(&data.FieldConfig{DisplayNameFromDS: name})
frames = append(frames, newDataFrame(name, query.RawQuery, timeField, valueField))
} else if valType == "bool" {
valueField := data.NewField("value", row.Tags, boolArray)
valueField := data.NewField("Value", row.Tags, boolArray)
valueField.SetConfig(&data.FieldConfig{DisplayNameFromDS: name})
frames = append(frames, newDataFrame(name, query.RawQuery, timeField, valueField))
} else if valType == "null" {
valueField := data.NewField("value", row.Tags, floatArray)
valueField := data.NewField("Value", row.Tags, floatArray)
valueField.SetConfig(&data.FieldConfig{DisplayNameFromDS: name})
frames = append(frames, newDataFrame(name, query.RawQuery, timeField, valueField))
}
+24 -24
View File
@@ -70,12 +70,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
labels, err := data.LabelsFromString("datacenter=America")
require.Nil(t, err)
floatField := data.NewField("value", labels, []*float64{
floatField := data.NewField("Value", labels, []*float64{
util.Pointer(222.0), util.Pointer(222.0), nil,
})
floatField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.mean { datacenter: America }"}
floatFrame := data.NewFrame("cpu.mean { datacenter: America }",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
@@ -86,12 +86,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
floatFrame.Meta = &data.FrameMeta{ExecutedQueryString: "Test raw query"}
string_test := "/usr/path"
stringField := data.NewField("value", labels, []*string{
stringField := data.NewField("Value", labels, []*string{
nil, &string_test, &string_test,
})
stringField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.path { datacenter: America }"}
stringFrame := data.NewFrame("cpu.path { datacenter: America }",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
@@ -103,12 +103,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
bool_true := true
bool_false := false
boolField := data.NewField("value", labels, []*bool{
boolField := data.NewField("Value", labels, []*bool{
nil, &bool_false, &bool_true,
})
boolField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.isActive { datacenter: America }"}
boolFrame := data.NewFrame("cpu.isActive { datacenter: America }",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
@@ -157,7 +157,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
var queries []Query
queries = append(queries, Query{RefID: "metricFindQuery"})
newField := data.NewField("value", nil, []string{
newField := data.NewField("Value", nil, []string{
"cpu", "disk", "logs",
})
testFrame := data.NewFrame("cpu",
@@ -196,7 +196,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
var queries []Query
queries = append(queries, Query{RawQuery: "SHOW TAG VALUES", RefID: "metricFindQuery"})
newField := data.NewField("value", nil, []string{
newField := data.NewField("Value", nil, []string{
"cpu-total", "cpu0", "cpu1",
})
testFrame := data.NewFrame("cpu",
@@ -296,12 +296,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
query := &Query{}
newField := data.NewField("value", nil, []*float64{
newField := data.NewField("Value", nil, []*float64{
util.Pointer(50.0), nil, util.Pointer(52.0),
})
newField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.mean"}
testFrame := data.NewFrame("cpu.mean",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 100000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 101000000, time.UTC),
@@ -345,12 +345,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
query := &Query{}
newField := data.NewField("value", nil, []*float64{
newField := data.NewField("Value", nil, []*float64{
util.Pointer(50.0), util.Pointer(52.0),
})
newField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.mean"}
testFrame := data.NewFrame("cpu.mean",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 100000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 102000000, time.UTC),
@@ -398,12 +398,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
query := &Query{Alias: "series alias"}
labels, err := data.LabelsFromString("/cluster/name/=Cluster/, @cluster@name@=Cluster@, cluster-name=Cluster, datacenter=America, dc.region.name=Northeast")
require.Nil(t, err)
newField := data.NewField("value", labels, []*float64{
newField := data.NewField("Value", labels, []*float64{
util.Pointer(222.0),
})
newField.Config = &data.FieldConfig{DisplayNameFromDS: "series alias"}
testFrame := data.NewFrame("series alias",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
}),
@@ -439,7 +439,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
}
name = "alias sum"
testFrame.Name = name
newField = data.NewField("value", labels, []*float64{
newField = data.NewField("Value", labels, []*float64{
util.Pointer(333.0),
})
testFrame.Fields[1] = newField
@@ -453,7 +453,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
frame = result.Responses["A"]
name = "alias America"
testFrame.Name = name
newField = data.NewField("value", labels, []*float64{
newField = data.NewField("Value", labels, []*float64{
util.Pointer(222.0),
})
testFrame.Fields[1] = newField
@@ -467,7 +467,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
frame = result.Responses["A"]
name = "alias America/America"
testFrame.Name = name
newField = data.NewField("value", labels, []*float64{
newField = data.NewField("Value", labels, []*float64{
util.Pointer(222.0),
})
testFrame.Fields[1] = newField
@@ -663,12 +663,12 @@ func TestInfluxdbResponseParser(t *testing.T) {
queries = append(queries, *queryB)
labels, err := data.LabelsFromString("datacenter=America")
require.Nil(t, err)
newField := data.NewField("value", labels, []*float64{
newField := data.NewField("Value", labels, []*float64{
util.Pointer(222.0), util.Pointer(222.0), nil,
})
newField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.mean { datacenter: America }"}
testFrame := data.NewFrame("cpu.mean { datacenter: America }",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 111000000, time.UTC),
@@ -792,7 +792,7 @@ func TestResponseParser_Parse_RetentionPolicy(t *testing.T) {
var queries []Query
queries = append(queries, Query{RefID: "metricFindQuery", RawQuery: "SHOW RETENTION POLICIES"})
policyFrame := data.NewFrame("",
data.NewField("value", nil, []string{
data.NewField("Value", nil, []string{
"bar", "autogen", "5m_avg", "1m_avg",
}),
)
@@ -824,10 +824,10 @@ func TestResponseParser_Parse(t *testing.T) {
]
}]}]}`,
f: func(t *testing.T, got *backend.QueryDataResponse) {
newField := data.NewField("value", nil, []*float64{nil, nil, util.Pointer(52.0)})
newField := data.NewField("Value", nil, []*float64{nil, nil, util.Pointer(52.0)})
newField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.mean"}
testFrame := data.NewFrame("cpu.mean",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 100000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 101000000, time.UTC),
@@ -851,10 +851,10 @@ func TestResponseParser_Parse(t *testing.T) {
]
}]}]}`,
f: func(t *testing.T, got *backend.QueryDataResponse) {
newField := data.NewField("value", nil, []*float64{nil, nil, nil})
newField := data.NewField("Value", nil, []*float64{nil, nil, nil})
newField.Config = &data.FieldConfig{DisplayNameFromDS: "cpu.mean"}
testFrame := data.NewFrame("cpu.mean",
data.NewField("time", nil,
data.NewField("Time", nil,
[]time.Time{
time.Date(1970, 1, 1, 0, 0, 0, 100000000, time.UTC),
time.Date(1970, 1, 1, 0, 0, 0, 101000000, time.UTC),