2010-09-06 09:47:45 -03:00
|
|
|
from twisted.internet.defer import inlineCallbacks, maybeDeferred
|
|
|
|
from twisted.trial import unittest
|
2010-09-03 14:29:27 -03:00
|
|
|
|
|
|
|
from zope.interface.verify import verifyObject
|
|
|
|
|
2011-07-19 19:39:27 -03:00
|
|
|
from scrapyd.interfaces import ISpiderQueue
|
|
|
|
from scrapyd.spiderqueue import SqliteSpiderQueue
|
2010-09-03 14:29:27 -03:00
|
|
|
|
|
|
|
class SpiderQueueTest(unittest.TestCase):
|
2010-09-06 09:47:45 -03:00
|
|
|
"""This test case can be used easily for testing other SpiderQueue's by
|
|
|
|
just changing the _get_queue() method. It also supports queues with
|
|
|
|
deferred methods.
|
|
|
|
"""
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
self.q = self._get_queue()
|
|
|
|
self.name = 'spider1'
|
|
|
|
self.args = {'arg1': 'val1', 'arg2': 2}
|
|
|
|
self.msg = self.args.copy()
|
|
|
|
self.msg['name'] = self.name
|
|
|
|
|
|
|
|
def _get_queue(self):
|
|
|
|
return SqliteSpiderQueue(':memory:')
|
2010-09-03 14:29:27 -03:00
|
|
|
|
|
|
|
def test_interface(self):
|
2010-09-06 09:47:45 -03:00
|
|
|
verifyObject(ISpiderQueue, self.q)
|
|
|
|
|
|
|
|
@inlineCallbacks
|
|
|
|
def test_add_pop_count(self):
|
|
|
|
c = yield maybeDeferred(self.q.count)
|
|
|
|
self.assertEqual(c, 0)
|
|
|
|
|
|
|
|
yield maybeDeferred(self.q.add, self.name, **self.args)
|
|
|
|
|
|
|
|
c = yield maybeDeferred(self.q.count)
|
|
|
|
self.assertEqual(c, 1)
|
|
|
|
|
|
|
|
m = yield maybeDeferred(self.q.pop)
|
|
|
|
self.assertEqual(m, self.msg)
|
|
|
|
|
|
|
|
c = yield maybeDeferred(self.q.count)
|
|
|
|
self.assertEqual(c, 0)
|
|
|
|
|
|
|
|
@inlineCallbacks
|
|
|
|
def test_list(self):
|
|
|
|
l = yield maybeDeferred(self.q.list)
|
|
|
|
self.assertEqual(l, [])
|
|
|
|
|
|
|
|
yield maybeDeferred(self.q.add, self.name, **self.args)
|
|
|
|
yield maybeDeferred(self.q.add, self.name, **self.args)
|
|
|
|
|
|
|
|
l = yield maybeDeferred(self.q.list)
|
|
|
|
self.assertEqual(l, [self.msg, self.msg])
|
|
|
|
|
|
|
|
@inlineCallbacks
|
|
|
|
def test_clear(self):
|
|
|
|
yield maybeDeferred(self.q.add, self.name, **self.args)
|
|
|
|
yield maybeDeferred(self.q.add, self.name, **self.args)
|
|
|
|
|
|
|
|
c = yield maybeDeferred(self.q.count)
|
|
|
|
self.assertEqual(c, 2)
|
|
|
|
|
|
|
|
yield maybeDeferred(self.q.clear)
|
2010-09-03 14:29:27 -03:00
|
|
|
|
2010-09-06 09:47:45 -03:00
|
|
|
c = yield maybeDeferred(self.q.count)
|
|
|
|
self.assertEqual(c, 0)
|