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