ó
[³XMc           @   s  d  Z  d d l m Z d d l m Z d d l m Z m Z m Z m	 Z	 m
 Z
 m Z d d l m Z d d l m Z m Z d d l m Z d d l Z d d l Z d d l Z d	 d d
 „  ƒ  YZ d e f d „  ƒ  YZ d d d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s(   
Testing for twisted.persisted.journal.
iÿÿÿÿ(   t   unittest(   t   PySpaceTestCase(   t   ICommandt   MemoryJournalt   serviceCommandt   ServiceWrapperCommandt   commandt	   Wrappable(   t	   DirDBMLog(   t	   deprecatet   versions(   t
   implementsNt   AddTimec           B   s   e  Z e e ƒ d  „  Z RS(   c         C   s   | | j  d <d  S(   Nt   time(   t   values(   t   selft   svct   cmdtime(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   execute   s    (   t   __name__t
   __module__R   R   R   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR      s   
t   Counterc           B   s5   e  Z d  Z d „  Z d „  Z d „  Z e d ƒ Z RS(   t   counterc         C   s   | |  _  d |  _ d  S(   Ni    (   t   uidt   x(   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   __init__    s    	c         C   s   |  j  S(   N(   R   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   getUid%   s    c         C   s   |  j  d 7_  d  S(   Ni   (   R   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt
   _increment)   s    R   (   R   R   t
   objectTypeR   R   R   R   t	   increment(    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR      s
   			t   Servicec           B   st   e  Z d  „  Z d „  Z d „  Z e d ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z e d	 ƒ Z e d
 ƒ Z RS(   c         C   s8   t  | ƒ } t | |  | |  j ƒ |  _ |  j j ƒ  d  S(   N(   R   R   t   _gotDatat   journalt   updateFromLog(   R   t   logpatht   journalpatht   log(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR   3   s    c         C   s7   | d  k r! i  |  _ i  |  _ n | \ |  _ |  _ d  S(   N(   t   NoneR   t   counters(   R   t   result(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR   9   s    	c         C   s   t  | ƒ } | |  j | <| S(   N(   R   R&   (   R   t   idt   c(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   _makeCounterA   s    R*   c         C   s    | d k r t  ‚ n  |  j | S(   NR   (   t
   ValueErrorR&   (   R   t   typeR(   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt
   loadObjectI   s     	c         C   s   | |  j  | <d S(   s   Add a new entry.N(   R   (   R   t   keyt   value(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   _addN   s    c         C   s   |  j  | =d S(   s"   
        Delete an entry.
        N(   R   (   R   R.   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   _deleteS   s    c         C   s   |  j  | S(   s+   
        Return value of an entry.
        (   R   (   R   R.   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   getZ   s    c         C   s   | j  t ƒ  ƒ d S(   s9   
        Set a key 'time' with the current time.
        N(   t   executeCommandR   (   R   R    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   addtimea   s    R0   R1   (   R   R   R   R   R*   R   t   makeCounterR-   R0   R1   R2   R4   t   addt   delete(    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR   1   s   								t   JournalTestCasec           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s:   |  j  ƒ  |  _ |  j  ƒ  |  _ t |  j |  j ƒ |  _ d  S(   N(   t   mktempR"   R#   R   R   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   setUpq   s    c         C   s¼   t  |  d ƒ r |  ` n  t j j |  j ƒ r@ t j |  j ƒ n  t j j |  j ƒ rh t j	 |  j ƒ n  t j j |  j
 ƒ r t j |  j
 ƒ n  t j j |  j
 ƒ r¸ t j	 |  j
 ƒ n  d  S(   NR   (   t   hasattrR   t   ost   patht   isdirR"   t   shutilt   rmtreet   existst   unlinkR#   (   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   tearDownw   s    	c         C   se   |  j  } | j | j d d ƒ |  j | j d ƒ d ƒ | j | j d ƒ |  j t | j d ƒ d  S(   Nt   foot   bar(   R   R6   R    t   assertEqualsR2   R7   t   assertRaisest   KeyError(   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   testCommandExecution…   s
    	c   
      C   s  |  j  } |  j  j j } |  j  j } | j | d d ƒ | j | d d ƒ | j | d ƒ t d d	 ƒ t d d
 ƒ t d d ƒ g } |  j | j ƒ  d ƒ xq t d d ƒ D]` } xW t	 | | d g  | j
 | ƒ D] \ } } | ^ qÑ ƒ D] \ } }	 |  j | |	 ƒ qê Wqª Wd  S(   NRD   RE   i   t   helloR0   R1   i   i   (   s   foos   bar(   i   RJ   (   s   foo(   R   R    R$   R6   R7   R   RF   t   getCurrentIndext   ranget   zipt   getCommandsSince(
   R   R   R$   t   jt   commandst   it   tR)   t   at   b(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   testLoggingŽ   s    	Fc         C   sT  |  j  } | j } | j | d d ƒ | j | d d ƒ | j j | j | j f ƒ | j | d ƒ | j | d ƒ } | j | d „ ƒ ~ |  `  t	 |  j
 |  j ƒ } |  j | j i d d 6ƒ |  j | j d j d ƒ ~ t |  j d ƒ } | j d ƒ | j ƒ  t	 |  j
 |  j ƒ } |  j | j i d d 6ƒ |  j | j d j d ƒ d  S(   NRD   RE   i   RJ   c         S   s   |  j  | ƒ S(   N(   R   (   R)   RO   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   <lambda>©   s    t   wt
   sfsdfsdfsd(   R   R    R6   t   syncR   R&   R7   R5   t   addCallbackR   R"   R#   RF   R   t   opent   writet   close(   R   R   RO   t   dt   f(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   testRecovery    s&    			
c         C   sc   |  j  } | j | j ƒ | j d ƒ } |  j  j j } | j d ƒ \ \ } } |  j | | ƒ d  S(   NR   i   (   R   R4   R    R2   R$   RN   RF   (   R   R   RR   R$   t   t2R)   (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   testTime»   s    	(   R   R   R:   RC   RI   RU   R`   Rb   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR8   o   s   						t   JournalDeprecationTestc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s?   
    Tests for twisted.persisted.journal being deprecated.
    c         C   sn   |  j  t j j ƒ  ƒ g  } x0 t j D]% } | j d ƒ r& | j | ƒ q& q& Wx | D] } t j | =qV Wd S(   sy   
        Prepare for the deprecation test, by making sure that
        twisted.persisted.journal isn't imported.
        s   twisted.persisted.journalN(   t   replaceSysModulest   syst   modulest   copyt
   startswitht   append(   R   t   modst   mod(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyR:   Ë   s    c         C   sr   xk t  t | ƒ ƒ D]W } | d } x> | t | ƒ k  rc | | | | k rV | | =q& | d 7} q& Wg  } q Wd S(   s4   
        Remove duplicate items from a list
        i   N(   RL   t   len(   R   t   listOfStuffRQ   RO   t
   duplicates(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   uniquifyÙ   s    

c      	   C   sž   d d l  m } |  j |  j g ƒ } |  j | ƒ |  j t | ƒ d ƒ |  j | d d t ƒ |  j | d d t j	 | t
 j d d d d ƒ ƒ d	 ƒ d
 S(   s€   
        Make sure that twisted.persisted.journal is deprecated, and
        check the text of its deprecation warning.
        iÿÿÿÿ(   R    i   i    t   categoryt   messaget   twistedi   sH   : Use a different persistence library. This one is no longer maintained.N(   t   twisted.persistedR    t   flushWarningst   test_deprecatedRo   RF   Rl   t   DeprecationWarningR	   t   getDeprecationWarningStringR
   t   Version(   R   R    t   warnings(    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyRu   ç   s    	(   R   R   t   __doc__R:   Ro   Ru   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyRc   Æ   s   		(    (    (   Rz   t   twisted.trialR    t   twisted.test.test_modulesR   t   twisted.persisted.journal.baseR   R   R   R   R   R   t#   twisted.persisted.journal.picklelogR   t   twisted.pythonR	   R
   t   zope.interfaceR   R?   t   os.pathR<   Re   R   R   R   t   TestCaseR8   Rc   (    (    (    s=   /usr/lib/python2.7/dist-packages/twisted/test/test_journal.pyt   <module>   s   .$>W