Skip to content

Commit c1dbe32

Browse files
committed
Fix tests
Signed-off-by: Mustafain Ali Khan <[email protected]>
1 parent 4eb03df commit c1dbe32

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

docs/configuration/config-file-reference.md

+4
Original file line numberDiff line numberDiff line change
@@ -4116,6 +4116,10 @@ ruler_client:
41164116
# CLI flag: -ruler.rule-path
41174117
[rule_path: <string> | default = "/rules"]
41184118

4119+
# Default offset for all rule evaluation queries
4120+
# CLI flag: -ruler.rule-query-offset
4121+
[rule_query_offset: <duration> | default = 0s]
4122+
41194123
# Comma-separated list of URL(s) of the Alertmanager(s) to send notifications
41204124
# to. Each Alertmanager URL is treated as a separate group in the configuration.
41214125
# Multiple Alertmanagers in HA per group can be supported by using DNS

pkg/ruler/api_test.go

+16-3
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ interval: 15s
263263
err: errors.New("invalid rules config: rule group 'rg_name' has no rules"),
264264
},
265265
{
266-
name: "with a a valid rules file",
266+
name: "with a valid rules file",
267267
status: 202,
268268
input: `
269269
name: test
@@ -279,7 +279,20 @@ rules:
279279
labels:
280280
test: test
281281
`,
282-
output: "name: test\ninterval: 15s\nrules:\n - record: up_rule\n expr: up{}\n - alert: up_alert\n expr: sum(up{}) > 1\n for: 30s\n labels:\n test: test\n annotations:\n test: test\n",
282+
output: "name: test\ninterval: 15s\nquery_offset: 0s\nrules:\n - record: up_rule\n expr: up{}\n - alert: up_alert\n expr: sum(up{}) > 1\n for: 30s\n labels:\n test: test\n annotations:\n test: test\n",
283+
},
284+
{
285+
name: "with a valid rule query offset",
286+
status: 202,
287+
input: `
288+
name: test
289+
interval: 15s
290+
query_offset: 2m
291+
rules:
292+
- record: up_rule
293+
expr: up{}
294+
`,
295+
output: "name: test\ninterval: 15s\nquery_offset: 2m\nrules:\n - record: up_rule\n expr: up{}\n",
283296
},
284297
}
285298

@@ -329,7 +342,7 @@ func TestRuler_DeleteNamespace(t *testing.T) {
329342

330343
router.ServeHTTP(w, req)
331344
require.Equal(t, http.StatusOK, w.Code)
332-
require.Equal(t, "name: group1\ninterval: 1m\nrules:\n - record: UP_RULE\n expr: up\n - alert: UP_ALERT\n expr: up < 1\n", w.Body.String())
345+
require.Equal(t, "name: group1\ninterval: 1m\nquery_offset: 0s\nrules:\n - record: UP_RULE\n expr: up\n - alert: UP_ALERT\n expr: up < 1\n", w.Body.String())
333346

334347
// Delete namespace1
335348
req = requestFor(t, http.MethodDelete, "https://localhost:8080/api/v1/rules/namespace1", nil, "user1")

pkg/ruler/ruler.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ type Config struct {
105105
PollInterval time.Duration `yaml:"poll_interval"`
106106
// Path to store rule files for prom manager.
107107
RulePath string `yaml:"rule_path"`
108+
// Default offset for all rule evaluation queries.
109+
RuleQueryOffset time.Duration `yaml:"rule_query_offset"`
108110

109111
// URL of the Alertmanager to send notifications to.
110112
// If you are configuring the ruler to send to a Cortex Alertmanager,
@@ -121,8 +123,6 @@ type Config struct {
121123
// Client configs for interacting with the Alertmanager
122124
Notifier NotifierConfig `yaml:"alertmanager_client"`
123125

124-
//Default offset for all rule evaluation queries.
125-
RuleQueryOffset time.Duration `yaml:"rule_query_offset"`
126126
// Max time to tolerate outage for restoring "for" state of alert.
127127
OutageTolerance time.Duration `yaml:"for_outage_tolerance"`
128128
// Minimum duration between alert and restored "for" state. This is maintained only for alerts with configured "for" time greater than grace period.

pkg/ruler/ruler_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -2413,7 +2413,7 @@ func TestRuler_QueryOffset(t *testing.T) {
24132413
expectedRg := mockRulesQueryOffset["user1"][0]
24142414
compareRuleGroupDescToStateDesc(t, expectedRg, rg)
24152415

2416-
// test default query offset=0
2416+
// test default query offset=0 when not defined at group level
24172417
require.Equal(t, time.Duration(0), rg.GetGroup().QueryOffset)
24182418

24192419
ctx = user.InjectOrgID(context.Background(), "user2")
@@ -2426,5 +2426,4 @@ func TestRuler_QueryOffset(t *testing.T) {
24262426

24272427
// test group query offset is set
24282428
require.Equal(t, time.Minute*2, rg.GetGroup().QueryOffset)
2429-
rulespb.FromProto(rg.GetGroup())
24302429
}

pkg/ruler/rulespb/compat.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ import (
1313

1414
// ToProto transforms a formatted prometheus rulegroup to a rule group protobuf
1515
func ToProto(user string, namespace string, rl rulefmt.RuleGroup) *RuleGroupDesc {
16+
queryOffset := time.Duration(0)
17+
if rl.QueryOffset != nil {
18+
queryOffset = time.Duration(*rl.QueryOffset)
19+
}
1620
rg := RuleGroupDesc{
1721
Name: rl.Name,
1822
Namespace: namespace,
1923
Interval: time.Duration(rl.Interval),
2024
Rules: formattedRuleToProto(rl.Rules),
2125
User: user,
2226
Limit: int64(rl.Limit),
23-
QueryOffset: time.Duration(*rl.QueryOffset),
27+
QueryOffset: queryOffset,
2428
}
2529
return &rg
2630
}

0 commit comments

Comments
 (0)