restores for state at seconds(now-forDuration) (#4479)

* restores for state at seconds(now-forDuration)

* bump ci
pull/4482/head
Owen Diehl 4 years ago committed by GitHub
parent 4b59556342
commit 3fb8f3d3c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      pkg/ruler/memstore.go
  2. 10
      pkg/ruler/memstore_test.go

@ -248,7 +248,8 @@ func (m *memStoreQuerier) Select(sortSeries bool, params *storage.SelectHints, m
// see if alert condition had any inhabitants at ts-forDuration. We can assume it's still firing because
// that's the only condition under which this is queried (via RestoreForState).
vec, err := m.queryFunc(m.ctx, rule.Query().String(), m.ts.Add(-rule.HoldDuration()))
checkTime := m.ts.Add(-rule.HoldDuration())
vec, err := m.queryFunc(m.ctx, rule.Query().String(), checkTime)
if err != nil {
level.Info(m.logger).Log("msg", "error querying for rule", "rule", ruleKey, "err", err.Error())
m.metrics.evaluations.WithLabelValues(statusFailure, m.userID).Inc()
@ -268,7 +269,7 @@ func (m *memStoreQuerier) Select(sortSeries bool, params *storage.SelectHints, m
Metric: ForStateMetric(smpl.Metric, rule.Name()),
Point: promql.Point{
T: ts,
V: float64(ts),
V: float64(checkTime.Unix()),
},
})

@ -38,11 +38,12 @@ func testStore(queryFunc rules.QueryFunc) *MemStore {
}
func TestSelectRestores(t *testing.T) {
forDuration := time.Minute
ars := []*rules.AlertingRule{
rules.NewAlertingRule(
ruleName,
&parser.StringLiteral{Val: "unused"},
time.Minute,
forDuration,
labels.FromMap(map[string]string{"foo": "bar"}),
nil,
nil,
@ -84,7 +85,8 @@ func TestSelectRestores(t *testing.T) {
store := testStore(fn)
store.Start(MockRuleIter(ars))
now := util.TimeToMillis(time.Now())
tNow := time.Now()
now := util.TimeToMillis(tNow)
q, err := store.Querier(context.Background(), 0, now)
require.Nil(t, err)
@ -103,7 +105,7 @@ func TestSelectRestores(t *testing.T) {
require.Equal(t, true, iter.Next())
ts, v := iter.At()
require.Equal(t, now, ts)
require.Equal(t, float64(now), v)
require.Equal(t, float64(tNow.Add(-forDuration).Unix()), v)
require.Equal(t, false, iter.Next())
require.Equal(t, false, sset.Next())
@ -120,7 +122,7 @@ func TestSelectRestores(t *testing.T) {
require.Equal(t, true, iter.Next())
ts, v = iter.At()
require.Equal(t, now, ts)
require.Equal(t, float64(now), v)
require.Equal(t, float64(tNow.Add(-forDuration).Unix()), v)
require.Equal(t, false, iter.Next())
require.Equal(t, false, sset.Next())
require.Equal(t, 1, callCount)

Loading…
Cancel
Save