'L{IReactorTCP.connectTCP} accepts the name of a service instead of a
port number and connects to the port number associated with that
service, as defined by L{socket.getservbyname}.'

def test_connectByService(self):

    serverFactory = MyServerFactory()
    serverConnMade = defer.Deferred()
    serverFactory.protocolConnectionMade = serverConnMade
    port = reactor.listenTCP(0, serverFactory, interface='127.0.0.1')
    self.addCleanup(port.stopListening)
    portNumber = port.getHost().port
    clientFactory = MyClientFactory()
    clientConnMade = defer.Deferred()
    clientFactory.protocolConnectionMade = clientConnMade
    def fakeGetServicePortByName(serviceName, protocolName):
        if ((serviceName == 'http') and (protocolName == 'tcp')):
            return portNumber
        return 10
    self.patch(socket, 'getservbyname', fakeGetServicePortByName)
    reactor.connectTCP('127.0.0.1', 'http', clientFactory)
    connMade = defer.gatherResults([serverConnMade, clientConnMade])
    def connected(result):
        (serverProtocol, clientProtocol) = result
        self.assertTrue(serverFactory.called, 'Server    factory    was    not    called    upon    to    build    a    protocol.')
        serverProtocol.transport.loseConnection()
        clientProtocol.transport.loseConnection()
    connMade.addCallback(connected)
    return connMade
