Exemplo n.º 1
0
def test_check_needs_escalation():
    data_store = comet_core.data_store.DataStore("sqlite://")

    test_fingerprint1 = "f1"
    test_fingerprint2 = "f2"
    test_fingerprint3 = "f3"

    one = EventRecord(received_at=datetime(2018, 2, 19, 0, 0, 11),
                      source_type="datastoretest",
                      owner="a",
                      data={})
    one.fingerprint = test_fingerprint1

    two = EventRecord(received_at=datetime.utcnow(),
                      source_type="datastoretest",
                      owner="a",
                      data={})
    two.fingerprint = test_fingerprint1

    three = EventRecord(received_at=datetime.utcnow() - timedelta(hours=23),
                        source_type="datastoretest",
                        owner="a",
                        data={})
    three.fingerprint = test_fingerprint2

    four = EventRecord(received_at=datetime.utcnow(),
                       source_type="datastoretest",
                       owner="a",
                       data={})
    four.fingerprint = test_fingerprint2

    five = EventRecord(received_at=datetime.utcnow(),
                       source_type="datastoretest",
                       owner="a",
                       data={})
    four.fingerprint = test_fingerprint3

    data_store.add_record(one)
    data_store.add_record(two)
    data_store.add_record(three)
    data_store.add_record(four)
    data_store.add_record(five)

    three.fingerprint = test_fingerprint2

    assert data_store.check_needs_escalation(timedelta(days=1), two)
    assert not data_store.check_needs_escalation(timedelta(days=1), four)
    assert not data_store.check_needs_escalation(timedelta(days=1), five)
Exemplo n.º 2
0
def test_check_snoozed_event_fingerprint():
    data_store = comet_core.data_store.DataStore('sqlite://')

    test_fingerprint1 = 'f1'
    test_fingerprint2 = 'f2'

    assert not data_store.fingerprint_is_ignored(test_fingerprint1)

    data_store.ignore_event_fingerprint(test_fingerprint1, ignore_type=IgnoreFingerprintRecord.SNOOZE,
                                        expires_at=datetime.utcnow() + timedelta(days=30))
    assert data_store.fingerprint_is_ignored(test_fingerprint1)

    test_snooze_record = IgnoreFingerprintRecord(fingerprint=test_fingerprint2,
                                                 ignore_type=IgnoreFingerprintRecord.SNOOZE,
                                                 reported_at=datetime(2018, 2, 22, 0, 0, 11),
                                                 expires_at=datetime(2018, 2, 23, 0, 0, 11))
    data_store.add_record(test_snooze_record)
    assert not data_store.fingerprint_is_ignored(test_fingerprint2)
Exemplo n.º 3
0
def test_date_sorting():
    data_store = comet_core.data_store.DataStore("sqlite://")

    old = EventRecord(received_at=datetime(2018, 2, 19, 0, 0, 11),
                      source_type="datastoretest",
                      data={"fingerprint": "same"})
    new = EventRecord(received_at=datetime(2018, 2, 20, 0, 0, 11),
                      source_type="datastoretest",
                      data={"fingerprint": "same"})
    old.fingerprint = "same"
    new.fingerprint = "same"

    data_store.add_record(old)
    data_store.add_record(new)

    oldest = data_store.get_oldest_event_with_fingerprint("same")
    latest = data_store.get_latest_event_with_fingerprint("same")

    assert oldest.received_at == old.received_at
    assert latest.received_at == new.received_at
Exemplo n.º 4
0
def test_date_sorting():
    data_store = comet_core.data_store.DataStore('sqlite://')

    old = EventRecord(received_at=datetime(2018, 2, 19, 0, 0, 11),
                      source_type='datastoretest',
                      data={'fingerprint': 'same'})
    new = EventRecord(received_at=datetime(2018, 2, 20, 0, 0, 11),
                      source_type='datastoretest',
                      data={'fingerprint': 'same'})
    old.fingerprint = 'same'
    new.fingerprint = 'same'

    data_store.add_record(old)
    data_store.add_record(new)

    oldest = data_store.get_oldest_event_with_fingerprint('same')
    latest = data_store.get_latest_event_with_fingerprint('same')

    assert oldest.received_at == old.received_at
    assert latest.received_at == new.received_at
Exemplo n.º 5
0
def data_store_with_test_events():
    data_store = comet_core.data_store.DataStore("sqlite://")

    one = EventRecord(received_at=datetime(2018, 7, 7, 9, 0, 0),
                      source_type="datastoretest",
                      owner="a",
                      data={})
    one.fingerprint = "f1"
    two = EventRecord(received_at=datetime(2018, 7, 7, 9, 30, 0),
                      source_type="datastoretest",
                      owner="a",
                      data={})
    two.fingerprint = "f2"
    three = EventRecord(
        received_at=datetime(2018, 7, 7, 9, 0, 0),
        source_type="datastoretest2",  # Note that this is another source type!
        owner="b",
        data={},
    )
    three.fingerprint = "f3"

    data_store.add_record(one)
    data_store.add_record(two)
    data_store.add_record(three)

    yield data_store
