Skip to content

Commit 64ff2bb

Browse files
author
Matt George
committed
fixed tests so that all the namespace work done
by fakechris is now accounted for. Modified the job and failure items to have slightly different method signatures. This work will probably be updated in the failure backend branch that should be dropping soon
1 parent 571c160 commit 64ff2bb

File tree

9 files changed

+78
-61
lines changed

9 files changed

+78
-61
lines changed

AUTHORS.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Authors
2+
* Matt George
3+
* Chris Song
4+
5+
Inspired by Resque, by Chris Wanstrath

HISTORY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
* updated setup.py
44
* refactored package for better testing
5+
* resque namespacing by fakechris
6+
* smarter import from string by fakechris
57

68
## 0.2.0 (2009-12-09)
79

coverage.report

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Name Stmts Exec Cover Missing
2+
------------------------------------------------
3+
pyres 138 131 94% 26, 39, 98, 133-134, 144-145
4+
pyres.exceptions 2 2 100%
5+
pyres.failure 23 22 95% 41
6+
pyres.job 23 23 100%
7+
pyres.worker 189 146 77% 66, 74, 84-112, 161, 179, 186, 230-241
8+
------------------------------------------------
9+
TOTAL 375 324 86%
10+
----------------------------------------------------------------------
11+
Ran 32 tests in 0.884s

pyres/failure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from pyres import ResQ
33
import sys, traceback
44
class Failure(object):
5-
def __init__(self, exp, worker, queue, payload):
5+
def __init__(self, exp, queue, payload, worker=None):
66
excc, _, tb = sys.exc_info()
77

88
self._exception = excc

pyres/job.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from pyres import ResQ, str_to_class, safe_str_to_class
22
from pyres.failure import Failure
33
class Job(object):
4-
def __init__(self, queue, payload, resq, worker):
4+
def __init__(self, queue, payload, resq, worker=None):
55
self._queue = queue
66
self._payload = payload
77
self.resq = resq
@@ -18,11 +18,11 @@ def perform(self):
1818

1919
def fail(self, exception):
2020
#Failure.create(exception)
21-
failure = Failure(exception, self._worker, self._queue, self._payload)
21+
failure = Failure(exception, self._queue, self._payload, self._worker)
2222
failure.save(self.resq)
2323

2424
@classmethod
25-
def reserve(cls, queue, res, worker):
25+
def reserve(cls, queue, res, worker=None):
2626
payload = res.pop(queue)
2727
if payload:
2828
return cls(queue, payload, res, worker)

tests/test_jobs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ def test_perform(self):
1818
def test_fail(self):
1919
self.resq.enqueue(Basic,"test1")
2020
job = Job.reserve('basic',self.resq)
21-
assert self.redis.llen('failed') == 0
21+
assert self.redis.llen('resque:failed') == 0
2222
job.fail("problem")
23-
assert self.redis.llen('failed') == 1
23+
assert self.redis.llen('resque:failed') == 1

tests/test_resq.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ def test_enqueue(self):
88
self.resq.enqueue(Basic,"test1")
99
self.resq.enqueue(Basic,"test2")
1010
ResQ._enqueue(Basic, "test3")
11-
assert self.redis.llen("queue:basic") == 3
12-
assert self.redis.sismember('queues','basic')
11+
assert self.redis.llen("resque:queue:basic") == 3
12+
assert self.redis.sismember('resque:queues','basic')
1313

1414
def test_push(self):
1515
self.resq.push('pushq','content-newqueue')
1616
self.resq.push('pushq','content2-newqueue')
17-
assert self.redis.llen('queue:pushq') == 2
18-
assert self.redis.lindex('queue:pushq', 0) == ResQ.encode('content-newqueue')
19-
assert self.redis.lindex('queue:pushq', 1) == ResQ.encode('content2-newqueue')
17+
assert self.redis.llen('resque:queue:pushq') == 2
18+
assert self.redis.lindex('resque:queue:pushq', 0) == ResQ.encode('content-newqueue')
19+
assert self.redis.lindex('resque:queue:pushq', 1) == ResQ.encode('content2-newqueue')
2020

2121
def test_pop(self):
2222
self.resq.push('pushq','content-newqueue')
2323
self.resq.push('pushq','content2-newqueue')
24-
assert self.redis.llen('queue:pushq') == 2
24+
assert self.redis.llen('resque:queue:pushq') == 2
2525
assert self.resq.pop('pushq') == 'content-newqueue'
26-
assert self.redis.llen('queue:pushq') == 1
26+
assert self.redis.llen('resque:queue:pushq') == 1
2727
assert self.resq.pop('pushq') == 'content2-newqueue'
28-
assert self.redis.llen('queue:pushq') == 0
28+
assert self.redis.llen('resque:queue:pushq') == 0
2929

3030
def test_peek(self):
3131
self.resq.enqueue(Basic,"test1")
@@ -62,31 +62,30 @@ def test_workers(self):
6262
worker.register_worker()
6363
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
6464
assert len(self.resq.workers()) == 1
65-
assert name in self.resq.workers()
65+
#assert Worker.find(name, self.resq) in self.resq.workers()
6666

