ó
X\¬Qc           @   sD  d  Z  d d l Z d d l Z d d l Z d d l Z d d l m Z d Z y e Wn' e k
 r} d e	 f d „  ƒ  YZ n Xd d l
 Z
 d d l m Z m Z m Z m Z m Z m Z m Z e rd d l m Z e j d	 d
 k  rú d d l m Z qd d l m Z n  d e
 j 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  f d$ „  ƒ  YZ$ d% „  Z% e& d& k r@e
 j' d' d( ƒ n  d S()   s-   TestCases for multi-threaded access to a DB.
iÿÿÿÿN(   t   randomt   -t   WindowsErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR      s   (   t   dbt   dbutilst   test_supportt   verboset   have_threadst   get_new_environment_patht   get_new_database_path(   t   Threadi    i   (   t   currentThread(   t   current_threadt   BaseThreadedTestCasec           B   sG   e  Z e j Z d  Z d  Z d  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   i    c         C   sË   t  r t j t _ n  t ƒ  |  _ t j ƒ  |  _	 |  j
 ƒ  |  j	 j |  j |  j t j Bƒ |  j j d |  _ t j |  j	 ƒ |  _ |  j r¡ |  j j |  j ƒ n  |  j j |  j |  j |  j t j Bƒ d  S(   Ns   .db(   R   t   syst   stdoutR   t   _deadlock_VerboseFileR
   t   homeDirR   t   DBEnvt   envt
   setEnvOptst   opent   envflagst	   DB_CREATEt	   __class__R   t   filenamet   DBt   dt
   dbsetflagst	   set_flagst   dbtypet   dbopenflags(   t   self(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   setUp&   s    
 	c         C   s.   |  j  j ƒ  |  j j ƒ  t j |  j ƒ d  S(   N(   R   t   closeR   R   t   rmtreeR   (   R"   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   tearDown5   s    c         C   s   d  S(   N(    (   R"   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR   :   s    c         C   s   t  j | g d ƒ S(   Ni   (   t   DASHt   join(   R"   t   key(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   makeData=   s    (   R   R   R   t
   DB_UNKNOWNR    R!   R   R   R#   R&   R   R*   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR       s   				t   ConcurrentDataStoreBasec           B   sU   e  Z e j Z e j e j Be j BZ d  Z d  Z	 d Z
 d „  Z d „  Z d „  Z RS(   i    iè  c      	   C   sT  t  r% d Gd d GHd |  j j GHn  t |  j ƒ } d d  l } | j | ƒ |  j |  j } |  j |  j } |  j	 |  j |  j | ƒ |  j	 |  j |  j | ƒ |  j
 | | d k ƒ g  } x{ t |  j ƒ D]j } t d |  j d |  j | f d	 d
 | ƒ } t j d d k  r"| j t ƒ n	 t | _ | j | ƒ qÎ Wg  } xŽ t |  j ƒ D]} } | | | | | d !}	 |	 j ƒ  | | | | | d !}
 t d |  j d |  j |	 |
 f d	 d | ƒ } | j | ƒ qRWxD | D]< } t j d d k  r| j t ƒ n	 t | _ | j ƒ  qÚWx | D] } | j ƒ  q!Wx | D] } | j ƒ  q<Wd  S(   Ns   
s   -=i   s(   Running %s.test01_1WriterMultiReaders...iÿÿÿÿi    t   targett   argst   names	   reader %di   i   s	   writer %d(   R   R   R   t   ranget   recordsR    t   shufflet   writerst   readerst   assertEqualt
   assertTruet   xrangeR   t   readerThreadR   R   t   version_infot	   setDaemont   Truet   daemont   appendt   sortt   writerThreadt   startR(   (   R"   t   keysR    t   records_per_writert   readers_per_writerR4   t   xt   rtR3   t   at   bt   wtt   t(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   test01_1WriterMultiReadersK   sN    	
	c   	      C   s$  t  j d d k  r% t ƒ  j ƒ  } n t ƒ  j } t rL d | t t f GHn  t | ƒ t | ƒ } | } x‘ | D]‰ } d | } t	 j
 | j | |  j | ƒ d d ƒt rÏ | d d k rÏ d | t | f GHn  | d	 8} | so | j ƒ  j ƒ  | } qo qo Wt rd
 | GHn  t r d | GHn  d  S(   Ni    i   s   %s: creating records %d - %ds   %04dt   max_retriesi   id   s   %s: records %d - %d finishedi   s   %s: finished creating recordss   %s: thread finished(   R   R9   R   t   getNameR/   R   R@   t   stopt   lenR   t   DeadlockWrapt   putR*   t   pop(	   R"   R   RA   R4   R/   t   countt   count2RD   R)   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR?   }   s*    

c   
      C   sæ   t  j d d k  r% t ƒ  j ƒ  } n t ƒ  j } xœ t d ƒ D]Ž } | j ƒ  } d } | j ƒ  } xE | r© | d 7} | \ } }	 |  j |  j	 | ƒ |	 ƒ | j
 ƒ  } qe Wt rÂ d | | f GHn  | j ƒ  q> Wt râ d | GHn  d  S(   Ni    i   i   i   s   %s: found %d recordss   %s: thread finished(   R   R9   R   RL   R/   R7   t   cursort   firstR5   R*   t   nextR   R$   (
   R"   R   t	   readerNumR/   t   it   cRR   t   recR)   t   data(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR8   š   s"    	
(   R   R   R   t	   DB_THREADR!   t   DB_INIT_CDBt   DB_INIT_MPOOLR   R4   R3   R1   RJ   R?   R8   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR,   D   s   		2	t   BTreeConcurrentDataStorec           B   s#   e  Z e j Z d  Z d Z d Z RS(   i   i
   iè  (   R   R   R   t   DB_BTREER    R3   R4   R1   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR_   ±   s   	t   HashConcurrentDataStorec           B   s#   e  Z e j Z d  Z d Z d Z RS(   i   i
   iè  (   R   R   R   t   DB_HASHR    R3   R4   R1   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyRa   ¸   s   	t   SimpleThreadedBasec           B   s^   e  Z e j Z e j e j Be j BZ d  Z d Z	 d Z
 d „  Z d „  Z d „  Z d „  Z RS(   i
   i   iè  c         C   s   |  j  j t j ƒ d  S(   N(   R   t   set_lk_detectR   t   DB_LOCK_DEFAULT(   R"   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR   È   s    c      	   C   sT  t  r% d Gd d GHd |  j j GHn  t |  j ƒ } d d  l } | j | ƒ |  j |  j } |  j |  j } |  j	 |  j |  j | ƒ |  j	 |  j |  j | ƒ |  j
 | | d k ƒ g  } x{ t |  j ƒ D]j } t d |  j d |  j | f d	 d
 | ƒ } t j d d k  r"| j t ƒ n	 t | _ | j | ƒ qÎ Wg  } xŽ t |  j ƒ D]} } | | | | | d !}	 |	 j ƒ  | | | | | d !}
 t d |  j d |  j |	 |
 f d	 d | ƒ } | j | ƒ qRWxD | D]< } t j d d k  r| j t ƒ n	 t | _ | j ƒ  qÚWx | D] } | j ƒ  q!Wx | D] } | j ƒ  q<Wd  S(   Ns   
s   -=i   s    Running %s.test02_SimpleLocks...iÿÿÿÿi    R-   R.   R/   s	   reader %di   i   s	   writer %d(   R   R   R   R0   R1   R    R2   R3   R4   R5   R6   R7   R   R8   R   R   R9   R:   R;   R<   R=   R>   R?   R@   R(   (   R"   RA   R    RB   RC   R4   RD   RE   R3   RF   RG   RH   RI   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   test02_SimpleLocksË   sL    	
	c   	      C   s  t  j d d k  r% t ƒ  j ƒ  } n t ƒ  j } t rL d | t t f GHn  t | ƒ t | ƒ } | } x‘ | D]‰ } d | } t	 j
 | j | |  j | ƒ d d ƒt rÏ | d d k rÏ d | t | f GHn  | d	 8} | so | j ƒ  j ƒ  | } qo qo Wt rd
 | GHn  d  S(   Ni    i   s   %s: creating records %d - %ds   %04dRK   i   id   s   %s: records %d - %d finishedi   s   %s: thread finished(   R   R9   R   RL   R/   R   R@   RM   RN   R   RO   RP   R*   RQ   (	   R"   R   RA   R4   R/   RR   RS   RD   R)   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR?   ý   s&    

c   	      C   sç   t  j d d k  r% t ƒ  j ƒ  } n t ƒ  j } | j ƒ  } d } t j | j d d ƒ} xQ | r® | d 7} | \ } } |  j	 |  j
 | ƒ | ƒ t j | j d d ƒ} q^ Wt rÇ d | | f GHn  | j ƒ  t rã d | GHn  d  S(   Ni    i   RK   i
   i   s   %s: found %d recordss   %s: thread finished(   R   R9   R   RL   R/   RT   R   RO   RU   R5   R*   RV   R   R$   (	   R"   R   RW   R/   RY   RR   RZ   R)   R[   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR8     s     	

(   R   R   R   R\   R!   R^   t   DB_INIT_LOCKR   R4   R3   R1   R   Rf   R?   R8   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyRc   Á   s   			2	t   BTreeSimpleThreadedc           B   s   e  Z e j Z RS(    (   R   R   R   R`   R    (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyRh   -  s   t   HashSimpleThreadedc           B   s   e  Z e j Z RS(    (   R   R   R   Rb   R    (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyRi   1  s   t   ThreadedTransactionsBasec           B   s‚   e  Z e j e j BZ e j e j Be j Be j Be j	 BZ
 d  Z d  Z d Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   i    iÐ  c         C   s   d  S(   N(    (   R"   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR   E  s    c      	   C   s¥  t  r% d Gd d GHd |  j j GHn  t |  j ƒ } d d  l } | j | ƒ |  j |  j } |  j |  j } |  j	 |  j |  j | ƒ |  j	 |  j |  j | ƒ |  j
 | | d k ƒ g  } x{ t |  j ƒ D]j } t d |  j d |  j | f d	 d
 | ƒ } t j d d k  r"| j t ƒ n	 t | _ | j | ƒ qÎ Wg  } x„ t |  j ƒ D]s } | | | | | d !}	 | | | | | d !}
 t d |  j d |  j |	 |
 f d	 d | ƒ } | j | ƒ qRWt d |  j ƒ } t j d d k  rþ| j t ƒ n	 t | _ | j ƒ  xD | D]< } t j d d k  rA| j t ƒ n	 t | _ | j ƒ  qWx | D] } | j ƒ  q_Wx | D] } | j ƒ  qzWt |  _ | j ƒ  d  S(   Ns   
s   -=i   s)   Running %s.test03_ThreadedTransactions...iÿÿÿÿi    R-   R.   R/   s	   reader %di   i   s	   writer %d(   R   R   R   R0   R1   R    R2   R3   R4   R5   R6   R7   R   R8   R   R   R9   R:   R;   R<   R=   R?   t   deadlockThreadR@   R(   t   Falset   doLockDetect(   R"   RA   R    RB   RC   R4   RD   RE   R3   RF   RG   RH   t   dtRI   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   test03_ThreadedTransactionsI  sZ    		
		c         C   sŒ  t  j d d k  r% t ƒ  j ƒ  } n t ƒ  j } t | ƒ t | ƒ } x,t | ƒ ruy¬ |  j j d  |  j	 ƒ } | |  } x_ | D]W } d | }	 | j
 |	 |  j |	 ƒ | ƒ t r‚ | d d k r‚ d | t | f GHq‚ q‚ W| j ƒ  | | } | j ƒ  j ƒ  WqJ t j t j f k
 rq}
 t rdt  j d k  rKd | |
 d	 f GHqdd | |
 j d	 f GHn  | j ƒ  qJ XqJ Wt rˆd
 | GHn  d  S(   Ni    i   s   %04did   s   %s: records %d - %d finishedi   i   s   %s: Aborting transaction (%s)i   s   %s: thread finished(   i   i   (   R   R9   R   RL   R/   RN   R   t	   txn_begint   Nonet   txnFlagRP   R*   R   R@   t   commitRQ   R   t   DBLockDeadlockErrort   DBLockNotGrantedErrorR.   t   abort(   R"   R   RA   R4   R/   RR   t   txnt   keys2RD   R)   t   val(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR?   „  s2    



c         C   s‹  t  j d d k  r% t ƒ  j ƒ  } n t ƒ  j } t } x;| sty· |  j j d  |  j	 ƒ } | j
 | ƒ } d } | j ƒ  } xE | rÃ | d 7} | \ }	 }
 |  j |  j |	 ƒ |
 ƒ | j ƒ  } q Wt rÜ d | | f GHn  | j ƒ  | j ƒ  t } Wq: t j t j f k
 rp} t rYt  j d	 k  r@d | | d f GHqYd | | j d f GHn  | j ƒ  | j ƒ  q: Xq: Wt r‡d | GHn  d  S(
   Ni    i   i   s   %s: found %d recordsi   i   s   %s: Aborting transaction (%s)s   %s: thread finished(   i   i   (   R   R9   R   RL   R/   Rl   R   Rp   Rq   Rr   RT   RU   R5   R*   RV   R   R$   Rs   R;   R   Rt   Ru   R.   Rv   (   R"   R   RW   R/   t   finishedRw   RY   RR   RZ   R)   R[   Ry   (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR8   £  s<    		
 



c         C   sx   t  |  _ xh |  j rs t j d ƒ y7 |  j j t j t j ƒ } t	 rX | rX d | GHn  Wq t j
 k
 ro q Xq Wd  S(   Ngš™™™™™©?s.   deadlock: Aborted %d deadlocked transaction(s)(   R;   Rm   t   timet   sleepR   t   lock_detectR   t   DB_LOCK_RANDOMt   DB_LOCK_CONFLICTR   t   DBError(   R"   t   aborted(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyRk   Æ  s    		(   R   R   R   R\   t   DB_AUTO_COMMITR!   R^   Rg   t   DB_INIT_LOGt   DB_INIT_TXNR   R4   R3   R1   Rr   R   Ro   R?   R8   Rk   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyRj   8  s   
		;		#t   BTreeThreadedTransactionsc           B   s#   e  Z e j Z d  Z d Z d Z RS(   i   i
   iè  (   R   R   R   R`   R    R3   R4   R1   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR…   Ô  s   	t   HashThreadedTransactionsc           B   s#   e  Z e j Z d  Z d Z d Z RS(   i   i
   iè  (   R   R   R   Rb   R    R3   R4   R1   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR†   Ú  s   	t   BTreeThreadedNoWaitTransactionsc           B   s,   e  Z e j Z d  Z d Z d Z e j Z	 RS(   i   i
   iè  (
   R   R   R   R`   R    R3   R4   R1   t   DB_TXN_NOWAITRr   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR‡   à  s
   	t   HashThreadedNoWaitTransactionsc           B   s,   e  Z e j Z d  Z d Z d Z e j Z	 RS(   i   i
   iè  (
   R   R   R   Rb   R    R3   R4   R1   Rˆ   Rr   (    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyR‰   ç  s
   	c          C   sÎ   t  j ƒ  }  t rÅ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t	 ƒ ƒ |  j t  j t
 ƒ ƒ |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ n d GH|  S(   Ns-   Threads not available, skipping thread tests.(   t   unittestt	   TestSuiteR	   t   addTestt	   makeSuiteR_   Ra   Rh   Ri   R…   R†   R‡   R‰   (   t   suite(    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt
   test_suiteñ  s    t   __main__t   defaultTestR   ((   t   __doc__t   osR   R{   t   errnoR    R'   R   t	   NameErrort	   ExceptionRŠ   t   test_allR   R   R   R   R	   R
   R   t	   threadingR   R9   R   R   t   TestCaseR   R,   R_   Ra   Rc   Rh   Ri   Rj   R…   R†   R‡   R‰   R   R   t   main(    (    (    s^   /tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/bsddb/test/test_thread.pyt   <module>   s@   4$m	lœ
	