σ
jϊ\c           @@ sw  d  Z  d d l m Z d d l m Z d d l Z d d l Z d d l Z d d l Z d d l m Z m	 Z	 m
 Z
 m Z m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d
 Z d e j f d     YZ d e f d     YZ d e e j e f d     YZ d e e j e f d     YZ d   Z e d k rse j e j   e j!   e j" d d  n  d S(   sG   This test unit checks control of dataset timestamps with track_times.

i    (   t   print_function(   t   absolute_importN(   t
   StringAtomt	   Int16Atomt	   StringColt   IntColt   Int16Col(   t   common(   t   unittest(   t   PyTablesTestCase(   t   ranget    2aafb84ab739bb4ae61d2939dc010bfdt   Recordc           B@ s)   e  Z e d  d  Z e   Z e   Z RS(   t   itemsizei   (   t   __name__t
   __module__R   t   var1R   t   var2R   t   var3(    (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyR      s   	t   TrackTimesMixinc           B@ s   e  Z d    Z RS(   c      
   C@ sκ  |  j  j | d j |  t d |  j d d  d | } | j } xN t |  j  D]= } d |  j | | d <| | d <| d | d	 <| j	   qO W| j
   g  | j   D] } | d ^ q§ } g  | j   D] } | d	 ^ qΚ }	 |  j  j | d
 j |  | d j |  d | |  j  j | d d j |  d |	 d d j | d  d | |  j  j | d j |  t d d  d d j | d  d | }
 |
 j	 |  |  j  j | d j |  t   d j | d  d | } | j	 |	  d  S(   Ns   table{}t   titlet   filterst   track_timess   %04dR   R   i   R   s   array{}s   col {}t   names   carray{}t   objs   earray{}R   i   i    s	   vlarray{}i   (   i    (   t   h5filet   create_tablet   formatR   R   t   Nonet   rowR
   t   nrowst   appendt   flusht   iterrowst   create_arrayt   create_carrayt   create_earrayR   t   create_vlarrayR   (   t   selft   groupt   jR   t   tablet   dt   it   xt   var1Listt   var3Listt   eat   vla(    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyt   _add_datasets    s>    			

##		(   R   R   R1   (    (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyR      s   t   TimestampTestCasec           B@ s/   e  Z d  Z d Z d   Z d   Z d   Z RS(   s   A titlei
   c         C@ s!   t  t |   j   |  j   d  S(   N(   t   superR2   t   setUpt   populateFile(   R&   (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyR4   U   s    c         C@ sJ   |  j  j } x7 t d  D]) } t | d  } |  j | | |  q Wd  S(   Ni   i   (   R   t   rootR
   t   boolR1   (   R&   R'   R(   R   (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyR5   Y   s    c         C@ s  xd D]} g  } xά t  d  D]Ξ } t | d  } | j |  } |  j j |  } |  j | j |  | j   } |  j | j d  |  j | j	 d  |  j | j
 d  | sΛ |  j | j d  q  |  j | j d  | j | j  q  W|  j | d	 | d k  q Wd
 S(   s    Checking retrieval of timestampss   /table{}s   /array{}s	   /carray{}s	   /earray{}s
   /vlarray{}i   i   i    i   N(   s   /table{}s   /array{}s	   /carray{}s	   /earray{}s
   /vlarray{}(   R
   R7   R   R   t   get_nodet   assertEqualR   t   _get_obj_timestampst   atimet   mtimet   btimet   ctimet   assertNotEqualR   t
   assertTrue(   R&   t   patternt   tracked_ctimesR(   R   t   nodeR   t
   timestamps(    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyt   test00_checkTimestamps_   s(       
(   R   R   R   R   R4   R5   RE   (    (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyR2   Q   s
   		t   BitForBitTestCasec           B@ s/   e  Z d  Z d Z d   Z d   Z d   Z RS(   s   A titlei
   c         C@ sX   |  j  j   t j |  j d d |  _  |  j  j } |  j | d |  |  j  j   d  S(   Nt   modet   wi   (   R   t   closet   tablest	   open_filet   h5fnameR6   R1   (   R&   R   R'   (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyt   repopulateFile   s
    c         C@ sΩ   |  j  d t  |  j |  j  } |  j  d t  |  j |  j  } t j d  |  j  d t  |  j |  j  } |  j  d t  |  j |  j  } |  j t |  |  j | |  |  j	 | |  |  j	 | |  d S(   s8   Checking bit-for-bit reproducibility with no track_timesR   i   N(
   RM   t   Falset   _get_digestRL   t   Truet   timet   sleepR9   t	   HEXDIGESTR?   (   R&   t   hexdigest_wo_track_1t   hexdigest_w_track_1t   hexdigest_w_track_2t   hexdigest_wo_track_2(    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyt   test00_checkReproducibility   s    c         C@ sS   t  j   } t | d  } x | D] } | j |  q" W| j   | j   } | S(   Nt   rb(   t   hashlibt   md5t   opent   updateRI   t	   hexdigest(   R&   t   filenameR[   t   fdt   dataR^   (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyRO      s    
(   R   R   R   R   RM   RX   RO   (    (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyRF   ~   s
   		c          C@ sY   t  j   }  d } x@ t |  D]2 } |  j t  j t   |  j t  j t   q W|  S(   Ni   (   R   t	   TestSuiteR
   t   addTestt	   makeSuiteR2   RF   (   t   theSuitet   niterR+   (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyt   suite¨   s    t   __main__t   defaultTestRg   (#   t   __doc__t
   __future__R    R   RZ   t   sysRQ   RJ   R   R   R   R   R   t   tables.testsR   t   tables.tests.commonR   R	   t   TestCaset	   six.movesR
   RS   t   IsDescriptionR   t   objectR   t   TempFileMixinR2   RF   Rg   R   t
   parse_argvt   argvt   print_versionst   main(    (    (    s;   lib/python2.7/site-packages/tables/tests/test_timestamps.pyt   <module>   s*   (2-*	
