def handle(self, *args, **kw):
        wait = getattr(settings, 'DELAYED_MAILER_WAIT', None)
        if wait is None:
            print 'No DELAYED_MAILER_WAIT setting, using value of 2 seconds.'
        else:
            print ('DELAYED_MAILER_WAIT setting being changed temporarily '
                   'to 2 seconds from %s seconds.' % wait)
        settings.DELAYED_MAILER_WAIT = 2

        self.record = Record()
        self.record.levelname = logging.DEBUG
        self.record.request = RequestFactory().get('/')
        self.record.msg = 'This error should have occured 2x'
        self.record.exc_info = zero_error()

        for x in xrange(2):
            self.handler = DelayedEmailHandler()
            self.handler.emit(self.record)

        self.record.msg = 'This error should occur 1x'
        self.record.exc_info = attribute_error()
        self.handler = DelayedEmailHandler()
        self.handler.emit(self.record)

        print 'You should have 2 emails for 3 errors.'
class Command(BaseCommand):
    help = ('Simulate using the delayed mailer so you can check queues '
            'caches and so on are set up correctly.')

    def handle(self, *args, **kw):
        wait = getattr(settings, 'DELAYED_MAILER_WAIT', None)
        if wait is None:
            print 'No DELAYED_MAILER_WAIT setting, using value of 2 seconds.'
        else:
            print ('DELAYED_MAILER_WAIT setting being changed temporarily '
                   'to 2 seconds from %s seconds.' % wait)
        settings.DELAYED_MAILER_WAIT = 2

        self.record = Record()
        self.record.levelname = logging.DEBUG
        self.record.request = RequestFactory().get('/')
        self.record.msg = 'This error should have occured 2x'
        self.record.exc_info = zero_error()

        for x in xrange(2):
            self.handler = DelayedEmailHandler()
            self.handler.emit(self.record)

        self.record.msg = 'This error should occur 1x'
        self.record.exc_info = attribute_error()
        self.handler = DelayedEmailHandler()
        self.handler.emit(self.record)

        print 'You should have 2 emails for 3 errors.'
Example #3
0
 def setUp(self):
     cache.clear()
     mail.outbox = []
     self.record = Record()
     self.record.levelname = logging.DEBUG
     self.record.request = RequestFactory().get('/')
     self.record.msg = 'oops'
     self.record.exc_info = zero_error()
     self.handler = DelayedEmailHandler()
Example #4
0
 def setUp(self):
     cache.clear()
     mail.outbox = []
     self.record = Record()
     self.record.levelname = logging.DEBUG
     self.record.request = RequestFactory().get('/')
     self.record.msg = 'oops'
     self.record.exc_info = zero_error()
     self.handler = DelayedEmailHandler()
Example #5
0
class TestDelayedMailer(unittest.TestCase):
    def setUp(self):
        cache.clear()
        mail.outbox = []
        self.record = Record()
        self.record.levelname = logging.DEBUG
        self.record.request = RequestFactory().get('/')
        self.record.msg = 'oops'
        self.record.exc_info = zero_error()
        self.handler = DelayedEmailHandler()

    def test_group_same(self, celery):
        args = [
            self.record.levelname, self.record.exc_info[0],
            self.record.exc_info[1]
        ]
        gr1 = Group.find_group(*args)
        gr2 = Group.find_group(*args)
        assert gr1.hash == gr2.hash

    @mock.patch('delayed_mailer.log.Group.send')
    def test_single_emit(self, celery, send):
        self.handler.emit(self.record)
        assert send.called

    def test_single_delayed(self, celery):
        self.handler.emit(self.record)
        assert 'countdown' in celery.call_args[1]

    def test_count(self, celery):
        self.handler.emit(self.record)
        self.handler.emit(self.record)
        assert len(mail.outbox) == 0
        assert self.handler._group.count() == 2

    def test_reset(self, celery):
        self.handler.emit(self.record)
        self.handler._group.send()
        assert self.handler._group.count() == 0

    def test_mail_count(self, celery):
        self.handler.emit(self.record)
        self.handler._group.send()
        assert 'Error occurred:' not in mail.outbox[0].body

    def test_mail_count_multiple(self, celery):
        self.handler.emit(self.record)
        self.handler.emit(self.record)
        assert self.handler._group.count() == 2
        self.handler._group.send()
        assert len(mail.outbox) == 1
        assert 'Error occurred: 2' in mail.outbox[0].body
Example #6
0
class TestDelayedMailer(unittest.TestCase):

    def setUp(self):
        cache.clear()
        mail.outbox = []
        self.record = Record()
        self.record.levelname = logging.DEBUG
        self.record.request = RequestFactory().get('/')
        self.record.msg = 'oops'
        self.record.exc_info = zero_error()
        self.handler = DelayedEmailHandler()

    def test_group_same(self, celery):
        args = [self.record.levelname, self.record.exc_info[0],
                self.record.exc_info[1]]
        gr1 = Group.find_group(*args)
        gr2 = Group.find_group(*args)
        assert gr1.hash == gr2.hash

    @mock.patch('delayed_mailer.log.Group.send')
    def test_single_emit(self, celery, send):
        self.handler.emit(self.record)
        assert send.called

    def test_single_delayed(self, celery):
        self.handler.emit(self.record)
        assert 'countdown' in celery.call_args[1]

    def test_count(self, celery):
        self.handler.emit(self.record)
        self.handler.emit(self.record)
        assert len(mail.outbox) == 0
        assert self.handler._group.count() == 2

    def test_reset(self, celery):
        self.handler.emit(self.record)
        self.handler._group.send()
        assert self.handler._group.count() == 0

    def test_mail_count(self, celery):
        self.handler.emit(self.record)
        self.handler._group.send()
        assert 'Error occurred:' not in mail.outbox[0].body

    def test_mail_count_multiple(self, celery):
        self.handler.emit(self.record)
        self.handler.emit(self.record)
        assert self.handler._group.count() == 2
        self.handler._group.send()
        assert len(mail.outbox) == 1
        assert 'Error occurred: 2' in mail.outbox[0].body