11from __future__ import generators
22
33import unittest2 as unittest
4- from Queue import Queue , Empty
4+
55from datetime import datetime , timedelta
6+ from Queue import Queue , Empty
67
78from celery .worker .scheduler import Scheduler
89
910
1011class MockItem (object ):
11- is_revoked = False
1212
13- def __init__ (self , value ):
13+ def __init__ (self , value , revoked = False ):
1414 self .task_id = value
15+ self .is_revoked = revoked
1516
1617 def revoked (self ):
1718 return self .is_revoked
1819
1920
20- class TestScheduler (unittest .TestCase ):
21+ class test_Scheduler (unittest .TestCase ):
2122
2223 def test_sched_and_run_now (self ):
2324 ready_queue = Queue ()
@@ -35,6 +36,44 @@ def callback():
3536 self .assertTrue (callback_called [0 ])
3637 self .assertEqual (ready_queue .get_nowait ().task_id , "foo" )
3738
39+ def test_sched_revoked (self ):
40+ ready_queue = Queue ()
41+ sched = Scheduler (ready_queue )
42+ now = datetime .now ()
43+
44+ callback_called = [False ]
45+ def callback ():
46+ callback_called [0 ] = True
47+
48+ sched .enter (MockItem ("foo" , revoked = True ), eta = now , callback = callback )
49+ remaining = iter (sched ).next ()
50+ self .assertFalse (callback_called [0 ])
51+ self .assertRaises (Empty , ready_queue .get_nowait )
52+ self .assertFalse (sched .queue )
53+ sched .clear ()
54+
55+ def test_sched_clear (self ):
56+ ready_queue = Queue ()
57+ sched = Scheduler (ready_queue )
58+ sched .enter (MockItem ("foo" ), eta = datetime .now (), callback = None )
59+ self .assertFalse (sched .empty ())
60+ sched .clear ()
61+ self .assertTrue (sched .empty ())
62+
63+ def test_sched_info (self ):
64+ ready_queue = Queue ()
65+ sched = Scheduler (ready_queue )
66+ item = MockItem ("foo" )
67+ sched .enter (item , eta = 10 , callback = None )
68+ self .assertDictEqual ({"eta" : 10 , "priority" : 0 ,
69+ "item" : item }, sched .info ().next ())
70+
71+ def test_sched_queue (self ):
72+ ready_queue = Queue ()
73+ sched = Scheduler (ready_queue )
74+ sched .enter (MockItem ("foo" ), eta = datetime .now (), callback = None )
75+ self .assertTrue (sched .queue )
76+
3877 def test_sched_run_later (self ):
3978 ready_queue = Queue ()
4079 sched = Scheduler (ready_queue )
0 commit comments