Twisted Daemon Unittest - PullRequest
       22

Twisted Daemon Unittest

1 голос
/ 09 ноября 2010

Я начал работу над проектом клиент / сервер, используя Twisted (я новичок, поэтому опыта не так много).Вероятно, я все настроил неправильно, потому что теперь я немного застрял на сервере Daemon (используя twistd --python для его запуска).

Интересно, придется ли мне повторно реализовывать сервер как стандартный процесс, чтобы использовать его в моем модуле unittest?

Вот часть кода, позволяющая запустить сервер в качестве демонав модуле сервера (вы, вероятно, узнаете часть статей krondo в этом):

class TwistedHawkService(service.Service):
    def startService(self):
        ''''''
        service.Service.startService(self)
        log.msg('TwistedHawkService running ...')


# Configuration
port = 10000
iface = 'localhost'

topService = service.MultiService()

thService = TwistedHawkService()
thService.setServiceParent(topService)

factory = ReceiverFactory(thService)

tcpService = internet.TCPServer(port, factory, interface=iface)
tcpService.setServiceParent(topService)

application = service.Application("TwistedHawkService")

topService.setServiceParent(application)

Я попытался скопировать / вставить часть конфигурации в методе setUp:

from mfxTwistedHawk.client import mfxTHClient
from mfxTwistedHawk.server import mfxTHServer


class RequestTestCase(TestCase):
    def setUp(self):
        # Configuration
        port = 10000
        iface = 'localhost'

        self.topService = service.MultiService()

        thService = mfxTHServer.TwistedHawkService()
        thService.setServiceParent(self.topService)

        factory = mfxTHServer.ReceiverFactory(thService)

        tcpService = internet.TCPServer(port, factory, interface=iface)
        tcpService.setServiceParent(self.topService)

        application = service.Application("TwistedHawkService")

        self.topService.setServiceParent(application)

    def test_connection(self):
        mfxTHClient.requestMain('someRequest')

... но, конечно, использование trial unittest.py не запускает демона, поэтому мой клиент не может его достать.

Любой советКак настроить все это будет оценено.

Спасибо!

Редактировать: Удалось сделать так, чтобы все работало с этим и с этим , но все еще чувствовать себя неувереннообо всем этом:

def setUp(self):
    # Configuration
    port = 10000
    iface = 'localhost'

    service = mfxTHServer.TwistedHawkService()
    factory = mfxTHServer.ReceiverFactory(service)
    self.server = reactor.listenTCP(port, factory, interface=iface)

Можно ли иметь реализацию демона для производства и стандартный процесс для unittest?

1 Ответ

0 голосов
/ 09 ноября 2010

Можно ли иметь реализацию демона для производства и стандартный процесс для unittest?

Ваш модульный тест не предназначен для функциональности демонизации в Twisted. Это для пользовательского приложения / протокола / сервера / любой другой функциональности, которую вы реализовали. В общем, в модульном тесте вы хотите использовать как можно меньший код . В общем, вполне нормально и даже предпочтительнее, чтобы ваши юнит-тесты не демонизировались. На самом деле, вы, вероятно, захотите написать некоторые модульные тесты, которые даже не слушают настоящий порт TCP, а просто вызывают методы для вашей службы, фабрики и классов протоколов.

...