Skip to content

Commit 1519112

Browse files
author
Ask Solem
committed
100% coverage for celery.worker.control
1 parent 4fb9f12 commit 1519112

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

celery/tests/test_worker_control.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,29 @@ def test_shutdown(self):
184184
m = {"command": "shutdown",
185185
"destination": hostname}
186186
self.assertRaises(SystemExit, self.panel.dispatch_from_message, m)
187+
188+
189+
def test_panel_reply(self):
190+
191+
replies = []
192+
193+
class MockReplyPublisher(object):
194+
195+
def __init__(self, *args, **kwargs):
196+
pass
197+
198+
def send(self, reply, **kwargs):
199+
replies.append(reply)
200+
201+
def close(self):
202+
pass
203+
204+
class _Dispatch(control.ControlDispatch):
205+
ReplyPublisher = MockReplyPublisher
206+
207+
panel = _Dispatch(hostname, listener=Listener())
208+
209+
r = panel.execute("ping", reply_to={"exchange": "x",
210+
"routing_key": "x"})
211+
self.assertEqual(r, "pong")
212+
self.assertDictEqual(replies[0], {panel.hostname: "pong"})

celery/worker/control/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,19 @@
77

88
class ControlDispatch(object):
99
"""Execute worker control panel commands."""
10-
panel_cls = Panel
10+
Panel = Panel
11+
ReplyPublisher = ControlReplyPublisher
1112

1213
def __init__(self, logger=None, hostname=None, listener=None):
1314
self.logger = logger or log.get_default_logger()
1415
self.hostname = hostname
1516
self.listener = listener
16-
self.panel = self.panel_cls(self.logger, self.listener, self.hostname)
17+
self.panel = self.Panel(self.logger, self.listener, self.hostname)
1718

1819
@with_connection
1920
def reply(self, data, exchange, routing_key, connection=None,
2021
connect_timeout=None):
21-
crq = ControlReplyPublisher(connection, exchange=exchange)
22+
crq = self.ReplyPublisher(connection, exchange=exchange)
2223
try:
2324
crq.send(data, routing_key=routing_key)
2425
finally:

0 commit comments

Comments
 (0)