6767
def test_enqueue_from_string(self):
6868
self.resq.enqueue_from_string('tests.Basic','basic','test1')
6969
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
70-
assert self.redis.llen("queue:basic") == 1
70+
assert self.redis.llen("resque:queue:basic") == 1
7171
job = Job.reserve('basic', self.resq)
7272
worker = Worker(['basic'])
7373
worker.process(job)
74-
assert not self.redis.get('worker:%s' % worker)
75-
assert not self.redis.get("stat:failed")
76-
assert not self.redis.get("stat:failed:%s" % name)
74+
assert not self.redis.get('resque:worker:%s' % worker)
75+
assert not self.redis.get("resque:stat:failed")
76+
assert not self.redis.get("resque:stat:failed:%s" % name)
7777

7878
def test_remove_queue(self):
7979
self.resq.enqueue_from_string('tests.Basic','basic','test1')
8080
assert 'basic' in self.resq._watched_queues
81-
assert self.redis.sismember('queues','basic')
82-
assert self.redis.llen('queue:basic') == 1
81+
assert self.redis.sismember('resque:queues','basic')
82+
assert self.redis.llen('resque:queue:basic') == 1
8383
self.resq.remove_queue('basic')
8484
assert 'basic' not in self.resq._watched_queues
85-
assert not self.redis.sismember('queues','basic')
86-
assert not self.redis.exists('queue:basic')
85+
assert not self.redis.sismember('resque:queues','basic')
86+
assert not self.redis.exists('resque:queue:basic')
8787

8888
def test_keys(self):
8989
self.resq.enqueue_from_string('tests.Basic','basic','test1')
90-
print self.resq.keys()
9190
assert 'queue:basic' in self.resq.keys()
9291
assert 'queues' in self.resq.keys()

tests/test_stats.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ class StatTests(PyResTests):
44
def test_incr(self):
55
stat_obj = Stat('test_stat', self.resq)
66
stat_obj.incr()
7-
assert self.redis.get('stat:test_stat') == 1
7+
assert self.redis.get('resque:stat:test_stat') == 1
88
stat_obj.incr()
9-
assert self.redis.get('stat:test_stat') == 2
9+
assert self.redis.get('resque:stat:test_stat') == 2
1010
stat_obj.incr(2)
11-
assert self.redis.get('stat:test_stat') == 4
11+
assert self.redis.get('resque:stat:test_stat') == 4
1212

1313
def test_decr(self):
1414
stat_obj = Stat('test_stat', self.resq)
1515
stat_obj.incr()
1616
stat_obj.incr()
17-
assert self.redis.get('stat:test_stat') == 2
17+
assert self.redis.get('resque:stat:test_stat') == 2
1818
stat_obj.decr()
19-
assert self.redis.get('stat:test_stat') == 1
19+
assert self.redis.get('resque:stat:test_stat') == 1
2020
stat_obj.incr()
2121
stat_obj.decr(2)
22-
assert self.redis.get('stat:test_stat') == 0
22+
assert self.redis.get('resque:stat:test_stat') == 0
2323

2424
def test_get(self):
2525
stat_obj = Stat('test_stat', self.resq)
@@ -31,6 +31,6 @@ def test_clear(self):
3131
stat_obj = Stat('test_stat', self.resq)
3232
stat_obj.incr()
3333
stat_obj.incr()
34-
assert self.redis.exists('stat:test_stat')
34+
assert self.redis.exists('resque:stat:test_stat')
3535
stat_obj.clear()
36-
assert not self.redis.exists('stat:test_stat')
36+
assert not self.redis.exists('resque:stat:test_stat')

tests/test_worker.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def test_startup(self):
1313
worker = Worker(['basic'])
1414
worker.startup()
1515
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
16-
assert self.redis.sismember('workers',name)
16+
assert self.redis.sismember('resque:workers',name)
1717
import signal
1818
assert signal.getsignal(signal.SIGTERM) == worker.shutdown_all
1919
assert signal.getsignal(signal.SIGINT) == worker.shutdown_all
@@ -24,62 +24,62 @@ def test_register(self):
2424
worker = Worker(['basic'])
2525
worker.register_worker()
2626
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
27-
assert self.redis.sismember('workers',name)
27+
assert self.redis.sismember('resque:workers',name)
2828

2929
def test_unregister(self):
3030
worker = Worker(['basic'])
3131
worker.register_worker()
3232
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
33-
assert self.redis.sismember('workers',name)
33+
assert self.redis.sismember('resque:workers',name)
3434
worker.unregister_worker()
35-
assert name not in self.redis.smembers('workers')
35+
assert name not in self.redis.smembers('resque:workers')
3636

