mirror of https://github.com/grafana/grafana
Loki: Remove alpha feature toggle lokiDataframeApi (#65918)
loki: remove experimental feature-flagpull/66731/head
parent
531caec602
commit
b928fce070
|
@ -1,52 +0,0 @@ |
||||
package loki |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
"strconv" |
||||
"time" |
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data" |
||||
) |
||||
|
||||
type lokiResponse struct { |
||||
Streams []lokiStream `json:"streams"` |
||||
} |
||||
|
||||
type lokiStream struct { |
||||
Stream data.Labels `json:"stream"` |
||||
Values [][2]string `json:"values"` |
||||
} |
||||
|
||||
func lokiBytesToLabeledFrame(msg []byte) (*data.Frame, error) { |
||||
rsp := &lokiResponse{} |
||||
err := json.Unmarshal(msg, rsp) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
labelField := data.NewFieldFromFieldType(data.FieldTypeString, 0) |
||||
timeField := data.NewFieldFromFieldType(data.FieldTypeTime, 0) |
||||
lineField := data.NewFieldFromFieldType(data.FieldTypeString, 0) |
||||
|
||||
labelField.Name = "__labels" // for now, avoid automatically spreading this by labels
|
||||
timeField.Name = "Time" |
||||
lineField.Name = "Line" |
||||
|
||||
for _, stream := range rsp.Streams { |
||||
label := stream.Stream.String() // TODO -- make it match prom labels!
|
||||
for _, value := range stream.Values { |
||||
n, err := strconv.ParseInt(value[0], 10, 64) |
||||
if err != nil { |
||||
continue |
||||
} |
||||
ts := time.Unix(0, n) |
||||
line := value[1] |
||||
|
||||
labelField.Append(label) |
||||
timeField.Append(ts) |
||||
lineField.Append(line) |
||||
} |
||||
} |
||||
|
||||
return data.NewFrame("", labelField, timeField, lineField), nil |
||||
} |
@ -1,40 +0,0 @@ |
||||
package loki |
||||
|
||||
import ( |
||||
"testing" |
||||
|
||||
"github.com/stretchr/testify/require" |
||||
) |
||||
|
||||
func TestLokiFramer(t *testing.T) { |
||||
t.Run("converting metric name", func(t *testing.T) { |
||||
msg := []byte(`{"streams":[ |
||||
{"stream": |
||||
{"job":"node-exporter","metric":"go_memstats_heap_inuse_bytes"}, |
||||
"values":[ |
||||
["1642091525267322910","line1"] |
||||
]}, |
||||
{"stream": |
||||
{"job":"node-exporter","metric":"go_memstats_heap_inuse_bytes"}, |
||||
"values":[ |
||||
["1642091525770585774","line2"], |
||||
["1642091525770585775","line3"] |
||||
]}, |
||||
{"stream": |
||||
{"metric":"go_memstats_heap_inuse_bytes","job":"node-exporter"}, |
||||
"values":[ |
||||
["1642091526263785281","line4"] |
||||
]} |
||||
]}`) |
||||
|
||||
frame, err := lokiBytesToLabeledFrame(msg) |
||||
require.NoError(t, err) |
||||
|
||||
lines := frame.Fields[2] |
||||
require.Equal(t, 4, lines.Len()) |
||||
require.Equal(t, "line1", lines.At(0)) |
||||
require.Equal(t, "line2", lines.At(1)) |
||||
require.Equal(t, "line3", lines.At(2)) |
||||
require.Equal(t, "line4", lines.At(3)) |
||||
}) |
||||
} |
Loading…
Reference in new issue