a
    œcl_À6  ã                   @   sŒ   d Z ddlZddlZddl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 G d	d
„ d
ejjƒZG dd„ dejjƒZdS )zTests for samba.kcc.kcc_utilsé    N)Únew_connection_scheduleÚdrsblobs)Úuncovered_sites_to_cover)ÚCredentials)Úsystem_session)ÚSamDB)Údelete_forcec                   @   s   e Zd Zdd„ ZdS )ÚScheduleTestsc                 C   s>   t ƒ }|  |tj¡ |  |jd¡ |  t|jd jƒd¡ d S )Né¼   r   é¨   )	r   ZassertIsInstancer   ÚscheduleÚassertEqualÚsizeÚlenZ	dataArrayÚslots)Úselfr   © r   ú;/usr/lib/python3/dist-packages/samba/tests/kcc/kcc_utils.pyÚtest_new_connection_schedule!   s    z*ScheduleTests.test_new_connection_scheduleN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r	      s   r	   c                   @   sr   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zg d	f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 )ÚSiteCoverageTestsc                 C   sV   d| _ tj ¡ | _i | _i | _tƒ | _| j 	| j¡ t
ƒ | _t| j| j| jd| _d S )NZkcc_)Zsession_infoZcredentialsÚlp)ÚprefixÚsambaÚtestsZenv_loadparmr   ÚsitesÚ
site_linksr   ZcredsZguessr   Zsessionr   Úsamdb)r   r   r   r   ÚsetUp.   s    þzSiteCoverageTests.setUpc                 C   sN   | j  ¡  | jD ]}t| j |dgd q| jD ]}t| j |ƒ q.| j  ¡  d S )Nztree_delete:1)Zcontrols)r   Útransaction_startr   r   r   Útransaction_commit)r   ÚsiteZ	site_linkr   r   r   ÚtearDown=   s    


zSiteCoverageTests.tearDownc                 C   s*   d  ||¡}| j |d| j ¡ dœ¡ |S )NzCN={0},CN=Servers,{1}Zserver)ÚdnÚobjectClassZserverReference)Úformatr   ÚaddZ	domain_dn)r   Únamer#   r%   r   r   r   Ú_add_serverH   s    ýzSiteCoverageTests._add_serverc                 C   sR   d  || j ¡ ¡}| j |ddœ¡ | j d| dgdœ¡ || j|< || ¡ fS )NzCN={0},CN=Sites,{1}r#   )r%   r&   zCN=Servers,ZserversContainer)r'   r   Úget_config_basednr(   r   Úlower)r   r)   r%   r   r   r   Ú	_add_siteQ   s    
ÿþþ
zSiteCoverageTests._add_siteéd   c                 C   s:   d  || j ¡ ¡}| j |dt|ƒ|dœ¡ || j|< |S )Nz2CN={0},CN=IP,CN=Inter-Site Transports,CN=Sites,{1}ZsiteLink)r%   r&   ÚcostZsiteList)r'   r   r+   r(   Ústrr   )r   r)   Zlinksr/   r%   r   r   r   Ú_add_site_linka   s    
ÿü
z SiteCoverageTests._add_site_linkc                 C   sÚ   | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd d |¡ |  | jd d |¡ |  | jd |||g¡ | j  ¡  t| j |ƒ}| ¡  |  	|g|¡ t| j |ƒ}| ¡  |  	g |¡ d S )NÚABCDÚBCDEÚ	uncoveredÚ1Úlink©
r   r!   r-   r   r*   r1   r"   r   Úsortr   ©r   Úsite1Úname1Úsite2Úname2Úuncovered_dnr4   Úto_coverr   r   r   Ú#test_single_site_link_same_dc_countn   s     
ÿ
z5SiteCoverageTests.test_single_site_link_same_dc_countc                 C   s  | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd |||g¡ | j  ¡  t| j |ƒ}| ¡  |  	g |¡ t| j |ƒ}| ¡  |  	|g|¡ d S )Nr2   r3   r4   r5   Ú2Ú3r6   r7   r9   r   r   r   Ú(test_single_site_link_different_dc_count†   s&    
ÿ
z:SiteCoverageTests.test_single_site_link_different_dc_countc                 C   s2  | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd ||g¡ |  | jd ||g¡ | j  ¡  t| j |ƒ}| ¡  |  	|g|¡ t| j |ƒ}| ¡  |  	|g|¡ d S )	Nr2   r3   r4   r5   rA   rB   Úlink1Úlink2r7   r9   r   r   r   Útest_two_site_links_same_cost¡   s,    
ÿÿ
z/SiteCoverageTests.test_two_site_links_same_costc                 C   s  | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd d |¡ |  | jd d |¡ |  | jd d |¡ | j| jd ||gdd | j| jd	 ||gd
d | j  ¡  t| j |ƒ}| ¡  |  	|g|¡ t| j |ƒ}| ¡  |  	g |¡ d S )Nr2   r3   r4   r5   rA   rD   é2   ©r/   rE   éK   r7   r9   r   r   r   Ú#test_two_site_links_different_costs¾   s,    
þþ
z5SiteCoverageTests.test_two_site_links_different_costsc           
      C   sp  | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d |¡ | j| jd ||gdd	 | j| jd
 ||gdd	 | j| jd ||gdd	 | j  ¡  t| j |ƒ}	|	 ¡  |  	|g|	¡ t| j |ƒ}	|	 ¡  |  	g |	¡ t| j |ƒ}	|	 ¡  |  	g |	¡ d S )Nr2   r3   ÚCDEFr4   r5   rA   rD   rG   rH   rE   rI   Úlink3é<   r7   ©
