-í
&=c       sD    d  Z    d k l Z  d k Z  d k l Z  d k l Z  d k l	 Z	  d k
 l Z  d k Z  d k Z  d k Z   d k Z ! d k Z # d Z $ d Z % d Z & d Z ' d	 Z ( d
 Z * d   Z 9 d   Z E d   Z P d   Z g d   Z q d   Z  e d j o  e   n d S(   s   A ZEO client-server stress test to look for leaks.

The stress test should run in an infinite loop and should involve
multiple connections.
(   s   nested_scopesN(   s   ClientStorage(   s   MappingStorage(   s   forker(   s   MinPOi
   i   i   i   c     sÅ   * + , t  i t t  } - t i i d  o9 . t d  }  / |  i
 |  } 0 |  i   1 | SnX 3 t t i  }  4 t |  i
 |   } 5 |  i   6 t  i |  7 d i |  Sd S(   s5   Return an object suitable for a PersistentMapping keys   /dev/urandoms    N(   s   randoms	   randranges   MIN_OBJSIZEs   MAX_OBJSIZEs   sizes   oss   paths   existss   opens   fs   reads   bufs   closes   MinPOs   __file__s   lists   ls   shuffles   join(   s   fs   ls   bufs   size(    (    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys	   an_object* s   c    s³   9 : ; |  i   } < x t t  D< ]v } = t   } > x> t t i d t	   D> ]! } ? t i |  } @ | } qV WA | | t   <B t   i   q% WC |  i   d S(   s)   Initialize the database with some objectsi   N(   s   cns   roots   ranges	   NUM_ROOTSs   is	   an_objects   prevs   randoms	   randranges	   MAX_DEPTHs   js   MinPOs   os   get_transactions   commits   close(   s   cns   js   is   os   prevs   root(    (    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys   setup9 s    	 	c    s   E F G |  i   H |  i   } I t i | i    } K x+ K t | i t	 i
  o L | i } q@ WM t   | _ N t   i   d S(   s   Do some work with a transactionN(   s   cns   syncs   roots   randoms   choices   valuess   objs
   isinstances   values   typess
   StringTypes	   an_objects   get_transactions   commit(   s   cns   objs   root(    (    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys   workE s    c     sà   P S t  i d j o1 T t i d f   \ }  } U  d   } nI [ d t i	 d d  f } \ t i t
   |  \ }   ]   d   } ` x= ` d o2 a t |  } b d	 G| GHc t  i | d
  q We |   d  S(   Ns   nts   MappingStoragec     sK   U V d  k  } W | i  | i | i  }  X |  i    Y |  i   d  S(   N(   s   sockets   AF_INETs   SOCK_STREAMs   ss   connects   tports   close(   s   ss   socket(   s   tport(    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys
   exitserverU s   s    i N  i0u  c      s   ] ^   i   d  S(   N(   s   exitobjs   close(    (   s   exitobj(    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys
   exitserver] s   i   s   startedi    (   s   oss   names   forkers   start_zeo_servers   zaddrs   tports   pids
   exitservers   randoms	   randranges   MappingStorages   exitobjs   start_childs   waitpid(   s   exitobjs
   exitservers   tports   zaddrs   pid(    (   s   exitobjs   tports8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys   mainP s    
c    s\   g i t  i   } j | d j o k | Sn l z m t |   Wd  n o t  i d  Xd  S(   Ni    (   s   oss   forks   pids   _start_childs   zaddrs   _exit(   s   zaddrs   pid(    (    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys   start_childg s   c    sr  q r t  |  d d d d d d } s t i | d t } t t | i    u g  } v d } x xO t t  Dx ]> } y | i   } z d | _ { | i |  | | d 7} qq W~ x² ~ | d j  o¡  t i |  }  | i t j oY  | i |   | i    | d 7}  | i   }  d | _  | i |  n  | i d 7_  t |  qŒ Wd  S(	   Ns   debugi   s   min_disconnect_pollf0.5s   waits	   pool_sizei    i   (   s   ClientStorages   zaddrs   storages   ZODBs   DBs   NUM_CONNECTIONSs   dbs   setups   opens   connss
   conn_counts   ranges   is   cs   __counts   appends   randoms   choices   NUM_TRANSACTIONS_PER_CONNs   removes   closes   work(   s   zaddrs   cs   is   dbs   storages   connss
   conn_count(    (    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys   _start_childq s.   !		 	 s   __main__(   s   __doc__s
   __future__s   nested_scopess   ZODBs   ZEO.ClientStorages   ClientStorages   ZODB.MappingStorages   MappingStorages	   ZEO.testss   forkers
   ZODB.testss   MinPOs   zLOGs   oss   randoms   syss   typess   NUM_TRANSACTIONS_PER_CONNs   NUM_CONNECTIONSs	   NUM_ROOTSs	   MAX_DEPTHs   MIN_OBJSIZEs   MAX_OBJSIZEs	   an_objects   setups   works   mains   start_childs   _start_childs   __name__(   s   nested_scopess	   NUM_ROOTSs   randoms	   an_objects   forkers   syss   zLOGs   ZODBs   MappingStorages   typess   MIN_OBJSIZEs   ClientStorages   NUM_TRANSACTIONS_PER_CONNs   setups   works   NUM_CONNECTIONSs   start_childs   MinPOs   _start_childs   MAX_OBJSIZEs   mains   oss	   MAX_DEPTH(    (    s8   /usr/pkg/lib/python2.2/site-packages/ZEO/tests/stress.pys   ? s2   						
