─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
# │ Status │ Test case description
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
evaluate
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ strings comparison, brackets outside of the first operand
1 │ OK │ strings comparison, broken expression
2 │ OK │ strings comparison, location of brackets around operands is different
3 │ OK │ strings comparison, brackets inside of the second operand
4 │ OK │ strings comparison, castable to ints
5 │ OK │ strings comparison, single bracket
6 │ OK │ strings comparison
7 │ OK │ strings that are ints comparison
8 │ OK │ strings empty space 1
9 │ OK │ strings empty space 2
10 │ OK │ strings null terminators
11 │ OK │ strings are quotes 1
12 │ OK │ strings are quotes 2
13 │ OK │ strings are escapes 1
14 │ OK │ strings are escapes 2
15 │ OK │ strings are escapes 3
16 │ OK │ strings are escapes 4
17 │ OK │ strings comparison, carriage return 1
18 │ OK │ strings comparison, carriage return 2
19 │ OK │ strings comparison, carriage return 3
20 │ OK │ strings comparison, carriage return 4
21 │ OK │ strings comparison, carriage return 5
22 │ OK │ strings comparison, operands are different
23 │ OK │ strings comparison, empty strings
24 │ OK │ strings comparison, brackets are outside of the second operand
25 │ OK │ strings comparison, brackets are outside of both operands
26 │ OK │ strings comparison, empty operands 1
27 │ OK │ strings comparison, empty operands 2
28 │ OK │ strings comparison, empty operands 3
29 │ OK │ strings comparison, empty operands 3
30 │ OK │ strings comparison, operands are are brackets
31 │ OK │ string castable
32 │ OK │ not_castable_str 1
33 │ OK │ not_castable_str 2
34 │ OK │ not_castable_str 3
35 │ OK │ string castable negative
36 │ OK │ string castable with suffix
37 │ OK │ string castable with suffix str comparison 1
38 │ OK │ string castable with suffix str comparison 2
39 │ OK │ string castable with suffix str comparison 3
40 │ OK │ string castable with suffix int comparison 1
41 │ OK │ string castable with suffix int comparison 2
42 │ OK │ string castable with suffix, suffix comparison 1
43 │ OK │ string castable with suffix, suffix comparison 2
44 │ OK │ unicode 1
45 │ OK │ unicode 2
46 │ OK │ scientific notation, simple comparison
47 │ OK │ scientific notation, large int number
48 │ OK │ scientific notation, large string number
49 │ OK │ scientific notation, negative exponent
50 │ OK │ scientific notation, precision limit holds
51 │ OK │ scientific notation, precision limit does not hold
52 │ OK │ scientific notation, precision limit does not hold 2
53 │ OK │ scientific notation, negative number
54 │ OK │ scientific notation, negative number 2
55 │ OK │ scientific notation, addition
56 │ OK │ term 8, one on its own
57 │ OK │ term 8, one with brackets
58 │ OK │ term 8, not_castable_str negative 1
59 │ OK │ term 8, not_castable_str negative 2
60 │ OK │ term 8, not_castable_str quotes
61 │ OK │ term 8, not_castable_str quotes 2
62 │ OK │ term 8, not_castable_str quotes 3
63 │ OK │ term 8, not_castable_str quotes 4
64 │ OK │ term 8, not_castable_str quotes 5
65 │ OK │ term 8, not_castable_str quotes 6
66 │ OK │ term 7, one
67 │ OK │ term 7, zero
68 │ OK │ term 7, negative
69 │ OK │ term 7, no space
70 │ OK │ term 7, not_castable_str
71 │ OK │ term 6 / str and str
72 │ OK │ term 6 / int and str
73 │ OK │ term 6 / str and int
74 │ OK │ term 6 / not_castable_str and int
75 │ OK │ term 6 / int and not_castable_str
76 │ OK │ term 6 / int and not_castable_string negative
77 │ OK │ term 6 / not_castable_str and not_castable_str
78 │ OK │ term 6 / castable_str and not_castable_str
79 │ OK │ term 6 / not_castable_str and zero int
80 │ OK │ term 6 / not_castable_str and zero str
81 │ OK │ term 6 / str and zero str
82 │ OK │ term 6 * str and str
83 │ OK │ term 6 * str and int
84 │ OK │ term 6 * int and str
85 │ OK │ term 6 * int and not_castable_str
86 │ OK │ term 6 * not_castable_str and int
87 │ OK │ term 6 * not_castable_str and not_castable_str
88 │ OK │ term 5 + str and str
89 │ OK │ term 5 + str and int
90 │ OK │ term 5 + int and str
91 │ OK │ term 5 + int and not_castable_str
92 │ OK │ term 5 + not_castable_str and int
93 │ OK │ term 5 + castable_str and not_castable_str
94 │ OK │ term 5 - str and str
95 │ OK │ term 5 - int and str
96 │ OK │ term 5 - str and int
97 │ OK │ term 5 - not_castable_str and int
98 │ OK │ term 5 - int and not_castable_str
99 │ OK │ term 4 <= str and str 1
100 │ OK │ term 4 <= str and str 2
101 │ OK │ term 4 <= str and int
102 │ OK │ term 4 <= str and int
103 │ OK │ term 4 <= int and not_castable_str
104 │ OK │ term 4 <= not_castable_str and castable_str
105 │ OK │ term 4 >= str and str 1
106 │ OK │ term 4 >= not_castable_str and int
107 │ OK │ term 4 >= int and not_castable_str
108 │ OK │ term 4 >= str and str 2
109 │ OK │ term 4 >= str and int
110 │ OK │ term 4 >= str and int
111 │ OK │ term 4 < str and str 1
112 │ OK │ term 4 < str and str 2
113 │ OK │ term 4 < str and int
114 │ OK │ term 4 < str and int
115 │ OK │ term 4 < not_castable_str and int
116 │ OK │ term 4 < str and not_castable_str
117 │ OK │ term 4 > str and str 1
118 │ OK │ term 4 > str and str 2
119 │ OK │ term 4 > str and int
120 │ OK │ term 4 > str and int
121 │ OK │ term 4 > str and not_castable_str
122 │ OK │ term 4 > not_castable_str and int
123 │ OK │ term 3 = str and str 1
124 │ OK │ term 3 = str and str 2
125 │ OK │ term 3 = str and str 2, empty space
126 │ OK │ term 3 = not_castable_str and not_castable_str 1
127 │ OK │ term 3 = not_castable_str and not_castable_str 2
128 │ OK │ term 3 = not_castable_str and not_castable_str 3
129 │ OK │ term 3 = str and int 1
130 │ OK │ term 3 = str and int 2
131 │ OK │ term 3 = str and int empty space
132 │ OK │ term 3 = int and str 1
133 │ OK │ term 3 = int and str 2
134 │ OK │ term 3 = int and str empty space
135 │ OK │ term 3 = int and not_castable_str
136 │ OK │ term 3 <> str and str 1
137 │ OK │ term 3 <> str and str 2
138 │ OK │ term 3 <> not_castable_str and not_castable_str 1
139 │ OK │ term 3 <> not_castable_str and not_castable_str 2
140 │ OK │ term 3 <> not_castable_str and not_castable_str 3
141 │ OK │ term 3 <> str and int 1
142 │ OK │ term 3 <> str and int 2
143 │ OK │ term 3 <> int and str 1
144 │ OK │ term 3 <> int and str 2
145 │ OK │ term 3 <> not_castable_str and int
146 │ OK │ term 2 and str and str 1
147 │ OK │ term 2 and str and str 2
148 │ OK │ term 2 and str and not_castable_str
149 │ OK │ term 2 and not_castable_str and int
150 │ OK │ term 2 and not_castable_str and not_castable_str
151 │ OK │ term 2 and str and int 1
152 │ OK │ term 2 and str and int 2
153 │ OK │ term 2 and int and str 1
154 │ OK │ term 2 and int and str 1
155 │ OK │ term 1 or str and str 1
156 │ OK │ term 1 or str and str 2
157 │ OK │ term 1 or str and not_castable_str
158 │ OK │ term 1 or not_castable_str and int
159 │ OK │ term 1 or not_castable_str and not_castable_str 1
160 │ OK │ term 1 or not_castable_str and not_castable_str 2
161 │ OK │ term 1 or str and int 1
162 │ OK │ term 1 or str and int 2
163 │ OK │ term 1 or int and str 1
164 │ OK │ term 1 or int and str 1
165 │ OK │ Valid expression "-1"
166 │ OK │ Valid expression "- 1"
167 │ OK │ Valid expression " - 1K "
168 │ OK │ Valid expression "not -1"
169 │ OK │ Valid expression "not 1"
170 │ OK │ Valid expression "not 0"
171 │ OK │ Valid expression "1.5 * 4"
172 │ OK │ Valid expression "1024K/4M"
173 │ OK │ Valid expression "1+2
174 │ OK │ Valid expression "1-2"
175 │ OK │ Valid expression "1<2"
176 │ OK │ Valid expression "1<1"
177 │ OK │ Valid expression "2<1"
178 │ OK │ Valid expression "1<=2"
179 │ OK │ Valid expression "2<=2"
180 │ OK │ Valid expression "3<=2"
181 │ OK │ Valid expression "2>=1"
182 │ OK │ Valid expression "2>=2"
183 │ OK │ Valid expression "1>=2"
184 │ OK │ Valid expression "2>1"
185 │ OK │ Valid expression "1>1"
186 │ OK │ Valid expression "1>2"
187 │ OK │ Valid expression "1=1"
188 │ OK │ Valid expression "1=2"
189 │ OK │ Valid expression "1<>1"
190 │ OK │ Valid expression "1<>2"
191 │ OK │ Valid expression "1 and 1"
192 │ OK │ Valid expression "0 and 1"
193 │ OK │ Valid expression "1 and 0"
194 │ OK │ Valid expression "0 and 0"
195 │ OK │ Valid expression "1 or 1"
196 │ OK │ Valid expression "0 or 1"
197 │ OK │ Valid expression "1 or 0"
198 │ OK │ Valid expression "0 or 0"
199 │ OK │ Valid expression "not 1 or 1" int int
200 │ OK │ Valid expression "not 1 or 1" str str
201 │ OK │ Valid expression "not 1 or 1" str int
202 │ OK │ Valid expression "not 0 and 0" int str
203 │ OK │ Valid expression "-1-2-3-4" int int int int
204 │ OK │ Valid expression "-1-2-3-4" int str str str
205 │ OK │ Valid expression "-1-2-3-4" int str not_castable_str str
206 │ OK │ Valid expression "-1-(2-3-4)"
207 │ OK │ Valid expression "-1-(2-(3-4))"
208 │ OK │ Valid expression "-1/2/3/4"
209 │ OK │ Valid expression "-1/(2/3/4)"
210 │ OK │ Valid expression "1/(2/(3/4))" int int int int
211 │ OK │ Valid expression "1/(2/(3/4))" int str int str
212 │ OK │ Valid expression "5 + 10 / 3 * (not 0 + (1 or 0) + (1K and 1M))" all ints
213 │ OK │ Valid expression "5 + 10 / 3 * (not 0 + (1 or 0) + (1K and 1M))" ints and strings
214 │ OK │ Valid expression "3 * not 1 + (5 = 2 + 3) / 1000000000G + (1/10/100/1000 <> 1/1000000)"
215 │ OK │ Valid expression "2 * 3 * 5 * 7 = 300 + 4 * -30 - -20 + 10" all ints
216 │ OK │ Valid expression "2 * 3 * 5 * 7 = 300 + 4 * -30 - -20 + 10" all strings
217 │ OK │ Valid expression "-5 + 10 * -6 + 1e+2 + "1e+3" - 700 / (49 * (1 / (2 + 5))) = 935"
218 │ OK │ Valid expression "1<2=2<1"
219 │ OK │ Valid expression "1<2<>2<1"
220 │ OK │ Valid expression "0<>1<2<>0"
221 │ OK │ Valid expression "0<1<=1>=1>0"
222 │ OK │ Valid expression "1/0.2"
223 │ OK │ Valid expression "(1-(2=2))or(1/100000)"
224 │ OK │ Valid expression "(1-(2=2))or(1/1000000)"
225 │ OK │ Valid expression "(1-(2=2))or(1/2000000)"
226 │ OK │ Valid expression "1K-1 < 2 * 512 and not(0000000000000000000000000000000000000000000000000000000000000000000000000)"
227 │ OK │ Valid expression "2.5K = 256 * 10 and (not(1)or(1))" all ints
228 │ OK │ Valid expression "2.5K = 256 * 10 and (not(1)or(1))" all strings
229 │ OK │ Valid expression "not(not(not(not(not(not 1)))))"
230 │ OK │ Valid expression "-(-(-(-(-(-2.G)))))" int
231 │ OK │ Valid expression "-(-(-(-(-(-2.G)))))" string
232 │ OK │ Valid expression "-(-(-(-(-(-.1T)))))"
233 │ OK │ Valid expression "not 0 <> not 1"
234 │ OK │ Valid expression "not 0K >= not 1"
235 │ OK │ Valid expression "not 00.M > not 1"
236 │ OK │ Valid expression "not .000G > not 1" all ints
237 │ OK │ Valid expression "not .000G > not 1" all strings
238 │ OK │ Valid expression " 1 + 2 * 3 = 7 and ( - 1 or - 2 ) and not 0 "
239 │ OK │ Valid expression "(1+((2)*(3))=(7)and(-(1)or(-(2)))and(not(0)))"
240 │ OK │ Valid expression "\t1\t+\t2\t*\t3\t=\t7\tand\t(\t-\t1\tor\t-\t2\t)\tand\tnot\t0\t" all ints
241 │ OK │ Valid expression "\t1\t+\t2\t*\t3\t=\t7\tand\t(\t-\t1\tor\t-\t2\t)\tand\tnot\t0\t" all strings
242 │ OK │ Valid expression "\r1\r+\r2\r*\r3\r=\r7\rand\r(\r-\r1\ror\r-\r2\r)\rand\rnot\r0\r"
243 │ OK │ Valid expression "\n1\n+\n2\n*\n3\n=\n7\nand\n(\n-\n1\nor\n-\n2\n)\nand\nnot\n0\n" all ints
244 │ OK │ Valid expression "\n1\n+\n2\n*\n3\n=\n7\nand\n(\n-\n1\nor\n-\n2\n)\nand\nnot\n0\n" some ints some strings
245 │ OK │ Valid expression "(((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))" int
246 │ OK │ Valid expression "(((((((((((((((((((((((((((((((1)))))))))))))))))))))))))))))))" string
247 │ OK │ Valid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))" int
248 │ OK │ Valid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))" str
249 │ OK │ Valid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1)))))))))))))))))))))))))))))))" not_castable_str
250 │ OK │ Valid expression "17179869184 > 17179869184"
251 │ OK │ Valid expression "17179869184 < 17179869184"
252 │ OK │ Valid expression "17179869184 = 17179869184"
253 │ OK │ Valid expression "1 > 1 or 1 < 1 or 1 = 1"
254 │ OK │ Valid expression "0 > 0 or 0 < 0 or 0 = 0" all ints
255 │ OK │ Valid expression "0 > 0 or 0 < 0 or 0 = 0" some ints some strings
256 │ OK │ Valid expression "0 > 0 or 0 < 0 or 0 = 0" all strings
257 │ OK │ Valid expression "17179869184 > 17179869184 or 17179869184 < 17179869184 or 17179869184 = 17179869184"
258 │ OK │ Valid expression "17179869184.000001 > 17179869184 or 17179869184.000001 < 17179869184 or 17179869184.000001 = 17179869184"
259 │ OK │ Valid expression "17179869184 > 17179869184.000001 or 17179869184 < 17179869184.000001 or 17179869184 = 17179869184.000001" all ints
260 │ OK │ Valid expression "17179869184 > 17179869184.000001 or 17179869184 < 17179869184.000001 or 17179869184 = 17179869184.000001" some ints some strings
261 │ OK │ Valid expression "17179869184.000001 > 17179869184"
262 │ OK │ Valid expression "17179869184.000001 = 17179869184" all ints
263 │ OK │ Valid expression "17179869184.000001 = 17179869184" some ints some strings
264 │ OK │ Valid expression "17179869184.000001 < 17179869184"
265 │ OK │ Valid expression "17179869184.000001 <= 17179869184"
266 │ OK │ Valid expression "17179869184.000001 >= 17179869184" ints
267 │ OK │ Valid expression "17179869184.000001 >= 17179869184" string and int
268 │ OK │ Invalid expression ""
269 │ OK │ Invalid expression "" string
270 │ OK │ Invalid expression "+1"
271 │ OK │ Invalid expression "+1" string
272 │ OK │ Invalid expression "--1"
273 │ OK │ Invalid expression "--1" string
274 │ OK │ Expression "-"-1"" is valid
275 │ OK │ Invalid expression "--1" string 3
276 │ OK │ Invalid expression "not1"
277 │ OK │ Invalid expression "1not"
278 │ OK │ Invalid expression "not-1"
279 │ OK │ Invalid expression "not-1" string
280 │ OK │ Invalid expression "-not 1"
281 │ OK │ Invalid expression "-not 1" string
282 │ OK │ Invalid expression "- not(1)"
283 │ OK │ Invalid expression "not not 1"
284 │ OK │ Invalid expression "not not 1" string
285 │ OK │ Invalid expression "1and 1"
286 │ OK │ Invalid expression "1and 1" str 1
287 │ OK │ Invalid expression "1and 1" str 2
288 │ OK │ Invalid expression "1or 1"
289 │ OK │ Invalid expression "1or 1" str
290 │ OK │ Invalid expression "1 or1"
291 │ OK │ Invalid expression "1or 1" str
292 │ OK │ Invalid expression "1 or1" string
293 │ OK │ Invalid expression "1..2"
294 │ OK │ Invalid expression "1..2" string 1
295 │ OK │ Invalid expression "1..2" string 2
296 │ OK │ Invalid expression "1..2" string 3
297 │ OK │ Invalid expression "1.K2"
298 │ OK │ Invalid expression "1.K2" string 1
299 │ OK │ Invalid expression "1.K2" string 2
300 │ OK │ Invalid expression "1.K2" string 3
301 │ OK │ Invalid expression "1.K2" string 4
302 │ OK │ Invalid expression "1.2Kand 1"
303 │ OK │ Invalid expression "1 andnot 1"
304 │ OK │ Invalid expression "1 andnot 1" string
305 │ OK │ Invalid expression "1 andor 1"
306 │ OK │ Invalid expression "1/(5-10/2)"
307 │ OK │ Invalid expression "1/(5-10/2)" string
308 │ OK │ Invalid expression "1/(5-10/2)" string 2
309 │ OK │ Invalid expression "1/(5-10/2)" string 3
310 │ OK │ Invalid expression "1/(5-10/2)" all strings
311 │ OK │ Invalid expression "((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))"
312 │ OK │ Invalid expression "((((((((((((((((((((((((((((((((1))))))))))))))))))))))))))))))))" string
313 │ OK │ Invalid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))"
314 │ OK │ Invalid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))" string
315 │ OK │ Invalid expression "-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-(-1))))))))))))))))))))))))))))))))" string 2
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
evaluate_unknown
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Valid expression "1 and not(0 or 1)"
1 │ OK │ Unknown comparison
2 │ OK │ Unknown comparison
3 │ OK │ Expression with unknown element "1 or ZBX_UNKNOWN0"
4 │ OK │ Expression with unknown element "1 or not(ZBX_UNKNOWN0)"
5 │ OK │ Expression with unknown result "1 and not(ZBX_UNKNOWN0)"
6 │ OK │ Expression with unknown result "1 > ZBX_UNKNOWN0"
7 │ OK │ Expression with unknown result "1 - ZBX_UNKNOWN0"
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
queue
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ test queue range "1, 0"
1 │ OK │ test queue range "1, 2, 0"
2 │ OK │ test queue range "1, 2, 3, 0"
3 │ OK │ test queue range "1, 2, 3, 4, 0"
4 │ OK │ test queue range "1, 2, 3, 4, 5, 0"
5 │ OK │ test queue range "1, 2, 3, 4, 5, 6, 0"
6 │ OK │ test queue range "1, 2, 3, 4, 5, 6, 7, 0"
7 │ OK │ test queue range "1, 2, 3, 4, 5, 6, 7, 8, 0"
8 │ OK │ test queue range "1, 2, 3, 4, 5, 6, 7, 8, 9, 0"
9 │ OK │ test compacting when tail is before head (no data wraparound) "1, 2, 3, 4, 5, 6, 7"
10 │ OK │ test compacting when head is before tail (data wraparound) with empty space in the middle "1, 2, 3, 4, 5, 6, 7"
11 │ OK │ test removal when tail is before head (no data wraparound) "1, 2, 3, 4, 5, 6, 7"
12 │ OK │ test removal when tail is after head (data wraparound) "1, 2, 3, 4, 5, 6, 7"
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
calculate_item_nextcheck
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Calculate active item nextcheck from simple delay
1 │ OK │ Calculate active item nextcheck from scheduled interval
2 │ OK │ Scheduled every 15m check when changing from summer time to winter
3 │ OK │ Scheduled every 1h check when changing from summer time to winter
4 │ OK │ Scheduled 9:00 check when changing from summer time to winter
5 │ OK │ Scheduled 15m check when changing from summer time to winter
6 │ OK │ Scheduled 3:30 check when changing from summer time to winter
7 │ OK │ Scheduled every 2h check when changing from summer time to winter
8 │ OK │ Scheduled every 15m check when changing from winter time to summer
9 │ OK │ Scheduled every 1h check when changing from winter time to summer
10 │ OK │ Scheduled 9:00 check when changing from winter time to summer
11 │ OK │ Scheduled 15m check when changing from winter time to summer
12 │ OK │ Scheduled 3:30 check when changing from winter time to summer
13 │ OK │ Scheduled every 2h check when changing from winter time to summer
14 │ OK │ Scheduled 3:00 check when changing from winter time to summer
15 │ OK │ Time zone 1:30 west of UTC
16 │ OK │ Time zone 0:45 west of UTC
17 │ OK │ Scheduling interval with month day and week day filters
18 │ OK │ Scheduling interval month day is outside of current month day range
19 │ OK │ Scheduling check every day at 2 a.m. when government decides drastically change the timezone
20 │ OK │ Scheduling check around DST change in the Southern Hemisphere
21 │ OK │ Scheduling check around DST change back in the Moscow
22 │ OK │ Scheduling check around DST change forward in the Moscow
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
calculate_item_nextcheck_unreachable
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Calculate nextcheck for unreachable host
1 │ OK │ Calculate nextcheck for unreachable host (2)
2 │ OK │ Calculate nextcheck for unreachable host (3)
3 │ OK │ Calculate nextcheck for unreachable host (4)
4 │ OK │ Calculate nextcheck for unreachable host (5)
5 │ OK │ Calculate nextcheck for unreachable host (6)
6 │ OK │ Calculate nextcheck for unreachable host (7)
7 │ OK │ Calculate nextcheck for unreachable host (8)
8 │ OK │ Calculate nextcheck for unreachable host (9)
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
convert_to_utf8
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ empty text nothing happens
1 │ OK │ bom is not added to plain data utf8 assumed
2 │ OK │ utf8 bom is removed
3 │ OK │ utf8 bom is removed2
4 │ OK │ utf8 bom is removed with encoding specified
5 │ OK │ utf8 bom is removed empty text
6 │ OK │ utf16 LE bom is removed
7 │ OK │ utf16 LE noBOM with encoding
8 │ OK │ utf16 LE bom is removed empty text
9 │ OK │ utf16 BE bom is removed
10 │ OK │ utf16 BE noBOM with enconding
11 │ OK │ utf16 BE bom is removed empty text
12 │ OK │ utf32 LE bom is removed incorrect guess conversion to utf16
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
is_double
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ fail -10w
1 │ OK │ succeed -1.0
2 │ OK │ succeed 1.0
3 │ OK │ succeed -1
4 │ OK │ succeed 1
5 │ OK │ succeed 1234567890.0987654321
6 │ OK │ succeed -1234567890.0987654321
7 │ OK │ fail 1234567890.0987654321K
8 │ OK │ fail -1234567890.0987654321K
9 │ OK │ fail .
10 │ OK │ fail -.
11 │ OK │ fail +.
12 │ OK │ fail --1
13 │ OK │ fail ++1
14 │ OK │ fail "- -1"
15 │ OK │ fail "+ +1"
16 │ OK │ fail .K
17 │ OK │ fail -.K
18 │ OK │ fail +.K
19 │ OK │ fail -1.0k
20 │ OK │ fail -1.0Kk
21 │ OK │ fail -1,0K
22 │ OK │ fail -1,0
23 │ OK │ succeed +1
24 │ OK │ succeed +1.0
25 │ OK │ succeed +.1
26 │ OK │ fail 1.K
27 │ OK │ fail .1K
28 │ OK │ fail -1.K
29 │ OK │ fail -.1K
30 │ OK │ succeed 1.
31 │ OK │ succeed -1.
32 │ OK │ succeed .1
33 │ OK │ succeed -.1
34 │ OK │ fail "1. "
35 │ OK │ fail "-1. "
36 │ OK │ fail " .1"
37 │ OK │ fail "- .1"
38 │ OK │ fail " -0.1"
39 │ OK │ fail "-0.1 "
40 │ OK │ fail "-0.1 K"
41 │ OK │ fail "1 K"
42 │ OK │ fail "1K "
43 │ OK │ fail "1 "
44 │ OK │ fail " 1"
45 │ OK │ fail ..1
46 │ OK │ fail .1.
47 │ OK │ fail 1..
48 │ OK │ fail .1.2
49 │ OK │ fail 1..2
50 │ OK │ fail ..
51 │ OK │ succeed 1e+2
52 │ OK │ succeed 1E+2
53 │ OK │ succeed 1e-2
54 │ OK │ succeed 1E-2
55 │ OK │ succeed -1e+2
56 │ OK │ succeed -1E+2
57 │ OK │ succeed -1e-2
58 │ OK │ succeed -1E-2
59 │ OK │ succeed +1e+2
60 │ OK │ succeed +1E+2
61 │ OK │ succeed +1e-2
62 │ OK │ succeed +1E-2
63 │ OK │ succeed 0.1e+2
64 │ OK │ succeed 1.0e+2
65 │ OK │ succeed -0.1e+2
66 │ OK │ succeed -1.0e+2
67 │ OK │ succeed +0.1e+2
68 │ OK │ succeed +1.0e+2
69 │ OK │ succeed 0.1e-2
70 │ OK │ succeed 1.0e-2
71 │ OK │ succeed -0.1e-2
72 │ OK │ succeed -1.0e-2
73 │ OK │ succeed +0.1e-2
74 │ OK │ succeed +1.0e-2
75 │ OK │ succeed .1e+2
76 │ OK │ succeed 1.e+2
77 │ OK │ succeed -.1e+2
78 │ OK │ succeed -1.e+2
79 │ OK │ succeed +.1e+2
80 │ OK │ succeed +1.e+2
81 │ OK │ succeed .1e-2
82 │ OK │ succeed 1.e-2
83 │ OK │ succeed -.1e-2
84 │ OK │ succeed -1.e-2
85 │ OK │ succeed +.1e-2
86 │ OK │ succeed +1.e-2
87 │ OK │ succeed 1234567890.0123456789e-1234567890
88 │ OK │ succeed -1234567890.0123456789e-1234567890
89 │ OK │ succeed +1234567890.0123456789e-1234567890
90 │ OK │ succeed 1234567890.0123456789e+1234567890
91 │ OK │ succeed -1234567890.0123456789e+1234567890
92 │ OK │ succeed +1234567890.0123456789e+1234567890
93 │ OK │ fail 1.e-2K
94 │ OK │ fail "1.e-2 "
95 │ OK │ fail " 1.e-2 "
96 │ OK │ fail "1.e-2 K"
97 │ OK │ fail "1.e-2 ."
98 │ OK │ fail 1.e-2.
99 │ OK │ fail .e-2
100 │ OK │ fail e-2
101 │ OK │ fail "1.0e- 2"
102 │ OK │ fail "1.0e -2"
103 │ OK │ fail "1.0 e-2"
104 │ OK │ fail "1. 0e-2"
105 │ OK │ fail "1 .0e-2"
106 │ OK │ fail " 1.0e-2"
107 │ OK │ succeed 8E307
108 │ OK │ fail 8E310
109 │ OK │ num == DBL_MAX
110 │ OK │ num > DBL_MAX
111 │ OK │ num == -DBL_MAX
112 │ OK │ num < -DBL_MAX
113 │ OK │ num == DBL_MIN
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
is_double_suffix
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ succeed -1.0K
1 │ OK │ succeed -1.0M
2 │ OK │ succeed -1.0G
3 │ OK │ succeed -1.0T
4 │ OK │ succeed -1.0s
5 │ OK │ succeed -1.0m
6 │ OK │ succeed -1.0h
7 │ OK │ succeed -1.0d
8 │ OK │ succeed -1.0w
9 │ OK │ succeed 10K
10 │ OK │ succeed 10M
11 │ OK │ succeed 10G
12 │ OK │ succeed 10T
13 │ OK │ succeed 10s
14 │ OK │ succeed 10m
15 │ OK │ succeed 10h
16 │ OK │ succeed 10d
17 │ OK │ succeed 10w
18 │ OK │ succeed 1.0K
19 │ OK │ succeed 1.0M
20 │ OK │ succeed 1.0G
21 │ OK │ succeed 1.0T
22 │ OK │ succeed 1.0s
23 │ OK │ succeed 1.0m
24 │ OK │ succeed 1.0h
25 │ OK │ succeed 1.0d
26 │ OK │ succeed 1.0w
27 │ OK │ succeed -10K
28 │ OK │ succeed -10M
29 │ OK │ succeed -10G
30 │ OK │ succeed -10T
31 │ OK │ succeed -10s
32 │ OK │ succeed -10m
33 │ OK │ succeed -10h
34 │ OK │ succeed -10d
35 │ OK │ succeed -10w
36 │ OK │ succeed -1.0
37 │ OK │ succeed 1.0
38 │ OK │ succeed -1
39 │ OK │ succeed 1
40 │ OK │ succeed 1234567890.0987654321
41 │ OK │ succeed -1234567890.0987654321
42 │ OK │ succeed 1234567890.0987654321K
43 │ OK │ succeed -1234567890.0987654321K
44 │ OK │ fail .
45 │ OK │ fail -.
46 │ OK │ fail +.
47 │ OK │ fail .K
48 │ OK │ fail -.K
49 │ OK │ fail +.K
50 │ OK │ fail -1.0k
51 │ OK │ fail -1.0Kk
52 │ OK │ fail -1,0K
53 │ OK │ fail +1
54 │ OK │ fail +1.0
55 │ OK │ fail +.1
56 │ OK │ succeed 1.K
57 │ OK │ succeed .1K
58 │ OK │ succeed -1.K
59 │ OK │ succeed -.1K
60 │ OK │ succeed 1.
61 │ OK │ succeed -1.
62 │ OK │ succeed .1
63 │ OK │ succeed -.1
64 │ OK │ fail "1. "
65 │ OK │ fail "-1. "
66 │ OK │ fail " .1"
67 │ OK │ fail "- .1"
68 │ OK │ fail " -0.1"
69 │ OK │ fail "-0.1 "
70 │ OK │ fail "-0.1 K"
71 │ OK │ fail "1 K"
72 │ OK │ fail "1K "
73 │ OK │ fail "1 "
74 │ OK │ fail " 1"
75 │ OK │ fail ..1
76 │ OK │ fail .1.
77 │ OK │ fail 1..
78 │ OK │ fail .1.2
79 │ OK │ fail 1..2
80 │ OK │ fail ..
81 │ OK │ succeed 1e+2
82 │ OK │ succeed 1E+2
83 │ OK │ fail --1
84 │ OK │ fail "- -1"
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
parse_key
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ valid key with no parameters
1 │ OK │ valid key with empty brackets
2 │ OK │ valid key with quoted empty string in brackets
3 │ OK │ valid key with space in brackets
4 │ OK │ valid key with leading space before quoted empty string in brackets
5 │ OK │ valid key with leading and trailing spaces around quoted empty string in brackets
6 │ OK │ valid key with 'a' in brackets
7 │ OK │ valid key with leading space before 'a' in brackets
8 │ OK │ valid key with leading and trailing spaces around 'a' in brackets
9 │ OK │ valid key with quoted 'a' in brackets
10 │ OK │ valid key with quoted 'a' followed by comma in brackets
11 │ OK │ valid key with unquoted 'a' followed by comma in brackets
12 │ OK │ valid key with multiple unquoted parameters in brackets
13 │ OK │ valid key with multiple quoted parameters in brackets
14 │ OK │ valid key with first unquoted parameter and second array parameter containing two unquoted parameters
15 │ OK │ valid key with first unquoted parameter and second array parameter containing unquoted and empty parameter
16 │ OK │ valid key with two unquoted parameters where second parameter contains opening square bracket
17 │ OK │ valid key with multiple quoted parameters and array
18 │ OK │ valid key with multiple quoted parameters and multiple arrays
19 │ OK │ valid key, single parameter with unquoted string containing double quote characters
20 │ OK │ valid key, multiple different type parameters where one is unquoted string containing double quote characters
21 │ OK │ valid key with many quoted/unquoted parameters with/without trailing/leading spaces also featuring escaping
22 │ OK │ valid key in the beginning, invalid character for unquoted parameter, multiple parameter key
23 │ OK │ valid key in the beginning, unmatched closing bracket, parameter followed by trailing space
24 │ OK │ valid key in the beginning, unmatched closing bracket, parameter followed by leading space
25 │ OK │ valid key in the beginning, part of parameters list not enclosed in brackets
26 │ OK │ valid key in the beginning, comma is not allowed in key or parameters should be enclosed in brackets
27 │ OK │ valid key in the beginning, multiple square bracket pairs are not allowed
28 │ OK │ valid key in the beginning, multiple square bracket pairs containing parameters are not allowed
29 │ OK │ valid key in the beginning, followed by character ]
30 │ OK │ valid key in the beginning, character [ is allowed in unquoted parameter string
31 │ OK │ valid key in the beginning, followed by comma, key with multiple different type parameters
32 │ OK │ invalid key, unmatched opening bracket (1)
33 │ OK │ invalid key, unmatched opening bracket (2)
34 │ OK │ invalid key, invalid character (double quote) after array-closing bracket
35 │ OK │ invalid key, braces are not allowed in key
36 │ OK │ invalid key, multi-level arrays are not allowed
37 │ OK │ invalid key, multi-level arrays are not allowed, array consists of multiple different type parameters
38 │ OK │ invalid key, multi-level arrays are not allowed, array consists of single parameter which is another array
39 │ OK │ invalid key, quoted parameter cannot contain unquoted part
40 │ OK │ invalid key, second parameter of the array cannot contain unquoted part
41 │ OK │ invalid key, array type parameter cannot contain quoted parameter with unquoted part
42 │ OK │ invalid key, array type parameter cannot contain quoted part
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
replace_key_params_dyn
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ valid key with no parameters
1 │ OK │ valid key with empty brackets
2 │ OK │ valid key with quoted empty string in brackets
3 │ OK │ valid key with space in brackets
4 │ OK │ valid key with leading space before quoted empty string in brackets
5 │ OK │ valid key with leading and trailing spaces around quoted empty string in brackets
6 │ OK │ valid key with 'a' in brackets
7 │ OK │ valid key with leading space before 'a' in brackets
8 │ OK │ valid key with leading and trailing spaces around 'a' in brackets
9 │ OK │ valid key with quoted 'a' in brackets
10 │ OK │ valid key with quoted 'a' followed by comma in brackets
11 │ OK │ valid key with unquoted 'a' followed by comma in brackets
12 │ OK │ valid key with multiple unquoted parameters in brackets
13 │ OK │ valid key with multiple quoted parameters in brackets
14 │ OK │ valid key with first unquoted parameter and second array parameter containing two unquoted parameters
15 │ OK │ valid key with first unquoted parameter and second array parameter containing unquoted and empty parameter
16 │ OK │ valid key with two unquoted parameters where second parameter contains opening square bracket
17 │ OK │ valid key with multiple quoted parameters and array
18 │ OK │ valid key with multiple quoted parameters and multiple array parameters
19 │ OK │ valid key, single parameter with unquoted string containing double quote characters
20 │ OK │ valid key, multiple different type parameters where one is unquoted string containing double quote characters
21 │ OK │ valid key with many quoted/unquoted parameters with/without trailing/leading spaces also featuring escaping
22 │ OK │ invalid key, unmatched opening bracket (1)
23 │ OK │ invalid key, unmatched opening bracket (2)
24 │ OK │ invalid key, unmatched opening bracket (3)
25 │ OK │ invalid key, invalid character for unquoted parameter, multiple parameter key
26 │ OK │ invalid key, invalid character for unquoted parameter, multiple parameter key
27 │ OK │ invalid key, unmatched closing bracket, parameter followed by trailing space
28 │ OK │ invalid key, part of parameters list not enclosed in brackets
29 │ OK │ invalid key, braces are not allowed in key
30 │ OK │ invalid key, comma is not allowed in key or parameters should be enclosed in brackets
31 │ OK │ invalid key, multiple square bracket pairs are not allowed
32 │ OK │ invalid key, multiple square bracket pairs containing parameters are not allowed
33 │ OK │ invalid key, multi-level arrays are not allowed
34 │ OK │ invalid key, multi-level arrays are not allowed, array consists of multiple different type parameters
35 │ OK │ invalid key, multi-level arrays are not allowed, array consists of single parameter which is another array
36 │ OK │ invalid key, character ] is not allowed in unquoted parameter string
37 │ OK │ invalid key, character [ is allowed in unquoted parameter string but character ] is not
38 │ OK │ invalid key, character ] is not allowed in unquoted parameter string, key with multiple different type parameters
39 │ OK │ invalid key, quoted parameter cannot contain unquoted part
40 │ OK │ invalid key, second parameter of the array cannot contain unquoted part
41 │ OK │ invalid key, array type parameter cannot contain quoted parameter with unquoted part
42 │ OK │ invalid key, array type parameter cannot contain quoted part
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_dyn_escape_string
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ double quotes
1 │ OK │ backslash
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_function_find
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully found simple function #1
1 │ OK │ successfully found simple function #2
2 │ OK │ function name not found #1
3 │ OK │ function name not found #2
4 │ OK │ function name not found #3
5 │ OK │ function name not found #4
6 │ OK │ function name not found #5
7 │ OK │ function name not found #6
8 │ OK │ function parameters not found #1
9 │ OK │ function parameters not found #2
10 │ OK │ function parameters not found #3
11 │ OK │ function parameters not found #4
12 │ OK │ function parameters not found #5
13 │ OK │ successfully found function that started after a space #1
14 │ OK │ successfully found function that started after a space #2
15 │ OK │ successfully found function that started after a space #3
16 │ OK │ successfully found the function #1
17 │ OK │ successfully found the function #2
18 │ OK │ successfully found the function #3
19 │ OK │ successfully found the function #4
20 │ OK │ function with a complex set of parameters was successfully found #1
21 │ OK │ function with a complex set of parameters was successfully found #2
22 │ OK │ function with LLD function
23 │ OK │ function with LLD function in macro context
24 │ OK │ function with LLD function double escaped
25 │ OK │ Check that opening of LLD function macro is skipped if no macro
26 │ OK │ Check that emptynested LLD function macro is skipped if no macro
27 │ OK │ Only opening of LLD macro function must fail #1
28 │ OK │ Only opening of LLD macro function must fail #2
29 │ OK │ Only opening of LLD macro function must fail #3
30 │ OK │ Only opening of LLD macro function must fail #4
31 │ OK │ Unit suffix support in calculated item formulas #1
32 │ OK │ Unit suffix support in calculated item formulas #2
33 │ OK │ Valid expression without function
34 │ OK │ successfully found simple function #1, string comparison
35 │ OK │ successfully found simple function #2, string comparison
36 │ OK │ function name not found #1, string comparison
37 │ OK │ function name not found #2, string comparison
38 │ OK │ function name not found #3, string comparison
39 │ OK │ function name not found #4, string comparison
40 │ OK │ function name not found #5, string comparison
41 │ OK │ function name not found #6, string comparison
42 │ OK │ function parameters not found #1, string comparison
43 │ OK │ function parameters not found #2, string comparison
44 │ OK │ function parameters not found #3, string comparison
45 │ OK │ function parameters not found #4, string comparison
46 │ OK │ function parameters not found #5, string comparison
47 │ OK │ successfully found function that started after a space #1, string comparison
48 │ OK │ successfully found function that started after a space #2, string comparison
49 │ OK │ successfully found function that started after a space #3, string comparison
50 │ OK │ successfully found the function #1, string comparison
51 │ OK │ successfully found the function #2, string comparison
52 │ OK │ successfully found the function #3, string comparison
53 │ OK │ successfully found the function #4, string comparison
54 │ OK │ function with a complex set of parameters was successfully found #1, string comparison
55 │ OK │ function with a complex set of parameters was successfully found #2, string comparison
56 │ OK │ function with LLD function, string comparison
57 │ OK │ function with LLD function in macro context, string comparison
58 │ OK │ function with LLD function double escaped, string comparison
59 │ OK │ Check that opening of LLD function macro is skipped if no macro, string comparison
60 │ OK │ Broken expressoin ending with inside quotes
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_function_get_param_dyn
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ valid 1 parameter
1 │ OK │ valid 2 parameter
2 │ OK │ valid 2 empty parameter
3 │ OK │ valid last empty parameter
4 │ OK │ non-existent 4 parameter
5 │ OK │ valid 1 parameter with []
6 │ OK │ valid 2 parameter with []
7 │ OK │ invalid params with empty 1 value
8 │ OK │ invalid params with empty 2 value
9 │ OK │ valid param with quoted 'a' in brackets
10 │ OK │ valid param with quoted '[a]' in brackets
11 │ OK │ valid param with quoted 'a' followed by comma
12 │ OK │ valid param with quoted 'a' prefixed by comma
13 │ OK │ valid param with unquoted 'a' followed by comma
14 │ OK │ valid param with multiple quoted parameters
15 │ OK │ valid param with first unquoted parameter and second array parameter containing two unquoted parameters
16 │ OK │ valid param with first unquoted parameter and second array parameter containing unquoted and empty parameter
17 │ OK │ valid param with two unquoted parameters where second parameter contains opening square bracket
18 │ OK │ valid param with multiple quoted parameters and array
19 │ OK │ valid param with multiple quoted parameters and multiple arrays
20 │ OK │ valid param, single parameter with unquoted string containing double quote characters
21 │ OK │ valid param, multiple different type parameters where one is unquoted string containing double quote characters
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_interval_preproc
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ min
1 │ OK │ max
2 │ OK │ more than allowed
3 │ OK │ min seconds
4 │ OK │ max seconds
5 │ OK │ more than allowed seconds
6 │ OK │ min minutes
7 │ OK │ max minutes
8 │ OK │ more than allowed minutes
9 │ OK │ min hours
10 │ OK │ max hours
11 │ OK │ more than allowed hours
12 │ OK │ min/max days
13 │ OK │ more than allowed days
14 │ OK │ weeks not allowed
15 │ OK │ zero alone are not allowed
16 │ OK │ zero seconds alone are not allowed
17 │ OK │ custom intervals don't matter so we cannot determine if 0 is OK
18 │ OK │ custom intervals don't matter so we cannot determine if 0 seconds is OK
19 │ OK │ custom intervals don't matter even if are invalid
20 │ OK │ don't allow invalid custom intervals if matter
21 │ OK │ don't allow 0 update interval even if custom is used and still 0
22 │ OK │ don't allow 0 simple update interval if one of custom update intervals has 0 update interval
23 │ OK │ don't allow 0 update interval if one of custom update intervals has 0 update interval and scheduling
24 │ OK │ allow 0 update interval even if custom has non 0
25 │ OK │ allow 0 custom update interval even if custom is 0
26 │ OK │ allow 0 simple update interval if only scheduling is present
27 │ OK │ custom intervals are missing, there is only separator
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_str_extract
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Success: abcd, 4
1 │ OK │ Success: abcd, 1
2 │ OK │ Success: abcd, 0
3 │ OK │ Success: "abcd", 6
4 │ OK │ Success: "ab\\/cd", 9
5 │ OK │ Success: "\\", 4
6 │ OK │ Success: "a\"bc\"d", 10
7 │ OK │ Success: "", 2
8 │ OK │ Failure: "", 1
9 │ OK │ Failure: "\a", 4
10 │ OK │ Failure: "abcd", 7
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_trim_float
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ 123
1 │ OK │ 123
2 │ OK │ 123
3 │ OK │ 123
4 │ OK │ 123
5 │ OK │ 123
6 │ OK │ 123
7 │ OK │ "123"
8 │ OK │ "123"
9 │ OK │ "123"
10 │ OK │ "123"
11 │ OK │ "123"
12 │ OK │ "123"
13 │ OK │ "123"
14 │ OK │
15 │ OK │ "
16 │ OK │ ""
17 │ OK │ " "
18 │ OK │ "
19 │ OK │ ""
20 │ OK │ " "
21 │ OK │ "
22 │ OK │ ""
23 │ OK │ " "
24 │ OK │ "
25 │ OK │ ""
26 │ OK │ " "
27 │ OK │ "123 "
28 │ OK │ " 123"
29 │ OK │ " 123 "
30 │ OK │ "123 "
31 │ OK │ " 123"
32 │ OK │ " 123 "
33 │ OK │ "123 "
34 │ OK │ " 123"
35 │ OK │ " 123 "
36 │ OK │ "123 "
37 │ OK │ " 123"
38 │ OK │ " 123 "
39 │ OK │ +
40 │ OK │ ++
41 │ OK │ +123
42 │ OK │ ++123
43 │ OK │ +"123"
44 │ OK │ "+123"
45 │ OK │ "+"
46 │ OK │ "+ "
47 │ OK │ " +"
48 │ OK │ " + "
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_trim_integer
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ 123
1 │ OK │ 123
2 │ OK │ 123
3 │ OK │ 123
4 │ OK │ 123
5 │ OK │ 123
6 │ OK │ 123
7 │ OK │ "123"
8 │ OK │ "123"
9 │ OK │ "123"
10 │ OK │ "123"
11 │ OK │ "123"
12 │ OK │ "123"
13 │ OK │ "123"
14 │ OK │
15 │ OK │ "
16 │ OK │ ""
17 │ OK │ " "
18 │ OK │ "
19 │ OK │ ""
20 │ OK │ " "
21 │ OK │ "
22 │ OK │ ""
23 │ OK │ " "
24 │ OK │ "
25 │ OK │ ""
26 │ OK │ " "
27 │ OK │ "123 "
28 │ OK │ " 123"
29 │ OK │ " 123 "
30 │ OK │ "123 "
31 │ OK │ " 123"
32 │ OK │ " 123 "
33 │ OK │ "123 "
34 │ OK │ " 123"
35 │ OK │ " 123 "
36 │ OK │ "123 "
37 │ OK │ " 123"
38 │ OK │ " 123 "
39 │ OK │ +
40 │ OK │ ++
41 │ OK │ +123
42 │ OK │ ++123
43 │ OK │ +"123"
44 │ OK │ "+123"
45 │ OK │ "+"
46 │ OK │ "+ "
47 │ OK │ " +"
48 │ OK │ " + "
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_truncate_itemkey
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ #0 condition 1.1
1 │ OK │ #1 condition 1.2
2 │ OK │ #2 condition 1.3
3 │ OK │ #3 condition 1.4
4 │ OK │ #4 condition 1.5
5 │ OK │ #5 condition 1.6
6 │ OK │ #6 condition 2.1
7 │ OK │ #7 condition 2.2
8 │ OK │ #8 condition 3.1
9 │ OK │ #9 condition 3.2
10 │ OK │ #10 condition 3.3
11 │ OK │ #11 condition 3.4
12 │ OK │ #12 condition 3.5
13 │ OK │ #13 condition 3.6
14 │ OK │ #14 condition 4.1
15 │ OK │ #15 condition 4.2
16 │ OK │ #16 condition 4.3
17 │ OK │ #17 condition 4.4
18 │ OK │ #18 condition 4.5
19 │ OK │ #0 ru condition 1.1
20 │ OK │ #1 ru condition 1.2
21 │ OK │ #2 ru condition 1.3
22 │ OK │ #3 ru condition 1.4
23 │ OK │ #4 ru condition 1.5
24 │ OK │ #5 ru condition 1.6
25 │ OK │ #6 ru condition 2.1
26 │ OK │ #7 ru condition 2.2
27 │ OK │ #8 ru condition 3.1
28 │ OK │ #9 ru condition 3.2
29 │ OK │ #10 ru condition 3.3
30 │ OK │ #11 ru condition 3.4
31 │ OK │ #12 ru condition 3.5
32 │ OK │ #13 ru condition 3.6
33 │ OK │ #14 ru condition 4.1
34 │ OK │ #15 ru condition 4.2
35 │ OK │ #16 ru condition 4.3
36 │ OK │ #17 ru condition 4.4
37 │ OK │ #18 ru condition 4.5
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_truncate_value
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ #0 condition 1.1
1 │ OK │ #1 condition 1.2
2 │ OK │ #2 condition 4.1
3 │ OK │ #3 condition 4.2
4 │ OK │ #4 condition 4.3
5 │ OK │ #5 condition 4.4
6 │ OK │ #6 condition 4.5
7 │ OK │ #0 ru condition 1.1
8 │ OK │ #1 ru condition 1.2
9 │ OK │ #2 ru condition 4.1
10 │ OK │ #3 ru condition 4.2
11 │ OK │ #4 ru condition 4.3
12 │ OK │ #5 ru condition 4.4
13 │ OK │ #6 ru condition 4.5
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_validate_interval
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ min
1 │ OK │ max
2 │ OK │ more than allowed
3 │ OK │ min seconds
4 │ OK │ max seconds
5 │ OK │ more than allowed seconds
6 │ OK │ min minutes
7 │ OK │ max minutes
8 │ OK │ more than allowed minutes
9 │ OK │ min hours
10 │ OK │ max hours
11 │ OK │ more than allowed hours
12 │ OK │ min/max days
13 │ OK │ more than allowed days
14 │ OK │ weeks not allowed
15 │ OK │ zero alone are not allowed
16 │ OK │ zero seconds alone are not allowed
17 │ OK │ simple interval with improper delimiter not allowed
18 │ OK │ invalid update interval
19 │ OK │ simple interval with only delimiter is not allowed
20 │ OK │ simple interval with double delimiter is not allowed
21 │ OK │ macro is allowed as simple interval
22 │ OK │ suffixes are not allowed with macro
23 │ OK │ macro with unexpected delimiter is not allowed
24 │ OK │ macro with unexpected delimiter is not allowed
25 │ OK │ macro as units is not allowed
26 │ OK │ only user macro is allowed
27 │ OK │ several macros not allowed
28 │ OK │ simple interval with only delimiter is not allowed
29 │ OK │ simple interval macro with double delimiter is not allowed
30 │ OK │ one flexible interval is allowed
31 │ OK │ more than one flexible intervals are allowed
32 │ OK │ invalid simple interval
33 │ OK │ invalid flexible interval
34 │ OK │ invalid flexible
35 │ OK │ flexible interval double semicolon
36 │ OK │ flexible interval double delimiter
37 │ OK │ flexible interval wrong delimiter
38 │ OK │ ends with unexpected semicolon
39 │ OK │ flexible update interval is missing
40 │ OK │ flexible period is missing
41 │ OK │ flexible period is missing but there is delimiter
42 │ OK │ macro in simple interval
43 │ OK │ macro in flexible interval
44 │ OK │ macro in flexible
45 │ OK │ macro flexible update interval only
46 │ OK │ macro flexible only
47 │ OK │ more than one flexible intervals are allowed
48 │ OK │ invalid simple interval even if all other is macro
49 │ OK │ invalid flexible interval even if other are macros
50 │ OK │ invalid flexible with all other macro
51 │ OK │ suffixes are not allowed in flexible update interval after macro
52 │ OK │ macro must be whole value in flexible, not just part
53 │ OK │ macro must be whole value in flexible, not just part in the end
54 │ OK │ invalid simple interval
55 │ OK │ invalid flexible interval
56 │ OK │ invalid flexible
57 │ OK │ flexible interval double delimiter
58 │ OK │ flexible interval wrong delimiter
59 │ OK │ flexible interval double semicolon
60 │ OK │ invalid in update interval
61 │ OK │ invalid in flexible update interval
62 │ OK │ invalid in flexible interval
63 │ OK │ context macro is correctly handled
64 │ OK │ context macro + real values
65 │ OK │ context macro + last macro is broken
66 │ OK │ context macro + invalid flexible
67 │ OK │ simple interval can be 0 in case flexible is non zero
68 │ OK │ simple interval can be 0 in case flexible intervals are non zero
69 │ OK │ flexible interval can be 0 in case simple interval is not 0
70 │ OK │ simple interval can be 0 in case flexible intervals are non zero
71 │ OK │ simple interval cannot be 0 in case flexible update interval is zero
72 │ OK │ simple interval cannot be 0 in case one of flexible intervals is zero
73 │ OK │ flexible interval can be 0 if simple interval is macro
74 │ OK │ simple interval can be 0 if flexible interval is macro
75 │ OK │ simple interval can be 0 if flexible update interval is non zero or macro
76 │ OK │ simple interval cannot be 0 if one of flexible intervals is macro while other is 0
77 │ OK │ within limits
78 │ OK │ simple interval is too high
79 │ OK │ flexible interval is too high
80 │ OK │ flexible interval overflow
81 │ OK │ simple interval too high but flexible is macro
82 │ OK │ flexible interval is too high but simple is macro
83 │ OK │ update interval + scheduling check
84 │ OK │ 0 update interval + scheduling check
85 │ OK │ scheduling check with slash
86 │ OK │ scheduling check with flexible check
87 │ OK │ update interval is invalid + scheduling check
88 │ OK │ invalid scheduling check
89 │ OK │ invalid scheduling check
90 │ OK │ scheduling double semicolon
91 │ OK │ scheduling ends with unexpected semicolon
92 │ OK │ update interval is missing
93 │ OK │ delimiter between scheduling macros
94 │ OK │ scheduling check as macro
95 │ OK │ scheduling check macro with macro update interval
96 │ OK │ simple update interval as macro
97 │ OK │ simple update interval as macro and one of scheduling
98 │ OK │ macro in update interval does not skip validation of scheduling
99 │ OK │ macro in one of scheduling does not skip validation of scheduling
100 │ OK │ macro in one of flexible does not skip validation of scheduling
101 │ OK │ macro in one of scheduling does not skip validation of flexible period
102 │ OK │ macro in one of scheduling does not skip validation of flexible interval
103 │ OK │ delimiter between scheduling macros must be present
104 │ OK │ delimiter between scheduling macros must be present
105 │ OK │ scheduling higher than upper limit
106 │ OK │ scheduling in limit
107 │ OK │ scheduling context macro
108 │ OK │ scheduling + flexible context macro
109 │ OK │ empty delay
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_variant_compare
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ none == none
1 │ OK │ none < value
2 │ OK │ value > none
3 │ OK │ string < string
4 │ OK │ string > string
5 │ OK │ string == string
6 │ OK │ string < floating
7 │ OK │ floating < string
8 │ OK │ string > floating
9 │ OK │ floating > string
10 │ OK │ string == floating
11 │ OK │ floating == string
12 │ OK │ floating < uint64
13 │ OK │ uint64 < floating
14 │ OK │ floating > uint64
15 │ OK │ uint64 > floating
16 │ OK │ floating == uint64
17 │ OK │ uint64 == floating
18 │ OK │ uint64 < uint64
19 │ OK │ uint64 > uint64
20 │ OK │ uint64 == uint64
21 │ OK │ floating == floating
22 │ OK │ floating == floating
23 │ OK │ floating > floating
24 │ OK │ floating < floating
25 │ OK │ binary == binary
26 │ OK │ binary == binary
27 │ OK │ binary > binary
28 │ OK │ binary > binary
29 │ OK │ binary < binary
30 │ OK │ binary > none
31 │ OK │ none < binary
32 │ OK │ binary > string
33 │ OK │ string < binary
34 │ OK │ binary > floating
35 │ OK │ floating < binary
36 │ OK │ binary > uint64
37 │ OK │ uint64 < binary
38 │ OK │ none < uint64
39 │ OK │ uint64 > none
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_token_find
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully found low-level discovery function macros token
1 │ OK │ invalid low-level discovery function macros token
2 │ OK │ successfully found function macros token
3 │ OK │ invalid function macros token
4 │ OK │ successfully found user macros token
5 │ OK │ invalid user macros token
6 │ OK │ LLD macro with function
7 │ OK │ LLD macro with function, with text before
8 │ OK │ LLD macro with function, with text after
9 │ OK │ LLD macro with function with text around
10 │ OK │ Nested macro with spaces after after param
11 │ OK │ LLD macro with spaces after after param
12 │ OK │ LLD macro
13 │ OK │ LLD macro used as simple macro
14 │ OK │ Macro not started
15 │ OK │ Empty macro
16 │ OK │ Empty macro full
17 │ OK │ Invalid macro char
18 │ OK │ Invalid function delimiter
19 │ OK │ Ordinary LLD function macro
20 │ OK │ Ordinary LLD function macro 2
21 │ OK │ User macro with LLD function macro context
22 │ OK │ LLD function macro missing closing bracket
23 │ OK │ LLD function macro missing opening bracket
24 │ OK │ Success: {ABC.EFG}
25 │ OK │ Failure: {}
26 │ OK │ Failure: {abc}
27 │ OK │ Failure: {ABC }
28 │ OK │ Failure: {ABC.'xyz'}
29 │ OK │ Failure: {ABC."xyz}
30 │ OK │ Failure: {ABC.""}
31 │ OK │ Failure: {ABC."xyz" }
32 │ OK │ Failure: {ABC. "xyz"}
33 │ OK │ Failure: {ABC."xyz".EFG}
34 │ OK │ Failure: {ABC."x\yz"}
35 │ OK │ Failure: {ABC.x-z}
36 │ OK │ Failure: {ABC.}
37 │ OK │ Failure: {ABC..XYZ}
38 │ OK │ Success: {ABC.xyz}
39 │ OK │ Success: {ABC.DEF.xyz}
40 │ OK │ Success: {ABC."xyz"}
41 │ OK │ Success: {ABC."x-z"}
42 │ OK │ Success: {ABC."x\\/z"}
43 │ OK │ Success: {M123}
44 │ OK │ Success: {ABC."x\"\"z"}
45 │ OK │ Success: {{ABC.xyz}.regsub((.*),\1)}
46 │ OK │ Failure: {{#ABC.xyz}.regsub((.*),\1)}
47 │ OK │ Failure: {$ABC.xyz}
48 │ OK │ Failure: {.ABC}
49 │ OK │ Success: {M_1.M_2.M_3}
50 │ OK │ Success: {EVENT.TAGS.TAG123}
51 │ OK │ Success: {EVENT.TAGS.1TAG}
52 │ OK │ Success: {EVENT.TAGS."1TAG"}
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_user_macro_parse
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ space after single-character macro name
1 │ OK │ space before single-character macro name
2 │ OK │ macro without closing brace
3 │ OK │ macro without name
4 │ OK │ lower case single-character macro name
5 │ OK │ capitalized macro name"
6 │ OK │ no closing brace, empty context
7 │ OK │ no closing brace, one opening quote in context
8 │ OK │ one opening quote in context
9 │ OK │ one opening quote in before 1-digit context
10 │ OK │ quoted context with extra character after
11 │ OK │ one opening quote in before 1-digit context with space
12 │ OK │ valid single-character macro
13 │ OK │ valid multi-character macro
14 │ OK │ extra character after }
15 │ OK │ 1-digit context
16 │ OK │ multi-digit context
17 │ OK │ 1-digit context and space
18 │ OK │ space before 1-digit context
19 │ OK │ space before and after 1-digit context
20 │ OK │ quoted 1-digit context with 2 spaces before
21 │ OK │ quoted 1-digit context with 2 spaces before and after
22 │ OK │ two spaces before quoted context with escaped quotes
23 │ OK │ two spaces around quoted context with escaped quotes
24 │ OK │ quoted context with macro look-alike string, spaces around quotes
25 │ OK │ empty context
26 │ OK │ ignore regex prefix for nonregex match
27 │ OK │ unterminated regex prefix
28 │ OK │ empty regex match
29 │ OK │ simple regex match
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_tcp_check_allowed_peers
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ IPv4 match
1 │ OK │ Second IPv4 from list matches
2 │ OK │ Peer IP is different
3 │ OK │ Peer IP is different
4 │ OK │ IPv6 match
5 │ OK │ IPv6 from list matches
6 │ OK │ Peer IPv6 is different
7 │ OK │ Peer IPv6 is different at start
8 │ OK │ Peer IP is not in list
9 │ OK │ IPv6 compatible peer is connected
10 │ OK │ IPv6 compatible expanded peer is connected
11 │ OK │ IPv6 mapped peer is connected
12 │ OK │ IPv6 mapped peer expanded is connected
13 │ OK │ IPv6 compatible peer mismatch IP
14 │ OK │ IPv6 compatible expanded mismatch
15 │ OK │ IPv6 mapped peer mismatch IP
16 │ OK │ IPv6 mapped peer expanded mismatch IP
17 │ OK │ IPv6 peer partially compatible
18 │ OK │ IPv6 peer does not match IPv4
19 │ OK │ IPv6 compatible expanded peer is connected, not in list
20 │ OK │ IPv6 compatible expanded peer is connected mismatch
21 │ OK │ IPv6 mapped expanded is connected mismatch
22 │ OK │ IPv6 local ip mismatch IPv4 local IP
23 │ OK │ IPv4 local IP expected, but IPv6 local IP expanded connected
24 │ OK │ IPv4 compatible peer is connected
25 │ OK │ IPv4 compatible expanded peer is connected
26 │ OK │ IPv4 mapped peer is connected
27 │ OK │ IPv4 mapped peer expanded is connected
28 │ OK │ IPv4 compatible peer mismatch IP
29 │ OK │ IPv4 compatible expanded mismatch
30 │ OK │ IPv4 mapped peer mismatch IP
31 │ OK │ IPv4 mapped peer expanded mismatch IP
32 │ OK │ IPv4 peer partially compatible
33 │ OK │ IPv4 peer does not match IPv6
34 │ OK │ IPv4 compatible expanded peer is connected, not in list
35 │ OK │ IPv4 compatible expanded peer is connected mismatch
36 │ OK │ IPv4 mapped expanded is connected mismatch
37 │ OK │ IPv4 local IP mismatch IPv6 local IP
38 │ OK │ IPv6 local expanded IP expected, but IPv4 local IP connected
39 │ OK │ Compare only first 3 octets
40 │ OK │ Compare all 4 octets sanity check
41 │ OK │ IPv4 does not match address that is not compatible or mapped
42 │ OK │ IPv4 does not match address that is not compatible or mapped 2
43 │ OK │ IPv4 match address that is compatible or mapped
44 │ OK │ Compare only first 96 bits
45 │ OK │ Compare 128 bits
46 │ OK │ Compare only the first 3 octets where the first one does not match
47 │ OK │ Compare only the first 96 bits where the first one does not match
48 │ OK │ IPv4 in list
49 │ OK │ IPv6 in list
50 │ OK │ Any IPv4
51 │ OK │ Any IPv6
52 │ OK │ Any IPv6 allows also any IPv4
53 │ OK │ IPv4 first CIDR value is not saved on next value in list
54 │ OK │ Long list of allowed peers and no match
55 │ OK │ Long list of allowed peers and no match IPv6
56 │ OK │ Long list of allowed peers but there is match
57 │ OK │ Long list of allowed peers but there is match IPv6
58 │ OK │ IPv6 unspecified address in list, connection from IPv6
59 │ OK │ IPv6 unspecified address in list, connection from IPv4
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_tcp_check_allowed_peers_ipv4
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ SKIPPED │ IPv4 match
1 │ SKIPPED │ Second IPv4 from list matches
2 │ SKIPPED │ Peer IP is different
3 │ SKIPPED │ Peer IP is different
4 │ SKIPPED │ Compare only first 3 octets
5 │ SKIPPED │ Compare all 4 octets sanity check
6 │ SKIPPED │ Compare only the first 3 octets where the first one does not match
7 │ SKIPPED │ IPv4 in list
8 │ SKIPPED │ Any IPv4
9 │ SKIPPED │ IPv4 first CIDR value is not saved on next value in list
10 │ SKIPPED │ Long list of allowed peers and no match
11 │ SKIPPED │ Long list of allowed peers but there is match
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_tcp_recv_ext
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Zero bytes received
1 │ OK │ Correct number of bytes received
2 │ OK │ Fragmented header
3 │ OK │ Fragmented incorrect header in part 1
4 │ OK │ Fragmented incorrect header in part 2
5 │ OK │ Header in separate fragment
6 │ OK │ Header in separate fragment incorrect
7 │ OK │ Whole header fragmented
8 │ OK │ Only header with 0 data
9 │ OK │ Header is too small
10 │ OK │ Version not received
11 │ OK │ Incorrect version 0 in header
12 │ OK │ Incorrect version in header only compression
13 │ OK │ Unsupported and supported versions in header
14 │ OK │ Received header signature without version
15 │ OK │ Hheader + version received
16 │ OK │ Header + version + data size received
17 │ OK │ Header and data length fragmented
18 │ OK │ Data length indicator exceed max size
19 │ OK │ Don't accept if bigger length is supplied in header than sent
20 │ OK │ Don't accept if smaller length supplied than sent
21 │ OK │ Data length is too small
22 │ OK │ Fragmented key
23 │ OK │ Fragmented key by bytes
24 │ OK │ Whole message streamed by 1 byte
25 │ OK │ Stat buffer almost filled
26 │ OK │ Stat buffer filled
27 │ OK │ Second receive is required but still stat buffer
28 │ OK │ Stat buffer is not enough for data, switching to dynamic
29 │ OK │ Second receive, dynamic and fragmented
30 │ OK │ Second receive, received more than expected
31 │ OK │ Lots of binary data
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_tcp_recv_raw_ext
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Zero bytes received
1 │ OK │ Correct number of bytes received
2 │ OK │ Correct number of bytes received fragmented
3 │ OK │ Stat buffer filled
4 │ OK │ Stat buffer filled and switched to dynamic fragmented
5 │ OK │ Correct number of bytes received binary stat buffer
6 │ OK │ Correct number of bytes received binary dynamic buffer
7 │ OK │ Lots of binary data
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_tcp_recv_ext_zlib
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Compressed data
1 │ OK │ Corrupted compressed data
2 │ OK │ Compressed data with uncompressed size greater than expected
3 │ OK │ Compressed data with uncompressed size less than expected
4 │ OK │ Compressed data with large length fields
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
parse_cfg_file
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ valid configuration file
1 │ OK │ recursive self inclusion
2 │ OK │ recursive inclusion loop
3 │ OK │ maximum allowed inclusion levels
4 │ OK │ too many inclusion levels
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
dc_check_maintenance_period
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Period before DST change to summer (0)
1 │ OK │ Period during DST change to summer (1)
2 │ OK │ Long period during DST change to summer (2)
3 │ OK │ Period finishes during DST change to summer (3)
4 │ OK │ Period finishes 1m after DST change to summer (4)
5 │ OK │ Period starts during DST change to summer (5)
6 │ OK │ Period cannot be applied during DST change to summer (6)
7 │ OK │ Daily period during DST change to summer (7)
8 │ OK │ Daily period finishes during DST change to summer (8)
9 │ OK │ Daily period starts during DST change to summer (9)
10 │ OK │ Monthly period during DST change to summer (10)
11 │ OK │ Monthly period finishes during DST change to summer (11)
12 │ OK │ Monthly period starts during DST change to summer (12)
13 │ OK │ Maintenance activity limited during DST change to summer (13)
14 │ OK │ Maintenance activity limited during DST change to summer (14)
15 │ OK │ Period before DST change to winter (15)
16 │ OK │ Period during DST change to winter (16)
17 │ OK │ Long period during DST change to winter (17)
18 │ OK │ Period finishes during DST change to winter (18)
19 │ OK │ Period finishes 1m after DST change to winter (19)
20 │ OK │ Period starts after DST change to winter (20)
21 │ OK │ Daily period during DST change to winter (21)
22 │ OK │ Daily period finishes during DST change to winter (22)
23 │ OK │ Daily period starts after DST change to winter (23)
24 │ OK │ Monthly period during DST change to winter (24)
25 │ OK │ Monthly period finishes during DST change to winter (25)
26 │ OK │ Monthly period starts after DST change to winter (26)
27 │ OK │ Maintenance activity limited during DST change to winter (27)
28 │ OK │ Maintenance activity limited during DST change to winter (28)
29 │ OK │ One time period during DST change to summer (29)
30 │ OK │ One time period finishes during DST change to summer (30)
31 │ OK │ One time period starts during DST change to summer (31)
32 │ OK │ One time period during DST change to winter (32)
33 │ OK │ One time period finishes during DST change to winter (33)
34 │ OK │ One time period starts after DST change to winter (34)
35 │ OK │ Long daily period during DST change to winter (35)
36 │ OK │ Long daily period during DST change to summer (36)
37 │ OK │ Long daily period during exotic DST change to summer (37)
38 │ OK │ Long daily period during exotic DST change to winter (38)
39 │ OK │ Long weekly period during exotic DST change to summer (39)
40 │ OK │ Long weekly period during exotic DST change to winter (40)
41 │ OK │ Short period during DST change to summer (41)
42 │ OK │ Short period during DST change to winter (42)
43 │ OK │ Maintenance activity limited out of DST (43)
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
dc_expand_user_macros_in_func_params
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Expand '{$A}' with {$A}=1
1 │ OK │ Expand '{$A}' with {$A}=(1)
2 │ OK │ Expand ''
3 │ OK │ Expand ' '
4 │ OK │ Expand '{$A}'
5 │ OK │ Expand ','
6 │ OK │ Expand '{$A}' with {$A}="1"
7 │ OK │ Expand '"{$A}"' with {$A}=1
8 │ OK │ Expand '1 ,2 ,3 '
9 │ OK │ Expand '1 , ,3 '
10 │ OK │ Expand ',2 ,3 '
11 │ OK │ Expand '{$A} ,{$B} ,{$C} with {$A}=1, {$B}="2", {$C}=(3)'
12 │ OK │ Expand '{$A}{$B}{$C} with {$A}=1, {$B}="2", {$C}=(3)'
13 │ OK │ Expand '{$A}' with {$A}=1,2,3
14 │ OK │ Expand '{$A},{$B}' with {$A}='', {$B}=''
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
dc_maintenance_match_tags
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ No maintenance and event tags (1)
1 │ OK │ No maintenance and event tags (2)
2 │ OK │ Maintenance tags with no event tags (1)
3 │ OK │ Maintenance tags with matching event tags (1)
4 │ OK │ Maintenance tags with matching event tags (2)
5 │ OK │ Maintenance tags with matching event tags (3)
6 │ OK │ Maintenance tags with matching event tags (4)
7 │ OK │ Maintenance tags with matching event tags (5)
8 │ OK │ Maintenance tags with matching event tags (6)
9 │ OK │ Maintenance tags with matching event tags (7)
10 │ OK │ Maintenance tags with matching event tags (8)
11 │ OK │ Maintenance tags with matching event tags (9)
12 │ OK │ Maintenance tags with matching event tags (10)
13 │ OK │ Maintenance tags with matching event tags (11)
14 │ OK │ Maintenance tags with matching event tags (12)
15 │ OK │ Maintenance tags with matching event tags (13)
16 │ OK │ Maintenance tags with matching event tags (14)
17 │ OK │ Maintenance tags with matching event tags (15)
18 │ OK │ Maintenance tags with matching event tags (16)
19 │ OK │ Maintenance tags with matching event tags (17)
20 │ OK │ Maintenance tags with matching event tags (18)
21 │ OK │ Maintenance tags with not matching event tags (1)
22 │ OK │ Maintenance tags with not matching event tags (2)
23 │ OK │ Maintenance tags with not matching event tags (3)
24 │ OK │ Maintenance tags with not matching event tags (4)
25 │ OK │ Maintenance tags with not matching event tags (5)
26 │ OK │ Maintenance tags with not matching event tags (6)
27 │ OK │ Maintenance tags with not matching event tags (7)
28 │ OK │ Maintenance tags with matching event tags (8)
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_vc_add_values
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Add numeric (float) type values
1 │ OK │ Add character type values
2 │ OK │ Add log type values
3 │ OK │ Add numeric (unsigned) type values
4 │ OK │ Add text type values
5 │ OK │ Try to add value without having cached it first
6 │ OK │ Add value at the end of the cached data
7 │ OK │ Add value at the beginning of the cached data
8 │ OK │ Add value at the beginning of the cached data matching the seconds value of first item
9 │ OK │ Add value in the middle of cached data
10 │ OK │ Add value at the end of cached data matching timestamp of the latest value
11 │ OK │ Add value at the end of fully cached data
12 │ OK │ Add value at the beginning of the fully cached data
13 │ OK │ Add value at the end of the cached data in low memory mode
14 │ OK │ Try adding value without enough space in cache
15 │ OK │ Add value with different value type
16 │ OK │ Add values after time causing old data to be dropped
17 │ OK │ Add values after item was not accessed for a day
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_vc_get_value
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Get last value from second interval
1 │ OK │ Get middle value from second interval
2 │ OK │ Get first value from second interval
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_vc_get_values
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Get numeric (float) type values
1 │ OK │ Get character type values
2 │ OK │ Get log type values
3 │ OK │ Get numeric (unsigned) type values
4 │ OK │ Get text type values
5 │ OK │ Get values in interval before data values leaving unread values in the middle
6 │ OK │ Get interval of already already data values
7 │ OK │ Get interval of already cached values ending with the last data value
8 │ OK │ Get interval of values larger than database history and caching last values
9 │ OK │ Get interval of already cached data values larger than database history
10 │ OK │ Get one value in the middle of uncached data
11 │ OK │ Get one value in the middle of cached data
12 │ OK │ Get two values in the middle of cached data
13 │ OK │ Get 4 values when only 3 values exists in database history and are not cached
14 │ OK │ Get 4 values when only 3 values exists in database history and are cached
15 │ OK │ Get one value from empty history interval
16 │ OK │ Get 100 values from 1 second interval with 3 history values
17 │ OK │ Get 2 values from already cached 1 second interval with 3 history values
18 │ OK │ Get 3 values from already cached 1 second interval with 3 history values
19 │ OK │ Get 4 values from already data 1 second interval with 3 history values
20 │ OK │ Get 1 value from 1 second interval with 3 history values past cached data
21 │ OK │ Get 4 values from partially cached 2 second interval with 6 history values
22 │ OK │ Get all history values by count when they were already cached by time based request
23 │ OK │ Get all data values from interval when they were already cached by count
24 │ OK │ Get interval of values from empty history
25 │ OK │ Get number of values from empty history
26 │ OK │ Get number of values in from interval of history
27 │ OK │ Get interval of values when item value type has been changed
28 │ OK │ Get number of values when item value type has been changed
29 │ OK │ Get number of uncached item values when cache working in low memory mode
30 │ OK │ Get interval of uncached item values when cache working in low memory mode
31 │ OK │ Get number of uncached item values from interval when cache working in low memory mode
32 │ OK │ Get number of data item values when cache working in low memory mode
33 │ OK │ Get interval of data item values when cache working in low memory mode
34 │ OK │ Get number of data item values from interval when cache working in low memory mode
35 │ OK │ Get values with not enough space in cache
36 │ OK │ Get values with not enough space in cache and a day+ passed since last request
37 │ OK │ Active range tracking during day
38 │ OK │ Active range change in next few days
39 │ OK │ Switch back to normal mode after working a day in low memory mode
40 │ OK │ Get interval of values when using nanoseconds in end time
41 │ OK │ Get number of values when using nanoseconds in end time
42 │ OK │ Get number of values during interval when using nanoseconds in end time
43 │ OK │ Get number of values during interval when using nanoseconds in end time and not enough data
44 │ OK │ Get 1 value during interval when using nanoseconds in end time
45 │ OK │ Get 1 value during interval when using nanoseconds in end time (2)
46 │ OK │ Get 10 values during interval when using nanoseconds in end time
47 │ OK │ Get number of uncached item values from interval when cache working in low memory mode
48 │ OK │ Get 1 item value when cache working in low memory mode
49 │ OK │ Value target time is with future timestamp
50 │ OK │ Value target time is with future timestamp and there are more values with future timestamp
51 │ OK │ Value target time is with future timestamp but count also requires value from past
52 │ OK │ Value target time is with future timestamp but count also requires present value
53 │ OK │ Value target time is with future timestamp but count also requires present value and no past values
54 │ OK │ Value target time is with future timestamp
55 │ OK │ Value target time is with future timestamp and there are more values with future timestamp for seconds
56 │ OK │ Value target time is with future timestamp but seconds also requires value from past
57 │ OK │ Value target time is with future timestamp but seconds also requires present value
58 │ OK │ Value target time is with future timestamp but seconds also requires present value and no past values
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
dc_expand_user_macros_in_calcitem
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Expand 'last("hostA:key[{$A}]",{$A}) + last("hostB:key[{$A}]",{$A})' with hostA:{$A}=#1, hostB:{$A}=#2
1 │ OK │ Expand 'last("hostA:key[{$A}]",{$A}) + last("hostB:key[{$A}]",{$A})' with hostA:{$A}='', hostB:{$A}=''
2 │ OK │ Expand 'last(host:key)'
3 │ OK │ Expand 'last("key[{$A}]",{$A})' on hostA with hostA:{$A}='#1', hostB:{$A}='#2'
4 │ OK │ Expand 'last("key[{$A}]",{$A})' on hostB with hostA:{$A}='#1', hostB:{$A}='#2'
5 │ OK │ Expand '{$A}last(host:key){$B}'
6 │ OK │ Expand '{$A}last(host:key){$B}'
7 │ OK │ Expand '{$X}+last("hostB:key[{$X}]",{$X})+{$Y}+last("key[{$X}]",{$X})+{$Z}'
8 │ OK │ Expand '{$A}{$B}last("hostA:key[{$A}]",{$A}${B}){$A}{$B}'
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
dc_expand_user_macros_in_expression
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Expand '{1} < {$A}' with {$A}=1
1 │ OK │ Expand '{1} < "{$A}"' with {$A}=1
2 │ OK │ Expand '{1} < {$A}'
3 │ OK │ Expand '{1} < {$A}' with {$A}=x
4 │ OK │ Expand '{1} < {$A}' with {$A}="x"
5 │ OK │ Expand '{1} < "{$A}"' with {$A}="x"
6 │ OK │ Expand '{1} < "{$A}"'
7 │ OK │ Expand '{1} = "x" and {2} < {$A}' with {$A}="x"
8 │ OK │ Expand '{1} < "{$A}{$B}"' with {$A}=1,'{$B}'="x"
9 │ OK │ Expand '{1} < "{$A}{$B}"' with {$A}=1,'{$B}'=2
10 │ OK │ Expand '{1} < "{$A}{$B}"' with {$A}="x",'{$B}'="y"
11 │ OK │ Expand '{1} < {$A}{$B}' with {$A}="x",'{$B}'="y"
12 │ OK │ Expand '{1} < {$A}{$B}' with {$A}=1,'{$B}'=0
13 │ OK │ Expand '{1} < "\"{$A}\"{$B}\""' with {$A}=\",'{$B}'=\
14 │ OK │ Expand '{1} < " \" {$A} \" {$B} \" " and {$A}<>"\"{$B}" and " {$A} " = " {$A} "' with {$A}=",'{$B}'=\\
15 │ OK │ Expand '{1} < {$A}' with {$A}=""
16 │ OK │ Expand '{1} < "{$A}"' with {$A}=""
17 │ OK │ Expand '{1} = {$A:"x:\"1\""} or {2} = {$A:"y"}' with {$A:"x:\"1\""}=ax, {$A}=a
18 │ OK │ Expand '{1} < {$A:"x:\"1\""}'
19 │ OK │ Expand '{2000} < {$A}' with {$A}=2e+3
20 │ OK │ Expand '{1} < "\\\"a\"" and {1} = {$A}' with {$A}="b"
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
dc_item_poller_type_update
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Poller type update - direct
1 │ OK │ Poller type update - by proxy
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
is_item_processed_by_server
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ invalid item key type (1)
1 │ OK │ invalid item key type (2)
2 │ OK │ invalid item key type (3)
3 │ OK │ invalid item key type (4)
4 │ OK │ invalid item key type (5)
5 │ OK │ invalid item key type (6)
6 │ OK │ invalid item key type (7)
7 │ OK │ invalid item key type (8)
8 │ OK │ invalid item key type (9)
9 │ OK │ invalid item key type (10)
10 │ OK │ invalid item key type (11)
11 │ OK │ valid item key type (12)
12 │ OK │ invalid item key syntax (13)
13 │ OK │ invalid item key syntax (14)
14 │ OK │ invalid item key syntax (15)
15 │ OK │ valid item key syntax (16)
16 │ OK │ invalid item key syntax (17)
17 │ OK │ valid item key syntax (18)
18 │ OK │ invalid item key syntax (19)
19 │ OK │ valid item key syntax (20)
20 │ OK │ invalid item key syntax (21)
21 │ OK │ valid item key syntax (22)
22 │ OK │ valid item key syntax (23)
23 │ OK │ invalid item key syntax (24)
24 │ OK │ invalid item key syntax (25)
25 │ OK │ invalid item key type (26)
26 │ OK │ invalid item key type (27)
27 │ OK │ invalid item key type (27)
28 │ OK │ invalid item key type (29)
29 │ OK │ valid item key type (30)
30 │ OK │ valid item key type (31)
31 │ OK │ invalid item key type (32)
32 │ OK │ invalid item key type (33)
33 │ OK │ invalid item key type (34)
34 │ OK │ invalid item key type (35)
35 │ OK │ invalid item key type (36)
36 │ OK │ invalid item key type (37)
37 │ OK │ invalid item key type (38)
38 │ OK │ invalid item key type (39)
39 │ OK │ invalid item key type (40)
40 │ OK │ invalid item key type (41)
41 │ OK │ invalid item key type (42)
42 │ OK │ invalid item key type (43)
43 │ OK │ valid item key type (44)
44 │ OK │ valid item key type (45)
45 │ OK │ invalid item key type (46)
46 │ OK │ invalid item key type (47)
47 │ OK │ invalid item key type (48)
48 │ OK │ invalid item key type (49)
49 │ OK │ non-existing item type (50)
50 │ OK │ non-existing item type (51)
51 │ OK │ valid item key syntax (52)
52 │ OK │ valid item key syntax (53)
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
DBadd_condition_alloc
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully parsed #1
1 │ OK │ successfully parsed #4
2 │ OK │ successfully parsed #10
3 │ OK │ successfully parsed #951
4 │ OK │ successfully parsed #1000
5 │ OK │ successfully parsed #2000
6 │ OK │ successfully parsed #902501
7 │ OK │ successfully parsed #4x2
8 │ OK │ successfully parsed #5x2
9 │ OK │ successfully parsed #5x4x1
10 │ OK │ successfully parsed #5x4x2
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
DBselect_uint64
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully selected #1
1 │ OK │ successfully selected #2
2 │ OK │ successfully selected #3
3 │ OK │ failed selected #1
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_history_get_values
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Test count based request spanning over month+
1 │ OK │ Test count based request over short period
2 │ OK │ Test time based request
3 │ OK │ Test time and count based request with data less than requested number
4 │ OK │ Test time and count based request with data matching the requested number
5 │ OK │ Test time and count based request with data less by one than requested number
6 │ OK │ Test time and count based request with data less by one than requested number and different ns ordering
7 │ OK │ Test time and count based request with data less by 3 than requested number
8 │ OK │ Test count based request on empty data
9 │ OK │ Test time based request on empty data
10 │ OK │ Test time and count based request on empty data
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_json_decodevalue
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Decode fail ''
1 │ OK │ Decode fail 'a b'
2 │ OK │ Decode fail ' 1'
3 │ OK │ Decode fail '+1'
4 │ OK │ Decode fail '--1'
5 │ OK │ Decode fail '.5'
6 │ OK │ Decode fail '01'
7 │ OK │ Decode fail '"a\X"'
8 │ OK │ Decode fail '"a\'
9 │ OK │ Decode fail '"a'
10 │ OK │ Decode fail '"'
11 │ OK │ Decode fail '[1, 2]'
12 │ OK │ Decode fail '{"a":1}'
13 │ OK │ Decode fail 'NULL'
14 │ OK │ Decode fail 'TRUE'
15 │ OK │ Decode fail 'FALSE'
16 │ OK │ Decode fail '"longer value"' with small output buffer
17 │ OK │ Decode fail '12345678901234567890' with small output buffer
18 │ OK │ Decode fail 'true' with small output buffer
19 │ OK │ Decode fail 'false' with small output buffer
20 │ OK │ Decode fail 'null' with small output buffer
21 │ OK │ Decode fail '"text"' with 0 output buffer
22 │ OK │ Decode fail 'true' with 0 output buffer
23 │ OK │ Decode fail 'false' with 0 output buffer
24 │ OK │ Decode fail 'null' with 0 output buffer
25 │ OK │ Decode fail '12345' with 0 output buffer
26 │ OK │ Decode success '1'
27 │ OK │ Decode success '1.5'
28 │ OK │ Decode success '-1'
29 │ OK │ Decode success '0'
30 │ OK │ Decode success '1e5'
31 │ OK │ Decode success '1e-2'
32 │ OK │ Decode success '-0.5E10'
33 │ OK │ Decode success '-0.5E+10'
34 │ OK │ Decode success '1e03'
35 │ OK │ Decode success 'true'
36 │ OK │ Decode fail 'true' with output buffer 1 byte less than needed
37 │ OK │ Decode success 'false'
38 │ OK │ Decode fail 'false' with output buffer 1 byte less than needed
39 │ OK │ Decode success 'null'
40 │ OK │ Decode success '"a"'
41 │ OK │ Decode success '"\\/"'
42 │ OK │ Decode success '"value \"1\""'
43 │ OK │ Decode success '"value \"1\""'with output buffer having the required size
44 │ OK │ Decode fail '"value \"1\""' with output buffer 1 byte less than needed
45 │ OK │ Decode success '"\u0420\u0435\u0433\u0438\u043e\u043d"'
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_json_decodevalue_dyn
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Decode fail ''
1 │ OK │ Decode fail 'a b'
2 │ OK │ Decode fail ' 1'
3 │ OK │ Decode fail '+1'
4 │ OK │ Decode fail '--1'
5 │ OK │ Decode fail '.5'
6 │ OK │ Decode fail '01'
7 │ OK │ Decode fail '"a\X"'
8 │ OK │ Decode fail '"a\'
9 │ OK │ Decode fail '"a'
10 │ OK │ Decode fail '"'
11 │ OK │ Decode fail '[1, 2]'
12 │ OK │ Decode fail '{"a":1}'
13 │ OK │ Decode fail 'NULL'
14 │ OK │ Decode fail 'TRUE'
15 │ OK │ Decode fail 'FALSE'
16 │ OK │ Decode success '"longer value"' with small output buffer
17 │ OK │ Decode success '12345678901234567890' with small output buffer
18 │ OK │ Decode fail 'true' with small output buffer
19 │ OK │ Decode fail 'false' with small output buffer
20 │ OK │ Decode fail 'null' with small output buffer
21 │ OK │ Decode fail '"text"' with 0 output buffer
22 │ OK │ Decode fail 'true' with 0 output buffer
23 │ OK │ Decode fail 'false' with 0 output buffer
24 │ OK │ Decode fail 'null' with 0 output buffer
25 │ OK │ Decode fail '12345' with 0 output buffer
26 │ OK │ Decode success '1'
27 │ OK │ Decode success '1.5'
28 │ OK │ Decode success '-1'
29 │ OK │ Decode success '0'
30 │ OK │ Decode success '1e5'
31 │ OK │ Decode success '1e-2'
32 │ OK │ Decode success '-0.5E10'
33 │ OK │ Decode success '-0.5E+10'
34 │ OK │ Decode success '1e03'
35 │ OK │ Decode success 'true'
36 │ OK │ Decode fail 'true' with output buffer 1 byte less than needed
37 │ OK │ Decode success 'false'
38 │ OK │ Decode fail 'false' with output buffer 1 byte less than needed
39 │ OK │ Decode success 'null'
40 │ OK │ Decode success '"a"'
41 │ OK │ Decode success '"\\/"'
42 │ OK │ Decode success '"value \"1\""'
43 │ OK │ Decode success '"value \"1\""'with output buffer having the required size
44 │ OK │ Decode fail '"value \"1\""' with output buffer 1 byte less than needed
45 │ OK │ Decode success '"\u0420\u0435\u0433\u0438\u043e\u043d"'
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_json_open_path
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Invalid path $.a[] in {"a":{"b": [{"x":10}, 2, 3] }}
1 │ OK │ Invalid path $a in {"a":1}
2 │ OK │ Invalid path "" in {"a":1}
3 │ OK │ Invalid location $.x.b in {"a":{"b": [{"x":10}, 2, 3] }}
4 │ OK │ Invalid location $[3] in [1, 2, 3]
5 │ OK │ Valid location $[0] in [1, 2, 3]
6 │ OK │ Valid location $[1] in [1, 2, 3]
7 │ OK │ Valid location $[2] in [1, 2, 3]
8 │ OK │ Valid location $[1][0] in [1,["a","b","c"],3]
9 │ OK │ Valid location $.x[1][2] in {"x":[1, ["a", "b", "c"], 3]}
10 │ OK │ Valid location $.a in {"a":{"b": [{"x":10}, 2, 3] }}
11 │ OK │ Valid location $.a in {"a" : {"b": [{"x":10}, 2, 3] }}
12 │ OK │ Valid location $.a.b in {"a":{"b": [{"x":10}, 2, 3] }}
13 │ OK │ Valid location $.a.b[0] in {"a":{"b": [{"x":10}, 2, 3] }}
14 │ OK │ Valid location $.a.b[1] in {"a":{"b": [{"x":10}, 2, 3] }}
15 │ OK │ Valid location $.a.b[2] in {"a":{"b": [{"x":10}, 2, 3] }}
16 │ OK │ ZBX-13782, empty string
17 │ OK │ ZBX-13782, 1 non-escaped ASCII character
18 │ OK │ ZBX-13782, 2 non-escaped ASCII characters
19 │ OK │ ZBX-13782, 3 non-escaped ASCII characters
20 │ OK │ ZBX-13782, many non-escaped ASCII characters
21 │ OK │ ZBX-13782, escaped quotation mark
22 │ OK │ ZBX-13782, escaped reverse solidus
23 │ OK │ ZBX-13782, escaped solidus
24 │ OK │ ZBX-13782, escaped backspace
25 │ OK │ ZBX-13782, escaped form feed
26 │ OK │ ZBX-13782, escaped line feed
27 │ OK │ ZBX-13782, escaped carriage return
28 │ OK │ ZBX-13782, escaped tab
29 │ OK │ ZBX-13782, escaped character in the beginning of string
30 │ OK │ ZBX-13782, escaped character in the middle of string
31 │ OK │ ZBX-13782, escaped character in the end of string
32 │ OK │ ZBX-13782, several escaped character in string
33 │ OK │ ZBX-13782, escaped Unicode character \u0000
34 │ OK │ ZBX-13782, A as escaped Unicode character
35 │ OK │ ZBX-13782, escaped Unicode character \u00e4 which translates into 2 byte UTF-8
36 │ OK │ ZBX-13782, escaped Unicode character \u00D1 which translates into 2 byte UTF-8
37 │ OK │ ZBX-13782, escaped Unicode character \u042F which translates into 2 byte UTF-8
38 │ OK │ ZBX-13782, escaped Unicode character \u0800 which translates into 3 byte UTF-8
39 │ OK │ ZBX-13782, escaped Unicode character \u10c0 which translates into 3 byte UTF-8
40 │ OK │ ZBX-13782, escaped Unicode character \u10c0 which translates into 3 byte UTF-8
41 │ OK │ ZBX-13782, escaped Unicode character \u20E0 which translates into 3 byte UTF-8
42 │ OK │ ZBX-13782, string with escaped Unicode character \u20E0 which translates into 3 byte UTF-8
43 │ OK │ ZBX-13782, escaped Unicode character \uFFFD (replacement character)
44 │ OK │ ZBX-13782, escaped Unicode character Curling Stone U+1F94C
45 │ OK │ ZBX-13782, several escaped Unicode characters Zanabazar Square Letter Za U+11A28
46 │ OK │ ZBX-13782, several escaped Unicode characters Linear B Syllable B008 A U+10000
47 │ OK │ Invalid path $.*.b in {"a":{"b": [{"x":10}, 2, 3] }}
48 │ OK │ Invalid path $.a.b[?(@.x == "10")] in {"a":{"b": [{"x":10}, 2, 3] }}
49 │ OK │ Invalid path $["a", "x"].b in {"a":{"b": [{"x":10}, 2, 3] }}
50 │ OK │ Invalid path $.a.b[1,2] in {"a":{"b": [{"x":10}, 2, 3] }}
51 │ OK │ Invalid path $.a.b.length() in {"a":{"b": [{"x":10}, 2, 3] }}
52 │ OK │ Invalid path $..b in {"a":{"b": [{"x":10}, 2, 3] }}
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_jsonpath_compile
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Compile fail ""
1 │ OK │ Compile fail $
2 │ OK │ Compile fail "$."
3 │ OK │ Compile fail "$['a'"
4 │ OK │ Compile fail "$[a']"
5 │ OK │ Compile fail "$['']"
6 │ OK │ Compile fail "$.a[]"
7 │ OK │ Compile fail "$.a[1"
8 │ OK │ Compile fail "$['a'][]"
9 │ OK │ Compile fail "$['a'][1"
10 │ OK │ Compile fail "$.a."
11 │ OK │ Compile success "$.a"
12 │ OK │ Compile success "$['a']"
13 │ OK │ Compile success "$[ 'a' ]"
14 │ OK │ Compile success '$["a"]'
15 │ OK │ Compile success "$.a.b"
16 │ OK │ Compile success "$['a'].b"
17 │ OK │ Compile success "$['a']['b']"
18 │ OK │ Compile success $.a['b']
19 │ OK │ Compile success $.a[0]
20 │ OK │ Compile success $[-1]
21 │ OK │ Compile success $.a[0].b[1]
22 │ OK │ Compile success $.a[1000]
23 │ OK │ Compile success $.a[ 1 ]
24 │ OK │ Compile success $['a'][2]
25 │ OK │ Compile success $['a'][2]['b'][3]
26 │ OK │ Compile success $[1][2]
27 │ OK │ Compile success $.['a'].['b']
28 │ OK │ Compile fail $...a
29 │ OK │ Compile fail $.**.a
30 │ OK │ Compile fail $[,1]
31 │ OK │ Compile fail $[1,]
32 │ OK │ Compile fail $[1,,2]
33 │ OK │ Compile fail $[1,*,2]
34 │ OK │ Compile fail $[--1]
35 │ OK │ Compile fail $[a]
36 │ OK │ Compile fail $[$a$]
37 │ OK │ Compile fail $[,'a']
38 │ OK │ Compile fail $['a',]
39 │ OK │ Compile fail $['a',,'b']
40 │ OK │ Compile fail $['a',*,'b']
41 │ OK │ Compile fail $[--'a']
42 │ OK │ Compile fail $[1,'a']
43 │ OK │ Compile fail $['a\a']
44 │ OK │ Compile fail $['a\']
45 │ OK │ Compile fail $['a\"']
46 │ OK │ Compile fail $['a\]
47 │ OK │ Compile fail $['a\
48 │ OK │ Compile fail $["a\'"]
49 │ OK │ Compile success $[ 1 ]
50 │ OK │ Compile success $[1,2]
51 │ OK │ Compile success $[ 1 , 2 ]
52 │ OK │ Compile success $[ -1 ]
53 │ OK │ Compile success $[ -1, 2, 3 ]
54 │ OK │ Compile success $[ ' a ' ]
55 │ OK │ Compile success $[ ' a ', "b" ]
56 │ OK │ Compile success $['a \'b\' \\/']
57 │ OK │ Compile success $["a \"b\""]
58 │ OK │ Compile success $.*.a
59 │ OK │ Compile success $.*
60 │ OK │ Compile success $[*]
61 │ OK │ Compile success $..a.b..c
62 │ OK │ Compile fail $[1:2:3]
63 │ OK │ Compile success $[:]
64 │ OK │ Compile success $[1:]
65 │ OK │ Compile success $[:1]
66 │ OK │ Compile success $[1:2]
67 │ OK │ Compile success $[-1:-1]
68 │ OK │ Compile success $[ 1 : 2 ]
69 │ OK │ Compile success $[ : 1 ]
70 │ OK │ Compile success $[ 1 : ]
71 │ OK │ Compile fail $.min(
72 │ OK │ Compile fail $.min(1)
73 │ OK │ Compile fail $.div()
74 │ OK │ Compile fail $.avg().data
75 │ OK │ Compile fail $.len()
76 │ OK │ Compile success $.min()
77 │ OK │ Compile success $.max()
78 │ OK │ Compile success $.avg()
79 │ OK │ Compile success $.length()
80 │ OK │ Compile success $.first().max()
81 │ OK │ Compile fail $[?]
82 │ OK │ Compile fail $[?(]
83 │ OK │ Compile fail $[?()]
84 │ OK │ Compile fail $[?(+)]
85 │ OK │ Compile fail $[?(==)]
86 │ OK │ Compile fail $[?(()]
87 │ OK │ Compile fail $[?(+1)]
88 │ OK │ Compile fail $[?(!)]
89 │ OK │ Compile fail $[?(a)]
90 │ OK │ Compile fail $[?(())]
91 │ OK │ Compile fail $[?(1++1)]
92 │ OK │ Compile fail $[?(1 - - 1)]
93 │ OK │ Compile fail $[?(1 + + 1)]
94 │ OK │ Compile fail $[?((1+1)+)]
95 │ OK │ Compile fail $[?((1 + 1) + ())]
96 │ OK │ Compile fail $[?(a + 1)]
97 │ OK │ Compile fail $[?(1 + 'a)]
98 │ OK │ Compile fail $[?($..b + 1)]
99 │ OK │ Compile fail $[?($['a])]
100 │ OK │ Compile fail $[?($[1,2])]
101 │ OK │ Compile fail $[?($.a.)]
102 │ OK │ Compile success $[?(1)]
103 │ OK │ Compile success $[?(-1)]
104 │ OK │ Compile success $[?($.a)]
105 │ OK │ Compile success $[?(@.b)]
106 │ OK │ Compile success $[?(!1)]
107 │ OK │ Compile success $[?(1 + 2)]
108 │ OK │ Compile success $[?(1 + 2 * 3)]
109 │ OK │ Compile success $[?(1 - 2 / 3)]
110 │ OK │ Compile success $[?((1 + 2) * 3)]
111 │ OK │ Compile success $[?($.a + 2 == 3)]
112 │ OK │ Compile success $[?((1 + 2) * (3 - 4))]
113 │ OK │ Compile success $[?(1 == 2 || !3*5)]
114 │ OK │ Compile success $[?(1 == 2 || !(3*5))]
115 │ OK │ Compile success $[?(1 == 2 * @.a)]
116 │ OK │ Compile success $[?((1)+(2))]
117 │ OK │ Compile success $[?(1 + 2 - 3 + 4)]
118 │ OK │ Compile success $[?(1 == 2 == 3)]
119 │ OK │ Compile fail $[?(1 == 2 == 3]
120 │ OK │ Compile success $..[?(@.id)]
121 │ OK │ Compile success $['cn=snmp,cn=monitor']['connections']
122 │ OK │ Compile success $.sum()
123 │ OK │ Compile success $.*~
124 │ OK │ Compile success $.*~.first()
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_jsonpath_query
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Query $[0] from ["a", "b"]
1 │ OK │ Query $[4] from ["a", "b"]
2 │ OK │ Query $[1] from ["a", "b"]
3 │ OK │ Query $[2] from ["a", "b"]
4 │ OK │ Query $[2].* from ["a", "b"]
5 │ OK │ Query $.filters.price
6 │ OK │ Query $.filters.category
7 │ OK │ Query $.filters.id
8 │ OK │ Query $.books[1].title
9 │ OK │ Query $['closed message']
10 │ OK │ Query $.books[-1].author
11 │ OK │ Query $.filters
12 │ OK │ Query $.books.length()
13 │ OK │ Query $.tags[:]
14 │ OK │ Query $.tags[2:]
15 │ OK │ Query $.tags[:2]
16 │ OK │ Query $.tags[1:4]
17 │ OK │ Query $.tags[-2:]
18 │ OK │ Query $.tags[:-3]
19 │ OK │ Query $.tags[:-3].length()
20 │ OK │ Query $.books[0, 2].title
21 │ OK │ Query $.books[1]['author', "title"]
22 │ OK │ Query $..id
23 │ OK │ Query $.services..price
24 │ OK │ Query $.books[?(@.id == 1 + 1)].title
25 │ OK │ Query $.books[?(@.id == 4 / 2)].title
26 │ OK │ Query $.books[?(@.id == 7 - 5)].title
27 │ OK │ Query $.books[?(@.id == 0.4 * 5)].title
28 │ OK │ Query $.books[?(@.id == 4 - 0.4 * 5)].title
29 │ OK │ Query $.books[?(@.id == -0.4 * 5 + 4)].title
30 │ OK │ Query $.books[?(@.id == 0.4 * (-5) + 4)].title
31 │ OK │ Query $.books[?(@.id == 2 || @.id == 4)].title
32 │ OK │ Query $.books[?(@.id == 2 && 2 * ((1 + 3) / 2 + 3) == 10)].title
33 │ OK │ Query $.books[?(@.id == 2 == 1)].title
34 │ OK │ Query $.books[?(!(@.id == 2))].title
35 │ OK │ Query $.books[?(@.id != 2)].title
36 │ OK │ Query $.books[?(@.title =~ " of ")].title
37 │ OK │ Query $.books[?(@.price > 12.99)].title
38 │ OK │ Query $.books[?(@.price >= 12.99)].title
39 │ OK │ Query $.books[?(@.price < 12.99)].title
40 │ OK │ Query $.books[?(@.price <= 12.99)].title
41 │ OK │ Query $.books[?(@.author > "Herman Melville")].title
42 │ OK │ Query $.books[?(@.author >= "Herman Melville")].title
43 │ OK │ Query $.books[?(@.author < "Herman Melville")].title
44 │ OK │ Query $.books[?(@.author <= "Herman Melville")].title
45 │ OK │ Query $.books[?(@.price > $.filters.price)].title
46 │ OK │ Query $.books[?(@.category == $.filters.category)].title
47 │ OK │ Query $.books[?(@.category != $.filters.category)].title
48 │ OK │ Query $..[?(@.id)]
49 │ OK │ Query $.services..[?(@.price > 50)].description
50 │ OK │ Query $..id.length()
51 │ OK │ Query $.books[?(@.price >= 12.99)].length()
52 │ OK │ Query $.books[?(@.id == 2)].title.first()
53 │ OK │ Query $..tags.first().length()
54 │ OK │ Query $.bad.path.first().length()
55 │ OK │ Query $.[?(@.ElementName == "test")].values.first().length()
56 │ OK │ Query $.length() from ["a", "b"]
57 │ OK │ Query $.first() from ["a", "b"]
58 │ OK │ Query $.first().first() from [["a", "b"]]
59 │ OK │ Query $.first().first().first() from [[["a", "b"]]]
60 │ OK │ Query $.books[*].price.min()
61 │ OK │ Query $..price.max()
62 │ OK │ Query $.books[?(@.category == "fiction")].price.avg()
63 │ OK │ Query $.books[?(@.category == $.filters.xyz)].title
64 │ OK │ Query $.filters['no filters']
65 │ OK │ Query $.services[?(@.active=="true")].servicegroup
66 │ OK │ Query $.services[?(@.active=="false")].servicegroup
67 │ OK │ Query $.books[?(@.title =~ "[a-z")].title
68 │ OK │ $..books[?(!@.isbn)]
69 │ OK │ $..books[?(@.isbn)]
70 │ OK │ Query $.books[*].price.sum()
71 │ OK │ Query $[?(@.a)].id from [{"a":{"b":"c"}, "id":1}, {"x":{"y":"z"}, "id":2}]
72 │ OK │ Query $[?(!@.a)].id from [{"a":{"b":"c"}, "id":1}, {"x":{"y":"z"}, "id":2}]
73 │ OK │ Query $[?(@.a)].id from [{"a":["b","c"], "id":1}, {"x":["y","z"], "id":2}]
74 │ OK │ Query $[?(!@.a)].id from [{"a":["b","c"], "id":1}, {"x":["y","z"], "id":2}]
75 │ OK │ Query $.*~
76 │ OK │ Query $.*~.first()
77 │ OK │ Query $.services[?(@.servicegroup=="1002")]~
78 │ OK │ Query $.books[?(@.category=="fiction")]~
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
prometheus_filter_init
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ cpu{type="intel"} == 1
1 │ OK │ {__name__="cpu", type="intel"}
2 │ OK │ {__name__="cpu", type="intel", cores=~"4"}
3 │ OK │ cpu == 1
4 │ OK │ cpu{description="CPU \"Intel\""}
5 │ OK │ cpu{__name__="cpu"}
6 │ OK │ {__name__="cpu", __name__="cpu"}
7 │ OK │ cpu = 1
8 │ OK │ cpu =~ 1
9 │ OK │ cpu{type=="intel"} == 1
10 │ OK │ Empty
11 │ OK │ sensor == Nan
12 │ OK │ sensor == +Nan
13 │ OK │ sensor == +Inf
14 │ OK │ sensor == -.1
15 │ OK │ sensor == -.1e2
16 │ OK │ sensor == +1.
17 │ OK │ sensor == +1.e2
18 │ OK │ sensor == +1.0000
19 │ OK │ sensor == +1.0000e-2
20 │ OK │ sensor == .
21 │ OK │ sensor == 1e
22 │ OK │ sensor == 1e1 1
23 │ OK │ {type="intel"cores="4"}
24 │ OK │ {}
25 │ OK │ {vendor="intel", cores="4"}
26 │ OK │ cpu
27 │ OK │ {vendor="intel", cores="4",}
28 │ OK │ {vendor="intel" , }
29 │ OK │ {vendor="intel",,}
30 │ OK │ {vendor="intel \x"}
31 │ OK │ cpu{__="intel"}
32 │ OK │ sensor == NAN
33 │ OK │ sensor == nan
34 │ OK │ sensor == NaN
35 │ OK │ sensor == nAn
36 │ OK │ sensor == +INF
37 │ OK │ sensor == -inf
38 │ OK │ sensor == InF
39 │ OK │ sensor == iNf
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
prometheus_parse_row
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ cpu{type="intel"} 1 (1)
1 │ OK │ cpu{type="intel"} 1 12344 (2)
2 │ OK │ cpu{type="intel"} 1 (3)
3 │ OK │ cpu {type="intel"} 1
4 │ OK │ cpu 1 1
5 │ OK │ cpu { type = "intel" , model = "i9" , } 1
6 │ OK │ 1cpu 1
7 │ OK │ cpu! 1
8 │ OK │ cpu none
9 │ OK │ {vendor="intel"}
10 │ OK │ cpu{vendor=="intel"}
11 │ OK │ cpu{,vendor=="intel"}
12 │ OK │ cpu{ven:dor=="intel"}
13 │ OK │ cpu{vendor=="in"tel"}
14 │ OK │ cpu{vendor=="intel\n"}
15 │ OK │ cpu{type="intel"} 1x
16 │ OK │ cpu:0{vendor="intel"} 1
17 │ OK │ cpu{vendor="in\"t\"el"} 1
18 │ OK │ cpu{vendor="intel\\"} 1
19 │ OK │ cpu{vendor="intel\n"} 1
20 │ OK │ cpu$ 1
21 │ OK │ cpu{vendor="intel"}1
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_prometheus_to_json
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Simple metric using params: wmi_os_physical_memory_free_bytes
1 │ OK │ Get metric using params: cpu_usage_system{cpu="cpu-total"}
2 │ OK │ Get metric using params: wmi_logical_disk_free_bytes{volume="{#VOLUME}"}
3 │ OK │ Get metric value using params: cpu_usage_system{cpu="cpu-total",host=~".*"}
4 │ OK │ Get metric value using params: cpu_usage_system{cpu="cpu-total",host=~".*"}
5 │ OK │ Get metric value using params: cpu_usage_system{cpu="cpu-total"}
6 │ OK │ Get metric value using params: cpu_usage_system{cpu=~"cpu-tot.+"}
7 │ OK │ Get metric value using params: {__name__=~"cpu_usage_syst.+",cpu=~"cpu-tot.+"}
8 │ OK │ Get metric value using params: cpu_usage_system{cpu=~".*"}
9 │ OK │ Get metric value using params: cpu_usage_system{cpu=~"cpu-tot.+"}
10 │ OK │ Get metric for http_requests_total{code="400"} 3 1395066363000
11 │ OK │ Escaping in label values
12 │ OK │ Minimalistic line
13 │ OK │ A weird metric from before the epoch
14 │ OK │ A histogram, which has a pretty complex representation in the text format
15 │ OK │ A summary, which has a complex representation #1
16 │ OK │ A summary, which has a complex representation #2
17 │ OK │ Empty metric
18 │ OK │ Empty params
19 │ OK │ Empty metric and empty params
20 │ OK │ Only spaces in metric
21 │ OK │ Only spaces in params
22 │ OK │ Only spaces in params (multiline metric)
23 │ OK │ Only spaces in metric and in params
24 │ OK │ Empty multiline metric
25 │ OK │ Metric without value
26 │ OK │ Metric with missing label value: wmi_os_timezone{timezone=} 1
27 │ OK │ Metric with missing label value: wmi_os_timezone{timezone} 1
28 │ OK │ Incorrect metric data
29 │ OK │ Incorrect metric data (a space within)
30 │ OK │ Metric name with invalid characters included
31 │ OK │ Incorrect metric data with valid HELP/TYPE
32 │ OK │ Metric with a hash symbol only
33 │ OK │ Metric with an empty space only
34 │ OK │ Metric with UTF-8 3 byte character only
35 │ OK │ Metric with UTF-8 3 byte character in label value
36 │ OK │ Metric with missing "{"
37 │ OK │ Metric with missing "}"
38 │ OK │ Metric with missing "
39 │ OK │ Metric with missing ","
40 │ OK │ Metric with missing "," but empty params
41 │ OK │ Double equal sign (==) instead of single equal sign (=) in label value assignment #1
42 │ OK │ Double equal sign (==) instead of single equal sign (=) in label value assignment #2
43 │ OK │ Double equal sign (==) instead of single equal sign (=) in label value assignment #3
44 │ OK │ Label value and params holds new line character
45 │ OK │ Metric name and params holds new line character
46 │ OK │ Double equal sign (==) instead of single equal sign (=) for label value in params
47 │ OK │ Single equal sign (=) instead of double equal sign (==) for metric value in params
48 │ OK │ More than one metric (2) corresponds to the given params
49 │ OK │ Metric with "Nan" value
50 │ OK │ Metric with "+Inf" value
51 │ OK │ Metric with "-Inf" value
52 │ OK │ Metric with "NAN" value
53 │ OK │ Metric with timestamp
54 │ OK │ Metric with additional value after timestamp
55 │ OK │ Metric with negative timestamp
56 │ OK │ Metric with negative value
57 │ OK │ Multilne metric with negative value
58 │ OK │ The __name__ identifier is specified as last in params #1
59 │ OK │ The __name__ identifier is specified as last in params #2
60 │ OK │ Params set to cpu_usage_system{__name__=~"cpu_usage_syst.+",cpu=~"cpu-tot.+"}
61 │ OK │ Params set to cpu_usage_system{__name__=~"cpu_age_syst.+",cpu=~"cpu-tot.+"}
62 │ OK │ Metric with multiple HELP lines
63 │ OK │ Metric with multiple TYPE:untyped lines
64 │ OK │ Metric with wrong TYPE
65 │ OK │ Metric with only one argument for TYPE
66 │ OK │ Metric with no arguments for TYPE
67 │ OK │ Metric with multiple spaces before value
68 │ OK │ Metric with no description after HELP
69 │ OK │ Metric with invalid characters in label name
70 │ OK │ Metric name consists of all valid characters
71 │ OK │ Label name consists of all valid characters
72 │ OK │ Params with regular expression but without prefix "~"
73 │ OK │ Wrong regular expression in params
74 │ OK │ Incorrect identifier __cpu__ set in params #1
75 │ OK │ Incorrect identifier __cpu__ set in params #2
76 │ OK │ Incorrect float in metric value
77 │ OK │ Params set to "{}"
78 │ OK │ Params set to "a{}"
79 │ OK │ Metric data contains "{}" only
80 │ OK │ Negative value in params for metric value
81 │ OK │ Get metric value using regular expression for date (mm/dd/yyyy) #1
82 │ OK │ Get metric value using regular expression for date (mm/dd/yyyy) #2
83 │ OK │ Get metric value using regular expression for date (mm/dd/yyyy) #3
84 │ OK │ Missing "==" in params
85 │ OK │ Get metric value using regular expression for email address
86 │ OK │ Label value and params hold "{"
87 │ OK │ Label value and params hold "{}"
88 │ OK │ Label value and params hold "}"
89 │ OK │ Label value and params hold ","
90 │ OK │ Metric with five values
91 │ OK │ Different metrics under one header #1
92 │ OK │ Different metrics under one header #2
93 │ OK │ Different metrics under one header #3
94 │ OK │ Metrics of different type #1
95 │ OK │ Metrics of different type #2
96 │ OK │ Metrics of different type #3
97 │ OK │ Get metric value using params: cpu_usage_system
98 │ OK │ Different metrics #1
99 │ OK │ Different metrics #2
100 │ OK │ Invalid HELP hint
101 │ OK │ Test HELP hint unescaping
102 │ OK │ Test HELP hint trailing whitespace removal
103 │ OK │ Test HELP hint unescaping
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_prometheus_pattern
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Get metric value using params: "wmi_os_physical_memory_free_bytes"
1 │ OK │ Get metric value using params: "cpu_usage_system{cpu="cpu-total"}"
2 │ OK │ Get metric value using params: "wmi_logical_disk_free_bytes{volume="{#VOLUME}"}"
3 │ OK │ Get label value (volume) using params: "wmi_logical_disk_free_bytes{volume="{#VOLUME}"}"
4 │ OK │ Get metric value using params: "cpu_usage_system{cpu="cpu-total",host=~".*"}"
5 │ OK │ Get metric value using params: "cpu_usage_system{cpu="cpu-total",host=~".*"}"
6 │ OK │ Get metric value using params: "cpu_usage_system{cpu="cpu-total"}"
7 │ OK │ Get metric value using params: "cpu_usage_system{cpu=~"cpu-tot.+"}"
8 │ OK │ Get metric value using params: "{__name__=~"cpu_usage_syst.+",cpu=~"cpu-tot.+"}"
9 │ OK │ Get metric value using params: "cpu_usage_system{cpu=~".*"}"
10 │ OK │ Get metric value using params: "cpu_usage_system{cpu=~"cpu-tot.+"}"
11 │ OK │ Get label value (state) using params: "wmi_service_state{name="dhcp"} == 1"
12 │ OK │ Get label value (timezone) using params: "wmi_os_timezone{timezone=~".*"} == 1"
13 │ OK │ Multiple spaces in metric before the value
14 │ OK │ Escaping in label values
15 │ OK │ Minimalistic line
16 │ OK │ A weird metric from before the epoch
17 │ OK │ A histogram, which has a pretty complex representation in the text format
18 │ OK │ A summary, which has a complex representation
19 │ OK │ Invalid metric (expected "fail"): empty metric
20 │ OK │ Empty params
21 │ OK │ Empty params but value_type is set
22 │ OK │ Empty params but value_type is set (multiline metric)
23 │ OK │ Invalid metric (expected "fail"): empty metric and empty params
24 │ OK │ Invalid metric (expected "fail"): metric consists of spaces only #1
25 │ OK │ Params hold multiple spaces only
26 │ OK │ Params hold multiple spaces only (multiline metric)
27 │ OK │ Invalid metric (expected "fail"): metric consists of spaces only #2
28 │ OK │ Empty multiline metric
29 │ OK │ Empty value_type
30 │ OK │ Invalid metric (expected "fail"): metric without value
31 │ OK │ Invalid metric (expected "fail"): label value is missing but equal sign remains "wmi_os_timezone{timezone=} 1"
32 │ OK │ Invalid metric (expected "fail"): label value is missing "wmi_os_timezone{timezone} 1"
33 │ OK │ Invalid metric (expected "fail"): label value is missing and value_type is set to that label "wmi_os_timezone{timezone} 1"
34 │ OK │ Invalid metric (expected "fail"): label value is missing, value_type is set to that label; params: "wmi_os_timezone{timezone=~".*"} == 1"
35 │ OK │ Invalid metric (expected "fail"): wrong metric data
36 │ OK │ Invalid metric (expected "fail"): wrong metric data (a space within)
37 │ OK │ Invalid metric (expected "fail"): metric name with unsupported characters included
38 │ OK │ Invalid metric (expected "fail"): wrong metric data with valid HELP/TYPE
39 │ OK │ Invalid metric (expected "fail"): metric consists of hash symbol only
40 │ OK │ Invalid metric (expected "fail"): metric consists of empty space only
41 │ OK │ Invalid metric (expected "fail"): metric consists of 3 byte UTF-8 character only
42 │ OK │ Metric with 3 byte UTF-8 byte character included in label value
43 │ OK │ Invalid metric (expected "fail"): metric with missing "{"
44 │ OK │ Invalid metric (expected "fail"): metric with missing "}"
45 │ OK │ Invalid metric (expected "fail"): metric with missing "
46 │ OK │ Invalid metric (expected "fail"): metric with missing ","
47 │ OK │ Invalid metric (expected "fail"): metric with missing "," and params set to empty
48 │ OK │ Invalid metric (expected "fail"): double equal sign (==) instead of single equal sign (=) in label value assignment (multiline metric)
49 │ OK │ Invalid metric (expected "fail"): double equal sign (==) instead of single equal sign (=) in label value assignment (desired metric)
50 │ OK │ Invalid metric (expected "fail"): double equal sign (==) instead of single equal sign (=) in label value assignment
51 │ OK │ Label value and params holds new line character
52 │ OK │ Invalid metric (expected "fail"): metric name holds new line character
53 │ OK │ Invalid params (expected "fail"): params hold new line character
54 │ OK │ Invalid metric (expected "fail"): metric name and params hold new line character
55 │ OK │ Invalid params (expected "fail"): double equal sign (==) instead of single equal sign (=) in label value assignment
56 │ OK │ Invalid params (expected "fail"): single equal sign (=) instead of double equal sign (==) in metric value assignment #1
57 │ OK │ Invalid params (expected "fail"): single equal sign (=) instead of double equal sign (==) in metric value assignment #2
58 │ OK │ More than one metric (2) corresponds to the given params
59 │ OK │ All metrics (8) correspond to the given params
60 │ OK │ All metrics (16) correspond to the given params
61 │ OK │ Multiple metrics (16 of 18) correspond to the given params
62 │ OK │ Metric with "Nan" value
63 │ OK │ Metric with "+Inf" value
64 │ OK │ Metric with "-Inf" value
65 │ OK │ Invalid metric (expected "fail"): metric with "NAN" value
66 │ OK │ Metric with timestamp
67 │ OK │ Invalid metric (expected "succeed"): additional value after timestamp
68 │ OK │ Metric with negative timestamp
69 │ OK │ Metric with negative value
70 │ OK │ Multilne metric with negative value (multiline metric)
71 │ OK │ The __name__ identifier is specified as last in params #1
72 │ OK │ The __name__ identifier is specified as last in params #2
73 │ OK │ Label name set in value_type is not present in the metrics
74 │ OK │ Get metric value using params: "cpu_usage_system{__name__=~"cpu_usage_syst.+",cpu=~"cpu-tot.+"}"
75 │ OK │ Get metric value using params: "cpu_usage_system{__name__=~"cpu_age_syst.+",cpu=~"cpu-tot.+"}"
76 │ OK │ Random characters in value_type
77 │ OK │ Invalid metric (expected "succeed"): multiple HELP lines
78 │ OK │ Invalid metric (expected "succeed"): multiple TYPE:untyped lines
79 │ OK │ Invalid metric (expected "succeed"): unsupported TYPE
80 │ OK │ Invalid metric (expected "succeed"): only one argument for TYPE
81 │ OK │ Invalid metric (expected "succeed"): empty TYPE
82 │ OK │ Multiple spaces before metric value
83 │ OK │ Invalid metric (expected "succeed"): empty HELP
84 │ OK │ Invalid metric (expected "fail"): unsupported characters in label name
85 │ OK │ Get metric value using params: "wmi_os_timezone"
86 │ OK │ Metric name consists of all supported characters
87 │ OK │ Label name consists of all supported characters
88 │ OK │ Invalid params (expected "fail"): regular expression but without prefix "~"
89 │ OK │ Invalid params (expected "fail"): wrong regular expression
90 │ OK │ Invalid params (expected "fail"): unsupported identifier __cpu__ #1
91 │ OK │ Invalid params (expected "fail"): unsupported identifier __cpu__ #2
92 │ OK │ Invalid metric (expected "fail"): incorrect float
93 │ OK │ Invalid params (expected "fail"): "{}"
94 │ OK │ Invalid params (expected "fail"): "a{}"
95 │ OK │ Invalid metric (expected "fail"): "{}"
96 │ OK │ Get metric value using params: "wmi_os_timezone{timezone="MSK"} == -1"
97 │ OK │ Get label value using regular expression for date #1
98 │ OK │ Get label value using regular expression for date #2
99 │ OK │ Get label value using regular expression for date #3
100 │ OK │ Get label value using regular expression for date #4
101 │ OK │ Get label value using regular expression for date #5
102 │ OK │ Invalid params (expected "fail"): double equal sign (==) is missing
103 │ OK │ Get label value using regular expression for email address #1
104 │ OK │ Get label value using regular expression for email address #2
105 │ OK │ Get label value using regular expression for email address #3
106 │ OK │ Get metric value using regular expression for email address
107 │ OK │ Label value holds "{"
108 │ OK │ Label value holds "{}"
109 │ OK │ Label value holds "}"
110 │ OK │ Label value holds ","
111 │ OK │ Get label value (cpu) using params: "cpu_usage_system{cpu="cpu{total"} == 1.1940298507220641"
112 │ OK │ Get label value (cpu) using params: "cpu_usage_system{cpu="cpu}total"} == 1.1940298507220641"
113 │ OK │ Metric with five values
114 │ OK │ Different metrics under one HELP/TYPE header #1
115 │ OK │ Different metrics under one HELP/TYPE header #2
116 │ OK │ Metrics of different type #1
117 │ OK │ Metrics of different type #2
118 │ OK │ Metrics of different type #3
119 │ OK │ Get metric value using params: "cpu_usage_system { cpu = "cpu-total" , host = "host1",perf="100" }"
120 │ OK │ Invalid params (expected "fail"): no spaces around double equal sign (==)
121 │ OK │ Get metric value using params: "http_requests_total{code="400"} == 3"
122 │ OK │ Invalid metric (expected "fail"): metric with string value
123 │ OK │ Invalid params (expected "fail"): metric with string value
124 │ OK │ Invalid params (expected "fail"): __name__ identifier is specified twice
125 │ OK │ Get metric value using params: "{cpu=~".*",cpu=~"cpu-tot.+",perf="100"}"
126 │ OK │ Get metric value using params: "{cpu=~"z.+",cpu=~"cpu-tot.+",perf="100"}"
127 │ OK │ Get metric value using params: "{cpu=~"z.+",cpu=~"y.+",perf="100"}"
128 │ OK │ Apply INF metric filter on multiple inf values
129 │ OK │ Apply INF metric filter on multiple inf values (2)
130 │ OK │ Apply INF metric filter on multiple nan values
131 │ OK │ Apply INF metric filter on matching inf value
132 │ OK │ Apply INF metric filter on matching inf value (2)
133 │ OK │ Apply INF metric filter on matching inf value (3)
134 │ OK │ Apply INF metric filter on matching inf value (4)
135 │ OK │ Apply INF metric filter on matching nan value
136 │ OK │ Apply 1 metric filter on 1.0 value
137 │ OK │ Apply 10 metric filter on 1e1 value
138 │ OK │ Apply 125 metric filter on 1.25e2 value
139 │ OK │ Apply 00.0100 metric filter on 1e-2 value
140 │ OK │ Apply 125 metric filter on multiple matching values
141 │ OK │ Apply 1 metric filter on +1 value
142 │ OK │ Apply +1 metric filter on +1 value
143 │ OK │ Apply +1 metric filter on 1 value
144 │ OK │ Apply +1 metric filter on -1 value
145 │ OK │ Apply -1 metric filter on +1 value
146 │ OK │ Apply -1 metric filter on +1 value
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
wildcard_match
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ String match
1 │ OK │ Match all
2 │ OK │ Empty
3 │ OK │ Wildcard lo*ip*m
4 │ OK │ Wildcard a*bc
5 │ OK │ Wildcard a*bc*d
6 │ OK │ Wildcard abc*
7 │ OK │ Wildcard *abc
8 │ OK │ Wildcard *abc*
9 │ OK │ Wildcard a***c
10 │ OK │ Wildcard ***c*e
11 │ OK │ Wildcard a*c***
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
evaluate_function
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Evaluate last() <- 0.1, 0.2
1 │ OK │ Evaluate last(#2) <- 0.1, 0.2
2 │ OK │ Evaluate last() <- 'xyz'
3 │ OK │ Evaluate last() <- '😓...'
4 │ OK │ Evaluate last() <- '123'
5 │ OK │ Evaluate last() <- ' a b '
6 │ OK │ Evaluate last() <- '\"c:\\\"'
7 │ OK │ Evaluate abschange() <- 0.1, 0.2
8 │ OK │ Evaluate abschange() <- 10, 7
9 │ OK │ Evaluate abschange() <- 'a', 'b'
10 │ OK │ Evaluate abschange() <- 'x', 'x'
11 │ OK │ Evaluate abschange() <- @log 'a', 'b'
12 │ OK │ Evaluate abschange() <- @log 'x', 'x'
13 │ OK │ Evaluate avg(#2)
14 │ OK │ Evaluate avg(3m)
15 │ OK │ Evaluate avg(#2,1m)
16 │ OK │ Evaluate band(#1,1)
17 │ OK │ Evaluate band(#2,1)
18 │ OK │ Evaluate band(2m,2,1m)
19 │ OK │ Evaluate change() <- 0.1, 0.2
20 │ OK │ Evaluate change() <- 10, 7
21 │ OK │ Evaluate change() <- 'a', 'b'
22 │ OK │ Evaluate change() <- 'x', 'x'
23 │ OK │ Evaluate change() <- @log 'a', 'b'
24 │ OK │ Evaluate change() <- @log 'x', 'x'
25 │ OK │ Evaluate count(#3,4,ge)
26 │ OK │ Evaluate count(#3,o,like)
27 │ OK │ Evaluate count(#3,o$,regexp)
28 │ OK │ Evaluate count(#3,o,iregexp)
29 │ OK │ Evaluate count(#3,1/3,band)
30 │ OK │ Evaluate count(#3,2/3,band)
31 │ OK │ Evaluate date()
32 │ OK │ Evaluate dayofmonth()
33 │ OK │ Evaluate dayofweek()
34 │ OK │ Evaluate time()
35 │ OK │ Evaluate delta(#4)
36 │ OK │ Evaluate delta(4m,1m)
37 │ OK │ Evaluate diff() <- 0.1, 0.2
38 │ OK │ Evaluate diff() <- 0.123, 0.123
39 │ OK │ Evaluate diff() <- 10, 7
40 │ OK │ Evaluate diff() <- 1234567890, 1234567890
41 │ OK │ Evaluate diff() <- 'a', 'b'
42 │ OK │ Evaluate diff() <- 'x', 'x'
43 │ OK │ Evaluate diff() <- @log 'a', 'b'
44 │ OK │ Evaluate diff() <- @log 'x', 'x'
45 │ OK │ Evaluate forecast(#5,,1h)
46 │ OK │ Evaluate forecast(#5,1h,1h)
47 │ OK │ Evaluate fuzzytime(1) < @uint64
48 │ OK │ Evaluate fuzzytime(1) < @float
49 │ OK │ Evaluate iregexp(^o,#5)
50 │ OK │ Evaluate regexp(^o,#5)
51 │ OK │ Evaluate str(o,#5)
52 │ FAILURE │ Evaluate logeventid(^12)
STDOUT:
[==========] Running 1 test(s).
[ RUN ] zbx_mock_test_entry
[ FAILED ] zbx_mock_test_entry
[==========] 1 test(s) run.
STDERR:
[ ERROR ] --- function result: Expected value "1.000000" while got "0.000000"
[ LINE ] --- evaluate_function.c:113: error: Failure!
[ PASSED ] 0 test(s).
[ FAILED ] 1 test(s), listed below:
[ FAILED ] zbx_mock_test_entry
1 FAILED TEST(S)
53 │ OK │ Evaluate logeventid(^34)
54 │ OK │ Evaluate logseverity()
55 │ OK │ Evaluate logsource('(Application|System)') <- Application
56 │ OK │ Evaluate logsource("(Application|System)") <- Security
57 │ OK │ Evaluate max(5m)
58 │ OK │ Evaluate max(5m,2m)
59 │ OK │ Evaluate min(4m)
60 │ OK │ Evaluate min(4m,2m)
61 │ OK │ Evaluate nodata(1m)
62 │ OK │ Evaluate nodata(5m)
63 │ OK │ Evaluate now()
64 │ OK │ Evaluate percentile(5m,,100)
65 │ OK │ Evaluate percentile(5m,,50)
66 │ OK │ Evaluate prev() <- 0.1, 0.2
67 │ OK │ Evaluate strlen()
68 │ OK │ Evaluate strlen(1m)
69 │ OK │ Evaluate strlen(,2m)
70 │ OK │ Evaluate strlen() <- 😓
71 │ OK │ Evaluate strlen() <- @log
72 │ OK │ Evaluate sum(#4)
73 │ OK │ Evaluate sum(4m,1m)
74 │ OK │ Evaluate time()
75 │ OK │ Evaluate timeleft(5m,,65)
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
get_trigger_expression_constant
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ extract token 0
1 │ OK │ extract token 1
2 │ OK │ extract token 2
3 │ OK │ extract token 3
4 │ OK │ extract token 1, int in the middle
5 │ OK │ extract token 2, int in the middle
6 │ OK │ extract token 3, int in the middle
7 │ OK │ extract token 1, str in the middle
8 │ OK │ extract token 2, str in the middle
9 │ OK │ extract token 3, str in the middle
10 │ OK │ escape function
11 │ OK │ macro
12 │ OK │ escaping 1
13 │ OK │ escaping 2
14 │ OK │ escaping 3
15 │ OK │ user macro
16 │ OK │ negative constant
17 │ OK │ user macro with context
18 │ OK │ broken user macro with context
19 │ OK │ fraction
20 │ OK │ negative fraction
21 │ OK │ invalid number .5.5.5
22 │ OK │ constant after macro
23 │ OK │ constant 1e5
24 │ OK │ constant 1e-5
25 │ OK │ constant 1e-5.0
26 │ OK │ string constant -10e-10
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
substitute_lld_macros
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Expand '{1} < {#A}' with {#A}=1
1 │ OK │ Expand '{1} < "{#A}"' with {#A}=1
2 │ OK │ Expand '{1} < {#A}'
3 │ OK │ Expand '{1} < {#A}' with {#A}=x
4 │ OK │ Expand '{1} < {#A}' with {#A}="x"
5 │ OK │ Expand '{1} < "{#A}"' with {#A}="x"
6 │ OK │ Expand '{1} < "{#A}"'
7 │ OK │ Expand '{1} = "x" and {2} < {#A}' with {#A}="x"
8 │ OK │ Expand '{1} < "{#A}{#B}"' with {#A}=1,'{#B}'="x"
9 │ OK │ Expand '{1} < "{#A}{#B}"' with {#A}=1,'{#B}'=2
10 │ OK │ Expand '{1} < "{#A}{#B}"' with {#A}="x",'{#B}'="y"
11 │ OK │ Expand '{1} < {#A}{#B}' with {#A}="x",'{#B}'="y"
12 │ OK │ Expand '{1} < {#A}{#B}' with {#A}=1,'{#B}'=0
13 │ OK │ Expand '{1} < "\"{#A}\"{#B}\""' with {#A}=\",'{#B}'=\
14 │ OK │ Expand '{1} < " \" {#A} \" {#B} \" " and {#A}<>"\"{#B}" and " {#A} " = " {#A} "' with {#A}=",'{#B}'=\\
15 │ OK │ Expand '{1} < {#A}' with {#A}=""
16 │ OK │ Expand '{1} < "{#A}"' with {#A}=""
17 │ OK │ Expand '{2000} < {#A}' with {#A}=2e+3
18 │ OK │ Expand '{1} < "\\\"a\"" and {1} = {#A}' with {#A}="b"
19 │ OK │ Expand '{2} <> {$M:"context:\"\\/\""} and {1} < {#A}' with {#A}=x
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
check_key_access_rules
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ No rules (all allowed)
1 │ OK │ No allowed keys
2 │ OK │ No arguments
3 │ OK │ Empty parameter list
4 │ OK │ Any arguments
5 │ OK │ Any arguments double asterisk
6 │ OK │ Specific first parameter
7 │ OK │ First argument pattern
8 │ OK │ Any second parameter value
9 │ OK │ First argument pattern and any following arguments
10 │ OK │ Any first parameter value
11 │ OK │ Empty second parameter value
12 │ OK │ Any second parameter value
13 │ OK │ Specific parameters
14 │ OK │ Quoted parameters
15 │ OK │ Key pattern without arguments
16 │ OK │ Key pattern with any arguments
17 │ OK │ Whitelist
18 │ OK │ Blacklist
19 │ OK │ Combined wildcard in key
20 │ OK │ Duplicate rules
21 │ OK │ No rules after AllowKey=*
22 │ OK │ No rules after DenyKey=*
23 │ OK │ Incomplete whitelist (no deny all at the end)
24 │ OK │ No trailing AllowKey rules
25 │ OK │ Empty parameters match
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
parse_item_key
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ valid key with no parameters
1 │ OK │ valid key with empty brackets
2 │ OK │ valid key with quoted empty string in brackets
3 │ OK │ valid key with space in brackets
4 │ OK │ valid key with leading space before quoted empty string in brackets
5 │ OK │ valid key with leading and trailing spaces around quoted empty string in brackets
6 │ OK │ valid key with 'a' in brackets
7 │ OK │ valid key with leading space before 'a' in brackets
8 │ OK │ valid key with leading and trailing spaces around 'a' in brackets
9 │ OK │ valid key with quoted 'a' in brackets
10 │ OK │ valid key with quoted 'a' followed by comma in brackets
11 │ OK │ valid key with unquoted 'a' followed by comma in brackets
12 │ OK │ valid key with multiple unquoted parameters in brackets
13 │ OK │ valid key with multiple quoted parameters in brackets
14 │ OK │ valid key with first unquoted parameter and second array parameter containing two unquoted parameters
15 │ OK │ valid key with first unquoted parameter and second array parameter containing unquoted and empty parameter
16 │ OK │ valid key with two unquoted parameters where second parameter contains opening square bracket
17 │ OK │ valid key with multiple quoted parameters and array
18 │ OK │ valid key with multiple quoted parameters and multiple arrays
19 │ OK │ valid key, single parameter with unquoted string containing double quote characters
20 │ OK │ valid key, multiple different type parameters where one is unquoted string containing double quote characters
21 │ OK │ valid key with many quoted/unquoted parameters with/without trailing/leading spaces also featuring escaping
22 │ OK │ valid key with quoted and unquoted arrays
23 │ OK │ invalid key, unmatched opening bracket (1)
24 │ OK │ invalid key, unmatched opening bracket (2)
25 │ OK │ invalid key, unmatched opening bracket (3)
26 │ OK │ invalid key, invalid character for unquoted parameter, multiple parameter key
27 │ OK │ invalid key, unmatched closing bracket, parameter followed by trailing space
28 │ OK │ invalid key, unmatched closing bracket, parameter followed by leading space
29 │ OK │ invalid key, part of parameters list not enclosed in brackets
30 │ OK │ invalid key, braces are not allowed in key
31 │ OK │ invalid key, comma is not allowed in key or parameters should be enclosed in brackets
32 │ OK │ invalid key, multiple square bracket pairs are not allowed
33 │ OK │ invalid key, multiple square bracket pairs containing parameters are not allowed
34 │ OK │ invalid key, multi-level arrays are not allowed
35 │ OK │ invalid key, multi-level arrays are not allowed, array consists of multiple different type parameters
36 │ OK │ invalid key, multi-level arrays are not allowed, array consists of single parameter which is another array
37 │ OK │ invalid key, character ] is not allowed in unquoted parameter string
38 │ OK │ invalid key, character [ is allowed in unquoted parameter string but character ] is not
39 │ OK │ invalid key, character ] is not allowed in unquoted parameter string, key with multiple different type parameters
40 │ OK │ invalid key, quoted parameter cannot contain unquoted part
41 │ OK │ invalid key, second parameter of the array cannot contain unquoted part
42 │ OK │ invalid key, array type parameter cannot contain quoted parameter with unquoted part
43 │ OK │ invalid key, array type parameter cannot contain quoted part
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
process
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully called SYSTEM_LOCALTIME function
1 │ OK │ successfully called WEB_PAGE_GET function
2 │ OK │ successfully called WEB_PAGE_PERF function
3 │ OK │ successfully called WEB_PAGE_REGEXP function
4 │ OK │ successfully called VFS_FILE_SIZE function
5 │ OK │ successfully called VFS_FILE_TIME function
6 │ OK │ successfully called VFS_FILE_EXISTS function
7 │ OK │ successfully called VFS_FILE_CONTENTS function
8 │ OK │ successfully called VFS_FILE_REGMATCH function
9 │ OK │ successfully called VFS_FILE_MD5SUM function
10 │ OK │ successfully called VFS_FILE_CKSUM function
11 │ OK │ successfully called VFS_DIR_SIZE function
12 │ OK │ successfully called NET_DNS function
13 │ OK │ successfully called NET_DNS_RECORD function
14 │ OK │ successfully called NET_TCP_PORT function
15 │ OK │ successfully called SYSTEM_USERS_NUM function
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
item_preproc_csv_to_json
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ missing second parameter
1 │ OK │ missing third parameter
2 │ OK │ invalid first parameter
3 │ OK │ invalid second parameter
4 │ OK │ empty input (1)
5 │ OK │ empty input (2)
6 │ OK │ single char (1)
7 │ OK │ single char (2)
8 │ OK │ single UTF8 4-bytes character (1)
9 │ OK │ single UTF8 4-bytes character (2)
10 │ OK │ empty line (1)
11 │ OK │ empty line (2)
12 │ OK │ multiple empty lines (1)
13 │ OK │ multiple empty lines (2)
14 │ OK │ single column (1)
15 │ OK │ single column (2)
16 │ OK │ single line (1)
17 │ OK │ single line (2)
18 │ OK │ no trailing line break (1)
19 │ OK │ no trailing line break (2)
20 │ OK │ no trailing line break (3)
21 │ OK │ empty fields (1)
22 │ OK │ empty fields (2)
23 │ OK │ empty fields (3)
24 │ OK │ delimiter in quoted field
25 │ OK │ quotation character in unquoted field
26 │ OK │ quotation character in unquoted field (2)
27 │ OK │ escaped quotation character
28 │ OK │ delimiter set in sep line
29 │ OK │ cr/nl line breaks
30 │ OK │ various length rows
31 │ OK │ equal delimiter and quotation characters
32 │ OK │ UTF8 2-byte delimiter
33 │ OK │ UTF8 3-byte delimiter set in sep line
34 │ OK │ UTF8 4-byte delimiter
35 │ OK │ UTF8 2-byte quotation character
36 │ OK │ UTF8 3-byte quotation character
37 │ OK │ UTF8 multi-byte delimiter and quotation characters
38 │ OK │ delimiter set to space
39 │ OK │ quotation character set to space
40 │ OK │ sep line only (1)
41 │ OK │ sep line only (2)
42 │ OK │ sep line only (3)
43 │ OK │ sep line only (4)
44 │ OK │ unsupported sep line (1)
45 │ OK │ unsupported sep line (2)
46 │ OK │ duplicated column names (1)
47 │ OK │ duplicated column names (2)
48 │ OK │ more fields in data row than in header
49 │ OK │ unclosed quoted field
50 │ OK │ unclosed quoted field (UTF8-2)
51 │ OK │ unclosed quoted field (UTF8-3)
52 │ OK │ unclosed quoted field (UTF8-4)
53 │ OK │ escaped quotation character in unclosed quoted field (UTF8-3)
54 │ OK │ missing delimiter or line break after quoted field
55 │ OK │ unsupported line break
56 │ OK │ CSV sample input (1)
57 │ OK │ CSV sample input (2)
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
item_preproc_xpath
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ empty input parameters
1 │ OK │ single start tag
2 │ OK │ single end tag
3 │ OK │ wrong operation format
4 │ OK │ wrong operation expression
5 │ OK │ wrong operation format 2
6 │ OK │ empty output
7 │ OK │ successful expression
8 │ OK │ return end tag
9 │ OK │ return text
10 │ OK │ return string
11 │ OK │ return attribute
12 │ OK │ return pattern
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_item_preproc
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ string(10) * 10
1 │ OK │ string(10x) * 10
2 │ OK │ string(10) * abc
3 │ OK │ string(1.5) * 3
4 │ OK │ uint64(1.5) * 3
5 │ OK │ uint64(3) * 1.5
6 │ OK │ float(1.5) * 3
7 │ OK │ float(3) * 1.5
8 │ OK │ rtrim(01abc01, 01)
9 │ OK │ rtrim(01abc01, abc)
10 │ OK │ ltrim(01abc01, 01)
11 │ OK │ ltrim(01abc01, abc)
12 │ OK │ trim(01abc01, 01)
13 │ OK │ trim(01abc01, abc)
14 │ OK │ trim(\\s, abc)
15 │ OK │ regsub("test 123 number", "([0-9]+", 1)
16 │ OK │ regsub("test 123 number", "([0-9]+)", \1)
17 │ OK │ regsub("test 123 number", "([0-9]+)", x\1y)
18 │ OK │ regsub("test 123 number", "([0-9]+)", )
19 │ OK │ regsub("test abc number", "([0-9]+)", \1)
20 │ OK │ regsub("", "([0-9]+)", \1)
21 │ OK │ regsub("", "^$", ok)
22 │ OK │ bool2dec()
23 │ OK │ bool2dec(abc)
24 │ OK │ bool2dec(1)
25 │ OK │ bool2dec(0)
26 │ OK │ bool2dec(true)
27 │ OK │ bool2dec(t)
28 │ OK │ bool2dec(yes)
29 │ OK │ bool2dec(y)
30 │ OK │ bool2dec(ok)
31 │ OK │ bool2dec(on)
32 │ OK │ bool2dec(false)
33 │ OK │ bool2dec(f)
34 │ OK │ bool2dec(no)
35 │ OK │ bool2dec(n)
36 │ OK │ bool2dec(err)
37 │ OK │ bool2dec(off)
38 │ OK │ oct2dec(0)
39 │ OK │ oct2dec(7)
40 │ OK │ oct2dec(10)
41 │ OK │ oct2dec(8)
42 │ OK │ hex2dec(F)
43 │ OK │ hex2dec(a)
44 │ OK │ hex2dec(10)
45 │ OK │ hex2dec(g)
46 │ OK │ hex2dec(ff ff)
47 │ OK │ deltavalue(5, 10)
48 │ OK │ deltavalue(-4.5, 5.5)
49 │ OK │ deltavalue(10, 10)
50 │ OK │ deltavalue(10, 9)
51 │ OK │ deltavalue(0, 1.5)
52 │ OK │ deltaspeed(2, 1, 10s)
53 │ OK │ deltaspeed(1, 2, -10s)
54 │ OK │ deltaspeed(1, 2, 10s)
55 │ OK │ deltaspeed(2, 3, 10s)
56 │ OK │ deltaspeed(2, 3, 1s)
57 │ OK │ xpath1
58 │ OK │ xpath2
59 │ OK │ xpath3
60 │ OK │ xpath4
61 │ OK │ xpath5
62 │ OK │ xpath6
63 │ OK │ xpath7
64 │ OK │ xpath8
65 │ OK │ xpath9
66 │ OK │ xpath10
67 │ OK │ xpath11
68 │ OK │ xpath12
69 │ OK │ jsonpath1
70 │ OK │ jsonpath2
71 │ OK │ jsonpath3
72 │ OK │ jsonpath4
73 │ OK │ jsonpath5
74 │ OK │ jsonpath6
75 │ OK │ jsonpath7
76 │ OK │ jsonpath8
77 │ OK │ jsonpath9
78 │ OK │ jsonpath10
79 │ OK │ jsonpath11
80 │ OK │ jsonpath12
81 │ OK │ validate_range(1, 5, 10)
82 │ OK │ validate_range(5, 5, 10)
83 │ OK │ validate_range(10, 5, 10)
84 │ OK │ validate_range(10.1, 5, 10)
85 │ OK │ validate_regex(abc 123 xyz, ([0-9+))
86 │ OK │ validate_regex(abc opq xyz, ([0-9]+))
87 │ OK │ validate_regex(abc 123 xyz, ([0-9]+))
88 │ OK │ validate_regex(abc 123 xyz, ([0-9+))
89 │ OK │ validate_regex(abc opq xyz, ([0-9]+))
90 │ OK │ validate_regex(abc 123 xyz, ([0-9]+))
91 │ OK │ string(10) * 10 (discard)
92 │ OK │ string(10) * 10 (set value)
93 │ OK │ string(10) * 10 (set error)
94 │ OK │ jsonerror(x, $.error)
95 │ OK │ jsonerror({"error":"error message"}, $error)
96 │ OK │ jsonerror({"data":"123"}, $.error)
97 │ OK │ jsonerror({"error":"error message"}, $.error)
98 │ OK │ xmlerror(x, //error)
99 │ OK │ xmlerror(custom error, "//text(")
100 │ OK │ xmlerror(custom error, "//error/text()")
101 │ OK │ xmlerror(1, "//error/text()")
102 │ OK │ regexerror("error:123, "error:([0-9+)")
103 │ OK │ regexerror("error:123, "error:([0-9]+)")
104 │ OK │ regexerror("value:123, "error:([0-9]+)")
105 │ OK │ throttle(1, 123)
106 │ OK │ throttle(, 123)
107 │ OK │ throttle(123, 123)
108 │ OK │ throttle_timed(, abc)
109 │ OK │ throttle_timed(xyz, abc)
110 │ OK │ throttle_timed(abc, abc, 30s)
111 │ OK │ throttle_timed(abc, abc, 1m)
112 │ OK │ float(1.5e0) * 1
113 │ OK │ float(1) * 1.5e0
114 │ OK │ float(1.5e0) * 1.5e0
115 │ OK │ float(1.5e1) * 1
116 │ OK │ float(1) * 1.5e1
117 │ OK │ float(1.5e1) * 1.5e1
118 │ OK │ float(1.5e10) * 1
119 │ OK │ float(1) * 1.5e10
120 │ OK │ float(1.5e10) * 1.5e10
121 │ OK │ prometheus_getmetric1
122 │ OK │ prometheus_getmetric2
123 │ OK │ prometheus_getmetric3
124 │ OK │ prometheus_getmetric4
125 │ OK │ prometheus_getmetric5
126 │ OK │ prometheus_getmetric6
127 │ OK │ prometheus_getmetric7
128 │ OK │ prometheus_getmetric8
129 │ OK │ prometheus_getmetric9
130 │ OK │ prometheus_getmetric10
131 │ OK │ prometheus_getmetric11
132 │ OK │ prometheus_getmetric12
133 │ OK │ prometheus_getmetric13
134 │ OK │ prometheus_to_json1
135 │ OK │ prometheus_to_json2
136 │ OK │ prometheus_to_json3
137 │ OK │ prometheus_to_json4
138 │ OK │ prometheus_to_json5
139 │ OK │ csv_to_json1
140 │ OK │ csv_to_json2
141 │ OK │ csv_to_json3
142 │ OK │ csv_to_json4
143 │ OK │ replace a to b
144 │ OK │ replace a to bbb
145 │ OK │ replace a to a
146 │ OK │ replace a to nothing
147 │ OK │ replace a to nothing in between
148 │ OK │ replace non printable characters
149 │ OK │ replace non printable characters mixed
150 │ OK │ replace non printable characters 2
151 │ OK │ replace non printable characters in both search and replace
152 │ OK │ replace \
153 │ OK │ replace 2 characters "\t" to OK
154 │ OK │ Missing second parameter
155 │ OK │ Missing first parameter
156 │ OK │ Single slash in search
157 │ OK │ Single slash in replace
158 │ OK │ No match
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
zbx_trapper_preproc_test_run
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Empty request
1 │ OK │ Missing sessionid field
2 │ OK │ Missing data field
3 │ OK │ Missing data.steps field
4 │ OK │ Missing data.value_type field
5 │ OK │ Missing data.value field
6 │ OK │ Missing data.steps[0].error_handler_params field
7 │ OK │ Missing data.steps[0].params field
8 │ OK │ Missing data.steps[0].error_handler field
9 │ OK │ Missing data.steps[0].type field
10 │ OK │ Missing data.history.timestamp field
11 │ OK │ Missing data.history.value field
12 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to data: 4$
13 │ OK │ Apply mult(2) + trim($) + regsub("data: *(.*)", \1) to data: 4$
14 │ OK │ Apply trim($) + mult(2) + regsub("data: *(.*)", \1) to data: 4$
15 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to data: x$
16 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to 4$ with discard on fail
17 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to 4$ with set value to 5 on fail
18 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to 4$ with set error to Validation error on fail
19 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) to data: x$ for uint value
20 │ OK │ Apply regsub("data: *(.*)", \1) to data: x for uint value testing single step
21 │ OK │ Apply delta() to 100, 700
22 │ OK │ Apply delta_per_second() to 100, 700
23 │ OK │ Apply mult(2) + trim($) + regsub("data: *(.*)", \1) to history data: 4$
24 │ OK │ Apply trim($) + mult(2) + regsub("data: *(.*)", \1) to history data: 4$
25 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to history data: x$
26 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to history 4$ with discard on fail
27 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to history 4$ with set value to 5 on fail
28 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) + mult(2) to history 4$ with set error to Validation error on fail
29 │ OK │ Apply trim($) + regsub("data: *(.*)", \1) to history data: x$ for uint value
30 │ OK │ Apply regsub("data: *(.*)", \1) to history data: x for uint value testing single step
31 │ OK │ Apply regsub("data: *(.*)", \1) + delta() to data: 9, data:10
32 │ OK │ Apply regsub("data: *(.*)", \1) + delta() to data: 9, data:10
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SYSTEM_LOCALTIME
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ timestamp check without params
1 │ OK │ timestamp check with empty params
2 │ OK │ timestamp check with UTC type param
3 │ OK │ localtime check
4 │ OK │ input parameter count check
5 │ OK │ input parameter value check
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
VFS_FILE_EXISTS
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ file exists
1 │ OK │ file exists, include all
2 │ OK │ file exists, exclude sockets
3 │ OK │ file does not exist
4 │ OK │ file exist but is excluded
5 │ OK │ empty file name
6 │ OK │ too many parameters
7 │ OK │ invalid "include types" parameter
8 │ OK │ invalid "exclude types" parameter
9 │ OK │ invalid both "include types" and "exclude types" parameters
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
WEB_PAGE_GET
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ Regular 127.0.0.1
1 │ OK │ Regular 127.0.0.1,
2 │ OK │ Regular 127.0.0.1, ,80
3 │ OK │ Regular 127.0.0.1, /,80
4 │ OK │ Regular 127.0.0.1, zabbix,80
5 │ OK │ Regular 127.0.0.1,zabbix
6 │ OK │ Regular 127.0.0.1,/zabbix
7 │ OK │ Regular 127.0.0.1,zabbix,80
8 │ OK │ Injection 127.0\r\n.0.1
9 │ OK │ Injection \r\n127.0\r\n.0.1
10 │ OK │ Injection 127.0.0.1,zabbi\r\n\r\n\r\nx
11 │ OK │ Injection 127.0.0.1,\r\n\r\n/zabbi\r\n\r\n\r\nx,80
12 │ OK │ HTTPS URL [https://www.example.com:443/some_path]
13 │ OK │ HTTPS URL [https://www.example.com:443/some_path]; legacy
14 │ OK │ HTTPS URL, "path" parameter is set [https://www.example.com:443/some_path,some_path]
15 │ OK │ HTTPS URL, "port" parameter is set [https://www.example.com/some_path,,80]
16 │ OK │ Domain name [www.example.com]
17 │ OK │ Domain name, "path" and "port" parameters are set [www.example.com,/some_path,80]
18 │ OK │ Domain name, "path" parameter is set [www.example.com,some_path]
19 │ OK │ URL with userinfo [user@example.com]
20 │ OK │ URL with userinfo [user@example.com]; legacy
21 │ OK │ HTTPS URL with userinfo [https://user@example.com]
22 │ OK │ HTTPS URL with userinfo [https://user@example.com]; legacy
23 │ OK │ Invalid URL [http:/www.example.com]
24 │ OK │ Invalid URL [http:/www.example.com]; legacy
25 │ OK │ HTTP URL ["http://[ff00::ff00:ff00:ff00:ff00]:80/trunk"]
26 │ OK │ HTTP URL ["http://[::1]:80/trunk"]
27 │ OK │ FTP URL [ftp://www.example.com:443/some_path]
28 │ OK │ Domain name, "port" parameter is set [www.example.com,,443]
29 │ OK │ HTTPS URL [https://www.example.com:80]
30 │ OK │ HTTPS URL [https://www.example.com:80]; legacy
31 │ OK │ HTTP URL [http://www.example.com]
32 │ OK │ IPv4 host [127.0.0.1]
33 │ OK │ URL [127.0.0.1:80/]
34 │ OK │ IPv6 host [ff00::ff00:ff00:ff00:ff00]
35 │ OK │ IPv6 host [::1]
36 │ OK │ Invalid IPv6 host [::1:80]
37 │ OK │ URL ["[::1]:80"]
38 │ OK │ URL [127.0.0.1:80]
39 │ OK │ HTTPS URL [https://user:pass@www.example.com:443/some_path]
40 │ OK │ HTTPS URL [https://user:pass@www.example.com:443/some_path]; legacy
41 │ OK │ Hostname [localhost]
42 │ OK │ HTTPS URL [ hTtPS://www.example.com]
43 │ OK │ HTTPS URL [ hTtPS://www.example.com]; legacy
44 │ OK │ Domain name [пример.рус]
45 │ OK │ Domain name, "path" parameter is set [пример.рус,#opp]
46 │ OK │ HTTP URL [http://пример.рус]
47 │ OK │ HTTP URL [http://пример.рус:80/#opp]
48 │ OK │ HTTP URL [http://пример.рус:80#opp]
49 │ OK │ Invalid HTTP URL [http://www.example.com:/some_path]
50 │ OK │ Invalid HTTP URL [http://www.example.com:/some_path]; legacy
51 │ OK │ Invalid HTTP URL [http://www.example.com:999999/some_path]
52 │ OK │ Invalid HTTP URL [http://www.example.com:999999/some_path]; legacy
53 │ OK │ Invalid HTTP URL [http://www.example.com:abc/some_path]
54 │ OK │ Invalid HTTP URL [http://www.example.com:abc/some_path]; legacy
55 │ OK │ Domain name, "port" parameter is set [www.example.com,,999999]
56 │ OK │ Domain name, "port" parameter is set [www.example.com,,abc]
57 │ OK │ HTTPS URL [https://www.example.com]
58 │ OK │ HTTPS URL [https://www.example.com]; legacy
59 │ OK │ Invalid URL [www.example.com:/some_path]
60 │ OK │ Invalid URL [www.example.com:/some_path]; legacy
61 │ OK │ HTTP URL [http://www.example.com:80/some_path]
62 │ OK │ HTTP URL [ hTtP://www.example.com]
63 │ OK │ Invalid HTTP URL ["http://::1]:80/trunk"]
64 │ OK │ Invalid HTTP URL ["http://::1]:80/trunk"]; legacy
65 │ OK │ URL [www.example.com#some_fragment]
66 │ OK │ URL [www.example.com/some_path#some_fragment]
67 │ OK │ URL [www.example.com/#]
68 │ OK │ URL [www.example.com#]
69 │ OK │ URL [www.example.com/doodle:443#some_:443fragment:443]
70 │ OK │ URL [http://пример.рус/files/docs/]
71 │ OK │ Domain, "path" parameter is set [пример.рус,/files/docs/]
72 │ OK │ Invalid HTTP URL [http://#fragment]
73 │ OK │ Invalid HTTP URL [http://#fragment]; legacy
74 │ OK │ URL ["[::1]/server-status"]
75 │ OK │ URL [scheme:path:without:authority]
76 │ OK │ URL [www.example.com:80#fragmentftp://www.example.com/]
77 │ OK │ URL [www.example.com#ftp://www.example.com/]
78 │ OK │ URL [www.example.com:80?fragmentftp://www.example.com/]
79 │ OK │ URL [www.example.com?ftp://www.example.com/]
80 │ OK │ HTTP URL [ http://localhost?a=b]
81 │ OK │ Hostname, "path" parameter is set [ localhost,?a=b]
82 │ OK │ Invalid URL [@user:pass/index.html]
83 │ OK │ Invalid URL [@user:pass/index.html]; legacy
84 │ OK │ Invalid HTTP URL [http://user:pass@]
85 │ OK │ Invalid HTTP URL [http://user:pass@]; legacy
86 │ OK │ Invalid HTTP URL [http://user:pass@/index.html]
87 │ OK │ Invalid HTTP URL [http://user:pass@/index.html]; legacy
88 │ OK │ Invalid URL [www.example.com://]
89 │ OK │ Invalid URL [://www.example.com]
90 │ OK │ Invalid URL [www.example.com:]
91 │ OK │ Invalid URL [www.example.com:]; legacy
92 │ OK │ HTTP URL [http://www.example.com?]
93 │ OK │ URL [www.example.com/user@info]
94 │ OK │ URL [www.example.com?user@info]
95 │ OK │ Invalid URL [://]
96 │ OK │ Invalid HTTP URL [http://]
97 │ OK │ Invalid HTTP URL [http://]; legacy
98 │ OK │ Invalid URL HTTP [http:// ]
99 │ OK │ Hostname [http]
100 │ OK │ Invalid URL ["[]"]
101 │ OK │ Invalid URL ["[]"]; legacy
102 │ OK │ Invalid URL ["["]
103 │ OK │ Invalid URL ["["]; legacy
104 │ OK │ Invalid URL ["]"]
105 │ OK │ Invalid URL [/]
106 │ OK │ Invalid URL [/]; legacy
107 │ OK │ Invalid URL [:]
108 │ OK │ Invalid URL [:]; legacy
109 │ OK │ Invalid URL [@]
110 │ OK │ Invalid URL [@]; legacy
111 │ OK │ Invalid URL [#]
112 │ OK │ Invalid URL [#]; legacy
113 │ OK │ Invalid URL [?]
114 │ OK │ Invalid URL [?]; legacy
115 │ OK │ Hostname [a]
116 │ OK │ Invalid URL [:80]
117 │ OK │ Invalid URL [:80]; legacy
118 │ OK │ Invalid URL [:80/?x=1]
119 │ OK │ Invalid URL [:80/?x=1]; legacy
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
KERNEL_MAXFILES
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully read
1 │ OK │ unsuccessfully read
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
KERNEL_MAXPROC
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ successfully read
1 │ OK │ unsuccessfully read
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
NET_IF_DISCOVERY
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ parse file /proc/net/dev
1 │ OK │ ignore invalid entries in /proc/net/dev
2 │ OK │ invalid /proc/net/dev content
3 │ OK │ missing /proc/net/dev file
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
NET_IF_IN
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ #1.1 successfully read 'bytes'
1 │ OK │ #1.2 successfully read 'packets'
2 │ OK │ #1.3 successfully read 'errors'
3 │ OK │ #1.4 successfully read 'dropped'
4 │ OK │ #1.5 successfully read 'overruns'
5 │ OK │ #1.6 successfully read 'frame'
6 │ OK │ #1.7 successfully read 'compressed'
7 │ OK │ #1.8 successfully read 'multicast'
8 │ OK │ #2.1 unsuccessfully read 'Too many parameters.'
9 │ OK │ #2.2 unsuccessfully read 'Cannot find information'
10 │ OK │ #2.3 unsuccessfully read 'Invalid second parameter.'
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
NET_IF_OUT
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ #1.1 successfully read 'bytes'
1 │ OK │ #1.2 successfully read 'packets'
2 │ OK │ #1.3 successfully read 'errors'
3 │ OK │ #1.4 successfully read 'dropped'
4 │ OK │ #1.5 successfully read 'overruns'
5 │ OK │ #1.6 successfully read 'colls'
6 │ OK │ #1.7 successfully read 'carrier'
7 │ OK │ #1.8 successfully read 'compressed'
8 │ OK │ #2.1 unsuccessfully read 'Too many parameters.'
9 │ OK │ #2.2 unsuccessfully read 'Cannot find information'
10 │ OK │ #2.3 unsuccessfully read 'Invalid second parameter.'
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
NET_IF_TOTAL
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ #1.1 successfully read 'bytes'
1 │ OK │ #1.2 successfully read 'packets'
2 │ OK │ #1.3 successfully read 'errors'
3 │ OK │ #1.4 successfully read 'dropped'
4 │ OK │ #1.5 successfully read 'overruns'
5 │ OK │ #1.6 successfully read 'compressed'
6 │ OK │ #2.1 unsuccessfully read 'Too many parameters.'
7 │ OK │ #2.2 unsuccessfully read 'Cannot find information'
8 │ OK │ #2.3 unsuccessfully read 'Invalid second parameter.'
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SYSTEM_BOOTTIME
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ no /proc/stat file
1 │ OK │ /proc/stat file without btime
2 │ OK │ /proc/stat file with invalid format of btime
3 │ OK │ valid /proc/stat file
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SYSTEM_CPU_INTR
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ system cpu interruptions correct read
1 │ OK │ system cpu interruptions correct read of max value
2 │ OK │ system cpu interruptions missing
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SYSTEM_CPU_SWITCHES
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ missing /proc/stat file
1 │ OK │ empty /proc/stat file
2 │ OK │ ctxt-line not found in /proc/stat file
3 │ OK │ valid /proc/stat file
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SYSTEM_HW_CHASSIS
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ #1.1 successfully read 'vendor'
1 │ OK │ #1.2 successfully read 'vendor'
2 │ OK │ #1.3 successfully read 'vendor'
3 │ OK │ #1.4 successfully read 'vendor'
4 │ OK │ #1.5 successfully read 'vendor'
5 │ OK │ #1.6 successfully read 'vendor'
6 │ OK │ #2.1 successfully read 'model'
7 │ OK │ #3.1 successfully read 'serial'
8 │ OK │ #4.1 successfully read 'full'
9 │ OK │ #2.1 unsuccessfully read 'type'
10 │ OK │ #2.2 unsuccessfully read
11 │ OK │ #3 File length bigger than actual fragment length
12 │ OK │ #4 File length smaller than actual fragment length
13 │ OK │ #5 File length 0 while actual frament length is bigger
14 │ OK │ #6 Fragment is 0 length while file length is bigger
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
VFS_FS_DISCOVERY
─────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0 │ OK │ parse file /proc/mounts
1 │ OK │ ignore invalid entries in /proc/mounts
2 │ OK │ invalid /proc/mounts content
3 │ OK │ missing /proc/mounts file
─────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
──────────────────────────────────────┬───────────┬─────────┬────────┬──────────┬───────
Test suite │ Succeeded │ Skipped │ Errors │ Failures │ Time
──────────────────────────────────────┼───────────┼─────────┼────────┼──────────┼───────
evaluate │ 316 │ 0 │ 0 │ 0 │ 2.16
evaluate_unknown │ 8 │ 0 │ 0 │ 0 │ 0.05
queue │ 13 │ 0 │ 0 │ 0 │ 0.10
calculate_item_nextcheck │ 23 │ 0 │ 0 │ 0 │ 0.17
calculate_item_nextcheck_unreachable │ 9 │ 0 │ 0 │ 0 │ 0.06
convert_to_utf8 │ 13 │ 0 │ 0 │ 0 │ 0.08
is_double │ 114 │ 0 │ 0 │ 0 │ 0.74
is_double_suffix │ 85 │ 0 │ 0 │ 0 │ 0.57
parse_key │ 43 │ 0 │ 0 │ 0 │ 0.29
replace_key_params_dyn │ 43 │ 0 │ 0 │ 0 │ 0.52
zbx_dyn_escape_string │ 2 │ 0 │ 0 │ 0 │ 0.01
zbx_function_find │ 61 │ 0 │ 0 │ 0 │ 0.37
zbx_function_get_param_dyn │ 22 │ 0 │ 0 │ 0 │ 0.15
zbx_interval_preproc │ 28 │ 0 │ 0 │ 0 │ 0.20
zbx_str_extract │ 11 │ 0 │ 0 │ 0 │ 0.07
zbx_trim_float │ 49 │ 0 │ 0 │ 0 │ 0.33
zbx_trim_integer │ 49 │ 0 │ 0 │ 0 │ 0.30
zbx_truncate_itemkey │ 38 │ 0 │ 0 │ 0 │ 0.23
zbx_truncate_value │ 14 │ 0 │ 0 │ 0 │ 0.09
zbx_validate_interval │ 110 │ 0 │ 0 │ 0 │ 0.70
zbx_variant_compare │ 40 │ 0 │ 0 │ 0 │ 0.29
zbx_token_find │ 53 │ 0 │ 0 │ 0 │ 0.38
zbx_user_macro_parse │ 30 │ 0 │ 0 │ 0 │ 0.20
zbx_tcp_check_allowed_peers │ 60 │ 0 │ 0 │ 0 │ 0.41
zbx_tcp_check_allowed_peers_ipv4 │ 0 │ 12 │ 0 │ 0 │ 0.00
zbx_tcp_recv_ext │ 32 │ 0 │ 0 │ 0 │ 0.24
zbx_tcp_recv_raw_ext │ 8 │ 0 │ 0 │ 0 │ 0.06
zbx_tcp_recv_ext_zlib │ 5 │ 0 │ 0 │ 0 │ 0.04
parse_cfg_file │ 5 │ 0 │ 0 │ 0 │ 0.04
dc_check_maintenance_period │ 44 │ 0 │ 0 │ 0 │ 0.64
dc_expand_user_macros_in_func_params │ 15 │ 0 │ 0 │ 0 │ 0.24
dc_maintenance_match_tags │ 29 │ 0 │ 0 │ 0 │ 0.44
zbx_vc_add_values │ 18 │ 0 │ 0 │ 0 │ 0.13
zbx_vc_get_value │ 3 │ 0 │ 0 │ 0 │ 0.02
zbx_vc_get_values │ 59 │ 0 │ 0 │ 0 │ 0.41
dc_expand_user_macros_in_calcitem │ 9 │ 0 │ 0 │ 0 │ 0.13
dc_expand_user_macros_in_expression │ 21 │ 0 │ 0 │ 0 │ 0.31
dc_item_poller_type_update │ 2 │ 0 │ 0 │ 0 │ 0.05
is_item_processed_by_server │ 53 │ 0 │ 0 │ 0 │ 0.79
DBadd_condition_alloc │ 11 │ 0 │ 0 │ 0 │ 0.29
DBselect_uint64 │ 4 │ 0 │ 0 │ 0 │ 0.05
zbx_history_get_values │ 11 │ 0 │ 0 │ 0 │ 0.15
zbx_json_decodevalue │ 46 │ 0 │ 0 │ 0 │ 0.34
zbx_json_decodevalue_dyn │ 46 │ 0 │ 0 │ 0 │ 0.35
zbx_json_open_path │ 53 │ 0 │ 0 │ 0 │ 0.37
zbx_jsonpath_compile │ 125 │ 0 │ 0 │ 0 │ 0.87
zbx_jsonpath_query │ 79 │ 0 │ 0 │ 0 │ 0.52
prometheus_filter_init │ 40 │ 0 │ 0 │ 0 │ 0.24
prometheus_parse_row │ 22 │ 0 │ 0 │ 0 │ 0.14
zbx_prometheus_to_json │ 104 │ 0 │ 0 │ 0 │ 0.69
zbx_prometheus_pattern │ 147 │ 0 │ 0 │ 0 │ 1.02
wildcard_match │ 12 │ 0 │ 0 │ 0 │ 0.08
evaluate_function │ 75 │ 0 │ 0 │ 1 │ 1.18
get_trigger_expression_constant │ 27 │ 0 │ 0 │ 0 │ 0.43
substitute_lld_macros │ 20 │ 0 │ 0 │ 0 │ 0.31
check_key_access_rules │ 26 │ 0 │ 0 │ 0 │ 0.33
parse_item_key │ 44 │ 0 │ 0 │ 0 │ 0.64
process │ 16 │ 0 │ 0 │ 0 │ 0.22
item_preproc_csv_to_json │ 58 │ 0 │ 0 │ 0 │ 0.89
item_preproc_xpath │ 13 │ 0 │ 0 │ 0 │ 0.20
zbx_item_preproc │ 159 │ 0 │ 0 │ 0 │ 2.54
zbx_trapper_preproc_test_run │ 33 │ 0 │ 0 │ 0 │ 0.46
SYSTEM_LOCALTIME │ 6 │ 0 │ 0 │ 0 │ 0.08
VFS_FILE_EXISTS │ 10 │ 0 │ 0 │ 0 │ 0.13
WEB_PAGE_GET │ 120 │ 0 │ 0 │ 0 │ 1.54
KERNEL_MAXFILES │ 2 │ 0 │ 0 │ 0 │ 0.03
KERNEL_MAXPROC │ 2 │ 0 │ 0 │ 0 │ 0.02
NET_IF_DISCOVERY │ 4 │ 0 │ 0 │ 0 │ 0.06
NET_IF_IN │ 11 │ 0 │ 0 │ 0 │ 0.13
NET_IF_OUT │ 11 │ 0 │ 0 │ 0 │ 0.16
NET_IF_TOTAL │ 9 │ 0 │ 0 │ 0 │ 0.12
SYSTEM_BOOTTIME │ 4 │ 0 │ 0 │ 0 │ 0.06
SYSTEM_CPU_INTR │ 3 │ 0 │ 0 │ 0 │ 0.04
SYSTEM_CPU_SWITCHES │ 4 │ 0 │ 0 │ 0 │ 0.05
SYSTEM_HW_CHASSIS │ 15 │ 0 │ 0 │ 0 │ 0.18
VFS_FS_DISCOVERY │ 4 │ 0 │ 0 │ 0 │ 0.06
──────────────────────────────────────┼───────────┼─────────┼────────┼──────────┼───────
Test suite │ Succeeded │ Skipped │ Errors │ Failures │ Time
──────────────────────────────────────┼───────────┼─────────┼────────┼──────────┼───────
Total: │ 2913 │ 12 │ 0 │ 1 │ 26.97
──────────────────────────────────────┴───────────┴─────────┴────────┴──────────┴───────