def test_handle_error(self): from datetime import datetime to_timestamp = timer2.to_timestamp scratch = [None] def _overflow(x): raise OverflowError(x) def on_error(exc_info): scratch[0] = exc_info s = timer2.Schedule(on_error=on_error) timer2.to_timestamp = _overflow try: s.enter(timer2.Entry(lambda: None, (), {}), eta=datetime.now()) s.enter(timer2.Entry(lambda: None, (), {}), eta=None) s.on_error = None with self.assertRaises(OverflowError): s.enter(timer2.Entry(lambda: None, (), {}), eta=datetime.now()) finally: timer2.to_timestamp = to_timestamp exc = scratch[0] self.assertIsInstance(exc, OverflowError)
def test_supports_Timer_interface(self): x = timer2.Schedule() x.stop() tref = Mock() x.cancel(tref) tref.cancel.assert_called_with()
def test_handle_error(self): from datetime import datetime scratch = [None] def on_error(exc_info): scratch[0] = exc_info s = timer2.Schedule(on_error=on_error) with patch('kombu.async.timer.to_timestamp') as tot: tot.side_effect = OverflowError() s.enter_at(timer2.Entry(lambda: None, (), {}), eta=datetime.now()) s.enter_at(timer2.Entry(lambda: None, (), {}), eta=None) s.on_error = None with self.assertRaises(OverflowError): s.enter_at(timer2.Entry(lambda: None, (), {}), eta=datetime.now()) exc = scratch[0] self.assertIsInstance(exc, OverflowError)
def test_handle_error(self): from datetime import datetime mktime = timer2.mktime scratch = [None] def _overflow(x): raise OverflowError(x) def on_error(exc_info): scratch[0] = exc_info s = timer2.Schedule(on_error=on_error) timer2.mktime = _overflow try: s.enter(timer2.Entry(lambda: None, (), {}), eta=datetime.now()) finally: timer2.mktime = mktime _, exc, _ = scratch[0] self.assertIsInstance(exc, OverflowError)
from celery.utils import timer2 as timer def noop(*args, **kwargs): return def insert(s, n=100000): for i in range(n): s.apply_after(1 + (i and i / 10.0), noop, (i, )) def slurp(s, n=100000): i = 0 it = iter(s) while i < n: delay, entry = next(it) if entry: i += 1 s.apply_entry(entry) #else: #if delay: # sleep(delay) if __name__ == '__main__': s = timer.Schedule() insert(s) if '--insert-only' not in sys.argv: slurp(s)