Пример #1
0
def test_check_match():
    @rules.match_event(lambda kwargs: kwargs["x"] == 1)
    @rules.match_event(lambda kwargs: kwargs["y"] == 2, lambda kwargs: kwargs["z"] == 3)
    def method():
        pass
    assert rules.check_match(method, {"x": 1, "y": 2, "z": 3})
    assert rules.check_match(method, {"x": 1, "y": 2, "z": 3, "a": 5})
    assert not rules.check_match(method, {"x": 1, "y": 0, "z": 3})
Пример #2
0
def test_check_match_exception():
    def matcher(kwargs):
        if len(kwargs) == 0:
            raise RuntimeError
        return True

    @rules.match_event(matcher)
    def method():
        pass
    assert not rules.check_match(method, {})
    assert rules.check_match(method, {"x": 1})
Пример #3
0
def check(config, events_desc):
    cluster_config = Settings.merge(config, _get_cluster_config(config.get('powny_api_url')))
    apps.init('powny', 'local', args=None, raw_config=cluster_config)

    context.get_context = FakeContext

    exposed, errors = tools.make_loader(config.get('rules-path')).get_exposed(config['rules-path'])

    for module in errors:
        logger.error("Can't load %s module by reason %s", module, errors[module])

    for event in _build_events(events_desc):
        for (name, handler) in exposed.get("handlers", {}).items():
            if rules.check_match(handler, event):
                try:
                    handler(**event)
                except Exception as error:
                    logger.exception("Can't execute %s rule by reason %s", name, error)