mò
­fIc           @   s×  d  k  l Z d k l Z l Z l Z l Z e i d ƒ d k Td k	 Z	 d k
 Z
 d k Z d k Z d k Z d k Z d Z d Z d f  d „  ƒ  YZ d	 e e f d
 „  ƒ  YZ d e e f d „  ƒ  YZ d f  d „  ƒ  YZ d Z d d „ Z d „  Z d „  Z d e i f d „  ƒ  YZ d a d „  Z d Z g  Z  d „  Z! d „  Z" d „  Z# d e$ f d „  ƒ  YZ% e% e& g Z' e( e d ƒ o! e i) d( j o e' i* e+ ƒ n e, e- g Z. e( e d ƒ o! e i) d) j o e. i* e/ ƒ n e( e	 d  ƒ p g  Z0 g  Z1 n­ d! e2 e3 f d" „  ƒ  YZ4 e3 e5 g Z0 e( e d ƒ o! e i) d* j o e0 i* e4 ƒ n d# e2 e6 f d$ „  ƒ  YZ7 e6 e8 g Z1 e( e d ƒ o! e i) d+ j o e1 i* e7 ƒ n d% „  Z9 d& „  Z: e; d' j o e: ƒ  n d S(,   (   s   test_support(   s   verboses   verifys   TESTFNs   TestSkippedt   network(   t   *Ni   f0.5t   MyMixinHandlerc           B   s   t  Z d „  Z RS(   Nc         C   s=   t  i t ƒ |  i i ƒ  } t  i t ƒ |  i i | ƒ d  S(   N(	   t   timet   sleept   DELAYt   selft   rfilet   readlinet   linet   wfilet   write(   R   R	   (    (    t3   /mit/python/lib/python2.4/test/test_socketserver.pyt   handle   s    (   t   __name__t
   __module__R   (    (    (    R   R      s   t   MyStreamHandlerc           B   s   t  Z RS(   N(   R   R   (    (    (    R   R      s   t   MyDatagramHandlerc           B   s   t  Z RS(   N(   R   R   (    (    (    R   R      s   t   MyMixinServerc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s%   x t  t ƒ D] } |  i ƒ  q Wd  S(   N(   t   ranget   NREQt   iR   t   handle_request(   R   R   (    (    R   t   serve_a_few    s     c         C   s   |  i | ƒ |  i ƒ  ‚  d  S(   N(   R   t   close_requestt   requestt   server_close(   R   R   t   client_address(    (    R   t   handle_error#   s    
(   R   R   R   R   (    (    (    R   R      s   	s   hello world
i   c         C   sV   t  i  |  g g  g  | ƒ \ } } } |  | j o |  i | ƒ Sn t d |  f ‚ d  S(   Ns   timed out on %r(	   t   selectt   sockt   timeoutt   rt   wt   xt   recvt   nt   RuntimeError(   R   R$   R   R    R!   R"   (    (    R   t   receive*   s    $c         C   s‹   t  i  |  t  i ƒ } | i t | ƒ t | d ƒ } } x2 | o* d | j o t | d ƒ } | | 7} q; Wt
 | t j ƒ | i ƒ  d  S(   Nid   s   
(   t   sockett   protot
   SOCK_DGRAMt   st   sendtot
   teststringt   addrR&   t   buft   datat   verifyt   close(   R(   R-   R/   R*   R.   (    (    R   t	   testdgram1   s     c         C   s•   t  i  |  t  i ƒ } | i | ƒ | i t ƒ t | d ƒ } } x2 | o* d | j o t | d ƒ } | | 7} qE Wt | t j ƒ | i ƒ  d  S(   Nid   s   
(   R'   R(   t   SOCK_STREAMR*   t   connectR-   t   sendallR,   R&   R.   R/   R0   R1   (   R(   R-   R/   R*   R.   (    (    R   t
   teststream;   s     t   ServerThreadc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s/   t  i i |  ƒ | |  _ | |  _ | |  _	 d  S(   N(
   t	   threadingt   Threadt   __init__R   R-   t   _ServerThread__addrt   svrclst   _ServerThread__svrclst   hdlrclst   _ServerThread__hdlrcls(   R   R-   R<   R>   (    (    R   R:   G   s    		c         C   s’   d t  |  i f d „  ƒ  Y} t o	 d GHn | |  i |  i ƒ } t | d ƒ } | o | |  _ n t o	 d GHn | i
 ƒ  t o	 d GHn d  S(   NR<   c           B   s   t  Z RS(   N(   R   R   (    (    (    R   R<   M   s   s   thread: creating servert   server_addresss   thread: serving three timess   thread: done(   R   R   R=   R<   t   verboseR;   R?   t   svrt   getattrR-   R   (   R   R-   R<   RB   (    (    R   t   runL   s     	 	
 (   R   R   R:   RD   (    (    (    R   R7   F   s   	i    c           C   s$   t  d 7a  d t i ƒ  d d t  S(   Ni   i'  iè  i
   (   t   seedt   ost   getpid(    (    (    R   t   pickport[   s     
t	   localhostc         C   s   |  t i j o t t ƒ  f SnÜ t t t ƒ  ƒ } t i	 d j o§ | d d j o | d } n | d t i
 t i f j o | d } n t i i d | ƒ } t i
 d j o | i t i
 t i ƒ } që | i t i t i
 ƒ } n t i | ƒ | Sd  S(   Nt   os2i   t   :i   i    s   \sockett   /(   R(   R'   t   AF_INETt   hostRH   t   TESTFNt   strt   fnRF   t   namet   sept   altsept   patht   joint   replacet	   testfilest   append(   R(   RQ   (    (    R   t   pickaddrb   s    c          C   sF   x8 t  D]0 }  y t i |  ƒ Wq t i j
 o q Xq Wg  t  (d  S(   N(   RX   RQ   RF   t   removet   error(   RQ   (    (    R   t   cleanupw   s     	c         C   sé   xâ | D]Ú } t |  ƒ } t o d G| GHd G| GHn t | | | ƒ } t o	 d GHn | i	 ƒ  t o	 d GHn xB t
 t ƒ D]4 } t i t ƒ t o d G| GHn | |  | ƒ q Wt o	 d GHn | i ƒ  t o	 d GHq q Wd  S(   Ns   ADDR =s   CLASS =s   server createds   server runnings   test clients   waiting for servert   done(   t   serversR<   RZ   R(   R-   RA   R7   R>   t   tt   startR   R   R   R   R   R   t   testfuncRV   (   R(   R_   R>   Rb   R-   R   R`   R<   (    (    R   t   testloop   s.     	 	
 	   	
 t   ForgivingTCPServerc           B   s   t  Z d „  Z RS(   Nc         C   s£   |  i \ } } d  k } x„ | d d d g D]p } y! | | f |  _ t i |  ƒ PWq+ t i	 j
 o7 \ } } | t i j o ‚  n | i d | IJq+ Xq+ Wd  S(   Nij  i^"  i]  s6     WARNING: failed to listen on port %d, trying another(   R   R@   RN   t   default_portt   syst   portt	   TCPServert   server_bindR'   R\   t   errt   msgt   errnot
   EADDRINUSEt
   __stderr__(   R   Rj   Rf   RN   Re   Rk   Rg   (    (    R   Ri   “   s    	 (   R   R   Ri   (    (    (    R   Rd   ‘   s   t   forkRJ   t   AF_UNIXt   ForkingUnixStreamServerc           B   s   t  Z RS(   N(   R   R   (    (    (    R   Rq   ®   s    t   ForkingUnixDatagramServerc           B   s   t  Z RS(   N(   R   R   (    (    (    R   Rr   ²   s    c           C   sZ   t  t i t t t ƒ t  t i t t t ƒ t	 t d ƒ o t  t i
 t t t ƒ n d  S(   NRp   (   Rc   R'   RM   t
   tcpserversR   R6   t
   udpserversR   R2   t   hasattrRp   t   streamservers(    (    (    R   t   testall·   s    c          C   s@   d  k  }  |  i ƒ  o t d ƒ ‚ n z t ƒ  Wd  t ƒ  Xd  S(   Ns"   can't run when import lock is held(   t   impt	   lock_heldt   TestSkippedRw   R]   (   Rx   (    (    R   t	   test_mainÀ   s    	 t   __main__(   s   os2(   s   os2(   s   os2(   s   os2(<   t   testt   test_supportt   test.test_supportRA   R0   RO   Rz   t   requirest   SocketServerR'   Rl   R   R   R8   RF   R   R   R   t   StreamRequestHandlerR   t   DatagramRequestHandlerR   R   R,   R&   R2   R6   R9   R7   RE   RH   RN   RX   RZ   R]   Rc   Rh   Rd   t   ThreadingTCPServerRs   Ru   RR   RY   t   ForkingTCPServert	   UDPServert   ThreadingUDPServerRt   t   ForkingUDPServerRv   t   dgramserverst   ForkingMixInt   UnixStreamServerRq   t   ThreadingUnixStreamServert   UnixDatagramServerRr   t   ThreadingUnixDatagramServerRw   R{   R   (%   R~   RA   Rt   R‰   R,   R   RX   Rs   RH   RN   R   Rv   Rr   R2   R0   R]   Rc   Rq   RZ   R{   R   Rz   R   R   Rw   R6   Rl   RO   R   R'   R&   R7   R   R8   R   RF   Rd   (    (    R   t   ?   sb   								
					  
  			