Exemplo n.º 6
0
def data_store_with_test_events():
    data_store = comet_core.data_store.DataStore('sqlite://')

    one = EventRecord(received_at=datetime(2018, 7, 7, 9, 0, 0),
                      source_type='datastoretest',
                      owner='a',
                      data={})
    one.fingerprint = 'f1'
    two = EventRecord(received_at=datetime(2018, 7, 7, 9, 30, 0),
                      source_type='datastoretest',
                      owner='a',
                      data={})
    two.fingerprint = 'f2'
    three = EventRecord(
        received_at=datetime(2018, 7, 7, 9, 0, 0),
        source_type='datastoretest2',  # Note that this is another source type!
        owner='b',
        data={})
    three.fingerprint = 'f3'

    data_store.add_record(one)
    data_store.add_record(two)
    data_store.add_record(three)

    yield data_store
Exemplo n.º 7
0
def test_check_if_new(*_):
    data_store = comet_core.data_store.DataStore('sqlite://')

    timestamp = datetime.utcnow()
    one_a = EventRecord(source_type='test_type',
                        fingerprint='f1',
                        received_at=timestamp)

    timestamp = datetime.utcnow() - timedelta(days=1)
    one_b = EventRecord(source_type='test_type',
                        fingerprint='f1',
                        received_at=timestamp,
                        processed_at=timestamp)

    timestamp = datetime.utcnow() - timedelta(days=8)
    one_c = EventRecord(source_type='test_type',
                        fingerprint='f1',
                        received_at=timestamp,
                        processed_at=timestamp)

    assert data_store.check_if_new('f1', timedelta(days=7))

    data_store.add_record(one_a)  # processed_at is None for that one, so f1 should still be considered new
    assert data_store.check_if_new('f1', timedelta(days=7))

    data_store.add_record(one_c)  # older than 7 days, so f1 should still be considered new (kind of "new again")
    assert data_store.check_if_new('f1', timedelta(days=7))

    data_store.add_record(one_b)  # more recent than 7 days ago and processed_at is set, so f1 should not be flagged new
    assert not data_store.check_if_new('f1', timedelta(days=7))
Exemplo n.º 8
0
def test_may_send_escalation():
    data_store = comet_core.data_store.DataStore("sqlite://")

    data_store.add_record(EventRecord(source_type="type1", escalated_at=None))

    assert data_store.may_send_escalation("type1", timedelta(days=7))

    data_store.add_record(
        EventRecord(source_type="type1",
                    escalated_at=datetime.utcnow() - timedelta(days=8)))

    assert data_store.may_send_escalation("type1", timedelta(days=7))

    data_store.add_record(
        EventRecord(source_type="type1",
                    escalated_at=datetime.utcnow() - timedelta(days=6)))

    assert not data_store.may_send_escalation("type1", timedelta(days=7))

    data_store.add_record(EventRecord(source_type="type2", escalated_at=None))

    assert data_store.may_send_escalation("type2", timedelta(days=7))
Exemplo n.º 9
0
def test_check_if_previously_escalated():
    data_store = comet_core.data_store.DataStore('sqlite://')

    one = EventRecord(source_type='test_type',
                      fingerprint='f1',
                      escalated_at=None)
    data_store.add_record(one)

    two = EventRecord(source_type='test_type',
                      fingerprint='f2',
                      escalated_at=datetime.utcnow() - timedelta(days=1))
    data_store.add_record(two)

    assert not data_store.check_if_previously_escalated(one)
    assert data_store.check_if_previously_escalated(two)

    data_store.add_record(EventRecord(source_type='test_type',
                                      fingerprint='f1',
                                      escalated_at=datetime.utcnow() - timedelta(days=1)))

    assert data_store.check_if_previously_escalated(one)
Exemplo n.º 10
0
def test_data_store():
    data_store = comet_core.data_store.DataStore("sqlite://")
    for event in get_all_test_messages():
        data_store.add_record(event.get_record())
Exemplo n.º 11
0
def test_get_open_issues(*_):
    data_store = comet_core.data_store.DataStore("sqlite://")

    one = EventRecord(source_type="test_type",
                      fingerprint="f1",
                      received_at=datetime.utcnow(),
                      owner="test")
    data_store.add_record(one)

    two = EventRecord(source_type="test_type",
                      fingerprint="f2",
                      received_at=datetime.utcnow() - timedelta(days=0.9),
                      owner="test")
    data_store.add_record(two)

    three = EventRecord(source_type="test_type",
                        fingerprint="f3",
                        received_at=datetime.utcnow() - timedelta(days=2),
                        owner="test")
    data_store.add_record(three)

    four = EventRecord(source_type="test_type",
                       fingerprint="f4",
                       received_at=datetime.utcnow(),
                       owner="not_test")
    data_store.add_record(four)

    five = EventRecord(source_type="test_type",
                       fingerprint="f5",
                       received_at=datetime.utcnow() - timedelta(days=1.5),
                       owner="not_test")
    data_store.add_record(five)

    six = EventRecord(source_type="test_type",
                      fingerprint="f2",
                      received_at=datetime.utcnow() - timedelta(days=0.2),
                      owner="test")
    data_store.add_record(six)

    open_issues = data_store.get_open_issues(["test"])
    assert len(open_issues) == 2

    open_issues = data_store.get_open_issues(["test", "not_test"])
    assert len(open_issues) == 3

    test_snooze_record = IgnoreFingerprintRecord(
        fingerprint="f1",
        ignore_type=IgnoreFingerprintRecord.SNOOZE,
        reported_at=datetime(2018, 2, 22, 0, 0, 11),
        expires_at=datetime(3000, 2, 23, 0, 0, 11),
    )

    data_store.add_record(test_snooze_record)

    open_issues = data_store.get_open_issues(["test"])
    assert len(open_issues) == 1
