-ν
Ϋ?c       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 l Z d k l Z d   Z d   Z d e i f d     YZ d e	 i f d	     YZ d
   Z e d j o e   n d S(   s6   Helper file used to launch a ZEO server cross platformN(   s   StorageServer(   s
   ZEOOptionsc    s(   y |  i   Wn t j
 o n Xd  S(   N(   s   storages   cleanups   AttributeError(   s   storage(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   cleanup! s    c    s   t  i |  t  i | |  d  S(   N(   s   zLOGs   LOGs   labels   DEBUGs   msgs   args(   s   labels   msgs   args(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   log+ s    s   ZEOTestServerc      s>   t  Z d  Z e i i Z d   Z d   Z d   Z d   Z	 RS(   s  A server for killing the whole process at the end of a test.

    The first time we connect to this server, we write an ack character down
    the socket.  The other end should block on a recv() of the socket so it
    can guarantee the server has started up before continuing on.

    The second connect to the port immediately exits the process, via
    os._exit(), without writing data on the socket.  It does close and clean
    up the storage first.  The other end will get the empty string from its
    recv() which will be enough to tell it that the server has exited.

    I think this should prevent us from ever getting a legitimate addr-in-use
    error.
    c    sΉ   |  i   | |  _ |  g |  _ | |  _ d |  _ d t i	   | f |  _ |  i t i t i  |  i   y |  i |  Wn d  k } | i     n X|  i d  |  i d  d  S(   Ni   s   zeoserver:%d @ %si   s   bound and listening(   s   selfs   _ZEOTestServer__super_inits   servers   _servers   _socketss   keeps   _keeps   _counts   oss   getpids   addrs   _labels   create_sockets   sockets   AF_INETs   SOCK_STREAMs   set_reuse_addrs   binds	   tracebacks	   print_excs   listens   log(   s   selfs   addrs   servers   keeps	   traceback(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   __init__@ s     
			
	
c    s   t  |  i | |  d  S(   N(   s   logs   selfs   _labels   msgs   args(   s   selfs   msgs   args(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   logW s    c    sς   |  i   \ } } |  i d  |  i d j o |  i d  |  i i   |  i o+ x$ |  i i	 i
   D] } t |  qg Wn |  i d  x |  i D] } | i   q W| i   t i d  n |  i d  | i d  |  i d 8_ d  S(   Ns   in handle_accept()i    s   closing the storages   exitings
   continuings   Xi   (   s   selfs   accepts   socks   addrs   logs   _counts   _servers   close_servers   _keeps   storagess   valuess   storages   cleanups   _socketss   ss   closes   oss   _exits   send(   s   selfs   ss   addrs   socks   storage(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   handle_acceptZ s$     
 
c    s   |  i i |  d  S(   N(   s   selfs   _socketss   appends   sock(   s   selfs   sock(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   register_sockets s    (
   s   __name__s
   __module__s   __doc__s   asyncores
   dispatchers   __init__s   _ZEOTestServer__super_inits   logs   handle_accepts   register_socket(    (    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   ZEOTestServer/ s    			s   Suicidec      s   t  Z d   Z d   Z RS(   Nc    s   t  i i |   | |  _ d  S(   N(   s	   threadings   Threads   __init__s   selfs   addrs
   _adminaddr(   s   selfs   addr(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   __init__x s    c    s8   t  i d  t d d  d k l } | |  i  d  S(   NiJ  s	   zeoservers    suicide thread invoking shutdown(   s   shutdown_zeo_server(   s   times   sleeps   logs   ZEO.tests.forkers   shutdown_zeo_servers   selfs
   _adminaddr(   s   selfs   shutdown_zeo_server(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   run| s    (   s   __name__s
   __module__s   __init__s   run(    (    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   Suicidew s   	c     sm  d t  i   } t | d  d }
 t } t i t i	 d d  \ } } xB | D]: \ }  } |  d j o
 d }
 n |  d j o
 | } n qO Wt   } | i d | g  t | i d  } | i d j o d  k } n | d }	 d	 |	 f } d	 | f } t | d
  | i d i   } t } | i o | i i } n t | i h  | d <d | i  d | i! d | i" d | d | i d | i# d | i$ } y& t | d |
  t& | | |
  } Wna t( i) j
 oR } | d t+ i, j o   n t | d  | i-   t. |  t i/ d  n X| i0 | i1  t2 |  } | i4 d  | i5   t | d  t6 i7 i8   d  S(   Ns   zeoserver:%ds   startingi    i   s   kC:s   -ks   -Cs	   plaintexts	   localhosts   creating the storage servers   1s	   read_onlys   invalidation_queue_sizes   transaction_timeouts   monitor_addresss   auth_protocols   auth_databases
   auth_realms"   creating the test server, keep: %ss    addr in use, closing and exitingi   s   entering ThreadedAsync loop(9   s   oss   getpids   labels   logs   keeps   Nones
   configfiles   getopts   syss   argvs   optss   argss   opts   args
   ZEOOptionss   zos   realizes   ints   addresss   zeo_ports   auth_protocols   ZEO.tests.auth_plaintexts   ZEOs	   test_ports	   test_addrs   addrs   storagess   opens   storages   mon_addrs   monitor_addresss   StorageServers	   read_onlys   invalidation_queue_sizes   transaction_timeouts   auth_databases
   auth_realms   servers   ZEOTestServers   ts   sockets   errors   es   errnos
   EADDRINUSEs   closes   cleanups   exits   register_sockets
   dispatchers   Suicides   ds	   setDaemons   starts   ThreadedAsyncs   LoopCallbacks   loop(   s   opts   zeo_ports   zos   argss   ds
   configfiles	   test_addrs   args   mon_addrs	   test_ports   keeps   addrs   es   storages   ZEOs   labels   ts   servers   opts(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   main sb     
	

						 


s   __main__(   s   __doc__s   oss   syss   times   errnos   getopts   randoms   sockets   asyncores	   threadings   ThreadedAsync.LoopCallbacks   ThreadedAsyncs   ZConfig.Contexts   ZConfigs   zLOGs   ZEO.StorageServers   StorageServers
   ZEO.runzeos
   ZEOOptionss   cleanups   logs
   dispatchers   ZEOTestServers   Threads   Suicides   mains   __name__(   s   logs   Suicides   asyncores   sockets   errnos   randoms   ZConfigs   syss	   threadings   ZEOTestServers   cleanups   ThreadedAsyncs
   ZEOOptionss   times   zLOGs   getopts   mains   oss   StorageServer(    (    s;   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/zeoserver.pys   ? s*   													
	H	B