'Helper method to run TLS tests.
@param clientProto: protocol instance attached to the client
connection.
@param serverProto: protocol instance attached to the server
connection.
@param clientIsServer: flag indicated if client should initiate
startTLS instead of server.
@return: a L{defer.Deferred} that will fire when both connections are
lost.'

def _runTest(self, clientProto, serverProto, clientIsServer=False):

    self.clientProto = clientProto
    cf = self.clientFactory = protocol.ClientFactory()
    cf.protocol = (lambda : clientProto)
    if clientIsServer:
        cf.server = False
    else:
        cf.client = True
    self.serverProto = serverProto
    sf = self.serverFactory = protocol.ServerFactory()
    sf.protocol = (lambda : serverProto)
    if clientIsServer:
        sf.client = False
    else:
        sf.server = True
    port = reactor.listenTCP(0, sf, interface='127.0.0.1')
    self.addCleanup(port.stopListening)
    reactor.connectTCP('127.0.0.1', port.getHost().port, cf)
    return defer.gatherResults([clientProto.deferred, serverProto.deferred])
