def echo_server():
    mp = TMultiplexedProcessor()
    mp.registerProcessor("echo", Echoer.Processor(EchoHandler()))
    transport = TSocket.TServerSocket(port=PORT)
    tf = TTransport.TFramedTransportFactory()
    pf = TCompactProtocol.TCompactProtocolFactory()

    return TServer.TThreadedServer(mp, transport, tf, pf, daemon=True)
def echo_server():
    mp = TMultiplexedProcessor()
    mp.registerProcessor("echo", Echoer.Processor(EchoHandler()))
    transport = TSocket.TServerSocket(port=PORT)
    tf = TTransport.TFramedTransportFactory()
    pf = TCompactProtocol.TCompactProtocolFactory()

    return TServer.TThreadedServer(mp, transport, tf, pf, daemon=True)
    def test_shutdown(self):
        m_processor = TMultiplexedProcessor()
        processor = MagicMock()
        num_workers = 2
        services = ["Fake_1", "Fake_2"]
        for name in services:
            m_processor.registerProcessor(name, processor, num_workers)

        for name in services:
            self.assertEqual(len(m_processor.services[name].workers), 2)
            for worker in m_processor.services[name].workers:
                self.assertTrue(worker.is_alive())

        m_processor.shutdown()
        self.assertTrue(m_processor.shutting_down)
        for name in services:
            for worker in m_processor.services[name].workers:
                self.assertFalse(worker.is_alive())
    def test_shutdown(self):
        m_processor = TMultiplexedProcessor()
        processor = MagicMock()
        num_workers = 2
        services = ["Fake_1", "Fake_2"]
        for name in services:
            m_processor.registerProcessor(name, processor, num_workers)

        for name in services:
            self.assertEqual(len(m_processor.services[name].workers), 2)
            for worker in m_processor.services[name].workers:
                self.assertTrue(worker.is_alive())

        m_processor.shutdown()
        self.assertTrue(m_processor.shutting_down)
        for name in services:
            for worker in m_processor.services[name].workers:
                self.assertFalse(worker.is_alive())
Exemple #5
0
    def _initialize_thrift_service(self):
        """ Initialize the thrift server. """
        mux_processor = TMultiplexedProcessor()

        for plugin in thrift_services():
            self._logger.info("Load thrift services %s (num_threads: %d)",
                              plugin.name, plugin.num_threads)
            handler = plugin.handler
            processor = plugin.service.Processor(handler)
            mux_processor.registerProcessor(plugin.name, processor,
                                            plugin.num_threads,
                                            plugin.max_entries)

        transport = TSocket.TServerSocket(port=self._config.host_port)
        protocol_factory = TCompactProtocol.TCompactProtocolFactory()

        server = TNonblockingServer(
            mux_processor, transport, protocol_factory, protocol_factory)
        self._server = server
    def test_registerProcessor(self, worker, queue):
        """
        Test to check the registration of a thrift service processor.
        Validates that the right number of threads are created and that all
        threads created for the same processor share the same synchrnoized
        Queue.
        """
        test_worker = MagicMock()
        worker.return_value = test_worker

        test_queue = MagicMock()
        queue.return_value = test_queue

        m_processor = TMultiplexedProcessor()
        processor = MagicMock()

        num_workers = 2
        service_name = "Fake"
        m_processor.registerProcessor(service_name, processor, num_workers)
        queue.assert_called_once_with()
        self._check_worker_calls(service_name, num_workers, worker, test_queue)

        # Register a second processor and verify that we have a new queue
        # created, and is passed to the number of workers specified.
        num_workers = 3
        queue.reset_mock()
        worker.reset_mock()
        test_queue_1 = MagicMock()
        queue.return_value = test_queue_1
        m_processor = TMultiplexedProcessor()
        processor = MagicMock()

        m_processor.registerProcessor(service_name, processor, num_workers)
        queue.assert_called_once_with()
        self._check_worker_calls(service_name, num_workers, worker,
                                 test_queue_1)
        self.assertEqual(m_processor.services[service_name].processor,
                         processor)
        self.assertEqual(m_processor.services[service_name].name, service_name)
        self.assertEqual(m_processor.services[service_name].queue,
                         test_queue_1)
    def test_registerProcessor(self, worker, queue):
        """
        Test to check the registration of a thrift service processor.
        Validates that the right number of threads are created and that all
        threads created for the same processor share the same synchrnoized
        Queue.
        """
        test_worker = MagicMock()
        worker.return_value = test_worker

        test_queue = MagicMock()
        queue.return_value = test_queue

        m_processor = TMultiplexedProcessor()
        processor = MagicMock()

        num_workers = 2
        service_name = "Fake"
        m_processor.registerProcessor(service_name, processor, num_workers)
        queue.assert_called_once_with()
        self._check_worker_calls(service_name, num_workers, worker, test_queue)

        # Register a second processor and verify that we have a new queue
        # created, and is passed to the number of workers specified.
        num_workers = 3
        queue.reset_mock()
        worker.reset_mock()
        test_queue_1 = MagicMock()
        queue.return_value = test_queue_1
        m_processor = TMultiplexedProcessor()
        processor = MagicMock()

        m_processor.registerProcessor(service_name, processor, num_workers)
        queue.assert_called_once_with()
        self._check_worker_calls(
            service_name, num_workers, worker, test_queue_1)
        self.assertEqual(m_processor.services[service_name].processor,
                         processor)
        self.assertEqual(m_processor.services[service_name].name, service_name)
        self.assertEqual(m_processor.services[service_name].queue,
                         test_queue_1)