mirror of https://github.com/prometheus/prometheus
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.1 KiB
157 lines
4.1 KiB
rule_files: |
|
- rules.yml |
|
|
|
evaluation_interval: 1m |
|
|
|
tests: |
|
# Basic tests for promql_expr_test, not dependent on rules. |
|
- interval: 1m |
|
input_series: |
|
- series: test_full |
|
values: '0 0' |
|
|
|
- series: test_stale |
|
values: '0 stale' |
|
|
|
- series: test_missing |
|
values: '0 _ _ _ _ _ _ 0' |
|
|
|
promql_expr_test: |
|
# Ensure the sample is evaluated at the time we expect it to be. |
|
- expr: timestamp(test_full) |
|
eval_time: 0m |
|
exp_samples: |
|
- value: 0 |
|
- expr: timestamp(test_full) |
|
eval_time: 1m |
|
exp_samples: |
|
- value: 60 |
|
- expr: timestamp(test_full) |
|
eval_time: 2m |
|
exp_samples: |
|
- value: 60 |
|
|
|
# Ensure a value is stale as soon as it is marked as such. |
|
- expr: test_stale |
|
eval_time: 59s |
|
exp_samples: |
|
- value: 0 |
|
labels: 'test_stale' |
|
- expr: test_stale |
|
eval_time: 1m |
|
exp_samples: [] |
|
|
|
# Ensure lookback delta is respected, when a value is missing. |
|
- expr: timestamp(test_missing) |
|
eval_time: 5m |
|
exp_samples: |
|
- value: 0 |
|
- expr: timestamp(test_missing) |
|
eval_time: 5m1s |
|
exp_samples: [] |
|
|
|
# Minimal test case to check edge case of a single sample. |
|
- input_series: |
|
- series: test |
|
values: 1 |
|
|
|
promql_expr_test: |
|
- expr: test |
|
eval_time: 0 |
|
exp_samples: |
|
- value: 1 |
|
labels: test |
|
|
|
# Test recording rules run even if input_series isn't provided. |
|
- promql_expr_test: |
|
- expr: count_over_time(fixed_data[1h]) |
|
eval_time: 1h |
|
exp_samples: |
|
- value: 61 |
|
- expr: timestamp(fixed_data) |
|
eval_time: 1h |
|
exp_samples: |
|
- value: 3600 |
|
|
|
# Tests for alerting rules. |
|
- interval: 1m |
|
input_series: |
|
- series: 'up{job="prometheus", instance="localhost:9090"}' |
|
values: "0+0x1440" |
|
|
|
promql_expr_test: |
|
- expr: count(ALERTS) by (alertname, alertstate) |
|
eval_time: 4m |
|
exp_samples: |
|
- labels: '{alertname="AlwaysFiring",alertstate="firing"}' |
|
value: 1 |
|
- labels: '{alertname="InstanceDown",alertstate="pending"}' |
|
value: 1 |
|
|
|
alert_rule_test: |
|
- eval_time: 1d |
|
alertname: AlwaysFiring |
|
exp_alerts: |
|
- {} |
|
|
|
- eval_time: 1d |
|
alertname: InstanceDown |
|
exp_alerts: |
|
- exp_labels: |
|
severity: page |
|
instance: localhost:9090 |
|
job: prometheus |
|
exp_annotations: |
|
summary: "Instance localhost:9090 down" |
|
description: "localhost:9090 of job prometheus has been down for more than 5 minutes." |
|
|
|
- eval_time: 0 |
|
alertname: AlwaysFiring |
|
exp_alerts: |
|
- {} |
|
|
|
- eval_time: 0 |
|
alertname: InstanceDown |
|
exp_alerts: [] |
|
|
|
# Tests for interval vs evaluation_interval. |
|
- interval: 1s |
|
input_series: |
|
- series: 'test{job="test", instance="x:0"}' |
|
# 2 minutes + 1 second of input data, recording rules should only run |
|
# once a minute. |
|
values: '0+1x120' |
|
|
|
promql_expr_test: |
|
- expr: job:test:count_over_time1m |
|
eval_time: 0m |
|
exp_samples: |
|
- value: 1 |
|
labels: 'job:test:count_over_time1m{job="test"}' |
|
- expr: timestamp(job:test:count_over_time1m) |
|
eval_time: 10s |
|
exp_samples: |
|
- value: 0 |
|
labels: '{job="test"}' |
|
|
|
- expr: job:test:count_over_time1m |
|
eval_time: 1m |
|
exp_samples: |
|
- value: 61 |
|
labels: 'job:test:count_over_time1m{job="test"}' |
|
- expr: timestamp(job:test:count_over_time1m) |
|
eval_time: 1m10s |
|
exp_samples: |
|
- value: 60 |
|
labels: '{job="test"}' |
|
|
|
- expr: job:test:count_over_time1m |
|
eval_time: 2m |
|
exp_samples: |
|
- value: 61 |
|
labels: 'job:test:count_over_time1m{job="test"}' |
|
- expr: timestamp(job:test:count_over_time1m) |
|
eval_time: 2m59s999ms |
|
exp_samples: |
|
- value: 120 |
|
labels: '{job="test"}'
|
|
|