r   r:   r;   r<   r=   Úsite3Úname3r>   r4   r?   r   r   r   Ú%test_three_site_links_different_costsÛ   s>    
þþþ
z7SiteCoverageTests.test_three_site_links_different_costsc           
      C   sr  | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd d |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d |¡ | j| jd ||gdd	 | j| jd
 ||gdd	 | j| jd ||gdd	 | j  ¡  t| j |ƒ}	|	 ¡  |  	|g|	¡ t| j |ƒ}	|	 ¡  |  	g |	¡ t| j |ƒ}	|	 ¡  |  	|g|	¡ d S )Nr2   r3   rK   r4   r5   rA   rD   rG   rH   rE   rI   rL   r7   rN   r   r   r   Ú%test_three_site_links_duplicate_costs  s>    
þþþ
z7SiteCoverageTests.test_three_site_links_duplicate_costsc                 C   sl  | j  ¡  |  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}	}
|  | jd ¡\}}|  | jd ¡\}}|  | jd ¡\}}|  | jd	 ¡\}}|  | jd d
 |¡ |  | jd d
 |¡ |  | jd d |¡ |  | jd d
 |¡ |  | jd d |¡ |  | jd d |¡ |  | jd d
 |¡ |  | jd d |¡ |  | jd d
 |	¡ |  | jd d |	¡ |  | jd d
 |¡ | j| jd ||||gdd | j| jd ||	||gdd | j| jd ||||gdd | j| jd ||	||gdd | j| jd ||||gdd | j| jd ||	||gdd | j  ¡  t| j |ƒ}| ¡  |  	g |¡ t| j |ƒ}| ¡  |  	g |¡ t| j |ƒ}| ¡  |  	||g|¡ t| j |ƒ}| ¡  |  	||g|¡ t| j |
ƒ}| ¡  |  	g |¡ t| j |ƒ}| ¡  |  	g |¡ |||fD ]&}t| j |ƒ}| ¡  |  	g |¡ q@d S )Nr2   r3   rK   Z1234Z2345Z3456Ú
uncovered1Ú
uncovered2Ú
uncovered3r5   rA   rB   Zlink1Aé1   rH   Zlink2ArG   Zlink1BZlink2BZlink1CZlink2Cr7   )r   r:   r;   r<   r=   rO   rP   Zsite4Zname4Zsite5Zname5Zsite6Zname6Zuncovered_dn1rS   Zuncovered_dn2rT   Zuncovered_dn3rU   r?   Zto_checkr   r   r   Ú0test_complex_setup_with_multiple_uncovered_sites*  sˆ    

þ
þ
þ
þ
þ
þ
zBSiteCoverageTests.test_complex_setup_with_multiple_uncovered_sitesN)r   r   r   r    r$   r*   r-   r1   r@   rC   rF   rJ   rQ   rR   rW   r   r   r   r   r   ,   s   	'(r   )Ú__doc__r   Zsamba.testsZsamba.kcc.kcc_utilsr   r   r   Zsamba.credentialsr   Z
samba.authr   Zsamba.samdbr   r   r   ZTestCaser	   r   r   r   r   r   Ú<module>   s   