github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/configs/legacy_promql/testdata/legacy.test (about) 1 load 5m 2 http_requests{job="api-server", instance="0", group="production"} 0+10x10 3 http_requests{job="api-server", instance="1", group="production"} 0+20x10 4 http_requests{job="api-server", instance="0", group="canary"} 0+30x10 5 http_requests{job="api-server", instance="1", group="canary"} 0+40x10 6 http_requests{job="app-server", instance="0", group="production"} 0+50x10 7 http_requests{job="app-server", instance="1", group="production"} 0+60x10 8 http_requests{job="app-server", instance="0", group="canary"} 0+70x10 9 http_requests{job="app-server", instance="1", group="canary"} 0+80x10 10 11 load 5m 12 x{y="testvalue"} 0+10x10 13 14 load 5m 15 testcounter_reset_middle 0+10x4 0+10x5 16 testcounter_reset_end 0+10x9 0 10 17 18 load 4m 19 testcounter_zero_cutoff{start="0m"} 0+240x10 20 testcounter_zero_cutoff{start="1m"} 60+240x10 21 testcounter_zero_cutoff{start="2m"} 120+240x10 22 testcounter_zero_cutoff{start="3m"} 180+240x10 23 testcounter_zero_cutoff{start="4m"} 240+240x10 24 testcounter_zero_cutoff{start="5m"} 300+240x10 25 26 load 5m 27 label_grouping_test{a="aa", b="bb"} 0+10x10 28 label_grouping_test{a="a", b="abb"} 0+20x10 29 30 load 5m 31 vector_matching_a{l="x"} 0+1x100 32 vector_matching_a{l="y"} 0+2x50 33 vector_matching_b{l="x"} 0+4x25 34 35 load 5m 36 cpu_count{instance="0", type="numa"} 0+30x10 37 cpu_count{instance="0", type="smp"} 0+10x20 38 cpu_count{instance="1", type="smp"} 0+20x10 39 40 41 eval instant at 50m SUM(http_requests) 42 {} 3600 43 44 eval instant at 50m SUM(http_requests{instance="0"}) BY(job) 45 {job="api-server"} 400 46 {job="app-server"} 1200 47 48 eval instant at 50m SUM(http_requests) BY (job) 49 {job="api-server"} 1000 50 {job="app-server"} 2600 51 52 # Non-existent labels mentioned in BY-clauses shouldn't propagate to output. 53 eval instant at 50m SUM(http_requests) BY (job, nonexistent) 54 {job="api-server"} 1000 55 {job="app-server"} 2600 56 57 58 eval instant at 50m COUNT(http_requests) BY (job) 59 {job="api-server"} 4 60 {job="app-server"} 4 61 62 63 eval instant at 50m SUM(http_requests) BY (job, group) 64 {group="canary", job="api-server"} 700 65 {group="canary", job="app-server"} 1500 66 {group="production", job="api-server"} 300 67 {group="production", job="app-server"} 1100 68 69 70 eval instant at 50m AVG(http_requests) BY (job) 71 {job="api-server"} 250 72 {job="app-server"} 650 73 74 75 eval instant at 50m MIN(http_requests) BY (job) 76 {job="api-server"} 100 77 {job="app-server"} 500 78 79 80 eval instant at 50m MAX(http_requests) BY (job) 81 {job="api-server"} 400 82 {job="app-server"} 800 83 84 85 # Single-letter label names and values. 86 eval instant at 50m x{y="testvalue"} 87 x{y="testvalue"} 100 88 89 90 # Rates should calculate per-second rates. 91 eval instant at 50m rate(http_requests{group="canary", instance="1", job="app-server"}[50m]) 92 {group="canary", instance="1", job="app-server"} 0.26666666666666666 93 94 95 # Counter resets at in the middle of range are handled correctly by rate(). 96 eval instant at 50m rate(testcounter_reset_middle[50m]) 97 {} 0.03 98 99 100 # Counter resets at end of range are ignored by rate(). 101 eval instant at 50m rate(testcounter_reset_end[5m]) 102 {} 0 103 104 105 # Zero cutoff for left-side extrapolation. 106 eval instant at 10m rate(testcounter_zero_cutoff[20m]) 107 {start="0m"} 0.5 108 {start="1m"} 0.55 109 {start="2m"} 0.6 110 {start="3m"} 0.65 111 {start="4m"} 0.7 112 {start="5m"} 0.6 113 114 # Normal half-interval cutoff for left-side extrapolation. 115 eval instant at 50m rate(testcounter_zero_cutoff[20m]) 116 {start="0m"} 0.6 117 {start="1m"} 0.6 118 {start="2m"} 0.6 119 {start="3m"} 0.6 120 {start="4m"} 0.6 121 {start="5m"} 0.6 122 123 124 eval instant at 50m http_requests{group!="canary"} 125 http_requests{group="production", instance="1", job="app-server"} 600 126 http_requests{group="production", instance="0", job="app-server"} 500 127 http_requests{group="production", instance="1", job="api-server"} 200 128 http_requests{group="production", instance="0", job="api-server"} 100 129 130 eval instant at 50m http_requests{job=~".+-server",group!="canary"} 131 http_requests{group="production", instance="1", job="app-server"} 600 132 http_requests{group="production", instance="0", job="app-server"} 500 133 http_requests{group="production", instance="1", job="api-server"} 200 134 http_requests{group="production", instance="0", job="api-server"} 100 135 136 eval instant at 50m http_requests{job!~"api-.+",group!="canary"} 137 http_requests{group="production", instance="1", job="app-server"} 600 138 http_requests{group="production", instance="0", job="app-server"} 500 139 140 eval instant at 50m http_requests{group="production",job=~"api-.+"} 141 http_requests{group="production", instance="0", job="api-server"} 100 142 http_requests{group="production", instance="1", job="api-server"} 200 143 144 eval instant at 50m abs(-1 * http_requests{group="production",job="api-server"}) 145 {group="production", instance="0", job="api-server"} 100 146 {group="production", instance="1", job="api-server"} 200 147 148 eval instant at 50m floor(0.004 * http_requests{group="production",job="api-server"}) 149 {group="production", instance="0", job="api-server"} 0 150 {group="production", instance="1", job="api-server"} 0 151 152 eval instant at 50m ceil(0.004 * http_requests{group="production",job="api-server"}) 153 {group="production", instance="0", job="api-server"} 1 154 {group="production", instance="1", job="api-server"} 1 155 156 eval instant at 50m round(0.004 * http_requests{group="production",job="api-server"}) 157 {group="production", instance="0", job="api-server"} 0 158 {group="production", instance="1", job="api-server"} 1 159 160 # Round should correctly handle negative numbers. 161 eval instant at 50m round(-1 * (0.004 * http_requests{group="production",job="api-server"})) 162 {group="production", instance="0", job="api-server"} 0 163 {group="production", instance="1", job="api-server"} -1 164 165 # Round should round half up. 166 eval instant at 50m round(0.005 * http_requests{group="production",job="api-server"}) 167 {group="production", instance="0", job="api-server"} 1 168 {group="production", instance="1", job="api-server"} 1 169 170 eval instant at 50m round(-1 * (0.005 * http_requests{group="production",job="api-server"})) 171 {group="production", instance="0", job="api-server"} 0 172 {group="production", instance="1", job="api-server"} -1 173 174 eval instant at 50m round(1 + 0.005 * http_requests{group="production",job="api-server"}) 175 {group="production", instance="0", job="api-server"} 2 176 {group="production", instance="1", job="api-server"} 2 177 178 eval instant at 50m round(-1 * (1 + 0.005 * http_requests{group="production",job="api-server"})) 179 {group="production", instance="0", job="api-server"} -1 180 {group="production", instance="1", job="api-server"} -2 181 182 # Round should accept the number to round nearest to. 183 eval instant at 50m round(0.0005 * http_requests{group="production",job="api-server"}, 0.1) 184 {group="production", instance="0", job="api-server"} 0.1 185 {group="production", instance="1", job="api-server"} 0.1 186 187 eval instant at 50m round(2.1 + 0.0005 * http_requests{group="production",job="api-server"}, 0.1) 188 {group="production", instance="0", job="api-server"} 2.2 189 {group="production", instance="1", job="api-server"} 2.2 190 191 eval instant at 50m round(5.2 + 0.0005 * http_requests{group="production",job="api-server"}, 0.1) 192 {group="production", instance="0", job="api-server"} 5.3 193 {group="production", instance="1", job="api-server"} 5.3 194 195 # Round should work correctly with negative numbers and multiple decimal places. 196 eval instant at 50m round(-1 * (5.2 + 0.0005 * http_requests{group="production",job="api-server"}), 0.1) 197 {group="production", instance="0", job="api-server"} -5.2 198 {group="production", instance="1", job="api-server"} -5.3 199 200 # Round should work correctly with big toNearests. 201 eval instant at 50m round(0.025 * http_requests{group="production",job="api-server"}, 5) 202 {group="production", instance="0", job="api-server"} 5 203 {group="production", instance="1", job="api-server"} 5 204 205 eval instant at 50m round(0.045 * http_requests{group="production",job="api-server"}, 5) 206 {group="production", instance="0", job="api-server"} 5 207 {group="production", instance="1", job="api-server"} 10 208 209 eval instant at 50m avg_over_time(http_requests{group="production",job="api-server"}[1h]) 210 {group="production", instance="0", job="api-server"} 50 211 {group="production", instance="1", job="api-server"} 100 212 213 eval instant at 50m count_over_time(http_requests{group="production",job="api-server"}[1h]) 214 {group="production", instance="0", job="api-server"} 11 215 {group="production", instance="1", job="api-server"} 11 216 217 eval instant at 50m max_over_time(http_requests{group="production",job="api-server"}[1h]) 218 {group="production", instance="0", job="api-server"} 100 219 {group="production", instance="1", job="api-server"} 200 220 221 eval instant at 50m min_over_time(http_requests{group="production",job="api-server"}[1h]) 222 {group="production", instance="0", job="api-server"} 0 223 {group="production", instance="1", job="api-server"} 0 224 225 eval instant at 50m sum_over_time(http_requests{group="production",job="api-server"}[1h]) 226 {group="production", instance="0", job="api-server"} 550 227 {group="production", instance="1", job="api-server"} 1100 228 229 eval instant at 50m time() 230 3000 231 232 eval instant at 50m {__name__=~".+"} 233 http_requests{group="canary", instance="0", job="api-server"} 300 234 http_requests{group="canary", instance="0", job="app-server"} 700 235 http_requests{group="canary", instance="1", job="api-server"} 400 236 http_requests{group="canary", instance="1", job="app-server"} 800 237 http_requests{group="production", instance="0", job="api-server"} 100 238 http_requests{group="production", instance="0", job="app-server"} 500 239 http_requests{group="production", instance="1", job="api-server"} 200 240 http_requests{group="production", instance="1", job="app-server"} 600 241 testcounter_reset_end 0 242 testcounter_reset_middle 50 243 x{y="testvalue"} 100 244 label_grouping_test{a="a", b="abb"} 200 245 label_grouping_test{a="aa", b="bb"} 100 246 vector_matching_a{l="x"} 10 247 vector_matching_a{l="y"} 20 248 vector_matching_b{l="x"} 40 249 cpu_count{instance="1", type="smp"} 200 250 cpu_count{instance="0", type="smp"} 100 251 cpu_count{instance="0", type="numa"} 300 252 253 254 eval instant at 50m {job=~".+-server", job!~"api-.+"} 255 http_requests{group="canary", instance="0", job="app-server"} 700 256 http_requests{group="canary", instance="1", job="app-server"} 800 257 http_requests{group="production", instance="0", job="app-server"} 500 258 http_requests{group="production", instance="1", job="app-server"} 600 259 260 eval instant at 50m absent(nonexistent) 261 {} 1 262 263 264 eval instant at 50m absent(nonexistent{job="testjob", instance="testinstance", method=~".x"}) 265 {instance="testinstance", job="testjob"} 1 266 267 eval instant at 50m absent(http_requests) 268 269 eval instant at 50m absent(sum(http_requests)) 270 271 eval instant at 50m absent(sum(nonexistent{job="testjob", instance="testinstance"})) 272 {} 1 273 274 eval instant at 50m http_requests{group="production",job="api-server"} offset 5m 275 http_requests{group="production", instance="0", job="api-server"} 90 276 http_requests{group="production", instance="1", job="api-server"} 180 277 278 eval instant at 50m rate(http_requests{group="production",job="api-server"}[10m] offset 5m) 279 {group="production", instance="0", job="api-server"} 0.03333333333333333 280 {group="production", instance="1", job="api-server"} 0.06666666666666667 281 282 eval instant at 50m http_requests{group="canary", instance="0", job="api-server"} / 0 283 {group="canary", instance="0", job="api-server"} +Inf 284 285 eval instant at 50m -1 * http_requests{group="canary", instance="0", job="api-server"} / 0 286 {group="canary", instance="0", job="api-server"} -Inf 287 288 eval instant at 50m 0 * http_requests{group="canary", instance="0", job="api-server"} / 0 289 {group="canary", instance="0", job="api-server"} NaN 290 291 eval instant at 50m 0 * http_requests{group="canary", instance="0", job="api-server"} % 0 292 {group="canary", instance="0", job="api-server"} NaN 293 294 eval instant at 50m exp(vector_matching_a) 295 {l="x"} 22026.465794806718 296 {l="y"} 485165195.4097903 297 298 eval instant at 50m exp(vector_matching_a - 10) 299 {l="y"} 22026.465794806718 300 {l="x"} 1 301 302 eval instant at 50m exp(vector_matching_a - 20) 303 {l="x"} 4.5399929762484854e-05 304 {l="y"} 1 305 306 eval instant at 50m ln(vector_matching_a) 307 {l="x"} 2.302585092994046 308 {l="y"} 2.995732273553991 309 310 eval instant at 50m ln(vector_matching_a - 10) 311 {l="y"} 2.302585092994046 312 {l="x"} -Inf 313 314 eval instant at 50m ln(vector_matching_a - 20) 315 {l="y"} -Inf 316 {l="x"} NaN 317 318 eval instant at 50m exp(ln(vector_matching_a)) 319 {l="y"} 20 320 {l="x"} 10 321 322 eval instant at 50m sqrt(vector_matching_a) 323 {l="x"} 3.1622776601683795 324 {l="y"} 4.47213595499958 325 326 eval instant at 50m log2(vector_matching_a) 327 {l="x"} 3.3219280948873626 328 {l="y"} 4.321928094887363 329 330 eval instant at 50m log2(vector_matching_a - 10) 331 {l="y"} 3.3219280948873626 332 {l="x"} -Inf 333 334 eval instant at 50m log2(vector_matching_a - 20) 335 {l="x"} NaN 336 {l="y"} -Inf 337 338 eval instant at 50m log10(vector_matching_a) 339 {l="x"} 1 340 {l="y"} 1.301029995663981 341 342 eval instant at 50m log10(vector_matching_a - 10) 343 {l="y"} 1 344 {l="x"} -Inf 345 346 eval instant at 50m log10(vector_matching_a - 20) 347 {l="x"} NaN 348 {l="y"} -Inf 349 350 351 # Matrix tests. 352 clear 353 load 1h 354 testmetric{aa="bb"} 1 355 testmetric{a="abb"} 2 356 357 eval instant at 0h testmetric 358 testmetric{aa="bb"} 1 359 testmetric{a="abb"} 2