Exemple #1
0
 def setUp(self):
     self.event_server = MockedEventServer()
     self.port = self.event_server.start()
     self.events = gevent.queue.Queue()
     self.c = EventClient('127.0.0.1',
                          port=self.port,
                          handle=lambda e: self.events.put_nowait(e))
     self.delay = 0
Exemple #2
0
 def test_spawn_default(self):
     """Tests that a new greenlet is spawned for each event to be processed."""
     self.c = EventClient('127.0.0.1',
                          port=self.port,
                          handle=self.slow_handler,
                          spawn='default')
     self.c.connect()
     self.send(EVENT_1)
     self.send(EVENT_2)
     self.send(EVENT_3)
     self.assertReceived(EVENT_1, 1)
     self.assertReceived(EVENT_2, 0.1)
     self.assertReceived(EVENT_3, 0.1)
Exemple #3
0
    def test_spawn_inline(self):
        """Tests that only a single, slow greenlet is processing events."""
        self.c = EventClient('127.0.0.1',
                             port=self.port,
                             handle=self.slow_handler,
                             spawn=None)
        self.c.connect()
        self.send(EVENT_1)
        self.send(EVENT_2)
        self.send(EVENT_3)
        self.assertReceived(EVENT_1, 1)
        self.assertReceived(EVENT_2, 1)

        def timeout():
            # 0.2 sec is not enough for the slow handler to process, so it should fail.
            self.assertReceived(EVENT_3, 0.2)

        self.assertRaises(gevent.queue.Empty, timeout)

        # Pickup the last event given that we wait enough.
        self.assertReceived(EVENT_3, 1)
Exemple #4
0
    def test_spawn_pool(self):
        """Tests that only a pool of greenlets are processing events."""
        self.c = EventClient('127.0.0.1',
                             port=self.port,
                             handle=self.slow_handler,
                             spawn=2)
        self.c.connect()
        self.send(EVENT_1)
        self.send(EVENT_2)
        self.send(EVENT_3)
        self.assertReceived(EVENT_1, 1)
        self.assertReceived(
            EVENT_2, 0.1
        )  # Since the pool process in parallel, this should be immediately available.

        def timeout():
            # Since we use a pool of 2, it will need to wait for the third message. Timeout of 0 should fail.
            self.assertReceived(EVENT_3, 0)

        self.assertRaises(gevent.queue.Empty, timeout)

        # Pickup the last event given that we wait enough.
        self.assertReceived(EVENT_3, 1)
Exemple #5
0
 def test_disconnect_without_connect(self):
     c = EventClient('127.0.0.1', port=12345, handle=lambda x: x)
     c.disconnect()
     c.disconnect()  # Test double disconnect as well