[v10.2.x] InfluxDB: Fix aliasing with $measurement or $m on backend mode (#77383)

InfluxDB: Fix aliasing with $measurement or $m on backend mode (#76917)

* better interpolation $measurement aliasing

* unit tests

(cherry picked from commit 5eb0b2bedb)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
This commit is contained in:
grafana-delivery-bot[bot]
2023-10-30 16:17:44 +01:00
committed by GitHub
co-authored by ismail simsek
parent cd62af5db6
commit 717a936cba
2 changed files with 45 additions and 3 deletions
@@ -227,7 +227,7 @@ func formatFrameName(row models.Row, column string, query models.Query, frameNam
aliasFormat = strings.Replace(aliasFormat, "$", "", 1)
if aliasFormat == "m" || aliasFormat == "measurement" {
return []byte(query.Measurement)
return []byte(row.Name)
}
if aliasFormat == "col" {
return []byte(column)
@@ -323,6 +323,48 @@ func TestInfluxdbResponseParser(t *testing.T) {
}
})
t.Run("Influxdb response parser with $measurement alias when multiple measurement in response", func(t *testing.T) {
response := `
{
"results": [
{
"series": [
{
"name": "cpu.upc",
"columns": ["time","mean"],
"tags": {
"datacenter": "America",
"dc.region.name": "Northeast",
"cluster-name": "Cluster"
},
"values": [
[111,222]
]
},
{
"name": "logins.count",
"columns": ["time","mean"],
"tags": {
"datacenter": "America",
"dc.region.name": "Northeast",
"cluster-name": "Cluster"
},
"values": [
[111,222]
]
}
]
}
]
}
`
query := models.Query{Alias: "alias $measurement"}
result := ResponseParse(prepare(response), 200, generateQuery(query))
assert.Equal(t, "alias cpu.upc", result.Frames[0].Name)
assert.Equal(t, "alias logins.count", result.Frames[1].Name)
})
t.Run("Influxdb response parser with alias", func(t *testing.T) {
response := `
{
@@ -373,7 +415,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
query = models.Query{Alias: "alias $m $measurement", Measurement: "10m"}
result = ResponseParse(prepare(response), 200, generateQuery(query))
name := "alias 10m 10m"
name := "alias cpu.upc cpu.upc"
testFrame.Name = name
testFrame.Fields[1].Config.DisplayNameFromDS = name
if diff := cmp.Diff(testFrame, result.Frames[0], data.FrameTestCompareOptions()...); diff != "" {
@@ -481,7 +523,7 @@ func TestInfluxdbResponseParser(t *testing.T) {
query = models.Query{Alias: "alias [[m]] [[measurement]]", Measurement: "10m"}
result = ResponseParse(prepare(response), 200, generateQuery(query))
name = "alias 10m 10m"
name = "alias cpu.upc cpu.upc"
testFrame.Name = name
testFrame.Fields[1].Config.DisplayNameFromDS = name
if diff := cmp.Diff(testFrame, result.Frames[0], data.FrameTestCompareOptions()...); diff != "" {