ó
E®Uc           @   s¾   d  d l  Z  e  j j d d ƒ d  d l Z d  d l Z d  d l m Z d  d l Z e j ƒ  d e	 f d „  ƒ  YZ
 e
 ƒ  Z e j ƒ  Z e d k r¤ e  j d ƒ n d e GHe  j d ƒ d S(	   iÿÿÿÿNi    s
   bin/python(   t   drsuapit   RpcTestsc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s5   test type behaviour of pidl generated python RPC codec         C   sQ   t  j | ƒ } | d k r+ | |  j 8} n  | | } | d k rM d | GHn  d S(   s4   check that the number of allocated blocks is correcti    s   Leaked %d blocksN(   t   talloct   total_blockst   Nonet   initial_blocks(   t   selft   objectt   num_expectedt   nblockst   leaked_blocks(    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyt   check_blocks   s    
c   	      C   s>  d | GH| ƒ  } x%t  | ƒ D]} | d d k r; q n  y t | | ƒ } Wnê t k
 r	} t | ƒ d k r– d | | f GH|  j d 7_ q n  t | ƒ d d !GHt | ƒ d d !d k rå d	 | | f GH|  j d 7_ q q;d
 | | f GH|  j d 7_ q n2 t k
 r:d
 | | f GH|  j d 7_ q n Xy# d | | f GHt | | | ƒ Wng t k
 rÇ} t | t ƒ ršt | ƒ j	 d ƒ ršq qÈd | | | j
 | f GH|  j d 7_ q n Xy= | t | | ƒ k rd | | | t | | ƒ f GHw n  Wq t k
 r5} d | | | j
 | f GHq q Xq Wd  S(   Ns   Checking type %si    t   _s   unknown union levels#   ERROR: Unknown union level in %s.%si   i   s   Can not convert C Types   ERROR: Unknown C type for %s.%ss"   ERROR: Failed to instantiate %s.%ss   Setting %s.%ss   is read-onlys"   ERROR: Failed to set %s.%s: %r: %ss,   ERROR: Comparison failed for %s.%s: %r != %rs*   ERROR: compare exception for %s.%s: %r: %s(   t   dirt   getattrt	   TypeErrort   strt   errcountt	   Exceptiont   setattrt
   isinstancet   AttributeErrort   endswitht	   __class__(	   R   t	   interfacet   typenamet   typet   vt   nt   valuet   errstrt   e(    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyt
   check_type(   sP    		$
c         C   sW  |  j  } xt | ƒ D]} | d d k s | | k r> q n  t | | ƒ } t | t ƒ r_ q t | t ƒ s#t | t ƒ r€ q t | t ƒ ry6 t j	 d  ƒ } |  j | | | ƒ |  j d  | ƒ Wq#t k
 r} d | | | j | f GH|  j  d 7_  q#Xq t | ƒ rq d | | f GHq W|  j  | d k rSd |  j  | | f GHn  d  S(   Ni    R   s)   ERROR: Failed to check_type %s.%s: %r: %si   s   UNKNOWN: %s=%ss   Found %d errors in %s(   R   R   R   R   R   t   intt   longR   R   R   R   R    R   R   R   t   callable(   R   R   t   inameR   R   R   R   R   (    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyt   check_interfaceY   s,    	c         C   sœ   x• t  t j ƒ D]„ } | d d k r, q n  | d k s | d k rJ q n  d | GHt t j | ƒ } t j d  ƒ } |  j | | ƒ |  j d  | ƒ q Wd  S(   Ni    R   t   ClientConnectiont   bases   Checking interface %s(	   R   t   sambat   dcerpcR   R   R   R   R%   R   (   R   R$   t   ifaceR   (    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyt   check_all_interfacesu   s    	c         C   s,   t  j d  ƒ |  _ d |  _ |  j ƒ  |  j S(   Ni    (   R   R   R   R   R   R+   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyt   run   s    	
(   t   __name__t
   __module__t   __doc__R   R    R%   R+   R,   (    (    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyR      s   			1		s   %d failuresi   (   t   syst   patht   insertR(   t   samba.testst   samba.dcerpcR    R   t   enable_null_trackingR   R   t   testsR,   R   t   exit(    (    (    s>   /usr/lib/python2.7/dist-packages/samba/tests/dcerpc/testrpc.pyt   <module>   s   
k		