mò
­fIc           @   s  d  Z  d k Z d k Z d k Z d k Z d k Z d k Z d k Z d k Z d k	 Z	 d k
 Z
 d k Z d k Z d k Z d k Z d Z d Z d Z d k l Z l Z d e f d „  ƒ  YZ e
 i ƒ  Z d e f d	 „  ƒ  YZ d
 „  Z d a d „  Z d „  Z d Z d Z d Z d Z  d Z! d Z" d Z# d Z$ d Z% d Z& e' e& e d ƒ Z( h  e d <e d <e d <e  d <e! d <e" d <e# d <e$ d <e% d <e& d  <Z) d! e i* f d" „  ƒ  YZ+ d# e+ f d$ „  ƒ  YZ, d% e i* f d& „  ƒ  YZ- d' „  Z. d( Z/ d) „  Z0 d* Z1 d+ „  Z2 d, Z3 d- „  Z4 d. „  Z5 d/ „  Z6 d0 „  Z7 d1 „  Z8 e9 d2 j o e i: i; d3 ƒ e8 ƒ  n d S(4   so   Test harness for the logging module. Run all tests.

Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved.
NsB   -- %-10s %-6s ---------------------------------------------------
sH   Finish up, it's closing time. Messages should bear numbers 0 through 24.i
   (   s   ThreadingTCPServers   StreamRequestHandlert   LogRecordStreamHandlerc           B   s)   t  Z d  Z d „  Z d „  Z d „  Z RS(   sˆ   
    Handler for a streaming logging request. It basically logs the record
    using whatever logging policy is configured locally.
    c         C   sÕ   xÎ y¼ |  i i d ƒ } t | ƒ d j  o Pn t i d | ƒ d } |  i i | ƒ } x8 t | ƒ | j  o$ | |  i i | t | ƒ ƒ } q[ W|  i | ƒ } t
 i | ƒ } |  i | ƒ Wq ‚  q Xq Wd S(   sÑ   
        Handle multiple requests - each expected to be a 4-byte length,
        followed by the LogRecord in pickle format. Logs the record
        according to whatever policy is configured locally.
        i   i   s   >Li    N(   t   selft
   connectiont   recvt   chunkt   lent   structt   unpackt   slent   unPicklet   objt   loggingt   makeLogRecordt   recordt   handleLogRecord(   R   R
   R   R   R   (    (    t.   /mit/python/lib/python2.4/test/test_logging.pyt   handle2   s"        %c         C   s   t  i | ƒ S(   N(   t   cPicklet   loadst   data(   R   R   (    (    R   R	   G   s    c         C   se   d | i } | i t j o d |  i _ n | i d | d | _ t i	 | ƒ } | i | ƒ d  S(   Ns   logrecv.tcp.i   s    (via t   )(   R   t   namet   lognamet   msgt	   FINISH_UPR   t   servert   abortR   t	   getLoggert   loggerR   (   R   R   R   R   (    (    R   R   J   s    (   t   __name__t
   __module__t   __doc__R   R	   R   (    (    (    R   R    ,   s    		t   LogRecordSocketReceiverc           B   s>   t  Z d  Z d Z d e i i e d „ Z d „  Z	 d „  Z
 RS(   s[   
    A simple-minded TCP socket-based logging receiver suitable for test
    purposes.
    i   t	   localhostc         C   s/   t  i |  | | f | ƒ d |  _ d |  _ d  S(   Ni    i   (   t   ThreadingTCPServert   __init__R   t   hostt   portt   handlerR   t   timeout(   R   R$   R%   R&   (    (    R   R#   ^   s    	c         C   sq   d } xZ | pR t i |  i i ƒ  g g  g  |  i ƒ \ } } } | o |  i	 ƒ  n |  i  } q	 Wt
 i ƒ  d  S(   Ni    (   R   t   selectR   t   sockett   filenoR'   t   rdt   wrt   ext   handle_requestt   socketDataProcessedt   set(   R   R+   R   R,   R-   (    (    R   t   serve_until_stoppede   s     c         C   s/   t  i d |  i d | | f ƒ } | i ƒ  d  S(   Nt   targett   args(   t	   threadingt   ThreadR   t   finish_requestt   requestt   client_addresst   tt   start(   R   R7   R8   R9   (    (    R   t   process_requestq   s    (   R   R   R   t   allow_reuse_addressR   t   handlerst   DEFAULT_TCP_LOGGING_PORTR    R#   R1   R;   (    (    (    R   R    V   s
    	c         C   s   |  i ƒ  d  S(   N(   t	   tcpserverR1   (   R?   (    (    R   t   runTCPw   s    i    c          C   s   d t  }  t  d a  |  S(   Ns
   Message %di   (   t   msgcountt   rv(   RB   (    (    R   t   nextmessage€   s     

c    	      C   sN  t  i d ƒ } | i t  i ƒ t  i d ƒ } | i t  i ƒ t  i d ƒ } | i t  i ƒ t  i d ƒ } | i t  i	 ƒ t  i d ƒ } t  i d ƒ } t  i d ƒ }  t  i d ƒ } t  i d	 ƒ } | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ |  i t  i t ƒ  ƒ |  i t ƒ  ƒ |  i t ƒ  ƒ |  i t ƒ  ƒ | i t  i t ƒ  ƒ | i t  i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ  ƒ | i t ƒ d  S(
   Nt   ERRt   INFs   INF.ERRt   DEBs	   INF.UNDEFs   INF.ERR.UNDEFt   UNDEFs   INF.BADPARENT.UNDEFs   INF.BADPARENT(   R   R   RD   t   setLevelt   ERRORRE   t   INFOt   INF_ERRRF   t   DEBUGt	   INF_UNDEFt   INF_ERR_UNDEFRG   t
   GRANDCHILDt   CHILDt   logt   FATALRC   t   errort   warnt   infot   debugR   (	   RG   RD   RP   RM   RO   RN   RF   RE   RK   (    (    R   t   test0†   sd    i	   i   i   i   i   i   i   i   i   t   Silentt   Taciturnt   Terset   Effusivet   Sociablet   Verboset	   Talkativet	   Garruloust
   Chatterboxt   Boringt   SpecificLevelFilterc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s   | |  _ d  S(   N(   t   lvlR   t   level(   R   Rc   (    (    R   R#   ú   s    c         C   s   |  i | i j S(   N(   R   Rd   R   t   levelno(   R   R   (    (    R   t   filterý   s    (   R   R   R#   Rf   (    (    (    R   Rb   ù   s   	t   GarrulousFilterc           B   s   t  Z d „  Z RS(   Nc         C   s   t  i |  t ƒ d  S(   N(   Rb   R#   R   t	   GARRULOUS(   R   (    (    R   R#     s    (   R   R   R#   (    (    (    R   Rg      s   t   VerySpecificFilterc           B   s   t  Z d „  Z RS(   Nc         C   s   | i t t g j S(   N(   R   Re   t   SOCIABLEt   TACITURN(   R   R   (    (    R   Rf   
  s    (   R   R   Rf   (    (    (    R   Ri   	  s   c         C   s   t  i i d |  ƒ d  S(   Ns   %s
(   t   syst   stdoutt   writet   s(   Ro   (    (    R   t   message  s    s=   This should only be seen at the '%s' logging level (or lower)c          C   sá  x( t  i ƒ  D] } t i | t  | ƒ q Wd „  }  t i d ƒ } | i d } x< t
 D]4 } t d t i | ƒ ƒ | i | ƒ |  | ƒ qW W| i t ƒ t d ƒ x< t
 D]4 } t d t i | ƒ ƒ | i | ƒ |  | ƒ q­ W| i d ƒ t ƒ  } | i | ƒ t d ƒ x< t
 D]4 } t d t i | ƒ ƒ | i | ƒ |  | ƒ qWt ƒ  } | i | ƒ t d ƒ x< t
 D]4 } t d t i | ƒ ƒ | i | ƒ |  | ƒ qxW| i | ƒ | i | ƒ t i t i d ƒ d  S(	   Nc         C   s1   x* t  D]" } |  i | t t i | ƒ ƒ q Wd  S(   N(   t   LEVEL_RANGERc   RQ   t   SHOULD1R   t   getLevelName(   RQ   Rc   (    (    R   t   doLog  s     t    i    s&   -- setting logging level to '%s' -----s,   -- Filtering at handler level to SOCIABLE --s&   -- Filtering using GARRULOUS filter --s<   -- Filtering using specific filter for SOCIABLE, TACITURN --RL   (   t   my_logging_levelst   keysRc   R   t   addLevelNameRt   R   RQ   R=   t   hdlrRq   Rp   Rs   RH   Rj   Rg   t   garrt	   addFilterRi   t   spect   removeFilterRL   (   Rt   RQ   Rc   Rz   R|   Ry   (    (    R   t   test1  sL     	 
 	
 	
 sA   -- logging %d at INFO, messages should be seen every 10 events --c          C   s  t  i d ƒ } | i d } | i ƒ  | i | ƒ t  i i d t  i | ƒ } | i
 t  i ƒ | i | ƒ t d ƒ | i d ƒ t d ƒ | i d ƒ t d ƒ | i d	 ƒ x2 t d
 ƒ D]$ }  t t |  ƒ | i d |  ƒ q½ W| i ƒ  | i | ƒ | i | ƒ d  S(   NRu   i    i
   s2   -- logging at DEBUG, nothing should be seen yet --s   Debug messages1   -- logging at INFO, nothing should be seen yet --s   Info messages3   -- logging at WARNING, 3 messages should be seen --s   Warn messageif   s   Info index = %d(   R   R   R   R=   t   sht   closet   removeHandlert   MemoryHandlert   WARNINGt   mhRH   RL   t
   addHandlerRp   RV   RU   RT   t   xranget   it   MSG(   R‡   R„   R   R   (    (    R   t   test2X  s(    



 
s   a.bc           C   sà   t  i d ƒ i d ƒ t  i d ƒ i d ƒ t  i d ƒ i d ƒ t  i d ƒ i d ƒ t  i d	 ƒ i d
 ƒ t  i d ƒ i d ƒ t  i d ƒ i d ƒ t  i d ƒ i d ƒ t  i d ƒ i d ƒ t  i d ƒ i d ƒ d  S(   Nt   as   Info 1s   a.bs   Info 2s   a.cs   Info 3s   a.b.cs   Info 4s   a.b.c.ds   Info 5s   a.bb.cs   Info 6t   bs   Info 7s   b.as   Info 8s   c.a.bs   Info 9s   a.bbs   Info 10(   R   R   RU   (    (    (    R   t   doLog3s  s    c          C   s|   t  i ƒ  } | i t  i ƒ | i d } t d ƒ t ƒ  t d t	 ƒ t  i
 t	 ƒ }  | i |  ƒ t ƒ  | i |  ƒ d  S(   Ni    s   Unfiltered...s   Filtered with '%s'...(   R   R   t   rootRH   RL   R=   t   handRp   RŒ   t   FILTERt   Filtert   filtR{   R}   (   R‘   RŽ   R   (    (    R   t   test3  s    
c         C   s1   t  |  | f } t i i | ƒ t i i ƒ  d  S(   N(   t   BANNERt   nmt   typt   sepRl   Rm   Rn   t   flush(   R”   R•   R–   (    (    R   t   bannerŽ  s    c    
      C   s†  t  i d ƒ } | i t  i ƒ t  i t i ƒ }  t  i	 t  i
 ƒ } |  i | ƒ | i |  ƒ t  i i d t  i i ƒ }	 t i ƒ  } t  i d ƒ } | i t  i ƒ t  i | ƒ } | i t  i	 d ƒ ƒ | i | ƒ d | _ g  } t ƒ  } | i t i d t d | f ƒ ƒ x | D] } | i  ƒ  qWz¬ t! d d	 ƒ | i |	 ƒ t" ƒ  |	 i# ƒ  | i$ |	 ƒ t! d d
 ƒ t! d d	 ƒ t% ƒ  t! d d
 ƒ t! d d	 ƒ t& ƒ  t! d d
 ƒ t! d d	 ƒ t' ƒ  t! d d
 ƒ Wd  t( i) ƒ  x | D] } | i* ƒ  qêWt! d d	 ƒ t i i+ | i, ƒ  ƒ | i# ƒ  | i$ | ƒ | i# ƒ  t! d d
 ƒ t i i- ƒ  y |  i# ƒ  Wn n X| i$ |  ƒ Xd  S(   NRu   R!   t   logrecvs&   %(name)s -> %(levelname)s: %(message)si    R2   R3   t	   log_test0t   begint   endt	   log_test1t	   log_test2t	   log_test3s   logrecv output(.   R   R   t
   rootLoggerRH   RL   t   StreamHandlerRl   Rm   Ry   t	   Formattert   BASIC_FORMATt   fmtt   setFormatterR…   R=   t   SocketHandlerR>   t   shdlrt	   cStringIOt   StringIOt   sockOutt
   sockLoggert   sockhdlrt	   propagatet   threadsR    R?   t   appendR4   R5   R@   t   threadR:   R˜   RW   R€   R   R~   R‰   R’   R/   t   waitt   joinRn   t   getvalueR—   (
   Ry   R¤   R?   R«   Rª   R¬   R®   R    R°   R§   (    (    R   t   test_main_inner“  sl    		" 
 
 

c          C   s¶   d  k  } y) | i | i ƒ }  | i | i d ƒ Wn" t | i f j
 o d  }  n Xt i d ƒ } | i
 ƒ  } z t ƒ  Wd  |  d  j	 o | i | i |  ƒ n | i | ƒ Xd  S(   NRu   (   t   localet	   setlocalet   LC_ALLt   original_localet
   ValueErrort   Errort   NoneR   R   t   root_loggert   getEffectiveLevelt   original_logging_levelR´   RH   (   R¸   R¾   Rµ   R¼   (    (    R   t	   test_mainÝ  s    	 t   __main__s   test_logging
(<   R   R(   t   osRl   t   stringR   t   typesR   R¨   R)   R4   t   timeR   t   logging.handlerst   logging.configR“   R   t   TIMEOUTt   SocketServerR"   t   StreamRequestHandlerR    t   EventR/   R    R@   RA   RC   RW   t   SILENTRk   t   TERSEt   EFFUSIVERj   t   VERBOSEt	   TALKATIVERh   t
   CHATTERBOXt   BORINGt   rangeRq   Rv   R   Rb   Rg   Ri   Rp   Rr   R~   Rˆ   R‰   R   RŒ   R’   R˜   R´   R¿   R   Rm   Rn   (1   R¨   R’   Rg   RÇ   R~   RW   Rb   RÐ   R‰   R@   Rv   Rˆ   Rp   R“   R(   RŒ   RÎ   R´   R   RÑ   Rq   R    RC   R"   RÏ   R/   R¿   R   RÂ   RÉ   Rh   Rk   Rr   Rl   RÍ   Rj   Ri   R˜   RÃ   RË   R   R)   RÌ   R    R   R4   R   RÄ   RÁ   (    (    R   t   ?   sX   	?(!			P`			E					J	