(t *testing.T)
| 213 | } |
| 214 | |
| 215 | func TestSyncRuleGroupsCleanUpPerUserMetrics(t *testing.T) { |
| 216 | dir := t.TempDir() |
| 217 | reg := prometheus.NewPedanticRegistry() |
| 218 | evalMetrics := NewRuleEvalMetrics(Config{RulePath: dir, EnableQueryStats: true}, reg) |
| 219 | |
| 220 | waitDurations := []time.Duration{ |
| 221 | 1 * time.Millisecond, |
| 222 | 1 * time.Millisecond, |
| 223 | } |
| 224 | |
| 225 | ruleManagerFactory := RuleManagerFactory(nil, waitDurations) |
| 226 | |
| 227 | m, err := NewDefaultMultiTenantManager(Config{RulePath: dir}, &ruleLimits{}, ruleManagerFactory, evalMetrics, reg, log.NewNopLogger()) |
| 228 | require.NoError(t, err) |
| 229 | |
| 230 | const user = "testUser" |
| 231 | |
| 232 | evalMetrics.TotalWritesVec.WithLabelValues(user).Add(10) |
| 233 | |
| 234 | userRules := map[string]rulespb.RuleGroupList{ |
| 235 | user: { |
| 236 | &rulespb.RuleGroupDesc{ |
| 237 | Name: "group1", |
| 238 | Namespace: "ns", |
| 239 | Interval: 1 * time.Minute, |
| 240 | User: user, |
| 241 | }, |
| 242 | }, |
| 243 | } |
| 244 | m.SyncRuleGroups(context.Background(), userRules) |
| 245 | gm, err := reg.Gather() |
| 246 | require.NoError(t, err) |
| 247 | mfm, err := util.NewMetricFamilyMap(gm) |
| 248 | require.NoError(t, err) |
| 249 | require.Contains(t, mfm["cortex_ruler_write_requests_total"].String(), "value:\""+user+"\"") |
| 250 | require.Contains(t, mfm["cortex_ruler_config_last_reload_successful"].String(), "value:\""+user+"\"") |
| 251 | |
| 252 | // Passing empty map / nil stops all managers. |
| 253 | m.SyncRuleGroups(context.Background(), nil) |
| 254 | require.Nil(t, getManager(m, user)) |
| 255 | |
| 256 | gm, err = reg.Gather() |
| 257 | require.NoError(t, err) |
| 258 | mfm, err = util.NewMetricFamilyMap(gm) |
| 259 | require.NoError(t, err) |
| 260 | require.NotContains(t, mfm["cortex_ruler_write_requests_total"].String(), "value:\""+user+"\"") |
| 261 | require.NotContains(t, mfm["cortex_ruler_config_last_reload_successful"].String(), "value:\""+user+"\"") |
| 262 | } |
| 263 | |
| 264 | func TestBackupRules(t *testing.T) { |
| 265 | dir := t.TempDir() |
nothing calls this directly
no test coverage detected