a
    “I_Š.  ã                   @   sX   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	Z	G dd„ deƒZ
dS )zTests for samba's dsdb modulesé    )ÚSamDBTestCase)ÚSamDBNc                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚDsdbLockTestCasec                 C   s6  | j  ¡ }t ¡ \}}t ¡ }|dkr¬| ` t ¡  t| j| j	d| _ | j  
¡  dt|ƒ }| j  |ddœ¡ | j  |¡ | j  ¡  t |d¡ t d¡ | j  ¡  t d¡ |  t |d¡d¡ t ¡ }| j  ¡ }|D ]}qÖt ¡ }	|  |	| d	¡ t |d¡\}
}|  |
|¡ |  t |¡¡ |  t |¡d¡ d S )
Nr   ©Zsession_infoÚlpúcn=test_db_lock_user,cn=users,Úuser©ÚdnZobjectclassó   preparedé   é   çffffffþ?)ÚsamdbÚget_default_basednÚosÚpipeÚforkÚgcÚcollectr   Úsessionr   Útransaction_startÚstrÚaddÚdeleteÚtransaction_prepare_commitÚwriteÚtimeÚsleepÚtransaction_cancelÚ_exitÚassertEqualÚreadÚsearch_iteratorÚassertGreaterÚwaitpidÚ
assertTrueÚ	WIFEXITEDÚWEXITSTATUS)ÚselfÚbasednÚr1Úw1Úpidr
   ÚstartÚresÚlÚendÚgot_pidÚstatus© r4   ú7/usr/lib/python3/dist-packages/samba/tests/dsdb_lock.pyÚtest_db_lock1   s@    
ÿ
þ




zDsdbLockTestCase.test_db_lock1c                 C   sd  | j  ¡ }t ¡ \}}t ¡ \}}t ¡ }|dkrê| ` t ¡  t| j| j	d| _ | j  
¡ }t |d¡ t |d¡dkr€t d¡ t |d¡ t |d¡d	kr¦t d
¡ t |d¡ t d
¡ |D ]}qÀt |d¡dkràt d¡ t d¡ |  t |d¡d¡ | j  ¡  t |d¡ |  t |d¡d¡ dt|ƒ }	| j  |	ddœ¡ | j  |	¡ t |d	¡ |  t |d¡d¡ t ¡ }
| j  ¡  t ¡ }z|z|  ||
 d¡ W n   ‚ Y n0 W t |d¡ | j  ¡  t |d¡\}}|  ||¡ |  t |¡¡ |  t |¡d¡ nVt |d¡ | j  ¡  t |d¡\}}|  ||¡ |  t |¡¡ |  t |¡d¡ 0 d S )Nr   r   ó   starté   ó   startedé   ó   addé   ó   addedr   ó   preparer   r   é   r   r   r	   r   )r   r   r   r   r   r   r   r   r   r   r#   r   r"   r    r   r   r!   r   r   r   r   r   r$   r   r%   r&   r'   r(   ©r)   r*   r+   r,   Úr2Úw2r-   r/   r0   r
   r.   r1   r2   r3   r4   r4   r5   Útest_db_lock2R   sn    
ÿ






þ


ø
zDsdbLockTestCase.test_db_lock2c                 C   sê  | j  ¡ }t ¡ \}}t ¡ \}}t ¡ }|dkrê| ` t ¡  t| j| j	d| _ | j  
¡ }t |d¡ t |d¡dkr€t d¡ t |d¡ t |d¡d	kr¦t d
¡ t |d¡ t d
¡ |D ]}qÀt |d¡dkràt d¡ t d¡ |  t |d¡d¡ | j  ¡  t |d¡ |  t |d¡d¡ d}	| j  d|	i¡ | j  |	¡ t |d	¡ |  t |d¡d¡ t ¡ }
| j  ¡  t ¡ }|  ||
 d¡ t |d¡ | j  ¡  t |d¡\}}|  t |¡¡ |  t |¡d¡ |  ||¡ d S )Nr   r   r7   r8   r9   r:   r;   r<   r=   r   r>   r   r   r?   ú@DSDB_LOCK_TESTr
   r   )r   r   r   r   r   r   r   r   r   r   r#   r   r"   r    r   r   r!   r   r   r   r   r$   r   r%   r&   r'   r(   r@   r4   r4   r5   Útest_db_lock3›   sZ    
