@@ -4,56 +4,161 @@ import (
4
4
"encoding/json"
5
5
"testing"
6
6
7
+ "github.com/grafana/grafana/pkg/setting"
7
8
. "github.com/smartystreets/goconvey/convey"
8
9
)
9
10
10
11
func TestInfluxdbResponseParser (t * testing.T ) {
11
12
Convey ("Influxdb response parser" , t , func () {
13
+ Convey ("Response parser" , func () {
14
+ parser := & ResponseParser {}
12
15
13
- parser := & ResponseParser {}
14
-
15
- response := & Response {
16
- Results : []Result {
17
- Result {
18
- Series : []Row {
19
- {
20
- Name : "cpu" ,
21
- Columns : []string {"time" , "mean" , "sum" },
22
- Tags : map [string ]string {"datacenter" : "America" },
23
- Values : [][]interface {}{
24
- {json .Number ("111" ), json .Number ("222" ), json .Number ("333" )},
25
- {json .Number ("111" ), json .Number ("222" ), json .Number ("333" )},
26
- {json .Number ("111" ), json .Number ("null" ), json .Number ("333" )},
16
+ setting .NewConfigContext (& setting.CommandLineArgs {
17
+ HomePath : "../../../" ,
18
+ })
19
+
20
+ response := & Response {
21
+ Results : []Result {
22
+ Result {
23
+ Series : []Row {
24
+ {
25
+ Name : "cpu" ,
26
+ Columns : []string {"time" , "mean" , "sum" },
27
+ Tags : map [string ]string {"datacenter" : "America" },
28
+ Values : [][]interface {}{
29
+ {json .Number ("111" ), json .Number ("222" ), json .Number ("333" )},
30
+ {json .Number ("111" ), json .Number ("222" ), json .Number ("333" )},
31
+ {json .Number ("111" ), json .Number ("null" ), json .Number ("333" )},
32
+ },
27
33
},
28
34
},
29
35
},
30
36
},
31
- },
32
- }
37
+ }
33
38
34
- result := parser . Parse ( response )
39
+ query := & Query {}
35
40
36
- Convey ("can parse all series" , func () {
37
- So (len (result .Series ), ShouldEqual , 2 )
38
- })
41
+ result := parser .Parse (response , query )
39
42
40
- Convey ("can parse all points" , func () {
41
- So (len (result .Series [0 ].Points ), ShouldEqual , 3 )
42
- So (len (result .Series [1 ].Points ), ShouldEqual , 3 )
43
- })
43
+ Convey ("can parse all series" , func () {
44
+ So (len (result .Series ), ShouldEqual , 2 )
45
+ })
44
46
45
- Convey ("can parse multi row result " , func () {
46
- So (result .Series [0 ].Points [ 1 ][ 0 ]. Float64 , ShouldEqual , float64 ( 222 ) )
47
- So (result .Series [1 ].Points [ 1 ][ 0 ]. Float64 , ShouldEqual , float64 ( 333 ) )
48
- })
47
+ Convey ("can parse all points " , func () {
48
+ So (len ( result .Series [0 ].Points ) , ShouldEqual , 3 )
49
+ So (len ( result .Series [1 ].Points ) , ShouldEqual , 3 )
50
+ })
49
51
50
- Convey ("can parse null points" , func () {
51
- So (result .Series [0 ].Points [2 ][0 ].Valid , ShouldBeFalse )
52
+ Convey ("can parse multi row result" , func () {
53
+ So (result .Series [0 ].Points [1 ][0 ].Float64 , ShouldEqual , float64 (222 ))
54
+ So (result .Series [1 ].Points [1 ][0 ].Float64 , ShouldEqual , float64 (333 ))
55
+ })
56
+
57
+ Convey ("can parse null points" , func () {
58
+ So (result .Series [0 ].Points [2 ][0 ].Valid , ShouldBeFalse )
59
+ })
60
+
61
+ Convey ("can format serie names" , func () {
62
+ So (result .Series [0 ].Name , ShouldEqual , "cpu.mean { datacenter: America }" )
63
+ So (result .Series [1 ].Name , ShouldEqual , "cpu.sum { datacenter: America }" )
64
+ })
52
65
})
53
66
54
- Convey ("can format serie names" , func () {
55
- So (result .Series [0 ].Name , ShouldEqual , "cpu.mean { datacenter: America }" )
56
- So (result .Series [1 ].Name , ShouldEqual , "cpu.sum { datacenter: America }" )
67
+ Convey ("Response parser with alias" , func () {
68
+ parser := & ResponseParser {}
69
+
70
+ response := & Response {
71
+ Results : []Result {
72
+ Result {
73
+ Series : []Row {
74
+ {
75
+ Name : "cpu.upc" ,
76
+ Columns : []string {"time" , "mean" , "sum" },
77
+ Tags : map [string ]string {"datacenter" : "America" },
78
+ Values : [][]interface {}{
79
+ {json .Number ("111" ), json .Number ("222" ), json .Number ("333" )},
80
+ },
81
+ },
82
+ },
83
+ },
84
+ },
85
+ }
86
+
87
+ Convey ("$ alias" , func () {
88
+ Convey ("simple alias" , func () {
89
+ query := & Query {Alias : "serie alias" }
90
+ result := parser .Parse (response , query )
91
+
92
+ So (result .Series [0 ].Name , ShouldEqual , "serie alias" )
93
+ })
94
+
95
+ Convey ("measurement alias" , func () {
96
+ query := & Query {Alias : "alias $m $measurement" , Measurement : "10m" }
97
+ result := parser .Parse (response , query )
98
+
99
+ So (result .Series [0 ].Name , ShouldEqual , "alias 10m 10m" )
100
+ })
101
+
102
+ Convey ("column alias" , func () {
103
+ query := & Query {Alias : "alias $col" , Measurement : "10m" }
104
+ result := parser .Parse (response , query )
105
+
106
+ So (result .Series [0 ].Name , ShouldEqual , "alias mean" )
107
+ So (result .Series [1 ].Name , ShouldEqual , "alias sum" )
108
+ })
109
+
110
+ Convey ("tag alias" , func () {
111
+ query := & Query {Alias : "alias $tag_datacenter" }
112
+ result := parser .Parse (response , query )
113
+
114
+ So (result .Series [0 ].Name , ShouldEqual , "alias America" )
115
+ })
116
+
117
+ Convey ("segment alias" , func () {
118
+ query := & Query {Alias : "alias $1" }
119
+ result := parser .Parse (response , query )
120
+
121
+ So (result .Series [0 ].Name , ShouldEqual , "alias upc" )
122
+ })
123
+
124
+ Convey ("segment position out of bound" , func () {
125
+ query := & Query {Alias : "alias $5" }
126
+ result := parser .Parse (response , query )
127
+
128
+ So (result .Series [0 ].Name , ShouldEqual , "alias $5" )
129
+ })
130
+ })
131
+
132
+ Convey ("[[]] alias" , func () {
133
+ Convey ("simple alias" , func () {
134
+ query := & Query {Alias : "serie alias" }
135
+ result := parser .Parse (response , query )
136
+
137
+ So (result .Series [0 ].Name , ShouldEqual , "serie alias" )
138
+ })
139
+
140
+ Convey ("measurement alias" , func () {
141
+ query := & Query {Alias : "alias [[m]] [[measurement]]" , Measurement : "10m" }
142
+ result := parser .Parse (response , query )
143
+
144
+ So (result .Series [0 ].Name , ShouldEqual , "alias 10m 10m" )
145
+ })
146
+
147
+ Convey ("column alias" , func () {
148
+ query := & Query {Alias : "alias [[col]]" , Measurement : "10m" }
149
+ result := parser .Parse (response , query )
150
+
151
+ So (result .Series [0 ].Name , ShouldEqual , "alias mean" )
152
+ So (result .Series [1 ].Name , ShouldEqual , "alias sum" )
153
+ })
154
+
155
+ Convey ("tag alias" , func () {
156
+ query := & Query {Alias : "alias [[tag_datacenter]]" }
157
+ result := parser .Parse (response , query )
158
+
159
+ So (result .Series [0 ].Name , ShouldEqual , "alias America" )
160
+ })
161
+ })
57
162
})
58
163
})
59
164
}
0 commit comments