def test_zone_generated_alarm_match(mocker): label_provider = mocker.MagicMock(return_value="Beer") payload = binascii.unhexlify( 'e2ff1cc414130b010f2c1801030000000000024f66666963652020202020202020202000d9' ) raw = LiveEventMessage.parse(payload) event_ = LiveEvent(raw, event_map, label_provider=label_provider) assert "Zone Office in alarm" == event_.message assert EventTagFilter(['zone+alarm']).match(event_) is True label_provider.assert_called_once_with("zone", 3) assert EventTagFilter(['zone-alarm']).match(event_) is False # Live event label assert EventTagFilter(['zone,alarm,"Office"']).match(event_) is True assert EventTagFilter(['zone,alarm,-"Office"']).match(event_) is False assert EventTagFilter(['zone,alarm,Office']).match(event_) is True assert EventTagFilter(['zone,alarm,-Office']).match(event_) is False assert EventTagFilter(['zone,alarm,Offic']).match(event_) is False # returned from label_provider assert EventTagFilter(['zone,alarm,Beer']).match(event_) is True assert EventTagFilter(['zone,alarm,-Beer']).match(event_) is False
def test_disarm_after_alarm(): event_filter = EventTagFilter(['disarm+after_alarm']) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert 'Disarming after alarm by user XXXXXXXXXXX' in matches assert 'Disarming through WinLoad after alarm' in matches
def test_disarm_after_alarm(): event_filter = EventTagFilter(['disarm+after_alarm']) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert '[partition:1] disarmed after alarm with master' in matches assert '[partition:1] special disarming: Disarming with Winload after alarm by [user:0]' in matches
def test_arm(): event_filter = EventTagFilter(['arm']) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert 'Arming by user XXXXXXXXXXX' in matches assert 'Special arming: No movement arming' in matches
def test_arm(): event_filter = EventTagFilter(['arm']) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert 'Arming [partition:1] with master code' in matches assert 'Special arming [partition:1]: auto arming' in matches
def test_arm(): event_filter = EventTagFilter(["arm"]) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert "Arming [partition:1] with [user:0] master code" in matches assert "Arming [partition:1] with [user:0] code" in matches assert "Special arming [partition:1]: auto arming" in matches
def test_disarm(): event_filter = EventTagFilter(["disarm"]) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert "Partition [partition:1] disarmed" in matches assert "Disarming by user XXXXXXXXXXX" in matches assert "Disarming after alarm by user XXXXXXXXXXX" in matches assert "Disarming through WinLoad" in matches assert "Disarming through WinLoad after alarm" in matches
def test_alarm(): event_filter = EventTagFilter(['alarm,-restore']) matches = [] for event in event_iterator(): if event_filter.match(event): print(event.message) matches.append(event.message) pprint(matches) assert 'Zone XXXXXXXXXXX in alarm' in matches assert 'Zone XXXXXXXXXXX in fire alarm' in matches assert 'Alarm cancelled by user XXXXXXXXXXX' in matches assert 'Alarm cancelled through WinLoad' in matches assert 'Special alarm: Panic medical' in matches
def test_disarm(): event_filter = EventTagFilter(["disarm"]) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert "[partition:1] disarmed with [user:0] master code" in matches assert "[partition:1] disarmed with [user:0] code" in matches assert "[partition:1] disarmed with keyswitch" in matches assert "[partition:1] disarmed after alarm with master" in matches assert ( "[partition:1] special disarming: Disarming with Winload after alarm by [user:0]" in matches)
def test_alarm(): event_filter = EventTagFilter(["alarm,-restore"]) matches = [] for event in event_iterator(): if event_filter.match(event): matches.append(event.message) pprint(matches) assert "Zone Living room in alarm" in matches assert "Zone Living room in fire alarm" in matches assert "Alarm cancelled by Living room (master)" in matches assert "Alarm cancelled by Living room (user code)" in matches assert "Special alarm: Panic emergency" in matches assert "Special alarm: Module tamper alarm" in matches
def __init__(self, EVENT_FILTERS, ALLOW_EVENTS, IGNORE_EVENTS, MIN_EVENT_LEVEL): if EVENT_FILTERS and (ALLOW_EVENTS or IGNORE_EVENTS): raise AssertionError( 'You can not use *_EVENT_FILTERS and *_ALLOW_EVENTS+*_IGNORE_EVENTS simultaneously' ) min_level = EventLevel.from_name(MIN_EVENT_LEVEL) if ALLOW_EVENTS or IGNORE_EVENTS: # Use if defined, else use TAGS as default logger.debug("Using REGEXP Filter") event_filter = LiveEventRegexpFilter(ALLOW_EVENTS, IGNORE_EVENTS, min_level) else: logger.debug("Using Tag Filter") event_filter = EventTagFilter(EVENT_FILTERS, min_level) super().__init__(event_filter=event_filter, min_level=min_level)
def test_tag_match(): event = Event() event.level = EventLevel.INFO event.tags = ['arm', 'restore'] event.type = 'partition' assert EventTagFilter(['partition+arm']).match(event) is True assert EventTagFilter(['partition+arm+restore']).match(event) is True assert EventTagFilter(['partition']).match(event) is True assert EventTagFilter(['arm']).match(event) is True assert EventTagFilter(['arm-zone']).match(event) is True assert EventTagFilter(['arm-partition']).match(event) is False assert EventTagFilter(['arm-zone+restore+partition']).match(event) is True assert EventTagFilter(['zone']).match(event) is False assert EventTagFilter(['zone', 'arm']).match(event) is True assert EventTagFilter(['partition,arm']).match(event) is True assert EventTagFilter(['partition, arm']).match(event) is True assert EventTagFilter(['partition, -arm']).match(event) is False event.level = EventLevel.DEBUG assert EventTagFilter(['partition+arm']).match(event) is False
def test_zone_generated_alarm_changes_match(mocker): label_provider = mocker.MagicMock(return_value="Beer") payload = binascii.unhexlify( 'e2ff1cc414130b010f2c1801030000000000024f66666963652020202020202020202000d9' ) raw = LiveEventMessage.parse(payload) event_ = LiveEvent(raw, event_map, label_provider=label_provider) assert EventTagFilter(['generated_alarm=True']).match(event_) is True assert EventTagFilter(['generated_alarm=False']).match(event_) is False assert EventTagFilter(['generated_alarm=']).match(event_) is True assert EventTagFilter(['-generated_alarm=']).match(event_) is False assert EventTagFilter(['-generated_alarm=True']).match(event_) is False assert EventTagFilter(['-generated_alarm=False']).match(event_) is True assert EventTagFilter(['zone-generated_alarm=beer']).match(event_) is True assert EventTagFilter(['zone+generated_alarm=beer']).match(event_) is False assert EventTagFilter(['generated_alarm=True+presently_in_alarm=True' ]).match(event_) is True assert EventTagFilter(['generated_alarm=True-presently_in_alarm=True' ]).match(event_) is False assert EventTagFilter(['-generated_alarm=False']).match(event_) is True with pytest.raises(AssertionError): EventTagFilter(['-=False']) with pytest.raises(AssertionError): EventTagFilter(['-""=False'])
def __init__(self, alarm): min_level = EventLevel.from_name(cfg.DUMMY_MIN_EVENT_LEVEL) event_filter = EventTagFilter(queries=cfg.DUMMY_EVENT_FILTERS, min_level=min_level) super().__init__(alarm, event_filter=event_filter)
def test_tag_match(): event = Event() event.level = EventLevel.INFO event.tags = ["arm", "restore"] event.type = "partition" assert EventTagFilter(["partition+arm"]).match(event) is True assert EventTagFilter(["partition+arm+restore"]).match(event) is True assert EventTagFilter(["partition"]).match(event) is True assert EventTagFilter(["arm"]).match(event) is True assert EventTagFilter(["arm-zone"]).match(event) is True assert EventTagFilter(["arm-partition"]).match(event) is False assert EventTagFilter(["arm-zone+restore+partition"]).match(event) is True assert EventTagFilter(["zone"]).match(event) is False assert EventTagFilter(["zone", "arm"]).match(event) is True assert EventTagFilter(["partition,arm"]).match(event) is True assert EventTagFilter(["partition, arm"]).match(event) is True assert EventTagFilter(["partition, -arm"]).match(event) is False assert EventTagFilter(["live,partition,arm"]).match(event) is False assert EventTagFilter(["change,partition,arm"]).match(event) is False event.level = EventLevel.DEBUG assert EventTagFilter(["partition+arm"]).match(event) is False