コード例 #1
0
ファイル: test_event_filter.py プロジェクト: lsta/pai
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
コード例 #2
0
ファイル: test_event_tags.py プロジェクト: jakezp/pai-1
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
コード例 #3
0
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
コード例 #4
0
ファイル: test_event_tags.py プロジェクト: jakezp/pai-1
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
コード例 #5
0
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
コード例 #6
0
ファイル: test_event_tags.py プロジェクト: torretahacs/pai
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
コード例 #7
0
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
コード例 #8
0
ファイル: test_event_tags.py プロジェクト: jakezp/pai-1
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
コード例 #9
0
ファイル: test_event_tags.py プロジェクト: torretahacs/pai
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)
コード例 #10
0
ファイル: test_event_tags.py プロジェクト: torretahacs/pai
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
コード例 #11
0
ファイル: core.py プロジェクト: lsta/pai
    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)
コード例 #12
0
ファイル: test_event_filter.py プロジェクト: lsta/pai
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
コード例 #13
0
ファイル: test_event_filter.py プロジェクト: lsta/pai
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'])
コード例 #14
0
ファイル: dummy.py プロジェクト: jakezp/pai-1
 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)
コード例 #15
0
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