|
@@ -140,6 +140,72 @@ class TestSubscriptionManager(unittest.TestCase):
|
|
|
self.sm.subscribe('ConfigManager', '*', 's3')
|
|
|
self.assertEqual(1, self.__cfgmgr_ready_called)
|
|
|
|
|
|
+class MsgQTest(unittest.TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ self.__msgq = MsgQ()
|
|
|
+
|
|
|
+ def test_undeliverable_errors(self):
|
|
|
+ sent_messages = []
|
|
|
+ def fake_end_prepared_msg(socket, msg):
|
|
|
+ sent_messages.append((socket, msg))
|
|
|
+ self.__msgq.send_prepared_msg = fake_end_prepared_msg
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ sender = 1
|
|
|
+ recipient = 2
|
|
|
+
|
|
|
+ routing = {
|
|
|
+ 'to': '*',
|
|
|
+ 'group': 'group',
|
|
|
+ 'instance': '*',
|
|
|
+ 'seq': 42
|
|
|
+ }
|
|
|
+ data = {
|
|
|
+ "data": "Just some data"
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ self.__msgq.process_command_send(sender, routing, data)
|
|
|
+ self.assertEqual([], sent_messages)
|
|
|
+
|
|
|
+ routing["wants_reply"] = True
|
|
|
+ self.__msgq.process_command_send(sender, routing, data)
|
|
|
+ self.assertEqual(1, len(sent_messages))
|
|
|
+
|
|
|
+
|
|
|
+ sent_messages = []
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ routing["reply"] = 3
|
|
|
+ self.__msgq.process_command_send(sender, routing, data)
|
|
|
+ self.assertEqual([], sent_messages)
|
|
|
+
|
|
|
+
|
|
|
+ del routing["reply"]
|
|
|
+ self.__msgq.subs.find = lambda group, instance: [recipient]
|
|
|
+ self.__msgq.process_command_send(sender, routing, data)
|
|
|
+ self.assertEqual(1, len(sent_messages))
|
|
|
+
|
|
|
+ sent_messages = []
|
|
|
+
|
|
|
+
|
|
|
+ routing["to"] = "lname"
|
|
|
+ self.__msgq.process_command_send(sender, routing, data)
|
|
|
+ self.assertEqual(1, len(sent_messages))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ self.__msgq.lnames["lname"] = recipient
|
|
|
+ self.__msgq.process_command_send(sender, routing, data)
|
|
|
+ self.assertEqual(1, len(sent_messages))
|
|
|
+
|
|
|
+ sent_messages = []
|
|
|
+
|
|
|
class DummySocket:
|
|
|
"""
|
|
|
Dummy socket class.
|