m
fIc           @   sP  d  k  Z  d k l Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k	 Z	 d k
 l Z d a d Z d Z d e  i f d     YZ d e  i f d	     YZ d
 f  d     YZ d e e f d     YZ d e e f d     YZ d e f d     YZ d e  i e f d     YZ d e  i f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d  e f d!     YZ d" e f d#     YZ d$ e f d%     YZ d& e f d'     YZ  d( e f d)     YZ! d* e  i f d+     YZ" d,   Z# e$ d- j o e#   n d  S(.   N(   s   test_support(   s   proxyiW  t	   localhosts   Michael Gilfix was here
t   SocketTCPTestc           B   s   t  Z d   Z d   Z RS(   Nc         C   sc   t  i  t  i t  i  |  _ |  i i t  i t  i d  t i	 |  i t
 t  a |  i i d  d  S(   Ni   (   t   sockett   AF_INETt   SOCK_STREAMt   selft   servt
   setsockoptt
   SOL_SOCKETt   SO_REUSEADDRt   test_supportt	   bind_portt   HOSTt   PORTt   listen(   R   (    (    t-   /mit/python/lib/python2.4/test/test_socket.pyt   setUp   s
     c         C   s   |  i i   d  |  _ d  S(   N(   R   R   t   closet   None(   R   (    (    R   t   tearDown   s    (   t   __name__t
   __module__R   R   (    (    (    R   R      s   	t   SocketUDPTestc           B   s   t  Z d   Z d   Z RS(   Nc         C   sS   t  i  t  i t  i  |  _ |  i i t  i t  i d  t i	 |  i t
 t  a d  S(   Ni   (   R   R   t
   SOCK_DGRAMR   R   R   R   R	   R
   R   R   R   (   R   (    (    R   R   !   s     c         C   s   |  i i   d  |  _ d  S(   N(   R   R   R   R   (   R   (    (    R   R   '   s    (   R   R   R   R   (    (    (    R   R      s   	t   ThreadableTestc           B   sM   t  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s  Threadable Test class

    The ThreadableTest class makes it easy to create a threaded
    client/server pair from an existing unit test. To create a
    new threaded class from an existing unit test, use multiple
    inheritance:

        class NewClass (OldClass, ThreadableTest):
            pass

    This class defines two new fixture functions with obvious
    purposes for overriding:

        clientSetUp ()
        clientTearDown ()

    Any new test functions within the class must then define
    tests in pairs, where the test name is preceeded with a
    '_' to indicate the client portion of the test. Ex:

        def testFoo(self):
            # Server portion

        def _testFoo(self):
            # Client portion

    Any exceptions raised by the clients during their tests
    are caught and transferred to the main thread to alert
    the testing framework.

    Note, the server setup function cannot call any blocking
    functions that rely on the client thread during setup,
    unless serverExplicityReady() is called just before
    the blocking call (such as in setting up a client/server
    connection and performing the accept() in setUp().
    c         C   s4   |  i |  _ |  i |  _ |  i |  _ |  i |  _ d  S(   N(   R   R   t   _ThreadableTest__setUpR   t   _ThreadableTest__tearDownt   _setUpt	   _tearDown(   R   (    (    R   t   __init__Q   s    c         C   s   |  i i   d S(   s   This method allows the server to explicitly indicate that
        it wants the client thread to proceed. This is useful if the
        server is about to execute a blocking routine that is
        dependent upon the client thread during its setup routine.N(   R   t   server_readyt   set(   R   (    (    R   t   serverExplicitReadyX   s     c         C   s   t  i   |  _ t  i   |  _ t  i   |  _ t i d  |  _ |  i   } | i
 d  } | | d } t |  d |  } t i |  i | f  |  _ |  i   |  i i   p |  i i   n |  i i   d  S(   Ni   t   .t   _(   t	   threadingt   EventR   R   t   client_readyt   donet   Queuet   queuet   idt
   methodnamet   rfindt   it   getattrt   test_methodt   threadt   start_new_threadt	   clientRunt   client_threadR   t   isSetR   t   wait(   R   R*   R,   R.   (    (    R   R   _   s    
c         C   sK   |  i   |  i i   |  i i   p  |  i i   } |  i |  n d  S(   N(	   R   R   R&   R4   R(   t   emptyt   gett   msgt   fail(   R   R7   (    (    R   R   r   s
    
c         C   s   |  i i   |  i i   |  i   t |  p t d  n y |   Wn% t	 j
 o } |  i i |  n X|  i   d  S(   Ns%   test_func must be a callable function(   R   R   R4   R%   R   t   clientSetUpt   callablet	   test_funct	   TypeErrort	   Exceptiont   strerrorR(   t   putt   clientTearDown(   R   R;   R>   (    (    R   R1   z   s    
c         C   s   t  d  d  S(   Ns    clientSetUp must be implemented.(   t   NotImplementedError(   R   (    (    R   R9      s    c         C   s   |  i i   t i   d  S(   N(   R   R&   R   R/   t   exit(   R   (    (    R   R@      s    (
   R   R   t   __doc__R   R    R   R   R1   R9   R@   (    (    (    R   R   +   s   $ 						t   ThreadedTCPSocketTestc           B   s&   t  Z d d  Z d   Z d   Z RS(   Nt   runTestc         C   s$   t  i |  d | t i |   d  S(   Nt
   methodName(   R   R   R   RF   R   (   R   RF   (    (    R   R      s    c         C   s   t  i  t  i t  i  |  _ d  S(   N(   R   R   R   R   t   cli(   R   (    (    R   R9      s    c         C   s'   |  i i   d  |  _ t i |   d  S(   N(   R   RG   R   R   R   R@   (   R   (    (    R   R@      s    	(   R   R   R   R9   R@   (    (    (    R   RD      s   	t   ThreadedUDPSocketTestc           B   s   t  Z d d  Z d   Z RS(   NRE   c         C   s$   t  i |  d | t i |   d  S(   NRF   (   R   R   R   RF   R   (   R   RF   (    (    R   R      s    c         C   s   t  i  t  i t  i  |  _ d  S(   N(   R   R   R   R   RG   (   R   (    (    R   R9      s    (   R   R   R   R9   (    (    (    R   RH      s   t   SocketConnectedTestc           B   s8   t  Z d d  Z d   Z d   Z d   Z d   Z RS(   NRE   c         C   s   t  i |  d | d  S(   NRF   (   RD   R   R   RF   (   R   RF   (    (    R   R      s    c         C   s9   t  i |   |  i   |  i i   \ } } | |  _ d  S(   N(	   RD   R   R   R    R   t   acceptt   connt   addrt   cli_conn(   R   RK   RL   (    (    R   R      s    
c         C   s'   |  i i   d  |  _ t i |   d  S(   N(   R   RM   R   R   RD   R   (   R   (    (    R   R      s    	c         C   s3   t  i |   |  i i t t f  |  i |  _ d  S(   N(   RD   R9   R   RG   t   connectR   R   t	   serv_conn(   R   (    (    R   R9      s    c         C   s'   |  i i   d  |  _ t i |   d  S(   N(   R   RO   R   R   RD   R@   (   R   (    (    R   R@      s    	(   R   R   R   R   R   R9   R@   (    (    (    R   RI      s
   			t   SocketPairTestc           B   s8   t  Z d d  Z d   Z d   Z d   Z d   Z RS(   NRE   c         C   s'   t  i i |  d | t i |   d  S(   NRF   (   t   unittestt   TestCaseR   R   RF   R   (   R   RF   (    (    R   R      s    c         C   s   t  i   \ |  _ |  _ d  S(   N(   R   t
   socketpairR   R   RG   (   R   (    (    R   R      s    c         C   s   |  i i   d  |  _ d  S(   N(   R   R   R   R   (   R   (    (    R   R      s    c         C   s   d  S(   N(    (   R   (    (    R   R9      s    c         C   s'   |  i i   d  |  _ t i |   d  S(   N(   R   RG   R   R   R   R@   (   R   (    (    R   R@      s    	(   R   R   R   R   R   R9   R@   (    (    (    R   RP      s
   			t   GeneralModuleTestsc           B   s   t  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   Nc         C   s   t  i  t  i t  i  } t |  } |  i | i   | i    | i	   d  } y | i   Wn t j
 o n X|  i d  d  S(   Ns   Socket proxy still exists(   R   R   R   t   st   proxyt   pR   t   assertEqualt   filenoR   R   t   ReferenceErrorR8   (   R   RW   RU   (    (    R   t   test_weakref   s    
c         C   sa   d   } d   } d   } |  i t i | d  |  i t i | d  |  i t i | d  d  S(   Nc          O   s   t  i  d  S(   N(   R   t   error(   t   argst   kwargs(    (    R   t   raise_error   s    c          O   s   t  i  d  S(   N(   R   t   herror(   R]   R^   (    (    R   t   raise_herror   s    c          O   s   t  i  d  S(   N(   R   t   gaierror(   R]   R^   (    (    R   t   raise_gaierror   s    s   Error raising socket exception.(   R_   Ra   Rc   R   t   failUnlessRaisesR   R\   (   R   R_   Ra   Rc   (    (    R   t   testSocketError   s    			c         C   s<   t  i t  i t  i t  i t  i t  i t  i t  i d  S(   N(	   R   R   R   R   t   SOCK_RAWt   SOCK_RDMt   SOCK_SEQPACKETR   R	   (   R   (    (    R   t   testCrucialConstants   s    c         C   s   t  i   } y t  i |  } Wn t  i j
 o d  Sn X|  i | i d  d j d  y t  i	 |  \ } } } Wn t  i j
 o d  Sn X| | g | } t  i |  } | | j o |  i d  n d  S(   NR!   i    s   Error resolving host to ip.s)   Error testing host resolution mechanisms.(   R   t   gethostnamet   hostnamet   gethostbynamet   ipR\   R   t   assert_t   findt   gethostbyaddrt   hnamet   aliasest   ipaddrst   all_host_namest   getfqdnt   fqhnR8   (   R   Rm   Rk   Rq   Rt   Rv   Rs   Rr   (    (    R   t   testHostnameRes  s    		c         C   s   d  k  } t | d  od y# | i t  } t i t d  Wq} t j
 o. | i t  | j o |  i	 d  qy q} Xn d  S(   Nt   getrefcounti    s$   socket.getnameinfo loses a reference(
   t   syst   hasattrRx   R   t   origR   t   getnameinfot   SystemErrorR   R8   (   R   Ry   R{   (    (    R   t   testRefCountGetNameInfo  s    	c         C   s1   y t  i d d  Wn t  i j
 o n Xd  S(   Nt   xi    (   R   i    i    i    (   R   R|   R\   (   R   (    (    R   t   testInterpreterCrash!  s    c         C   s   h  t  i d <t  i d <t  i d <t  i d <} x | i   D] \ } } d | >d } x6 d D]. } |  i | | @| | | | @  | @ qd W| |  } |  i | | @|  |  i t | d d > qC Wd  S(   Ni    i   l    i   i    i  i  i   igE#i2Tvi"   (   i    i   i  i  i   igE#i2Tv(   R   t   htonlt   ntohlt   htonst   ntohst   sizest   itemst   funct   sizet   maskR,   R   RX   t   swappedt   assertRaisest   OverflowError(   R   R   R,   R   R   R   R   (    (    R   t   testNtoH)  s    6  ,c         C   s.  |  i } t i d j o
 d } n d } xG | D]6 } y t i | d
  } PWq0 t i
 j
 o q0 Xq0 Wt i
  t i |  } | | |  y t i | d  } Wn t i
 j
 o d  } n X| | |  | t i |  |  | t i | d
  |  | d  j	 o | t i | d  |  n d  S(   Nt   linux2t   freebsd4t   freebsd5t   freebsd6t   darwint   daytimet   qotdt   domaint   echot   tcpt   udp(   R   R   R   R   s   darwin(   R   R   R   (   R   R   R   (   R   RX   t   eqRy   t   platformt   servicest   serviceR   t   getservbynamet   portR\   t   port2t   udpportR   t   getservbyport(   R   R   R   R   R   R   R   (    (    R   t   testGetServBy7  s.    	
 		c         C   s  |  i t i   d   t i   } |  i | i   d   | i   t i d  |  i t i   d  t i   } |  i | i   d  | i   t i d   |  i t i   d   t i   } |  i | i   d   | i   |  i	 t
 t i d  |  i	 t t i d  d  S(   Ni
   it   spam(   R   RX   R   t   getdefaulttimeoutR   RU   t
   gettimeoutR   t   setdefaulttimeoutR   t
   ValueErrorR<   (   R   RU   (    (    R   t   testDefaultTimeout[  s     


c            s
  t  t d  p d  Sn d k l } l  l      d   } |  i d | d   |  i d | d   |  i d | d	   |  i d
 | d   |  i d | d   |  i d | d   |  i d | d   |  i d | d	   |  i d | d   d  S(   Nt	   inet_pton(   s	   inet_atons	   inet_ptons   AF_INETc            s      |   S(   N(   R   R   t   a(   R   (   R   R   (    R   t   <lambda>{  s    t       s   0.0.0.0s     s   255.0.255.0s   s   170.170.170.170s   s   1.2.3.4s   s   255.255.255.255(	   Rz   R   t	   inet_atont   fR   R   t   gR   t   assertEquals(   R   R   R   R   R   (    (   R   R   R   t   testIPv4toStringw  s    c            s   t  t d  p d  Sn y, d k l  l   l } | p d  Sn Wn t j
 o d  Sn X   d   } |  i d d | d   |  i d d | d   |  i d d d	 | d
   |  i d | d   d  S(   NR   (   s	   inet_ptons   AF_INET6s   has_ipv6c            s      |   S(   N(   R   t   AF_INET6R   (   R   (   R   R   (    R   R     s    t    i   s   ::s   0::0t    i   s   1::s   Ev V$s$   45ef:76cb:1a:56ef:afeb:bac:1924:aeae(	   Rz   R   R   R   t   has_ipv6t   ImportErrorR   R   R   (   R   R   R   R   R   (    (   R   R   R   t   testIPv6toString  s    		c            s   t  t d  p d  Sn d k l } l   l     d   } |  i d | d   |  i d | d   |  i d | d	   |  i d
 | d   |  i d | d   |  i d | d   |  i d | d	   d  S(   Nt	   inet_ntop(   s	   inet_ntoas	   inet_ntops   AF_INETc            s      |   S(   N(   R   R   R   (   R   (   R   R   (    R   R     s    s   1.0.1.0s     s   170.85.170.85s   UUs   255.255.255.255s   s   1.2.3.4s   (	   Rz   R   t	   inet_ntoaR   R   R   R   R   R   (   R   R   R   R   R   (    (   R   R   R   t   testStringToIPv4  s    c            s   t  t d  p d  Sn y, d k l  l   l } | p d  Sn Wn t j
 o d  Sn X   d   } |  i d | d d   |  i d | d d d	   |  i d
 | d   d  S(   NR   (   s	   inet_ntops   AF_INET6s   has_ipv6c            s      |   S(   N(   R   R   R   (   R   (   R   R   (    R   R     s    s   ::R   i   s   ::1i   s   s!   aef:b01:506:1001:ffff:9997:55:170s   
 Up(	   Rz   R   R   R   R   R   R   R   R   (   R   R   R   R   R   (    (   R   R   R   t   testStringToIPv6  s    		c         C   sY   t  i  t  i t  i  } | i d t d f  | i   } |  i	 | d t d f  d  S(   Ns   0.0.0.0i   (
   R   R   R   t   sockt   bindR   t   getsocknamet   nameR   RX   (   R   R   R   (    (    R   t   testSockName  s    c         C   sJ   t  i  t  i t  i  } | i t  i t  i  } |  i	 | d j d  d  S(   Ni    s   initial mode is reuse(
   R   R   R   R   t
   getsockoptR   R	   t   reuseR   t   failIf(   R   R   R   (    (    R   t   testGetSockOpt  s    c         C   sc   t  i  t  i t  i  } | i t  i t  i d  | i t  i t  i  } |  i
 | d j d  d  S(   Ni   i    s   failed to set reuse mode(   R   R   R   R   R   R   R	   R   R   R   R   (   R   R   R   (    (    R   t   testSetSockOpt  s    c         C   sL   t  i  t  i t  i  } | i d  | i   |  i t  i | i	 d  d  S(   Ni   R   (
   R   R   R   R   t
   settimeoutR   R   R   R\   t   send(   R   R   (    (    R   t   testSendAfterClose  s    
(   R   R   R[   Re   Ri   Rw   R~   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    R   RT      s"   								$								t   BasicTCPTestc           B   s   t  Z d d  Z d   Z d   Z d   Z d   Z d   Z d   Z d	   Z	 d
   Z
 d   Z d   Z d   Z d   Z d   Z d   Z RS(   NRE   c         C   s   t  i |  d | d  S(   NRF   (   RI   R   R   RF   (   R   RF   (    (    R   R     s    c         C   s&   |  i i d  } |  i | t  d  S(   Ni   (   R   RM   t   recvR7   RX   t   MSG(   R   R7   (    (    R   t   testRecv  s    c         C   s   |  i i t  d  S(   N(   R   RO   R   R   (   R   (    (    R   t	   _testRecv  s    c         C   sL   |  i i t t  d  } |  i i d  } | | } |  i | t  d  S(   Ni   i   (	   R   RM   R   t   lenR   t   seg1t   seg2R7   RX   (   R   R   R   R7   (    (    R   t   testOverFlowRecv  s    
c         C   s   |  i i t  d  S(   N(   R   RO   R   R   (   R   (    (    R   t   _testOverFlowRecv  s    c         C   s,   |  i i d  \ } } |  i | t  d  S(   Ni   (   R   RM   t   recvfromR7   RL   RX   R   (   R   R7   RL   (    (    R   t   testRecvFrom  s    c         C   s   |  i i t  d  S(   N(   R   RO   R   R   (   R   (    (    R   t   _testRecvFrom  s    c         C   sX   |  i i t t  d  \ } } |  i i d  \ } } | | } |  i	 | t  d  S(   Ni   i   (
   R   RM   R   R   R   R   RL   R   R7   RX   (   R   RL   R   R   R7   (    (    R   t   testOverFlowRecvFrom  s    "
c         C   s   |  i i t  d  S(   N(   R   RO   R   R   (   R   (    (    R   t   _testOverFlowRecvFrom   s    c         C   sN   d } x- |  i i d  } | p Pn | | 7} q	 W|  i | d d  d  S(   Nt    i   i   R   i   (   R7   R   RM   R   t   readRX   (   R   R7   R   (    (    R   t   testSendAll  s      c         C   s   d d } |  i i |  d  S(   NR   i   (   t	   big_chunkR   RO   t   sendall(   R   R   (    (    R   t   _testSendAll  s    
c         C   se   t  t d  p d  Sn |  i i   } t i | t i t i  } | i
 d  } |  i | t  d  S(   Nt   fromfdi   (   Rz   R   R   RM   RY   t   fdR   R   R   R   R   R7   RX   R   (   R   R   R   R7   (    (    R   t
   testFromFd  s    c         C   s   |  i i t  d  S(   N(   R   RO   R   R   (   R   (    (    R   t   _testFromFd  s    c         C   s&   |  i i d  } |  i | t  d  S(   Ni   (   R   RM   R   R7   RX   R   (   R   R7   (    (    R   t   testShutdown  s    c         C   s$   |  i i t  |  i i d  d  S(   Ni   (   R   RO   R   R   t   shutdown(   R   (    (    R   t   _testShutdown"  s    (   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    R   R     s   									
					t   BasicUDPTestc           B   s8   t  Z d d  Z d   Z d   Z d   Z d   Z RS(   NRE   c         C   s   t  i |  d | d  S(   NRF   (   RH   R   R   RF   (   R   RF   (    (    R   R   (  s    c         C   s,   |  i i t t   } |  i | t  d  S(   N(   R   R   R   R   R   R7   RX   (   R   R7   (    (    R   t   testSendtoAndRecv+  s    c         C   s    |  i i t d t t f  d  S(   Ni    (   R   RG   t   sendtoR   R   R   (   R   (    (    R   t   _testSendtoAndRecv0  s    c         C   s2   |  i i t t   \ } } |  i | t  d  S(   N(   R   R   R   R   R   R7   RL   RX   (   R   R7   RL   (    (    R   R   3  s    c         C   s    |  i i t d t t f  d  S(   Ni    (   R   RG   R   R   R   R   (   R   (    (    R   R   8  s    (   R   R   R   R   R   R   R   (    (    (    R   R   &  s
   			t   BasicSocketPairTestc           B   s8   t  Z d d  Z d   Z d   Z d   Z d   Z RS(   NRE   c         C   s   t  i |  d | d  S(   NRF   (   RP   R   R   RF   (   R   RF   (    (    R   R   =  s    c         C   s&   |  i i d  } |  i | t  d  S(   Ni   (   R   R   R   R7   RX   R   (   R   R7   (    (    R   R   @  s    c         C   s   |  i i t  d  S(   N(   R   RG   R   R   (   R   (    (    R   R   D  s    c         C   s   |  i i t  d  S(   N(   R   R   R   R   (   R   (    (    R   t   testSendG  s    c         C   s&   |  i i d  } |  i | t  d  S(   Ni   (   R   RG   R   R7   RX   R   (   R   R7   (    (    R   t	   _testSendJ  s    (   R   R   R   R   R   R   R   (    (    (    R   R   ;  s
   			t   NonBlockingTCPTestsc           B   s\   t  Z d d  Z d   Z d   Z d   Z d   Z d   Z d   Z d	   Z	 d
   Z
 RS(   NRE   c         C   s   t  i |  d | d  S(   NRF   (   RD   R   R   RF   (   R   RF   (    (    R   R   P  s    c         C   sp   |  i i d  t i   } y |  i i   Wn t i j
 o n Xt i   } |  i	 | | d j  d  d  S(   Ni    f1.0s    Error setting non-blocking mode.(
   R   R   t   setblockingt   timet   startRJ   R   R\   t   endRn   (   R   R   R   (    (    R   t   testSetBlockingS  s    c         C   s   d  S(   N(    (   R   (    (    R   t   _testSetBlocking^  s    c         C   s   |  i i d  y |  i i   \ } } Wn t i j
 o n X|  i d  t	 i	 |  i g g  g   \ } } } |  i | j o |  i i   \ } } n |  i d  d  S(   Ni    s'   Error trying to do non-blocking accept.s'   Error trying to do accept after select.(   R   R   R   RJ   RK   RL   R   R\   R8   t   selectR   t   writet   err(   R   RL   R   R   R   RK   (    (    R   t
   testAccepta  s    $c         C   s'   t  i d  |  i i t t f  d  S(   Nf0.10000000000000001(   R   t   sleepR   RG   RN   R   R   (   R   (    (    R   t   _testAcceptp  s    c         C   s   |  i i   \ } } d  S(   N(   R   R   RJ   RK   RL   (   R   RL   RK   (    (    R   t   testConnectt  s    c         C   s*   |  i i d  |  i i t t f  d  S(   Ni
   (   R   RG   R   RN   R   R   (   R   (    (    R   t   _testConnectx  s    c         C   s   |  i i   \ } } | i d  y | i t t   } Wn t
 i j
 o n X|  i d  t i | g g  g   \ } } } | | j o) | i t t   } |  i | t  n |  i d  d  S(   Ni    s%   Error trying to do non-blocking recv.s0   Error during select call to non-blocking socket.(   R   R   RJ   RK   RL   R   R   R   R   R7   R   R\   R8   R   R   R   R   RX   (   R   RL   R   R   R   R7   RK   (    (    R   R   |  s    !c         C   s7   |  i i t t f  t i d  |  i i t  d  S(   Nf0.10000000000000001(	   R   RG   RN   R   R   R   R   R   R   (   R   (    (    R   R     s    (   R   R   R   R   R   R   R   R   R   R   R   (    (    (    R   R   N  s   							t   FileObjectClassTestCasec           B   s   t  Z d Z d d  Z d   Z d   Z d   Z d   Z d   Z d	   Z	 d
   Z
 d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   NiRE   c         C   s   t  i |  d | d  S(   NRF   (   RI   R   R   RF   (   R   RF   (    (    R   R     s    c         C   s,   t  i |   |  i i d |  i  |  _ d  S(   Nt   rb(   RI   R   R   RM   t   makefilet   bufsizet	   serv_file(   R   (    (    R   R     s    c         C   s:   |  i i   |  i |  i i  d  |  _ t i |   d  S(   N(   R   R   R   Rn   t   closedR   RI   R   (   R   (    (    R   R     s    	c         C   s&   t  i |   |  i i d  |  _ d  S(   Nt   wb(   RI   R9   R   RO   R   t   cli_file(   R   (    (    R   R9     s    c         C   s:   |  i i   |  i |  i i  d  |  _ t i |   d  S(   N(   R   R  R   Rn   R   R   RI   R@   (   R   (    (    R   R@     s    	c         C   sL   |  i i t t  d  } |  i i d  } | | } |  i | t  d  S(   Ni   (	   R   R   R   R   R   t	   first_segt
   second_segR7   RX   (   R   R  R  R7   (    (    R   t   testSmallRead  s    
c         C   s!   |  i i t  |  i i   d  S(   N(   R   R  R   R   t   flush(   R   (    (    R   t   _testSmallRead  s    c         C   s#   |  i i   } |  i | t  d  S(   N(   R   R   R   R7   RX   R   (   R   R7   (    (    R   t   testFullRead  s    c         C   s!   |  i i t  |  i i   d  S(   N(   R   R  R   R   R   (   R   (    (    R   t   _testFullRead  s    c         C   sJ   d } x- |  i i d  } | p Pn | | 7} q	 W|  i | t  d  S(   NR   i   (   t   bufR   R   R   t   charRX   R   (   R   R  R
  (    (    R   t   testUnbufferedRead  s      c         C   s!   |  i i t  |  i i   d  S(   N(   R   R  R   R   R  (   R   (    (    R   t   _testUnbufferedRead  s    c         C   s#   |  i i   } |  i | t  d  S(   N(   R   R   t   readlinet   lineRX   R   (   R   R  (    (    R   t   testReadline  s    c         C   s!   |  i i t  |  i i   d  S(   N(   R   R  R   R   R  (   R   (    (    R   t   _testReadline  s    c         C   s   |  i |  i i  d  S(   N(   R   Rn   R   R   (   R   (    (    R   t   testClosedAttr  s    c         C   s   |  i |  i i  d  S(   N(   R   Rn   R  R   (   R   (    (    R   t   _testClosedAttr  s    (   R   R   R   R   R   R   R9   R@   R  R  R  R	  R  R  R  R  R  R  (    (    (    R   R     s    									
				t!   UnbufferedFileObjectClassTestCasec           B   s&   t  Z d  Z d Z d   Z d   Z RS(   s  Repeat the tests from FileObjectClassTestCase with bufsize==0.

    In this case (and in this case only), it should be possible to
    create a file object, read a line from it, create another file
    object, read another line from it, without loss of data in the
    first file object's buffer.  Note that httplib relies on this
    when reading multiple requests from the same socket.i    c         C   sb   |  i i   } |  i | d t  |  i i d d  |  _ |  i i   } |  i | d t  d  S(   Ns   A. R   i    s   B. (   R   R   R  R  RX   R   RM   R   (   R   R  (    (    R   t   testUnbufferedReadline  s
    c         C   s9   |  i i d t  |  i i d t  |  i i   d  S(   Ns   A. s   B. (   R   R  R   R   R  (   R   (    (    R   t   _testUnbufferedReadline  s    (   R   R   RC   R   R  R  (    (    (    R   R    s    	t#   LineBufferedFileObjectClassTestCasec           B   s   t  Z d Z RS(   Ni   (   R   R   R   (    (    (    R   R    s   t$   SmallBufferedFileObjectClassTestCasec           B   s   t  Z d Z RS(   Ni   (   R   R   R   (    (    (    R   R    s   t   TCPTimeoutTestc           B   s   t  Z d   Z d   Z RS(   Nc            s&     d   }   i t i | d  d  S(   Nc             s!     i i d    i i   d  S(   Nf1.0(   R   R   R   RJ   (   R]   R^   (   R   (    R   t   raise_timeout  s    s*   Error generating a timeout exception (TCP)(   R  R   Rd   R   t   timeout(   R   R  (    (   R   R   t   testTCPTimeout  s    c         C   s   t  } y# |  i i d  |  i i   } WnQ t i j
 o |  i	 d  n0 t i
 j
 o t } n |  i	 d  n X| p |  i	 d  n d  S(   Nf0.0s%   caught timeout instead of error (TCP)s!   caught unexpected exception (TCP)s3   accept() returned success when we did not expect it(   t   Falset   okR   R   R   RJ   t   fooR   R  R8   R\   t   True(   R   R  R  (    (    R   t   testTimeoutZero	  s    
(   R   R   R  R!  (    (    (    R   R     s   	t   UDPTimeoutTestc           B   s   t  Z d   Z d   Z RS(   Nc            s&     d   }   i t i | d  d  S(   Nc             s$     i i d    i i d  d  S(   Nf1.0i   (   R   R   R   R   (   R]   R^   (   R   (    R   R    s    s*   Error generating a timeout exception (UDP)(   R  R   Rd   R   R  (   R   R  (    (   R   R   t   testUDPTimeout  s    c         C   s   t  } y& |  i i d  |  i i d  } WnQ t i j
 o |  i	 d  n0 t i
 j
 o t } n |  i	 d  n X| p |  i	 d  n d  S(   Nf0.0i   s%   caught timeout instead of error (UDP)s!   caught unexpected exception (UDP)s1   recv() returned success when we did not expect it(   R  R  R   R   R   R   R  R   R  R8   R\   R   (   R   R  R  (    (    R   R!     s    
(   R   R   R#  R!  (    (    (    R   R"    s   	t   TestExceptionsc           B   s   t  Z d   Z RS(   Nc         C   sq   |  i t t i t   |  i t t i t i   |  i t t i t i   |  i t t i t i   d  S(   N(	   R   Rn   t
   issubclassR   R\   R=   R`   Rb   R  (   R   (    (    R   t   testExceptionTree0  s    (   R   R   R&  (    (    (    R   R$  .  s   c          C   s   t  t t t g }  t i d j o |  i t t	 g  n |  i t
 t t t t g  t t d  o |  i t  n t i |    d  S(   Nt   macRS   (   RT   R   R  R$  t   testsRy   R   t   extendR   R"  R   R   R  R  R  Rz   R   t   appendR   R
   t   run_unittest(   R(  (    (    R   t	   test_main7  s    t   __main__(%   RQ   t   testR
   R   R   R   R/   R#   R'   Ry   t   weakrefRV   R   R   R   RR   R   R   R   RD   RH   RI   RP   RT   R   R   R   R   R   R  R  R  R  R"  R$  R,  R   (    R
   R   RP   R   R  RI   R   R"  R   R   R   R#   RH   R,  RQ   Ry   R   RV   R   R  R'   R   R/   R   R  R   R  R   R   R$  RD   RT   (    (    R   t   ?   sD   						b	 LDL		