Пример #1
0
 def test__calls_handler_on_notification(self):
     listener = PostgresListenerService()
     dv = DeferredValue()
     listener.register("machine", lambda *args: dv.set(args))
     yield listener.startService()
     try:
         yield deferToDatabase(self.send_notification, "machine_create", 1)
         yield dv.get(timeout=2)
         self.assertEqual(('create', '1'), dv.value)
     finally:
         yield listener.stopService()
Пример #2
0
 def test_calls_handler_on_notification(self):
     listener = PostgresListenerService()
     listener.HANDLE_NOTIFY_DELAY = listener.CHANNEL_REGISTRAR_DELAY = 0
     dv = DeferredValue()
     listener.register("machine", lambda *args: dv.set(args))
     yield listener.startService()
     yield listener.channelRegistrarDone
     try:
         yield deferToDatabase(self.send_notification, "machine_create", 1)
         yield dv.get(timeout=2)
         self.assertEqual(("create", "1"), dv.value)
     finally:
         yield listener.stopService()
Пример #3
0
 def test__calls_handler_on_notification_with_delayed_registration(self):
     listener = PostgresListenerService()
     dv = DeferredValue()
     yield listener.startService()
     try:
         # Register after the service has been started. The handler should
         # still be called.
         listener.register("machine", lambda *args: dv.set(args))
         yield deferToDatabase(self.send_notification, "machine_create", 1)
         yield dv.get(timeout=2)
         self.assertEqual(('create', '1'), dv.value)
     finally:
         yield listener.stopService()
Пример #4
0
 def test__calls_system_handler_on_notification(self):
     listener = PostgresListenerService()
     # Change notifications to a frozenset. This makes sure that
     # the system message does not go into the queue. Instead if should
     # call the handler directly in `doRead`.
     listener.notifications = frozenset()
     dv = DeferredValue()
     listener.register("sys_test", lambda *args: dv.set(args))
     yield listener.startService()
     try:
         yield deferToDatabase(self.send_notification, "sys_test", 1)
         yield dv.get(timeout=2)
         self.assertEqual(("sys_test", "1"), dv.value)
     finally:
         yield listener.stopService()