From b7ef0b45e8e0b338eacd70650d696a71058d5ab6 Mon Sep 17 00:00:00 2001 From: Brian Brazil Date: Sun, 7 Feb 2016 18:00:23 +0000 Subject: [PATCH] Break aggregation tests out. Add missing tests. --- promql/testdata/aggregators.test | 96 ++++++++++++++++++++++++++++++++ promql/testdata/legacy.test | 41 -------------- promql/testdata/operators.test | 22 -------- 3 files changed, 96 insertions(+), 63 deletions(-) create mode 100644 promql/testdata/aggregators.test delete mode 100644 promql/testdata/operators.test diff --git a/promql/testdata/aggregators.test b/promql/testdata/aggregators.test new file mode 100644 index 000000000..4e71cd08a --- /dev/null +++ b/promql/testdata/aggregators.test @@ -0,0 +1,96 @@ +load 5m + http_requests{job="api-server", instance="0", group="production"} 0+10x10 + http_requests{job="api-server", instance="1", group="production"} 0+20x10 + http_requests{job="api-server", instance="0", group="canary"} 0+30x10 + http_requests{job="api-server", instance="1", group="canary"} 0+40x10 + http_requests{job="app-server", instance="0", group="production"} 0+50x10 + http_requests{job="app-server", instance="1", group="production"} 0+60x10 + http_requests{job="app-server", instance="0", group="canary"} 0+70x10 + http_requests{job="app-server", instance="1", group="canary"} 0+80x10 + +# Simple sum. +eval instant at 50m SUM BY (group) (http_requests{job="api-server"}) + {group="canary"} 700 + {group="production"} 300 + +# Test alternative "by"-clause order. +eval instant at 50m sum by (group) (http_requests{job="api-server"}) + {group="canary"} 700 + {group="production"} 300 + +# Simple average. +eval instant at 50m avg by (group) (http_requests{job="api-server"}) + {group="canary"} 350 + {group="production"} 150 + +# Simple count. +eval instant at 50m count by (group) (http_requests{job="api-server"}) + {group="canary"} 2 + {group="production"} 2 + +# Lower-cased aggregation operators should work too. +eval instant at 50m sum(http_requests) by (job) + min(http_requests) by (job) + max(http_requests) by (job) + avg(http_requests) by (job) + {job="app-server"} 4550 + {job="api-server"} 1750 + +# Test alternative "by"-clause order with "keep_common". +eval instant at 50m sum by (group) keep_common (http_requests{job="api-server"}) + {group="canary", job="api-server"} 700 + {group="production", job="api-server"} 300 + +# Test both alternative "by"-clause orders in one expression. +# Public health warning: stick to one form within an expression (or even +# in an organization), or risk serious user confusion. +eval instant at 50m sum(sum by (group) keep_common (http_requests{job="api-server"})) by (job) + {job="api-server"} 1000 + + +# Standard deviation and variance. +eval instant at 50m stddev(http_requests) + {} 229.12878474779 + +eval instant at 50m stddev by (instance)(http_requests) + {instance="0"} 223.60679774998 + {instance="1"} 223.60679774998 + +eval instant at 50m stdvar(http_requests) + {} 52500 + +eval instant at 50m stdvar by (instance)(http_requests) + {instance="0"} 50000 + {instance="1"} 50000 + + +# Regression test for missing separator byte in labelsToGroupingKey. +clear +load 5m + label_grouping_test{a="aa", b="bb"} 0+10x10 + label_grouping_test{a="a", b="abb"} 0+20x10 + +eval instant at 50m sum(label_grouping_test) by (a, b) + {a="a", b="abb"} 200 + {a="aa", b="bb"} 100 + + +# Tests for min/max. +clear +load 5m + http_requests{job="api-server", instance="0", group="production"} 1 + http_requests{job="api-server", instance="1", group="production"} 2 + http_requests{job="api-server", instance="0", group="canary"} NaN + http_requests{job="api-server", instance="1", group="canary"} 3 + http_requests{job="api-server", instance="2", group="canary"} 4 + +eval instant at 0m max(http_requests) + {} 4 + +eval instant at 0m min(http_requests) + {} 1 + +eval instant at 0m max by (group) (http_requests) + {group="production"} 2 + {group="canary"} 4 + +eval instant at 0m min by (group) (http_requests) + {group="production"} 1 + {group="canary"} 3 diff --git a/promql/testdata/legacy.test b/promql/testdata/legacy.test index d80293f0f..c4c811107 100644 --- a/promql/testdata/legacy.test +++ b/promql/testdata/legacy.test @@ -147,12 +147,6 @@ eval instant at 50m x{y="testvalue"} x{y="testvalue"} 100 -# Lower-cased aggregation operators should work too. -eval instant at 50m sum(http_requests) by (job) + min(http_requests) by (job) + max(http_requests) by (job) + avg(http_requests) by (job) - {job="app-server"} 4550 - {job="api-server"} 1750 - - # Deltas should be adjusted for target interval vs. samples under target interval. eval instant at 50m delta(http_requests{group="canary", instance="1", job="app-server"}[18m]) {group="canary", instance="1", job="app-server"} 288 @@ -343,22 +337,6 @@ eval instant at 50m {job=~".+-server", job!~"api-.+"} http_requests{group="production", instance="0", job="app-server"} 500 http_requests{group="production", instance="1", job="app-server"} 600 -# Test alternative "by"-clause order. -eval instant at 50m sum by (group) (http_requests{job="api-server"}) - {group="canary"} 700 - {group="production"} 300 - -# Test alternative "by"-clause order with "keep_common". -eval instant at 50m sum by (group) keep_common (http_requests{job="api-server"}) - {group="canary", job="api-server"} 700 - {group="production", job="api-server"} 300 - -# Test both alternative "by"-clause orders in one expression. -# Public health warning: stick to one form within an expression (or even -# in an organization), or risk serious user confusion. -eval instant at 50m sum(sum by (group) keep_common (http_requests{job="api-server"})) by (job) - {job="api-server"} 1000 - eval instant at 50m http_requests{group="canary"} and http_requests{instance="0"} http_requests{group="canary", instance="0", job="api-server"} 300 http_requests{group="canary", instance="0", job="app-server"} 700 @@ -487,11 +465,6 @@ eval instant at 50m rate(http_requests{group="production",job="api-server"}[10m] {group="production", instance="0", job="api-server"} 0.03333333333333333 {group="production", instance="1", job="api-server"} 0.06666666666666667 -# Regression test for missing separator byte in labelsToGroupingKey. -eval instant at 50m sum(label_grouping_test) by (a, b) - {a="a", b="abb"} 200 - {a="aa", b="bb"} 100 - eval instant at 50m http_requests{group="canary", instance="0", job="api-server"} / 0 {group="canary", instance="0", job="api-server"} +Inf @@ -560,20 +533,6 @@ eval instant at 50m log10(vector_matching_a - 20) {l="x"} NaN {l="y"} -Inf -eval instant at 50m stddev(http_requests) - {} 229.12878474779 - -eval instant at 50m stddev by (instance)(http_requests) - {instance="0"} 223.60679774998 - {instance="1"} 223.60679774998 - -eval instant at 50m stdvar(http_requests) - {} 52500 - -eval instant at 50m stdvar by (instance)(http_requests) - {instance="0"} 50000 - {instance="1"} 50000 - # Matrix tests. diff --git a/promql/testdata/operators.test b/promql/testdata/operators.test deleted file mode 100644 index fbef5030c..000000000 --- a/promql/testdata/operators.test +++ /dev/null @@ -1,22 +0,0 @@ -# Tests for min/max. -clear -load 5m - http_requests{job="api-server", instance="0", group="production"} 1 - http_requests{job="api-server", instance="1", group="production"} 2 - http_requests{job="api-server", instance="0", group="canary"} NaN - http_requests{job="api-server", instance="1", group="canary"} 3 - http_requests{job="api-server", instance="2", group="canary"} 4 - -eval instant at 0m max(http_requests) - {} 4 - -eval instant at 0m min(http_requests) - {} 1 - -eval instant at 0m max by (group) (http_requests) - {group="production"} 2 - {group="canary"} 4 - -eval instant at 0m min by (group) (http_requests) - {group="production"} 1 - {group="canary"} 3