prometheus/promql/promqltest/testdata/name_label_dropping.test
Björn Rabenstein 125a90899c
promqltest: Complete the tests for info annotations (#15429)
promqltest: Complete the tests for info annotations

So far, we did not test for the _absence_ of an info annotation
(because many tests triggered info annotations, which we haven't taken
into account so far).

The test for info annotations was also missed for range queries.

This completes the tests for info annotations (and refactors the many
`if` statements into a somewhat more compact `switch` statement).

It fixes most tests to not emit an info annotation anymore. Or it
changes the `eval` to `eval_info` where we actually want to test for
the info annotation.

It also fixes a few spelling errors in comments.

---------

Signed-off-by: beorn7 <beorn@grafana.com>
Signed-off-by: Björn Rabenstein <github@rabenste.in>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2024-11-21 14:20:38 +01:00

89 lines
3.2 KiB
Plaintext

# Test for __name__ label drop.
load 5m
metric_total{env="1"} 0 60 120
another_metric_total{env="1"} 60 120 180
# Does not drop __name__ for vector selector.
eval instant at 10m metric_total{env="1"}
metric_total{env="1"} 120
# Drops __name__ for unary operators.
eval instant at 10m -metric_total
{env="1"} -120
# Drops __name__ for binary operators.
eval instant at 10m metric_total + another_metric_total
{env="1"} 300
# Does not drop __name__ for binary comparison operators.
eval instant at 10m metric_total <= another_metric_total
metric_total{env="1"} 120
# Drops __name__ for binary comparison operators with "bool" modifier.
eval instant at 10m metric_total <= bool another_metric_total
{env="1"} 1
# Drops __name__ for vector-scalar operations.
eval instant at 10m metric_total * 2
{env="1"} 240
# Drops __name__ for instant-vector functions.
eval instant at 10m clamp(metric_total, 0, 100)
{env="1"} 100
# Drops __name__ for round function.
eval instant at 10m round(metric_total)
{env="1"} 120
# Drops __name__ for range-vector functions.
eval instant at 10m rate(metric_total{env="1"}[10m])
{env="1"} 0.2
# Does not drop __name__ for last_over_time function.
eval instant at 10m last_over_time(metric_total{env="1"}[10m])
metric_total{env="1"} 120
# Drops name for other _over_time functions.
eval instant at 10m max_over_time(metric_total{env="1"}[10m])
{env="1"} 120
# Allows relabeling (to-be-dropped) __name__ via label_replace.
eval instant at 10m label_replace(rate({env="1"}[10m]), "my_name", "rate_$1", "__name__", "(.+)")
{my_name="rate_metric_total", env="1"} 0.2
{my_name="rate_another_metric_total", env="1"} 0.2
# Allows preserving __name__ via label_replace.
eval instant at 10m label_replace(rate({env="1"}[10m]), "__name__", "rate_$1", "__name__", "(.+)")
rate_metric_total{env="1"} 0.2
rate_another_metric_total{env="1"} 0.2
# Allows relabeling (to-be-dropped) __name__ via label_join.
eval instant at 10m label_join(rate({env="1"}[10m]), "my_name", "_", "__name__")
{my_name="metric_total", env="1"} 0.2
{my_name="another_metric_total", env="1"} 0.2
# Allows preserving __name__ via label_join.
eval instant at 10m label_join(rate({env="1"}[10m]), "__name__", "_", "__name__", "env")
metric_total_1{env="1"} 0.2
another_metric_total_1{env="1"} 0.2
# Does not drop metric names from aggregation operators.
eval instant at 10m sum by (__name__, env) (metric_total{env="1"})
metric_total{env="1"} 120
# Aggregation operators by __name__ lead to duplicate labelset errors (aggregation is partitioned by not yet removed __name__ label).
# This is an accidental side effect of delayed __name__ label dropping
eval_fail instant at 10m sum by (__name__) (rate({env="1"}[10m]))
# Aggregation operators aggregate metrics with same labelset and to-be-dropped names.
# This is an accidental side effect of delayed __name__ label dropping
eval instant at 10m sum(rate({env="1"}[10m])) by (env)
{env="1"} 0.4
# Aggregationk operators propagate __name__ label dropping information.
eval instant at 10m topk(10, sum by (__name__, env) (metric_total{env="1"}))
metric_total{env="1"} 120
eval instant at 10m topk(10, sum by (__name__, env) (rate(metric_total{env="1"}[10m])))
{env="1"} 0.2