Ñò
•à"Ic           @   sÌ   d  Z  d d k Z d d k Z d d k l Z l Z l Z l Z l Z y d d k	 Z	 Wn e
 j
 o n Xe	 i d d d d e ƒd e i f d	 „  ƒ  YZ d
 „  Z e d j o e i d d ƒ n d S(   sf   TestCases for checking that it does not segfault when a DBEnv object
is closed before its DB objects.
iÿÿÿÿN(   t   dbt   test_supportt   verboset   get_new_environment_patht   get_new_database_patht   ignoret   messages   DB could not be closed int   categoryt   DBEnvClosedEarlyCrashc           B   sp   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 i ƒ  d j o d „  Z n RS(   c         C   s   t  ƒ  |  _ d |  _ d  S(   Nt   test(   R   t   homeDirt   filename(   t   self(    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt   setUp   s    c         C   s   t  i |  i ƒ d  S(   N(   R   t   rmtreeR
   (   R   (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt   tearDown   s    c         C   s   t  i ƒ  } | i |  i t  i t  i Bt  i Bt  i Bd ƒ t  i | ƒ } t  i | ƒ } | i |  i	 t  i
 t  i t  i Bd ƒ |  i t  i | i |  i	 d t  i
 t  i d ƒ | i d d ƒ |  i | i d ƒ d d ƒ | i ƒ  |  i t  i | i d ƒ d  S(   Ni¶  t   2R	   s   this is a tests   put!=get(   R    t   DBEnvt   openR
   t   DB_INIT_CDBt	   DB_CREATEt	   DB_THREADt   DB_INIT_MPOOLt   DBR   t   DB_BTREEt   assertRaisest   DBNoSuchFileErrort   putt   assertEqualt   gett   closet   DBError(   R   t   dbenvt   dt   d2(    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt   test01_close_dbenv_before_db    s    &
c         C   st  t  i ƒ  } | i |  i t  i t  i Bt  i Bt  i Bd ƒ t  i | ƒ } | i |  i	 t  i
 t  i t  i Bd ƒ | i d d ƒ | i d d ƒ | i d d ƒ |  i | i d ƒ d d ƒ | i ƒ  } | i ƒ  | i ƒ  | i ƒ  |  i t  i | i ƒ t  i | ƒ } | i |  i	 t  i
 t  i t  i Bd ƒ | i ƒ  } | i ƒ  | i ƒ  | i ƒ  |  i t  i | i ƒ d  S(	   Ni¶  R	   s   this is a testt   test2s   another testt   test3s   another ones   put!=get(   R    R   R   R
   R   R   R   R   R   R   R   R   R   R   t   cursort   firstt   nextR   R   R   (   R   R    R!   t   c(    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt"   test02_close_dbenv_before_dbcursor2   s,    &


&


c         C   sæ   d d  k  } | i i |  i |  i ƒ } t i ƒ  } | i | t i t i	 t i
 Bd ƒ | i d d ƒ | i d d ƒ | i d d ƒ |  i | i d ƒ d d	 ƒ | i ƒ  } | i ƒ  | i ƒ  | i ƒ  |  i t i | i ƒ d  S(
   Niÿÿÿÿi¶  R	   s   this is a testR$   s   another testR%   s   another ones   put!=get(   t   os.patht   patht   joinR
   R   R    R   R   R   R   R   R   R   R   R&   R'   R(   R   R   R   (   R   t   osR,   R!   R)   (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt+   test03_close_db_before_dbcursor_without_envO   s    #


c         C   s  t  i ƒ  } | i |  i t  i t  i Bt  i Bt  i Bd ƒ g  } t d ƒ D] } | t  i	 | ƒ qK ~ } g  } x4 | D], } | i |  i
 t  i t  i t  i Bd ƒ qw W| d i d d ƒ | d i d d ƒ | d i d d	 ƒ |  i | d
 i d ƒ d d ƒ xB | D]: } | i g  } t d ƒ D] } | | i ƒ  q'~ ƒ q
Wx% | d  d  d … D] } | i ƒ  q\Wx% | d  d  d … D] } | i ƒ  q„W|  i t  i | d i d ƒ |  i t  i | d i ƒ | d i ƒ  | d i ƒ  | i ƒ  |  i t  i | d i ƒ d  S(   Ni¶  i   i
   R	   s   this is a testR$   s   another testR%   s   another onei   s   put!=geti    i   i	   ie   iP   (   R    R   R   R
   R   R   R   R   t   xrangeR   R   R   R   R   R   t   extendR&   R   R   R   R'   R(   (   R   R    t   _[1]t   it   dbst   cursorst   _[2]t   j(    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt   test04_close_massive`   s8    0 *  8  
c         C   sÁ   t  i ƒ  } | i |  i t  i t  i Bt  i Bt  i Bd ƒ t  i | ƒ } | i |  i	 t  i
 t  i t  i Bd ƒ | i ƒ  ~ y d d  k } Wn t j
 o d  } n X| o | i ƒ  n d  S(   Ni¶  iÿÿÿÿ(   R    R   R   R
   R   R   R   R   R   R   R   R   t   gct   ImportErrort   Nonet   collect(   R   R    R!   R9   (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt$   test05_close_dbenv_delete_db_success„   s    &
c         C   sk  t  i ƒ  } | i |  i t  i t  i Bt  i Bt  i Bƒ t  i | ƒ } | i	 ƒ  } t  i
 ƒ  d
 j  o& | i |  i d t  i d t  i ƒn) | i |  i d t  i d t  i d | ƒ| i d d d | ƒ| i ƒ  | i	 ƒ  } | i | ƒ } | i ƒ  } |  i d | i ƒ  ƒ d d  k } | i ƒ  i i ƒ  z | i d	 ƒ | i ƒ  Wd  QX|  i t  i | i ƒ d  S(   Ni   i   t   dbtypet   flagst   txnt   XXXt   yyyiÿÿÿÿR   (   i   i   (   RA   RB   (   R    R   R   R
   t   DB_INIT_TXNR   t   DB_INIT_LOGR   R   t	   txn_begint   versionR   t   DB_HASHR   t   commitR&   t   dupt   assertEqualsR'   t   warningst   catch_warningst   __exit__t	   __enter__t   simplefilterR   t   DBCursorClosedError(   R   R    R!   R@   t   c1t   c2RK   (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt"   test06_close_txn_before_dup_cursor˜   s(    &!
i   i   i    c         C   s}   d d  k  } | i i |  i |  i ƒ } t i ƒ  } | i | t i t i	 t i
 Bd ƒ t i | ƒ } | i ƒ  | i ƒ  d  S(   Niÿÿÿÿi¶  (   R+   R,   R-   R
   R   R    R   R   R   R   R   t
   DBSequenceR   (   R   R.   R,   R!   R4   (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt   test07_close_db_before_sequence±   s    #
(   i   i   i    (   t   __name__t
   __module__R   R   R#   R*   R/   R8   R=   RS   R    RF   RU   (    (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyR      s   						$		c          C   s&   t  i ƒ  }  |  i t  i t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   (   t   suite(    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt
   test_suite¼   s    t   __main__t   defaultTestR]   (   t   __doc__R.   RX   t   test_allR    R   R   R   R   RK   R:   t   filterwarningst   RuntimeWarningt   TestCaseR   R]   RV   t   main(    (    (    s8   /mit/python/lib/python2.6/bsddb/test/test_early_close.pyt   <module>   s   (¤	