@@ -3,6 +3,7 @@ package logproto
3
3
import (
4
4
"testing"
5
5
6
+ "github.com/prometheus/common/model"
6
7
"github.com/stretchr/testify/require"
7
8
)
8
9
@@ -40,3 +41,71 @@ func TestShard_SpaceFor(t *testing.T) {
40
41
})
41
42
}
42
43
}
44
+
45
+ func TestQueryPatternsResponse_UnmarshalJSON (t * testing.T ) {
46
+ t .Run ("unmarshals patterns" , func (t * testing.T ) {
47
+ mockData := []byte (`{
48
+ "status": "success",
49
+ "data": [
50
+ {
51
+ "pattern": "foo <*> bar",
52
+ "samples": [[1609459200, 10], [1609545600, 15]]
53
+ },
54
+ {
55
+ "pattern": "foo <*> buzz",
56
+ "samples": [[1609459200, 20], [1609545600, 25]]
57
+ }
58
+ ]
59
+ }` )
60
+
61
+ expectedSeries := []* PatternSeries {
62
+ NewPatternSeriesWithPattern ("foo <*> bar" , []* PatternSample {
63
+ {Timestamp : model .TimeFromUnix (1609459200 ), Value : 10 },
64
+ {Timestamp : model .TimeFromUnix (1609545600 ), Value : 15 },
65
+ }),
66
+ NewPatternSeriesWithPattern ("foo <*> buzz" , []* PatternSample {
67
+ {Timestamp : model .TimeFromUnix (1609459200 ), Value : 20 },
68
+ {Timestamp : model .TimeFromUnix (1609545600 ), Value : 25 },
69
+ }),
70
+ }
71
+
72
+ r := & QueryPatternsResponse {}
73
+ err := r .UnmarshalJSON (mockData )
74
+
75
+ require .Nil (t , err )
76
+ require .Equal (t , expectedSeries , r .Series )
77
+ })
78
+
79
+ t .Run ("unmarshals labels" , func (t * testing.T ) {
80
+ mockData := []byte (`{
81
+ "status": "success",
82
+ "data": [
83
+ {
84
+ "labels": "{foo=\"bar\"}",
85
+ "samples": [[1609459200, 10], [1609545600, 15]]
86
+ },
87
+ {
88
+ "labels": "{foo=\"buzz\"}",
89
+ "samples": [[1609459200, 20], [1609545600, 25]]
90
+ }
91
+ ]
92
+ }` )
93
+
94
+ expectedSeries := []* PatternSeries {
95
+ NewPatternSeriesWithLabels (`{foo="bar"}` , []* PatternSample {
96
+ {Timestamp : model .TimeFromUnix (1609459200 ), Value : 10 },
97
+ {Timestamp : model .TimeFromUnix (1609545600 ), Value : 15 },
98
+ }),
99
+ NewPatternSeriesWithLabels (`{foo="buzz"}` , []* PatternSample {
100
+ {Timestamp : model .TimeFromUnix (1609459200 ), Value : 20 },
101
+ {Timestamp : model .TimeFromUnix (1609545600 ), Value : 25 },
102
+ }),
103
+ }
104
+
105
+ r := & QueryPatternsResponse {}
106
+ err := r .UnmarshalJSON (mockData )
107
+
108
+ require .Nil (t , err )
109
+ require .Equal (t , expectedSeries , r .Series )
110
+ })
111
+ }
0 commit comments