Exemplo n.º 12
0
def test_check_any_issue_needs_reminder():
    data_store = comet_core.data_store.DataStore("sqlite://")

    test_fingerprint1 = "f1"
    test_fingerprint2 = "f2"
    test_fingerprint3 = "f3"

    one_a = EventRecord(sent_at=datetime.utcnow() - timedelta(days=9),
                        source_type="datastoretest")
    one_a.fingerprint = test_fingerprint1
    one_b = EventRecord(sent_at=datetime.utcnow() - timedelta(days=3),
                        source_type="datastoretest")
    one_b.fingerprint = test_fingerprint1

    two_a = EventRecord(sent_at=datetime.utcnow() - timedelta(days=10),
                        source_type="datastoretest")
    two_a.fingerprint = test_fingerprint2
    two_b = EventRecord(sent_at=datetime.utcnow() - timedelta(days=8),
                        source_type="datastoretest")
    two_b.fingerprint = test_fingerprint2

    two_c = EventRecord(source_type="datastoretest")  # sent_at NULL
    two_c.fingerprint = test_fingerprint2

    three_a = EventRecord(source_type="datastoretest")  # sent_at NULL
    three_a.fingerprint = test_fingerprint3

    data_store.add_record(one_a)
    data_store.add_record(two_a)
    data_store.add_record(two_b)
    data_store.add_record(two_c)
    data_store.add_record(three_a)

    # issue \ time --->
    #   1 --------a------|-------------->
    #   2 ----a-------b--|--------------> (2c sent_at == NULL)
    #   3 ---------------|--------------> (3a sent_at == NULL)
    #                    ^
    #                 -7days
    assert data_store.check_any_issue_needs_reminder(timedelta(days=7),
                                                     [one_a, two_a, three_a])

    data_store.add_record(one_b)

    # issue \ time --->
    #   1 --------a------|-----b-------->
    #   2 ----a-------b--|--------------> (2c sent_at == NULL)
    #   3 ---------------|--------------> (3a sent_at == NULL)
    #                    ^
    #                 -7days
    assert not data_store.check_any_issue_needs_reminder(
        timedelta(days=7), [one_a, two_a, three_a])
Exemplo n.º 13
0
def test_get_open_issues(*_):
    data_store = comet_core.data_store.DataStore('sqlite://')

    one = EventRecord(source_type='test_type',
                      fingerprint='f1',
                      received_at=datetime.utcnow(),
                      owner='test')
    data_store.add_record(one)

    two = EventRecord(source_type='test_type',
                      fingerprint='f2',
                      received_at=datetime.utcnow() - timedelta(days=.9),
                      owner='test')
    data_store.add_record(two)

    three = EventRecord(source_type='test_type',
                        fingerprint='f3',
                        received_at=datetime.utcnow() - timedelta(days=2),
                        owner='test')
    data_store.add_record(three)

    four = EventRecord(source_type='test_type',
                       fingerprint='f4',
                       received_at=datetime.utcnow(),
                       owner='not_test')
    data_store.add_record(four)

    five = EventRecord(source_type='test_type',
                       fingerprint='f5',
                       received_at=datetime.utcnow() - timedelta(days=1.5),
                       owner='not_test')
    data_store.add_record(five)

    six = EventRecord(source_type='test_type',
                      fingerprint='f2',
                      received_at=datetime.utcnow() - timedelta(days=.2),
                      owner='test')
    data_store.add_record(six)

    open_issues = data_store.get_open_issues(['test'])
    assert len(open_issues) == 2

    open_issues = data_store.get_open_issues(['test', 'not_test'])
    assert len(open_issues) == 3

    test_snooze_record = IgnoreFingerprintRecord(
        fingerprint='f1',
        ignore_type=IgnoreFingerprintRecord.SNOOZE,
        reported_at=datetime(2018, 2, 22, 0, 0, 11),
        expires_at=datetime(3000, 2, 23, 0, 0, 11))

    data_store.add_record(test_snooze_record)

    open_issues = data_store.get_open_issues(['test'])
    assert len(open_issues) == 1