
>Mc           @   s  d  Z  e Z d d l Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z m Z m Z d d l m Z d d	 l m Z m Z m Z m Z m Z d d
 l m Z d d l m Z m Z m Z d d l m Z d d l  m! Z! d d l" m# Z# d d l$ m% Z% m& Z& d d l' m( Z( d d l) m* Z* d d l+ m, Z, d e j- d  Z. d e f d     YZ/ d d- d     YZ0 d e1 f d     YZ2 d   Z3 d   Z4 d e1 f d     YZ5 d e& f d      YZ6 d! e f d"     YZ7 d# e& f d$     YZ8 d% e	 f d&     YZ9 d' e	 e, f d(     YZ: d) e f d*     YZ; d+ e	 f d,     YZ< e=   j> e9 j?    e=   j> e: j?    e=   j> e< j?    d S(.   s.   
Tests for implementations of L{IReactorTCP}.
iN(   t
   implements(   t   verifyObject(   t   ReactorBuilder(   t   DNSLookupError(   t   IResolverSimplet
   IConnectort   IReactorFDSet(   t   IPv4Address(   t   Deferredt   DeferredListt   succeedt   failt   maybeDeferred(   t   TCP4ClientEndpoint(   t   ServerFactoryt   ClientFactoryt   Protocol(   t   platform(   t   Failure(   t   log(   t   SkipTestt   TestCase(   t
   Connection(   t   ClosingProtocol(   t   ObjectModelIntegrationMixins	   127.0.0.1c         C   sN   t  j } t  j  | |  } z! | j |  d f  | j   SWd | j   Xd S(   s  
    Ask the platform to allocate a free port on the specified interface,
    then release the socket and return the address which was allocated.

    @param interface: The local address to try to bind the port on.
    @type interface: C{str}

    @param type: The socket type which will use the resulting port.

    @return: A two-tuple of address and port, like that returned by
        L{socket.getsockname}.
    i    N(   t   sockett   AF_INETt   bindt   getsocknamet   close(   t	   interfacet   typet   familyt   probe(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   findFreePort!   s    	t   Stopc           B   s    e  Z d  Z d   Z d   Z RS(   sQ   
    A client factory which stops a reactor when a connection attempt fails.
    c         C   s   | |  _  d  S(   N(   t   reactor(   t   selfR$   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   __init__;   s    c         C   s   |  j  j   d  S(   N(   R$   t   stop(   R%   t	   connectort   reason(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   clientConnectionFailed?   s    (   t   __name__t
   __module__t   __doc__R&   R*   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR#   7   s   	t   FakeResolverc           B   s*   e  Z d  Z e e  d   Z d   Z RS(   sR   
    A resolver implementation based on a C{dict} mapping names to addresses.
    c         C   s   | |  _  d  S(   N(   t   names(   R%   R/   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR&   J   s    c         C   s>   y t  |  j |  SWn" t k
 r9 t t d |   SXd  S(   Ns   FakeResolver couldn't find (   R
   R/   t   KeyErrorR   R   (   R%   t   namet   timeout(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   getHostByNameN   s    (   R+   R,   R-   R    R   R&   R3   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR.   D   s   
	t   _SimplePullProducerc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s   
    A pull producer which writes one byte whenever it is resumed.  For use by
    L{test_unregisterProducerAfterDisconnect}.
    c         C   s   | |  _  d  S(   N(   t   consumer(   R%   R5   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR&   [   s    c         C   s   d  S(   N(    (   R%   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   stopProducing_   s    c         C   s!   t  j d  |  j j d  d  S(   Ns   Producer.resumeProducingt   x(   R   t   msgR5   t   write(   R%   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   resumeProducingc   s    (   R+   R,   R-   R&   R6   R:   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR4   V   s   		c         C   sI   t  j |   r |  j   Sd |  j j k r2 |  j St d |  f   d S(   sV   
    Like L{IReactorFDSet.getWriters}, but with support for IOCP reactor as well.
    t   IOCPs   Cannot find writers on %rN(   R   t
   providedByt
   getWriterst	   __class__R+   t   handlest	   Exception(   R$   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   _getWritersi   s
    
c         C   s   t    } |  | _ | S(   s[   
    Helper function which provides the signature L{ServerFactory} should
    provide.
    (   R   t   protocol(   RB   t   factory(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   serverFactoryForw   s    		t
   FakeSocketc           B   s/   e  Z d  Z d Z d   Z d   Z d   Z RS(   s   
    A Fake Socket object
    i   c         C   s   | |  _  d  S(   N(   t   data(   R%   RF   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR&      s    c         C   s   | |  _  d  S(   N(   t   blocking(   R%   RG   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   setblocking   s    c         C   s   |  j  S(   N(   RF   (   R%   t   size(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   recv   s    (   R+   R,   R-   t   filenoR&   RH   RJ   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRE      s
   		t   TestFakeSocketc           B   s    e  Z d  Z d   Z d   Z RS(   sT   
    Test that the FakeSocket can be used by the doRead method of L{Connection}
    c         C   s0   t  d  } | j d  |  j | j d  d  S(   Nt   someDatai    (   RE   RH   t   assertEqualsRG   (   R%   t   skt(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_blocking   s    c         C   s)   t  d  } |  j | j d  d  d  S(   NRM   i
   (   RE   RN   RJ   (   R%   RO   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt	   test_recv   s    (   R+   R,   R-   RP   RQ   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRL      s   	t   FakeProtocolc           B   s   e  Z d  Z d   Z RS(   sL   
    An L{IProtocol} that returns a value from its dataReceived method.
    c         C   s   d S(   sq   
        Return something other than C{None} to trigger a deprecation warning for
        that behavior.
        (    (    (   R%   RF   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   dataReceived   s    (   R+   R,   R-   RS   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRR      s   t   TCPConnectionTestsc           B   s   e  Z d  Z d   Z RS(   s@   
    Whitebox tests for L{twisted.internet.tcp.Connection}.
    c         C   s   t  d  } t   } t | |  } | j   |  j t j g  } |  j | d d t  |  j | d d d  |  j t |  d  d S(   s   
        When an L{IProtocol} implementation that returns a value from its
        C{dataReceived} method, a deprecated warning is emitted.
        RM   i    t   categoryt   messages   Returning a value other than None from twisted.internet.test.test_tcp.FakeProtocol.dataReceived is deprecated since Twisted 11.0.0.i   N(	   RE   RR   R   t   doReadt   flushWarningsRS   RN   t   DeprecationWarningt   len(   R%   RO   RB   t   connt   warnings(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_doReadWarningIsRaised   s    	
(   R+   R,   R-   R]   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRT      s   t   TCPClientTestsBuilderc           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sG   
    Builder defining tests relating to L{IReactorTCP.connectTCP}.
    c         C   s>   |  j    } | j d d t    } |  j t t |   d S(   sV   
        L{IReactorTCP.connectTCP} returns an object providing L{IConnector}.
        s	   127.0.0.1i  N(   t   buildReactort
   connectTCPR   t
   assertTrueR   R   (   R%   R$   R(   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_interface   s    c         C   sE   t    \ } } |  j   } | j | | t |   |  j |  d S(   sl   
        The reactor can be stopped by a client factory's
        C{clientConnectionFailed} method.
        N(   R"   R_   R`   R#   t
   runReactor(   R%   t   hostt   portR$   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt'   test_clientConnectionFailedStopsReactor   s    c            s#  t    \ } } |  j       j d t t  d | } | j   } i d d 6d d 6 d t f    f d     Y} t    } | | _   j	 d | j   j
 | d d	 | f   j t i d	 d 6  |  j    |  j  d t d
 d	 |   |  j  d t d
 d	 | j
   d S(   s   
        A client's transport's C{getHost} and C{getPeer} return L{IPv4Address}
        instances which give the dotted-quad string form of the local and
        remote endpoints of the connection respectively.
        i    R   Rd   t   peert   CheckAddressc              s   e  Z    f d    Z RS(   c            s.   | j      d <| j     d < j   d  S(   NRd   Rg   (   t   getHostt   getPeerR'   (   R%   t	   transport(   t	   addressesR$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   makeConnection   s    (   R+   R,   Rm   (    (   Rl   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRh      s   t	   localhostt   bindAddresss	   127.0.0.1t   TCPN(   R"   R_   t	   listenTCPRD   R   Ri   t   NoneR#   RB   R`   Re   t   installResolverR.   Rc   t   assertEqualR   (   R%   Rd   Re   t   servert   serverAddressRh   t   clientFactory(    (   R$   Rl   sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_addresses   s(    	c            s   |  j        j d t t   } g   d t f    f d     Y} t    } | | _   j d | j   j |    j	   |  j
   d S(   s   
        This test checks that we correctly get notifications event for a
        client. This ought to prevent a regression under Windows using the GTK2
        reactor. See #3925.
        i    t   CheckConnectionc              s   e  Z    f d    Z RS(   c            s     j  |    j   d  S(   N(   t   appendR'   (   R%   (   t	   connectedR$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   connectionMade  s    (   R+   R,   R|   (    (   R{   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRy     s   s	   127.0.0.1N(   R_   Rq   RD   R   R#   RB   R`   Ri   Re   t   runRa   (   R%   Ru   Ry   Rw   (    (   R$   R{   sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_connectEvent  s    	
c            s   |  j        j d t t   } t     j t j   j   f d    g   d t	 f     f d     Y} t
   } | | _   j d | j   j |  |  j    |  j  d d  d S(   sY  
        If a producer is unregistered from a L{ITCPTransport} provider after the
        transport has been disconnected (by the peer) and after
        L{ITCPTransport.loseConnection} has been called, the transport is not
        re-added to the reactor as a writer as would be necessary if the
        transport were still connected.
        i    c            s
     j    S(   N(   R'   (   t   ign(   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   <lambda>,  s    t   ClientProtocolc              s5   e  Z d  Z d   Z     f d   Z d   Z RS(   s   
            Protocol to connect, register a producer, try to lose the
            connection, wait for the server to disconnect from us, and
            then unregister the producer.
            c         S   s:   t  j d  |  j j t |  j  t  |  j j   d  S(   Ns   ClientProtocol.connectionMade(   R   R8   Rk   t   registerProducerR4   t   Falset   loseConnection(   R%   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR|   6  s    	c            sD   t  j d  |  j    j |  j t    k   j d   d  S(   Ns   ClientProtocol.connectionLost(   R   R8   t
   unregisterRz   Rk   RA   t   callbackRr   (   R%   R)   (   R$   t   finishedt   writing(    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   connectionLost<  s    
c         S   s   t  j d  |  j j   d  S(   Ns   ClientProtocol unregister(   R   R8   Rk   t   unregisterProducer(   R%   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR   B  s    (   R+   R,   R-   R|   R   R   (    (   R$   R   R   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR   0  s   	s	   127.0.0.1s/   Transport was writing after unregisterProducer.N(   R_   Rq   RD   R   R   t
   addErrbackR   t   errt   addCallbackR   R   RB   R`   Ri   Re   Rc   t   assertFalse(   R%   Re   R   Rw   (    (   R$   R   R   sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt&   test_unregisterProducerAfterDisconnect  s    	"		c            s  |  j      d d g }   j j } | | k rK t j   rK t d   n  d d d     Y   j d t t   } t	     j
 t j   j   f d    d t f     f d	     Y} t   } | | _   j d
 | j   j |  |  j    d S(   s   
        If L{ITCPTransport.loseConnection} is called while a producer
        is registered with the transport, the connection is closed
        after the producer is unregistered.
        t   Glib2Reactort   Gtk2Reactors=   A pygobject/pygtk bug disables this functionality on Windows.t   Producerc           B   s   e  Z d    Z RS(   c         S   s   t  j d  d  S(   Ns   Producer.resumeProducing(   R   R8   (   R%   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR:   a  s    (   R+   R,   R:   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR   `  s   i    c            s
     j    S(   N(   R'   (   R   (   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR   h  s    R   c              sA   e  Z d  Z    f d   Z    f d   Z  f d   Z RS(   s   
            Protocol to connect, register a producer, try to lose the
            connection, unregister the producer, and wait for the connection to
            actually be lost.
            c            sP   t  j d  |  j j     t  |  j j    j d  j d |  j  d  S(   Ns   ClientProtocol.connectionMadei    (   R   R8   Rk   R   R   R   t	   callLaterR   (   R%   (   R   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR|   p  s    c            s@   t  j d  |  j j    j d   j t t d    d  S(   Ns   ClientProtocol unregisterg      ?s   Connection was not lost(   R   R8   Rk   R   R   t   errbackR   R@   (   R%   (   R   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR   z  s
    	c            s   t  j d    j d   d  S(   Ns   ClientProtocol.connectionLost(   R   R8   R   Rr   (   R%   R)   (   R   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s    (   R+   R,   R-   R|   R   R   (    (   R$   R   R   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR   j  s   

s	   127.0.0.1N(    (   R_   R>   R+   R   t	   isWindowsR   Rq   RD   R   R   R   R   R   R   R   RB   R`   Ri   Re   Rc   (   R%   t   skippedReactorst   reactorClassNameRe   R   Rw   (    (   R$   R   R   sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_disconnectWhileProducingN  s     	"		(	   R+   R,   R-   Rb   Rf   Rx   R~   R   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR^      s   				%		/t   TCPPortTestsBuilderc           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s,   
    Tests for L{IReactorRCP.listenTCP}
    c         C   s   | j  d t    S(   s/   
        Get a TCP port from a reactor
        i    (   Rq   R   (   R%   R$   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   getListeningPort  s    c         C   s   d | j    j f S(   sI   
        Get the expected connection lost message for a TCP port
        s   (TCP Port %s Closed)(   Ri   Re   (   R%   Re   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   getExpectedConnectionLostLogMsg  s    c            s   g      f d    |  j     |  j    |  j   } t j     f d       f d   }  j |   j   |  j |    d S(   s   
        When a connection is lost, an informative message should be logged
        (see L{getExpectedConnectionLostLogMsg}): an address identifying
        the port and the fact that it was closed.
        c            s     j  t j |    d  S(   N(   Rz   R   t   textFromEventDict(   t	   eventDict(   t   loggedMessages(    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   logConnectionLostMsg  s    c            s   t  j     j   d  S(   N(   R   t   removeObserverR'   (   t   ignored(   R   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   stopReactor  s    c              s'   t  j   t   j  j   d  S(   N(   R   t   addObserverR   t   stopListeningR   (    (   t   pR   R   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   doStopListening  s    N(   R_   R   R   R   R   t   callWhenRunningR}   t   assertIn(   R%   t   expectedMessageR   (    (   R   R   R$   R   R   sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_connectionLostLogMsg  s    
c         C   s,   |  j    } |  j |  } |  j |  d S(   sz   
        The L{IListeningPort} object is an instance of a class with no
        classic classes in its hierarchy.
        N(   R_   R   t   assertFullyNewStyle(   R%   R$   Re   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_allNewStyle  s    (   R+   R,   R-   R   R   R   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s
   			t   StopStartReadingProtocolc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   sD   
    Protocol that pauses and resumes the transport a few times
    c         C   s   d |  _  |  j d  d  S(   Nt    i   (   RF   t   pauseResumeProducing(   R%   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR|     s    	c         C   si   |  j  j   |  j  j   | rC |  j j j d |  j | d  n" |  j j j d |  j j j |   d S(   s?   
        Toggle transport read state, then count down.
        i    i   N(	   Rk   t   pauseProducingR:   RC   R$   R   R   t   readyR   (   R%   t   counter(    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s    c         C   sW   t  j d t |   |  j | 7_ t |  j  d k rS |  j j j |  j  n  d  S(   Ns   got datai   i   i @  (   R   R8   RZ   RF   RC   R'   R   (   R%   RF   (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyRS     s    (   R+   R,   R-   R|   R   RS   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s   		t   TCPConnectionTestsBuilderc           B   s   e  Z d  Z d   Z RS(   sP   
    Builder defining tests relating to L{twisted.internet.tcp.Connection}.
    c   	         s#  t      j      _ d d g }   j j } | | k r[ t j   r[ t d   n  t  _	 t
    _ t
    _   j d   } | j   j }      f d   }  f d    t   d |  } t   } t | _	 t | j |   j g  j | |  }  j    | S(   st   
        This test verifies transport socket read state after multiple
        pause/resumeProducing calls.
        R   R   s.   This test is broken on gtk/glib under Windows.i    c            s    j  |  d   j  |  d  |  d d |  d d f }  |  d j j d d d d	   j j  |  |  j   f d    S(
   sL   
            Send several IOCPReactor's buffers' worth of data.
            i    i   R7   i   i   t   yc            s
     j    S(   N(   R'   (   R   (   R$   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s    i    i    (   Ra   Rk   R9   R'   R   (   t   protosRe   (   R$   R%   t   sft   cleanup(    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   proceed  s     c            s[     j  |  d d d d	 d  t t | d j j  t | d j j  t | j  g  S(
   s   
            Make sure IOCPReactor didn't start several WSARecv operations
            that clobbered each other's results.
            R7   i   i   R   s   did not get the right datai    i   i    i    (   RN   R	   R   Rk   R   R   (   RF   R   Re   (   R%   (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s    s	   127.0.0.1(   R   R_   R$   R>   R+   R   R   R   R   RB   R   R   R'   Rq   Ri   Re   R   R   R   R	   t   connectR   Rc   (	   R%   R   R   R   Re   R   t   cct   cft   d(    (   R$   R%   R   R   sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   test_stopStartReading  s(    				*(   R+   R,   R-   R   (    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyR     s   (    (@   R-   R   t   __metaclass__R   t   zope.interfaceR    t   zope.interface.verifyR   t#   twisted.internet.test.reactormixinsR   t   twisted.internet.errorR   t   twisted.internet.interfacesR   R   R   t   twisted.internet.addressR   t   twisted.internet.deferR   R	   R
   R   R   t   twisted.internet.endpointsR   t   twisted.internet.protocolR   R   R   t   twisted.python.runtimeR   t   twisted.python.failureR   t   twisted.pythonR   t   twisted.trial.unittestR   R   t   twisted.internet.tcpR   t   twisted.test.test_tcpR   t   twisted.internet.test.test_coreR   t   SOCK_STREAMR"   R#   R.   t   objectR4   RA   RD   RE   RL   RR   RT   R^   R   R   R   t   globalst   updatet   makeTestCaseClasses(    (    (    sB   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_tcp.pyt   <module>   sF   (		
<7