3737
def test_working_on(self):
3838
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
3939
self.resq.enqueue(Basic,"test1")
4040
job = Job.reserve('basic', self.resq)
4141
worker = Worker(['basic'])
4242
worker.working_on(job)
43-
assert self.redis.exists("worker:%s" % name)
43+
assert self.redis.exists("resque:worker:%s" % name)
4444

4545
def test_processed(self):
4646
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
4747
worker = Worker(['basic'])
4848
worker.processed()
49-
assert self.redis.exists("stat:processed")
50-
assert self.redis.exists("stat:processed:%s" % name)
51-
assert self.redis.get("stat:processed") == 1
52-
assert self.redis.get("stat:processed:%s" % name) == 1
49+
assert self.redis.exists("resque:stat:processed")
50+
assert self.redis.exists("resque:stat:processed:%s" % name)
51+
assert self.redis.get("resque:stat:processed") == 1
52+
assert self.redis.get("resque:stat:processed:%s" % name) == 1
5353
worker.processed()
54-
assert self.redis.get("stat:processed") == 2
55-
assert self.redis.get("stat:processed:%s" % name) == 2
54+
assert self.redis.get("resque:stat:processed") == 2
55+
assert self.redis.get("resque:stat:processed:%s" % name) == 2
5656

5757
def test_failed(self):
5858
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
5959
worker = Worker(['basic'])
6060
worker.failed()
61-
assert self.redis.exists("stat:failed")
62-
assert self.redis.exists("stat:failed:%s" % name)
63-
assert self.redis.get("stat:failed") == 1
64-
assert self.redis.get("stat:failed:%s" % name) == 1
61+
assert self.redis.exists("resque:stat:failed")
62+
assert self.redis.exists("resque:stat:failed:%s" % name)
63+
assert self.redis.get("resque:stat:failed") == 1
64+
assert self.redis.get("resque:stat:failed:%s" % name) == 1
6565
worker.failed()
66-
assert self.redis.get("stat:failed") == 2
67-
assert self.redis.get("stat:failed:%s" % name) == 2
66+
assert self.redis.get("resque:stat:failed") == 2
67+
assert self.redis.get("resque:stat:failed:%s" % name) == 2
6868

6969
def test_process(self):
7070
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
7171
self.resq.enqueue(Basic,"test1")
7272
job = Job.reserve('basic', self.resq)
7373
worker = Worker(['basic'])
7474
worker.process(job)
75-
assert not self.redis.get('worker:%s' % worker)
76-
assert not self.redis.get("stat:failed")
77-
assert not self.redis.get("stat:failed:%s" % name)
75+
assert not self.redis.get('resque:worker:%s' % worker)
76+
assert not self.redis.get("resque:stat:failed")
77+
assert not self.redis.get("resque:stat:failed:%s" % name)
7878
self.resq.enqueue(Basic,"test1")
7979
worker.process()
80-
assert not self.redis.get('worker:%s' % worker)
81-
assert not self.redis.get("stat:failed")
82-
assert not self.redis.get("stat:failed:%s" % name)
80+
assert not self.redis.get('resque:worker:%s' % worker)
81+
assert not self.redis.get("resque:stat:failed")
82+
assert not self.redis.get("resque:stat:failed:%s" % name)
8383

8484

8585
def test_signals(self):
@@ -101,17 +101,17 @@ def test_job_failure(self):
101101
worker = Worker(['basic'])
102102
worker.process()
103103
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
104-
assert not self.redis.get('worker:%s' % worker)
105-
assert self.redis.get("stat:failed") == 1
106-
assert self.redis.get("stat:failed:%s" % name) == 1
104+
assert not self.redis.get('resque:worker:%s' % worker)
105+
assert self.redis.get("resque:stat:failed") == 1
106+
assert self.redis.get("resque:stat:failed:%s" % name) == 1
107107

108108
def test_get_job(self):
109109
worker = Worker(['basic'])
110110
self.resq.enqueue(Basic,"test1")
111111
job = Job.reserve('basic', self.resq)
112112
worker.working_on(job)
113113
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
114-
assert worker.job() == ResQ.decode(self.redis.get('worker:%s' % name))
114+
assert worker.job() == ResQ.decode(self.redis.get('resque:worker:%s' % name))
115115
worker.done_working()
116116
w2 = Worker(['basic'])
117117
print w2.job()
@@ -135,7 +135,7 @@ def test_started(self):
135135
dt = datetime.datetime.now()
136136
worker.started = dt
137137
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
138-
assert self.redis.get('worker:%s:started' % name) == dt.strftime('%Y-%m-%d %H:%M:%S')
138+
assert self.redis.get('resque:worker:%s:started' % name) == dt.strftime('%Y-%m-%d %H:%M:%S')
139139
assert worker.started == datetime.datetime.strptime(dt.strftime('%Y-%m-%d %H:%M:%S'),'%Y-%m-%d %H:%M:%S')
140140
worker.started = None
141-
assert not self.redis.exists('worker:%s:started' % name)
141+
assert not self.redis.exists('resque:worker:%s:started' % name)

0 commit comments

Comments
 (0)