
    b                     J   d dl Z e j                            d d           d dlZd dlZd dlmZ d dlZ ej                      G d de	          Z
 e
            Ze                                Zed k    r e j        d            dS  edez              e j        d           dS )    Nz
bin/python)drsuapic                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )RpcTestsz5test type behaviour of pidl generated python RPC codec                     t          j        |          }|
|| j        z  }||z
  }|dk    rt          d|z             dS dS )z4check that the number of allocated blocks is correctNr   zLeaked %d blocks)talloctotal_blocksinitial_blocksprint)selfobjectnum_expectednblocksleaked_blockss        </usr/lib/python3/dist-packages/samba/tests/dcerpc/testrpc.pycheck_blockszRpcTests.check_blocks    s[    %f-->t**G </A$}455555     c                    t          d|z              |            }t          |          D ][}|d         dk    r	 t          ||          }n# t          $ r}t	          |          dk    r*t          d|d|           | xj        dz  c_        Y d }~jt          t	          |          dd                    t	          |          dd         d	k    r*t          d
|d|           | xj        dz  c_        Y d }~t          d|d|           | xj        dz  c_        Y d }~d }~wt          $ r) t          d|d|           | xj        dz  c_        Y 2w xY w	 t          d|d|           t          |||           n# t          $ rx}t          |t                    r(t	          |          
                    d          rY d }~t          d|d|d|j        d|           | xj        dz  c_        Y d }~d }~ww xY w	 |t          ||          k    r+t          d|d|d|dt          ||                     #%# t          $ r+}t          d|d|d|j        d|           Y d }~Ud }~ww xY wd S )NzChecking type %sr   _zunknown union levelzERROR: Unknown union level in .      zCan not convert C TypezERROR: Unknown C type for zERROR: Failed to instantiate zSetting zis read-onlyzERROR: Failed to set : zERROR: Comparison failed for z != zERROR: compare exception for )r
   dirgetattr	TypeErrorstrerrcount	Exceptionsetattr
isinstanceAttributeErrorendswith	__class__)	r   	interfacetypenametypevnvalueerrstres	            r   
check_typezRpcTests.check_type)   s;    8+,,,DFFQ ,	 ,	Ats{{1   v;;"777E888QQOPPPMMQ&MMHHHHc&kk!B$'(((v;;qt$(@@@ExxxKLLLMMQ&MMHHHHE(((AANOOOMMQ&MMHHHH   hhhJKKK"
1156661e$$$$   a00 SVV__^5T5T HHHHE(((AAAq{{{\]\]^___MMQ&MMHHHHGAqMM))EHHHVWVWVWY^Y^Y^`ghikl`m`m`mnooo *    hhhPQPQPQSTS^S^S^`a`abcccU,	 ,	s`   A
E8D)A$D)?%D))2EE#&F


H7H0HH=I
J JJc                    | j         }t          |          D ]}|d         dk    s||k    rt          ||          }t          |t                    r<t          |t
                    rRt          |t                    r	 t          j        d           }| 	                    |||           | 
                    d |           # t          $ r:}t          d|d|d|j        d|           | xj         dz  c_         Y d }~d }~ww xY wt          |          rt          d|d|           | j         |z
  dk    rt          d	| j         |z
  |fz             d S d S )
Nr   r   zERROR: Failed to check_type r   r   r   z	UNKNOWN: =zFound %d errors in %s)r   r   r   r    r   intr&   r   r   r,   r   r   r
   r#   callable)r   r$   inamer   r(   r)   r	   r+   s           r   check_interfacezRpcTests.check_interfaceZ   s   =Y 	5 	5Ats{{a5jjIq))E%%% 5E3'' 5E4(( 5'%+%8%>%>NOOIq%888%%dN;;;;  ' ' 'EPQPQPQSTS^S^S^`a`abcccMMQ&MMMMMMM' % 5!!!UU34444=8#q(()T]X-Eu,MMNNNNN )(s   ?AC
D0D  Dc                 J   t          t          j                  D ]}|d         dk    r|dk    s|dk    rt          d|z             t	          t          j        |          }t          j        d           }|                     ||           |                     d |           d S )Nr   r   ClientConnectionbasezChecking interface %s)	r   sambadcerpcr
   r   r   r   r2   r   )r   r1   ifacer	   s       r   check_all_interfaceszRpcTests.check_all_interfacesv   s    && 		4 		4EQx3***evoo)E1222EL%00E#066N  ...dN3333		4 		4r   c                 x    t          j        d           | _        d| _        |                                  | j        S )Nr   )r   r   r	   r   r9   )r   s    r   runzRpcTests.run   s6    $1$77!!###}r   N)	__name__
__module____qualname____doc__r   r,   r2   r9   r;    r   r   r   r      si        ??6 6 6/ / /bO O O8
4 
4 
4    r   r   z%d failuresr   )syspathinsertr6   samba.testssamba.dcerpcr   r   enable_null_trackingr   r   testsr;   r   exitr
   r@   r   r   <module>rI      s   " 


 <                             i i i i iv i i iX 	

99;;q==CHQKKKKK	E-(
"###CHQKKKKKr   