Example #1
0
def test_message_buffer():
    subject_template = Mock()
    body_template = Mock()

    buf = MessageBuffer(subject_template, body_template)
    msg1 = UniqueMessage('test', 'test', 'test', 'message1', 'test.py', 1,
                         'exception text', 'app')
    msg2 = UniqueMessage('test', 'test', 'test', 'message2', 'test.py', 1,
                         'exception text', 'app')

    buf.add(msg1, 'host1')
    buf.add(msg1, 'host1')
    buf.add(msg1, 'host2')
    buf.add(msg2, 'host2')

    eq_(4, buf.total)
    eq_(2, buf.total_unique)
    eq_({'app'}, buf.kinds)
    eq_(2, len(buf.sorted_counts))
    eq_('message1', buf.sorted_counts[0][0].message)
    eq_(3, buf.sorted_counts[0][1].total)
    eq_(3, buf.total_matching(lambda m: m.message == 'message1'))

    subject_template.render.return_value = 'subj'
    body_template.render.return_value = 'body'

    subj, body, uniq_messages = buf.flush()
    eq_('subj', subj)
    eq_('body', body)
    eq_(2, len(uniq_messages))

    eq_(1, subject_template.render.call_count)
    eq_(4, body_template.render.call_args[0][0]['total'])
    eq_(2, body_template.render.call_args[0][0]['total_unique'])
    eq_(2, len(body_template.render.call_args[0][0]['sorted_counts']))
    eq_('message1',
        body_template.render.call_args[0][0]['sorted_counts'][0][0].message)
    eq_({'app'}, body_template.render.call_args[0][0]['kinds'])