Skip to content

Commit

Permalink
tests: Remove classes from tests (poller)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpmckinney committed Jul 19, 2024
1 parent b146fff commit 0daf6ec
Showing 1 changed file with 38 additions and 38 deletions.
76 changes: 38 additions & 38 deletions tests/test_poller.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os

import pytest
from twisted.internet.defer import Deferred
from twisted.trial import unittest
from zope.interface.verify import verifyObject

from scrapyd.config import Config
Expand All @@ -10,52 +10,52 @@
from scrapyd.utils import get_spider_queues


class QueuePollerTest(unittest.TestCase):
def setUp(self):
d = self.mktemp()
eggs_dir = os.path.join(d, "eggs")
dbs_dir = os.path.join(d, "dbs")
os.makedirs(eggs_dir)
os.makedirs(dbs_dir)
os.makedirs(os.path.join(eggs_dir, "mybot1"))
os.makedirs(os.path.join(eggs_dir, "mybot2"))
config = Config(values={"eggs_dir": eggs_dir, "dbs_dir": dbs_dir})
self.queues = get_spider_queues(config)
self.poller = QueuePoller(config)
@pytest.fixture()
def poller(tmpdir):
eggs_dir = os.path.join(tmpdir, "eggs")
dbs_dir = os.path.join(tmpdir, "dbs")
os.makedirs(os.path.join(eggs_dir, "mybot1"))
os.makedirs(os.path.join(eggs_dir, "mybot2"))
config = Config(values={"eggs_dir": eggs_dir, "dbs_dir": dbs_dir})
return QueuePoller(config)

def test_interface(self):
verifyObject(IPoller, self.poller)

def test_poll_next(self):
cfg = {"mybot1": "spider1", "mybot2": "spider2"}
priority = 0
for prj, spd in cfg.items():
self.queues[prj].add(spd, priority)
def test_interface(poller):
verifyObject(IPoller, poller)

d1 = self.poller.next()
d2 = self.poller.next()

self.assertIsInstance(d1, Deferred)
self.assertFalse(hasattr(d1, "result"))
def test_poll_next(poller):
queues = get_spider_queues(poller.config)

# poll once
self.poller.poll()
cfg = {"mybot1": "spider1", "mybot2": "spider2"}
priority = 0
for prj, spd in cfg.items():
queues[prj].add(spd, priority)

self.assertTrue(hasattr(d1, "result"))
self.assertTrue(getattr(d1, "called", False))
d1 = poller.next()
d2 = poller.next()

# which project got run: project1 or project2?
self.assertTrue(d1.result.get("_project"))
assert isinstance(d1, Deferred)
assert not hasattr(d1, "result")

prj = d1.result["_project"]
# poll once
poller.poll()

self.assertEqual(d1.result["_spider"], cfg.pop(prj))
assert hasattr(d1, "result")
assert getattr(d1, "called", False)

self.queues[prj].pop()
# which project got run: project1 or project2?
assert d1.result.get("_project")

# poll twice
# check that the other project's spider got to run
self.poller.poll()
prj, spd = cfg.popitem()
prj = d1.result["_project"]

self.assertEqual(d2.result, {"_project": prj, "_spider": spd})
assert d1.result["_spider"] == cfg.pop(prj)

queues[prj].pop()

# poll twice
# check that the other project's spider got to run
poller.poll()
prj, spd = cfg.popitem()

assert d2.result == {"_project": prj, "_spider": spd}

0 comments on commit 0daf6ec

Please sign in to comment.