예제 #1
0
    def test(self):
        alert_rule = AlertRule(id=1)
        sub = QuerySubscription(project_id=2)
        date = datetime.utcnow().replace(tzinfo=pytz.utc)
        update_alert_rule_stats(alert_rule, sub, date, {3: 20, 4: 3}, 15)
        client = get_redis_client()
        results = map(
            int,
            client.mget([
                "{alert_rule:1:project:2}:last_update",
                "{alert_rule:1:project:2}:trigger:3:alert_triggered",
                "{alert_rule:1:project:2}:trigger:4:alert_triggered",
                "{alert_rule:1:project:2}:resolve_triggered",
            ]),
        )

        assert results == [int(to_timestamp(date)), 20, 3, 15]
    def test(self):
        alert_rule = AlertRule(id=1)
        sub = QuerySubscription(project_id=2)
        update_alert_rule_stats(alert_rule, sub, 1234, {3: 20, 4: 3}, {3: 10, 4: 15})
        client = get_redis_client()
        results = map(
            int,
            client.mget(
                [
                    "{alert_rule:1:project:2}:last_update",
                    "{alert_rule:1:project:2}:trigger:3:alert_triggered",
                    "{alert_rule:1:project:2}:trigger:3:resolve_triggered",
                    "{alert_rule:1:project:2}:trigger:4:alert_triggered",
                    "{alert_rule:1:project:2}:trigger:4:resolve_triggered",
                ]
            ),
        )

        assert results == [1234, 20, 10, 3, 15]
    def test(self):
        alert_rule = AlertRule(id=1)
        sub = QuerySubscription(project_id=2)
        triggers = [AlertRuleTrigger(id=3), AlertRuleTrigger(id=4)]
        client = get_redis_client()
        pipeline = client.pipeline()
        timestamp = datetime.now().replace(tzinfo=pytz.utc, microsecond=0)
        pipeline.set("{alert_rule:1:project:2}:last_update", int(to_timestamp(timestamp)))
        pipeline.set("{alert_rule:1:project:2}:resolve_triggered", 20)
        for key, value in [
            ("{alert_rule:1:project:2}:trigger:3:alert_triggered", 1),
            ("{alert_rule:1:project:2}:trigger:4:alert_triggered", 3),
        ]:
            pipeline.set(key, value)
        pipeline.execute()

        last_update, alert_counts, resolve_counts = get_alert_rule_stats(alert_rule, sub, triggers)
        assert last_update == timestamp
        assert alert_counts == {3: 1, 4: 3}
        assert resolve_counts == 20
    def test(self):
        alert_rule = AlertRule(id=1)
        sub = QuerySubscription(project_id=2)
        triggers = [AlertRuleTrigger(id=3), AlertRuleTrigger(id=4)]
        client = get_redis_client()
        pipeline = client.pipeline()
        pipeline.set("{alert_rule:1:project:2}:last_update", 1234)
        for key, value in [
            ("{alert_rule:1:project:2}:trigger:3:alert_triggered", 1),
            ("{alert_rule:1:project:2}:trigger:3:resolve_triggered", 2),
            ("{alert_rule:1:project:2}:trigger:4:alert_triggered", 3),
            ("{alert_rule:1:project:2}:trigger:4:resolve_triggered", 4),
        ]:
            pipeline.set(key, value)
        pipeline.execute()

        last_update, alert_counts, resolve_counts = get_alert_rule_stats(alert_rule, sub, triggers)
        assert last_update == 1234
        assert alert_counts == {3: 1, 4: 3}
        assert resolve_counts == {3: 2, 4: 4}