ÿ






ÿ

zDsdbLockTestCase.test_db_lock3c                 C   s  t  ¡ \}}t  ¡ }|dkr‚| `t ¡  t |¡}| ¡  | 	ddi¡ | 
d¡ | ¡  t  |d¡ t d¡ | ¡  t  d¡ |  t  |d¡d¡ t ¡ }| j ¡ }t ¡ }|  || d¡ |D ]}	qÄt  |d¡\}
}|  |
|¡ |  t  |¡¡ |  t  |¡d¡ d S )Nr   r
   rD   r   r   r   r   )r   r   r   r   r   r   ÚldbÚLdbr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   )r)   Úbackend_pathr+   r,   r-   Ú	backenddbr.   r/   r1   r0   r2   r3   r4   r4   r5   Ú_test_full_db_lock1à   s2    




z$DsdbLockTestCase._test_full_db_lock1c                 C   s>   | j  ¡ }d| ¡  }tj d|¡}| j |¡}|  |¡ d S ©Nz%s.ldbz	sam.ldb.d)	r   r   Úget_casefoldr   ÚpathÚjoinr   Úprivate_pathrJ   ©r)   r*   Zbackend_filenameZbackend_subpathrH   r4   r4   r5   Útest_full_db_lock1  s    
ÿz#DsdbLockTestCase.test_full_db_lock1c                 C   s>   | j  ¡ }d| ¡  }tj d|¡}| j |¡}|  |¡ d S rK   )	r   Úget_config_basednrL   r   rM   rN   r   rO   rJ   rP   r4   r4   r5   Útest_full_db_lock1_config  s    
ÿz*DsdbLockTestCase.test_full_db_lock1_configc                 C   sV  t  ¡ \}}t  ¡ \}}t  ¡ }|dkrà| `t ¡  t| j| jd| _| j 	¡ }t  
|d¡ t  |d¡dkrvt  d¡ t  
|d¡ t  |d¡d	krœt  d
¡ t  
|d¡ t d
¡ |D ]}q¶t  |d¡dkrÖt  d¡ t  d¡ | `t ¡  t |¡}	|  t  |d¡d¡ |	 ¡  t  
|d¡ |  t  |d¡d¡ |	 ddi¡ |	 d¡ t  
|d	¡ |  t  |d¡d¡ t ¡ }
|	 ¡  t ¡ }zzz|  ||
 d¡ W n   ‚ Y n0 W t  
|d¡ |	 ¡  t  |d¡\}}|  ||¡ |  t  |¡¡ |  t  |¡d¡ nTt  
|d¡ |	 ¡  t  |d¡\}}|  ||¡ |  t  |¡¡ |  t  |¡d¡ 0 d S )Nr   r   r7   r8   r9   r:   r;   r<   r=   r   r>   r   r   r?   r
   rD   r   )r   r   r   r   r   r   r   r   r   r#   r   r"   r    r   r   rF   rG   r!   r   r   r   r   r$   r   r%   r&   r'   r(   )r)   rH   r+   r,   rA   rB   r-   r/   r0   rI   r.   r1   r2   r3   r4   r4   r5   Ú_test_full_db_lock2  sj    ÿ








øz$DsdbLockTestCase._test_full_db_lock2c                 C   s>   | j  ¡ }d| ¡  }tj d|¡}| j |¡}|  |¡ d S rK   )	r   r   rL   r   rM   rN   r   rO   rT   rP   r4   r4   r5   Útest_full_db_lock2i  s    
ÿz#DsdbLockTestCase.test_full_db_lock2c                 C   s>   | j  ¡ }d| ¡  }tj d|¡}| j |¡}|  |¡ d S rK   )	r   rR   rL   r   rM   rN   r   rO   rT   rP   r4   r4   r5   Útest_full_db_lock2_configq  s    
ÿz*DsdbLockTestCase.test_full_db_lock2_configN)Ú__name__Ú
__module__Ú__qualname__r6   rC   rE   rJ   rQ   rS   rT   rU   rV   r4   r4   r4   r5   r      s   4IE/Jr   )Ú__doc__Zsamba.tests.samdbr   Zsamba.samdbr   rF   r   Zsambar   r   r   r4   r4   r4   r5   Ú<module>   s   