Changeset View
Changeset View
Standalone View
Standalone View
swh/scheduler/tests/updater/test_consumer.py
Show All 18 Lines | class FakeSchedulerUpdaterBackend: | ||||
def __init__(self): | def __init__(self): | ||||
self.events = [] | self.events = [] | ||||
def cache_put(self, events): | def cache_put(self, events): | ||||
self.events.append(events) | self.events.append(events) | ||||
class FakeUpdaterConsumerBase(UpdaterConsumer): | class FakeUpdaterConsumerBase(UpdaterConsumer): | ||||
def __init__(self, backend_class=FakeSchedulerUpdaterBackend): | def __init__(self, backend): | ||||
super().__init__(backend_class=backend_class) | super().__init__(backend) | ||||
self.connection_opened = False | self.connection_opened = False | ||||
self.connection_closed = False | self.connection_closed = False | ||||
self.consume_called = False | self.consume_called = False | ||||
self.has_events_called = False | self.has_events_called = False | ||||
def open_connection(self): | def open_connection(self): | ||||
self.connection_opened = True | self.connection_opened = True | ||||
Show All 11 Lines | class FakeUpdaterConsumerRaise(FakeUpdaterConsumerBase): | ||||
def consume_events(self): | def consume_events(self): | ||||
self.consume_called = True | self.consume_called = True | ||||
raise ValueError('Broken stuff') | raise ValueError('Broken stuff') | ||||
class UpdaterConsumerRaisingTest(unittest.TestCase): | class UpdaterConsumerRaisingTest(unittest.TestCase): | ||||
def setUp(self): | def setUp(self): | ||||
self.updater = FakeUpdaterConsumerRaise() | self.updater = FakeUpdaterConsumerRaise( | ||||
FakeSchedulerUpdaterBackend()) | |||||
def test_running_raise(self): | def test_running_raise(self): | ||||
"""Raising during run should finish fine. | """Raising during run should finish fine. | ||||
""" | """ | ||||
# given | # given | ||||
self.assertEqual(self.updater.count, 0) | self.assertEqual(self.updater.count, 0) | ||||
self.assertEqual(self.updater.seen_events, set()) | self.assertEqual(self.updater.seen_events, set()) | ||||
Show All 19 Lines | def has_events(self): | ||||
return False | return False | ||||
def consume_events(self): | def consume_events(self): | ||||
self.consume_called = True | self.consume_called = True | ||||
class UpdaterConsumerNoEventTest(unittest.TestCase): | class UpdaterConsumerNoEventTest(unittest.TestCase): | ||||
def setUp(self): | def setUp(self): | ||||
self.updater = FakeUpdaterConsumerNoEvent() | self.updater = FakeUpdaterConsumerNoEvent( | ||||
FakeSchedulerUpdaterBackend()) | |||||
def test_running_does_not_consume(self): | def test_running_does_not_consume(self): | ||||
"""Run with no events should do just fine""" | """Run with no events should do just fine""" | ||||
# given | # given | ||||
self.assertEqual(self.updater.count, 0) | self.assertEqual(self.updater.count, 0) | ||||
self.assertEqual(self.updater.seen_events, set()) | self.assertEqual(self.updater.seen_events, set()) | ||||
self.assertEqual(self.updater.events, []) | self.assertEqual(self.updater.events, []) | ||||
Show All 9 Lines | def test_running_does_not_consume(self): | ||||
self.assertTrue(self.updater.connection_closed) | self.assertTrue(self.updater.connection_closed) | ||||
self.assertFalse(self.updater.consume_called) | self.assertFalse(self.updater.consume_called) | ||||
EVENT_KEYS = ['type', 'repo', 'created_at', 'origin_type'] | EVENT_KEYS = ['type', 'repo', 'created_at', 'origin_type'] | ||||
class FakeUpdaterConsumer(FakeUpdaterConsumerBase): | class FakeUpdaterConsumer(FakeUpdaterConsumerBase): | ||||
def __init__(self, messages): | def __init__(self, backend, messages): | ||||
super().__init__() | super().__init__(backend) | ||||
self.messages = messages | self.messages = messages | ||||
self.debug = False | self.debug = False | ||||
def has_events(self): | def has_events(self): | ||||
self.has_events_called = True | self.has_events_called = True | ||||
return len(self.messages) > 0 | return len(self.messages) > 0 | ||||
def consume_events(self): | def consume_events(self): | ||||
Show All 37 Lines | def test_running(self, events, uninteresting_events, incomplete_events): | ||||
""" | """ | ||||
# given | # given | ||||
ready_events = self._make_events(events) | ready_events = self._make_events(events) | ||||
ready_uninteresting_events = self._make_events(uninteresting_events) | ready_uninteresting_events = self._make_events(uninteresting_events) | ||||
ready_incomplete_events = self._make_incomplete_events( | ready_incomplete_events = self._make_incomplete_events( | ||||
incomplete_events) | incomplete_events) | ||||
updater = FakeUpdaterConsumer(list(chain( | updater = FakeUpdaterConsumer( | ||||
FakeSchedulerUpdaterBackend(), | |||||
list(chain( | |||||
ready_events, ready_incomplete_events, | ready_events, ready_incomplete_events, | ||||
ready_uninteresting_events))) | ready_uninteresting_events))) | ||||
self.assertEqual(updater.count, 0) | self.assertEqual(updater.count, 0) | ||||
self.assertEqual(updater.seen_events, set()) | self.assertEqual(updater.seen_events, set()) | ||||
self.assertEqual(updater.events, []) | self.assertEqual(updater.events, []) | ||||
# when | # when | ||||
updater.run() | updater.run() | ||||
Show All 12 Lines |