github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/configs/legacy_promql/testdata/aggregators.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    foo{job="api-server", instance="0", region="europe"} 0+90x10
    13    foo{job="api-server"} 0+100x10
    14  
    15  # Simple sum.
    16  eval instant at 50m SUM BY (group) (http_requests{job="api-server"})
    17    {group="canary"} 700
    18    {group="production"} 300
    19  
    20  # Test alternative "by"-clause order.
    21  eval instant at 50m sum by (group) (http_requests{job="api-server"})
    22    {group="canary"} 700
    23    {group="production"} 300
    24  
    25  # Simple average.
    26  eval instant at 50m avg by (group) (http_requests{job="api-server"})
    27    {group="canary"} 350
    28    {group="production"} 150
    29  
    30  # Simple count.
    31  eval instant at 50m count by (group) (http_requests{job="api-server"})
    32    {group="canary"} 2
    33    {group="production"} 2
    34  
    35  # Simple without.
    36  eval instant at 50m sum without (instance) (http_requests{job="api-server"})
    37    {group="canary",job="api-server"} 700
    38    {group="production",job="api-server"} 300
    39  
    40  # Empty by.
    41  eval instant at 50m sum by () (http_requests{job="api-server"})
    42    {} 1000
    43  
    44  # No by/without.
    45  eval instant at 50m sum(http_requests{job="api-server"})
    46    {} 1000
    47  
    48  # Empty without.
    49  eval instant at 50m sum without () (http_requests{job="api-server",group="production"})
    50    {group="production",job="api-server",instance="0"} 100
    51    {group="production",job="api-server",instance="1"} 200
    52  
    53  # Without with mismatched and missing labels. Do not do this.
    54  eval instant at 50m sum without (instance) (http_requests{job="api-server"} or foo)
    55    {group="canary",job="api-server"} 700
    56    {group="production",job="api-server"} 300
    57    {region="europe",job="api-server"} 900
    58    {job="api-server"} 1000
    59  
    60  # Lower-cased aggregation operators should work too.
    61  eval instant at 50m sum(http_requests) by (job) + min(http_requests) by (job) + max(http_requests) by (job) + avg(http_requests) by (job)
    62    {job="app-server"} 4550
    63    {job="api-server"} 1750
    64  
    65  # Test alternative "by"-clause order.
    66  eval instant at 50m sum by (group) (http_requests{job="api-server"})
    67    {group="canary"} 700
    68    {group="production"} 300
    69  
    70  # Test both alternative "by"-clause orders in one expression.
    71  # Public health warning: stick to one form within an expression (or even
    72  # in an organization), or risk serious user confusion.
    73  eval instant at 50m sum(sum by (group) (http_requests{job="api-server"})) by (job)
    74    {} 1000
    75  
    76  
    77  
    78  # Standard deviation and variance.
    79  eval instant at 50m stddev(http_requests)
    80    {} 229.12878474779
    81  
    82  eval instant at 50m stddev by (instance)(http_requests)
    83    {instance="0"} 223.60679774998
    84    {instance="1"} 223.60679774998
    85  
    86  eval instant at 50m stdvar(http_requests)
    87    {} 52500
    88  
    89  eval instant at 50m stdvar by (instance)(http_requests)
    90    {instance="0"} 50000
    91    {instance="1"} 50000
    92  
    93  
    94  
    95  # Regression test for missing separator byte in labelsToGroupingKey.
    96  clear
    97  load 5m
    98    label_grouping_test{a="aa", b="bb"} 0+10x10
    99    label_grouping_test{a="a", b="abb"} 0+20x10
   100  
   101  eval instant at 50m sum(label_grouping_test) by (a, b)
   102    {a="a", b="abb"} 200
   103    {a="aa", b="bb"} 100
   104  
   105  
   106  
   107  # Tests for min/max.
   108  clear
   109  load 5m
   110    http_requests{job="api-server", instance="0", group="production"}	1
   111    http_requests{job="api-server", instance="1", group="production"}	2
   112    http_requests{job="api-server", instance="0", group="canary"}		NaN
   113    http_requests{job="api-server", instance="1", group="canary"}		3
   114    http_requests{job="api-server", instance="2", group="canary"}		4
   115  
   116  eval instant at 0m max(http_requests)
   117    {} 4
   118  
   119  eval instant at 0m min(http_requests)
   120    {} 1
   121  
   122  eval instant at 0m max by (group) (http_requests)
   123    {group="production"} 2
   124    {group="canary"} 4
   125  
   126  eval instant at 0m min by (group) (http_requests)
   127    {group="production"} 1
   128    {group="canary"} 3
   129  
   130  clear
   131  
   132  # Tests for topk/bottomk.
   133  load 5m
   134  	http_requests{job="api-server", instance="0", group="production"}	0+10x10
   135  	http_requests{job="api-server", instance="1", group="production"}	0+20x10
   136  	http_requests{job="api-server", instance="2", group="production"}	NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
   137  	http_requests{job="api-server", instance="0", group="canary"}		0+30x10
   138  	http_requests{job="api-server", instance="1", group="canary"}		0+40x10
   139  	http_requests{job="app-server", instance="0", group="production"}	0+50x10
   140  	http_requests{job="app-server", instance="1", group="production"}	0+60x10
   141  	http_requests{job="app-server", instance="0", group="canary"}		0+70x10
   142  	http_requests{job="app-server", instance="1", group="canary"}		0+80x10
   143  
   144  eval_ordered instant at 50m topk(3, http_requests)
   145  	http_requests{group="canary", instance="1", job="app-server"} 800
   146  	http_requests{group="canary", instance="0", job="app-server"} 700
   147  	http_requests{group="production", instance="1", job="app-server"} 600
   148  
   149  eval_ordered instant at 50m topk(5, http_requests{group="canary",job="app-server"})
   150  	http_requests{group="canary", instance="1", job="app-server"} 800
   151  	http_requests{group="canary", instance="0", job="app-server"} 700
   152  
   153  eval_ordered instant at 50m bottomk(3, http_requests)
   154  	http_requests{group="production", instance="0", job="api-server"} 100
   155  	http_requests{group="production", instance="1", job="api-server"} 200
   156  	http_requests{group="canary", instance="0", job="api-server"} 300
   157  
   158  eval_ordered instant at 50m bottomk(5, http_requests{group="canary",job="app-server"})
   159  	http_requests{group="canary", instance="0", job="app-server"} 700
   160  	http_requests{group="canary", instance="1", job="app-server"} 800
   161  
   162  eval instant at 50m topk by (group) (1, http_requests)
   163    http_requests{group="production", instance="1", job="app-server"} 600
   164    http_requests{group="canary", instance="1", job="app-server"} 800
   165  
   166  eval instant at 50m bottomk by (group) (2, http_requests)
   167    http_requests{group="canary", instance="0", job="api-server"} 300
   168    http_requests{group="canary", instance="1", job="api-server"} 400
   169    http_requests{group="production", instance="0", job="api-server"} 100
   170    http_requests{group="production", instance="1", job="api-server"} 200
   171  
   172  eval_ordered instant at 50m bottomk by (group) (2, http_requests{group="production"})
   173    http_requests{group="production", instance="0", job="api-server"} 100
   174    http_requests{group="production", instance="1", job="api-server"} 200
   175  
   176  # Test NaN is sorted away from the top/bottom.
   177  eval_ordered instant at 50m topk(3, http_requests{job="api-server",group="production"})
   178  	http_requests{job="api-server", instance="1", group="production"}	200
   179  	http_requests{job="api-server", instance="0", group="production"}	100
   180  	http_requests{job="api-server", instance="2", group="production"}	NaN
   181  
   182  eval_ordered instant at 50m bottomk(3, http_requests{job="api-server",group="production"})
   183  	http_requests{job="api-server", instance="0", group="production"}	100
   184  	http_requests{job="api-server", instance="1", group="production"}	200
   185  	http_requests{job="api-server", instance="2", group="production"}	NaN
   186  
   187  # Test topk and bottomk allocate min(k, input_vector) for results vector
   188  eval_ordered instant at 50m bottomk(9999999999, http_requests{job="app-server",group="canary"})
   189  	http_requests{group="canary", instance="0", job="app-server"} 700
   190  	http_requests{group="canary", instance="1", job="app-server"} 800
   191  
   192  eval_ordered instant at 50m topk(9999999999, http_requests{job="api-server",group="production"})
   193  	http_requests{job="api-server", instance="1", group="production"}	200
   194  	http_requests{job="api-server", instance="0", group="production"}	100
   195  	http_requests{job="api-server", instance="2", group="production"}	NaN
   196  
   197  clear
   198  
   199  # Tests for count_values.
   200  load 5m
   201  	version{job="api-server", instance="0", group="production"}	6
   202  	version{job="api-server", instance="1", group="production"}	6
   203  	version{job="api-server", instance="2", group="production"}	6
   204  	version{job="api-server", instance="0", group="canary"}		8
   205  	version{job="api-server", instance="1", group="canary"}		8
   206  	version{job="app-server", instance="0", group="production"}	6
   207  	version{job="app-server", instance="1", group="production"}	6
   208  	version{job="app-server", instance="0", group="canary"}		7
   209  	version{job="app-server", instance="1", group="canary"}		7
   210  
   211  eval instant at 5m count_values("version", version)
   212  	{version="6"} 5
   213  	{version="7"} 2
   214  	{version="8"} 2
   215  
   216  eval instant at 5m count_values without (instance)("version", version)
   217  	{job="api-server", group="production", version="6"} 3
   218  	{job="api-server", group="canary", version="8"} 2
   219  	{job="app-server", group="production", version="6"} 2
   220  	{job="app-server", group="canary", version="7"} 2
   221  
   222  # Overwrite label with output. Don't do this.
   223  eval instant at 5m count_values without (instance)("job", version)
   224  	{job="6", group="production"} 5
   225  	{job="8", group="canary"} 2
   226  	{job="7", group="canary"} 2
   227  
   228  # Overwrite label with output. Don't do this.
   229  eval instant at 5m count_values by (job, group)("job", version)
   230  	{job="6", group="production"} 5
   231  	{job="8", group="canary"} 2
   232  	{job="7", group="canary"} 2
   233  
   234  
   235  # Tests for quantile.
   236  clear
   237  
   238  load 10s
   239  	data{test="two samples",point="a"} 0
   240  	data{test="two samples",point="b"} 1
   241  	data{test="three samples",point="a"} 0
   242  	data{test="three samples",point="b"} 1
   243  	data{test="three samples",point="c"} 2
   244  	data{test="uneven samples",point="a"} 0
   245  	data{test="uneven samples",point="b"} 1
   246  	data{test="uneven samples",point="c"} 4
   247  
   248  eval instant at 1m quantile without(point)(0.8, data)
   249  	{test="two samples"} 0.8
   250  	{test="three samples"} 1.6
   251  	{test="uneven samples"} 2.8