1
+ from tests import PyResTests , Basic , TestProcess , ErrorObject
2
+ from pyres import ResQ
3
+ from pyres .job import Job
4
+ from pyres .scheduler import Scheduler
5
+ import os
6
+ import datetime
7
+ import time
8
+ class ScheduleTests (PyResTests ):
9
+ def test_enqueue_at (self ):
10
+ d = datetime .datetime .now () + datetime .timedelta (days = 1 )
11
+ d2 = d + datetime .timedelta (days = 1 )
12
+ key = int (time .mktime (d .timetuple ()))
13
+ key2 = int (time .mktime (d2 .timetuple ()))
14
+ self .resq .enqueue_at (d , Basic ,"test1" )
15
+ self .resq .enqueue_at (d , Basic ,"test2" )
16
+ assert self .redis .llen ("resque:delayed:%s" % key ) == 2
17
+ assert len (self .redis .zrange ('resque:delayed_queue_schedule' ,0 ,20 )) == 1
18
+ self .resq .enqueue_at (d2 , Basic ,"test1" )
19
+ assert self .redis .llen ("resque:delayed:%s" % key2 ) == 1
20
+ assert len (self .redis .zrange ('resque:delayed_queue_schedule' ,0 ,20 )) == 2
21
+
22
+ def test_delayed_queue_schedule_size (self ):
23
+ d = datetime .datetime .now () + datetime .timedelta (days = 1 )
24
+ d2 = d + datetime .timedelta (days = 1 )
25
+ key = int (time .mktime (d .timetuple ()))
26
+ key2 = int (time .mktime (d2 .timetuple ()))
27
+ self .resq .enqueue_at (d , Basic ,"test1" )
28
+ self .resq .enqueue_at (d2 , Basic ,"test1" )
29
+ assert self .resq .delayed_queue_schedule_size () == 2
30
+
31
+ def test_delayed_timestamp_size (self ):
32
+ d = datetime .datetime .now () + datetime .timedelta (days = 1 )
33
+ d2 = d + datetime .timedelta (days = 1 )
34
+ key = int (time .mktime (d .timetuple ()))
35
+ key2 = int (time .mktime (d2 .timetuple ()))
36
+ self .resq .enqueue_at (d , Basic ,"test1" )
37
+ assert self .resq .delayed_timestamp_size (d ) == 1
38
+ self .resq .enqueue_at (d , Basic ,"test1" )
39
+ assert self .resq .delayed_timestamp_size (d ) == 2
40
+
41
+ def test_next_delayed_timestamp (self ):
42
+ d = datetime .datetime .now () + datetime .timedelta (days = - 1 )
43
+ d2 = d + datetime .timedelta (days = - 2 )
44
+ key = int (time .mktime (d .timetuple ()))
45
+ key2 = int (time .mktime (d2 .timetuple ()))
46
+ self .resq .enqueue_at (d , Basic ,"test1" )
47
+ self .resq .enqueue_at (d2 , Basic ,"test1" )
48
+ item = self .resq .next_delayed_timestamp ()
49
+ assert item == key2
50
+
51
+ def test_next_item_for_timestamp (self ):
52
+ d = datetime .datetime .now () + datetime .timedelta (days = - 1 )
53
+ d2 = d + datetime .timedelta (days = - 2 )
54
+ #key = int(time.mktime(d.timetuple()))
55
+ #key2 = int(time.mktime(d2.timetuple()))
56
+ self .resq .enqueue_at (d , Basic ,"test1" )
57
+ self .resq .enqueue_at (d2 , Basic ,"test1" )
58
+ timestamp = self .resq .next_delayed_timestamp ()
59
+ item = self .resq .next_item_for_timestamp (timestamp )
60
+ assert isinstance (item , dict )
61
+ assert self .redis .zcard ('resque:delayed_queue_schedule' ) == 1
62
+
0 commit comments