ó
[³XMc           @   sœ  d  Z  d d l Z d d l 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 d l m Z d d	 l m Z d d
 l m Z d Z d Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d Z d Z e e d „ Z d „  Z e d d d e ƒ Z e d d d e ƒ Z  d d# d „  ƒ  YZ! d e! _" d e! f d „  ƒ  YZ# d e j$ f d „  ƒ  YZ% e e# d  e& ƒ  ƒ d! e f d" „  ƒ  YZ' d S($   s*   
Tests for twisted.enterprise reflectors.
iÿÿÿÿN(   t   reactort
   interfacest   defer(   t	   RowObject(   t   EQUAL(   t   SQLReflector(   t   util(   t   makeSQLTests(   t   suppress(   t   unittestt	   testTablet
   childTablet   TestRowc           B   s,   e  Z d d d	 d
 d g Z d g Z e Z RS(   t
   key_stringt   varchart   col2t   intt   another_columnt   Column4t	   column_5_(   s
   key_stringR   (   R   s   int(   R   R   (   R   R   (   R   s   int(   s
   key_stringR   (   t   __name__t
   __module__t
   rowColumnst   rowKeyColumnst	   tableNamet   rowTableName(    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR      s   		t   ChildRowc           B   sM   e  Z d
 d d d d d g Z d g Z e Z e d g d g d d	 f g Z RS(   t   childIdR   t   fooR   t   test_keyt   stufft   gogogot   dataR   i   (   s   childIds   int(   R   s   varchar(   s   test_keys   varchar(   R   s   varchar(   R   s   int(   s   datas   varchar(   s   childIds   int(   s   test_keys   varchar(   s
   key_strings   varcharN(	   R   R   R   R   t   childTableNameR   R   t   Nonet   rowForeignKeys(    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR   "   s   		s©   
CREATE TABLE testTable (
  key_string     varchar(64),
  col2           integer,
  another_column varchar(64),
  Column4        varchar(64),
  column_5_      integer
)
sÈ   
CREATE TABLE childTable (
  childId        integer,
  foo            varchar(64),
  test_key       varchar(64),
  stuff          varchar(64),
  gogogo         integer,
  data           varchar(64)
)
c      	   C   s  i  } x|  j  D]ü \ } } t j |  | ƒ rG t |  | ƒ | | <q n« | rn t j d d ƒ d k rn d  } n„ | d k r t j d d ƒ } nc t j d d ƒ d k r° d } n- d j t d „  t	 t j d d	 ƒ ƒ ƒ ƒ } | sò | j
 ƒ  } n  t |  | | ƒ | | | <q W| S(
   Ni    i	   R   iðØÿÿi'  t    c         S   s   t  t j d d ƒ ƒ S(   Ni    i   (   t   chrt   randomt	   randrange(   t   i(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   <lambda>U   s    i   i@   (   R   R   t   getKeyColumnt   getattrR&   t   randintR"   t   joint   mapt   xranget   rstript   setattr(   t   rowt   nulls_okt   trailing_spaces_okt   valuest   namet   typet   value(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   randomizeRowG   s$    		c         C   sZ   xS |  j  D]H \ } } t |  | ƒ | | k r
 d | t |  | ƒ | | f GHt Sq
 Wt S(   Ns/   Mismatch on column %s: |%s| (row) |%s| (values)(   R   R+   t   Falset   True(   R2   R5   R6   R7   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt
   rowMatches^   s    t   messages6   twisted.enterprise.row is deprecated since Twisted 8.0t   categorys<   twisted.enterprise.reflector is deprecated since Twisted 8.0t   ReflectorTestBasec           B   s¤   e  Z d  Z e j e d ƒ d k r- d Z n  d Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z e e g e _ d	 „  Z d
 „  Z e e g e _ d „  Z RS(   sf   
    Base class for testing reflectors.

    @ivar reflector: The reflector created during setup.
    s%   No thread support, no reflector testsid   c         C   s   t  | |  j |  j ƒ S(   N(   R9   R3   R4   (   t   selfR2   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR9   }   s    c         C   s    |  j  ƒ  } | j |  j ƒ | S(   sW   
        Create and store a reference to a SQL reflector for use by the tests.
        (   t   createReflectort   addCallbackt   _cbSetUp(   R@   t   d(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt
   extraSetUp€   s    c         C   s   | |  _  d  S(   N(   t	   reflector(   R@   RF   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRC   ˆ   s    c         C   s
   |  j  ƒ  S(   N(   t   destroyReflector(   R@   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   tearDown‹   s    c         C   s   d  S(   N(    (   R@   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRG   Ž   s    c            s‰   t  ƒ  } | j d d ƒ ˆ  j | ƒ ‰ ˆ  j j | ƒ } ‡  f d †  } ‡  ‡ f d †  } | j | ƒ | j | ƒ | j ˆ  j ƒ | S(   s3   
        Full featured tests of reflector.
        R   t   firstc            s:   d t  d f g } ˆ  j j t d | ƒ} | j ˆ  j ƒ S(   NR   RI   t   whereClause(   R   RF   t   loadObjectsFromR   RB   t   gotData(   t   _RJ   RD   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt	   _loadBack   s    	c            sI   ˆ  j  t ˆ  j ƒ d k d ƒ ˆ  j d } ˆ  j  t | ˆ ƒ d ƒ | S(   Ni   s   no rowi    s   no match(   t
   failUnlesst   lenR    R<   (   RM   t   parent(   R@   R5   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt
   _getParent¤   s    (   R   t   assignKeyAttrR9   RF   t	   insertRowRB   t   _cbTestReflector(   R@   R2   RD   RN   RR   (    (   R@   R5   s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   test_reflector‘   s    	c            sg  i  ‰ g  } i  ‰  x| t  d ˆ j ƒ D]h } t ƒ  } | j d | ƒ ˆ j | ƒ ‰ d ˆ d <| _ ˆ ˆ  | <| j ˆ j j | ƒ ƒ d  } q% Wt
 j | ƒ } d  g ‰ ‡ ‡ f d †  } ‡ ‡  ‡ f d †  } ‡ ‡ f d †  } ‡ ‡ ‡ f d †  }	 ‡ f d	 †  }
 ‡ ‡ ‡ f d
 †  } ‡ ‡ f d †  } ‡ f d †  } ‡ ‡ f d †  } ‡ ‡ ‡ f d †  } ‡ f d †  ‰ ‡ ‡ f d †  } ‡ f d †  } | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j |	 ƒ | j |
 ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | S(   Ni    R   RI   R   c            s(   ˆ j  j t d ˆ  ƒ} | j ˆ j ƒ S(   Nt	   parentRow(   RF   RK   R!   RB   RL   (   RM   RD   (   RQ   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _loadObjectsÂ   s    c            s   ˆ j  t ˆ j ƒ ˆ j k d ƒ ˆ j  t ˆ  j ƒ ˆ j k d t ˆ  j ƒ ƒ x8 ˆ  j D]- } ˆ j  t | ˆ | j ƒ d | j ƒ q[ Wd  S(   Ns   no rows on querys   did not load child rows: %ds   child %d does not match(   RO   RP   R    t   num_iterationst	   childRowsR<   R   (   RM   t   child(   RQ   t   child_valuesR@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _checkLoadObjectsÆ   s    c            sU   ˆ j  t ˆ j ƒ ˆ j k d ƒ ˆ j  t ˆ  j ƒ ˆ j k d t ˆ  j ƒ ƒ d  S(   Ns   no rows on querys   child rows added twice!: %d(   RO   RP   R    RY   RZ   (   RM   (   RQ   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _checkLoadObjects2Ï   s    c            s#   ˆ  j  ˆ ƒ ˆ d <ˆ  j j ˆ ƒ S(   Ni    (   R9   RF   t	   updateRow(   RM   (   R@   R5   RQ   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _changeParentÕ   s    c            s:   d t  d f g } ˆ  j j t d | ƒ} | j ˆ  j ƒ S(   NR   RI   RJ   (   R   RF   RK   R   RB   RL   (   RM   RJ   RD   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRN   Ú   s    c            sd   ˆ  j  t ˆ  j ƒ d k d ƒ ˆ  j d } ˆ  j  t | ˆ d ƒ d ƒ ˆ d ˆ | j <d  } d  S(   Ni   s   no rowi    s   no match(   RO   RP   R    R<   R   R"   (   RM   RQ   (   R@   R5   t   test_values(    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _checkLoadBackà   s
    c            s|   g  } xf t  d ˆ  j ƒ D]R } t ƒ  } | j d d | ƒ ˆ  j | ƒ ˆ | j <| j ˆ  j j | ƒ ƒ q Wt	 j
 | ƒ S(   Ni    R   s   bulk%d(   t   rangeRY   R   RS   R9   R   t   appendRF   RT   R   t   gatherResults(   RM   t   dsR(   R2   (   R@   Ra   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _saveMoreTestRowsé   s    	c            s"   ˆ  j  j d ƒ } | j ˆ  j ƒ S(   NR
   (   RF   RK   RB   RL   (   RM   RD   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _loadRowsBackó   s    c            se   ˆ  j  t ˆ  j ƒ ˆ  j d k d ƒ x8 ˆ  j D]- } ˆ  j  t | ˆ | j ƒ d | j ƒ q0 Wd  S(   Ni   s   query did not get rowss   child %s does not match(   RO   RP   R    RY   R<   R   (   RM   R2   (   R@   Ra   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _checkRowsBackø   s
    c            se   g  } x@ ˆ  j  D]5 } ˆ  j | ƒ ˆ | j <| j ˆ  j j | ƒ ƒ q Wt j | ƒ } | j ˆ ƒ S(   N(	   R    R9   R   Rd   RF   R_   R   Re   RB   (   RM   Rf   R2   RD   (   R@   Ra   t   _cbChangeRows(    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _changeRows   s    c            s   d  ˆ  _ d  S(   N(   R"   R    (   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRj   	  s    c            sO   g  } x* ˆ  j  D] } | j ˆ  j j | ƒ ƒ q Wt j | ƒ } | j ˆ ƒ S(   N(   R    Rd   RF   t	   deleteRowR   Re   RB   (   RM   Rf   R2   RD   (   R@   Rj   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _deleteRows  s
    c            s#   ˆ  j  t ˆ  j ƒ d k d ƒ d  S(   Ni    s   rows were not deleted(   RO   RP   R    (   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   _checkRowsDeleted  s    (   Rc   RY   R   RS   R9   R   Rd   RF   RT   R"   R   Re   RB   (   R@   RQ   t   insertsR(   R2   RD   RX   R]   R^   R`   RN   Rb   Rg   Rh   Ri   Rk   Rm   Rn   (    (   R\   R@   Ra   Rj   RQ   R5   s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRU   ±   sV    	

			
	c            s]   t  ƒ  ‰ ˆ j d d ƒ ˆ  j ˆ ƒ } ˆ  j j ˆ ƒ } ‡  ‡ f d †  } | j | ƒ | S(   s9   
        Create a row and then try to delete it.
        R   RI   c            s   ˆ  j  j ˆ ƒ S(   N(   RF   Rl   (   RM   (   R@   R2   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt
   _deleteRow4  s    (   R   RS   R9   RF   RT   RB   (   R@   R5   RD   Rp   (    (   R@   R2   s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   test_saveAndDelete*  s    	c         C   s   | |  _  d  S(   N(   R    (   R@   R    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRL   <  s    N(   R   R   t   __doc__R   t   IReactorThreadsR    R"   t   skipt   countR9   RE   RC   RH   RG   RV   t   rowObjectSuppressiont   reflectorSuppressionR   RU   Rq   RL   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR?   q   s   								y	g      >@t   SQLReflectorTestBasec           B   s    e  Z d  Z d „  Z d „  Z RS(   s+   
    Base class for the SQL reflector.
    c            s×   ˆ  j  ƒ  ˆ  j ƒ  ˆ  _ ˆ  j j ƒ  ˆ  j rj ˆ  j j d ƒ } | j ‡  f d †  ƒ | j d „  ƒ n t j	 d  ƒ } | j ‡  f d †  ƒ | j ‡  f d †  ƒ ˆ  j r´ t p· t ‰ | j ‡ ‡  f d †  ƒ | S(   Ns   DROP TABLE testTablec            s   ˆ  j  j d ƒ S(   Ns   DROP TABLE childTable(   t   dbpoolt   runOperation(   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR)   O  s    c         S   s   d  S(   N(   R"   (   RM   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR)   Q  s    c            s   ˆ  j  j t ƒ S(   N(   Ry   Rz   t   main_table_schema(   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR)   U  s    c            s   ˆ  j  j t ƒ S(   N(   Ry   Rz   t   child_table_schema(   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR)   V  s    c            s   ˆ  ˆ j  t t g ƒ S(   N(   Ry   R   R   (   RM   (   t   reflectorClassR@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR)   Y  s    (   t   startDBt   makePoolRy   t   startt	   can_clearRz   RB   t
   addErrbackR   t   succeedR"   t   escape_slashesR   t   NoSlashSQLReflector(   R@   RD   (    (   R@   R}   s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRA   H  s    
	c            sH   ˆ  j  j d ƒ } | j ‡  f d †  ƒ ‡  f d †  } | j | ƒ | S(   Ns   DROP TABLE testTablec            s   ˆ  j  j d ƒ S(   Ns   DROP TABLE childTable(   Ry   Rz   (   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR)   _  s    c            s   ˆ  j  j ƒ  ˆ  j ƒ  d  S(   N(   Ry   t   closet   stopDB(   RM   (   R@   (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR†   a  s    (   Ry   Rz   RB   (   R@   RD   R†   (    (   R@   s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRG   ]  s
    (   R   R   Rr   RA   RG   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRx   C  s   	t   DeprecationTestCasec           B   s    e  Z d  Z d „  Z d „  Z RS(   s:   
    Test various deprecations of twisted.enterprise.
    c         C   s#   d „  } |  j  t d t | ƒ d S(   s3   
        Test deprecation of L{RowObject}.
        c           S   s   t  ƒ  S(   N(   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   wrapperq  s    s6   twisted.enterprise.row is deprecated since Twisted 8.0N(   t   assertWarnst   DeprecationWarningt   __file__(   R@   R‰   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   test_rowDeprecationm  s
    		c         C   s6   d „  } d d l  m } |  j t d | j | ƒ d S(   s6   
        Test deprecation of L{SQLReflector}.
        c           S   s   t  d  d ƒ S(   N(    (   R   R"   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR‰   |  s    iÿÿÿÿ(   t   sqlreflectors<   twisted.enterprise.reflector is deprecated since Twisted 8.0N(   t   twisted.enterpriseRŽ   RŠ   R‹   RŒ   (   R@   R‰   RŽ   (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   test_reflectorDeprecationx  s    		(   R   R   Rr   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyRˆ   h  s   	t   ReflectorTestCaseR…   c           B   s   e  Z d  Z d „  Z RS(   s;   
    An sql reflector that only escapes single quotes.
    c         C   s   | j  d d ƒ S(   Nt   's   ''(   t   replace(   R@   t   text(    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   escape_string  s    (   R   R   Rr   R•   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyR…   Š  s   (    ((   Rr   R&   t   twisted.internetR    R   R   t   twisted.enterprise.rowR   t   twisted.enterprise.reflectorR   t   twisted.enterprise.sqlreflectorR   R   R   t   twisted.test.test_adbapiR   t   twisted.trial.utilR   t   suppressWarningt   twisted.trialR	   R   R!   R   R   R{   R|   R;   R9   R<   R‹   Rv   Rw   R?   t   timeoutRx   t   TestCaseRˆ   t   globalsR…   (    (    (    s?   /usr/lib/python2.7/dist-packages/twisted/test/test_reflector.pyt   <module>   s:   
				Ï	%