
    b6                         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
ej        j                  Z G 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                       e Zd Zd ZdS )ScheduleTestsc                     t                      }|                     |t          j                   |                     |j        d           |                     t          |j        d         j                  d           d S )N   r      )	r   assertIsInstancer   scheduleassertEqualsizelen	dataArrayslots)selfr   s     ;/usr/lib/python3/dist-packages/samba/tests/kcc/kcc_utils.pytest_new_connection_schedulez*ScheduleTests.test_new_connection_schedule!   sm    *,,h(9:::,,,X/28993?????    N)__name__
__module____qualname__r    r   r   r   r      s(        @ @ @ @ @r   r   c                   \    e Zd Zd Zd Zd Zd Zg dfdZd Zd Z	d	 Z
d
 Zd Zd Zd ZdS )SiteCoverageTestsc                 L   d| _         t          j                                        | _        i | _        i | _        t                      | _        | j        	                    | j                   t                      | _        t          | j        | j        | j                  | _        d S )Nkcc_)session_infocredentialslp)prefixsambatestsenv_loadparmr$   sites
site_linksr   credsguessr   sessionr   samdb)r   s    r   setUpzSiteCoverageTests.setUp.   s    +**,,
 ]]

!!!%'''+z"g' ' '


r   c                     | j                                          | j        D ]}t          | j         |dg           | j        D ]}t          | j         |           | j                                          d S )Nztree_delete:1)controls)r.   transaction_startr)   r	   r*   transaction_commit)r   site	site_links      r   tearDownzSiteCoverageTests.tearDown=   s    
$$&&&J 	G 	GDT_4EFFFFF 	0 	0IY////
%%'''''r   c                     d                     ||          }| j                            |d| j                                        d           |S )NzCN={0},CN=Servers,{1}server)dnobjectClassserverReference)formatr.   add	domain_dn)r   namer4   r9   s       r   _add_serverzSiteCoverageTests._add_serverH   sW    $++D$77
##z3355
 
 	 	 	
 	r   c                    d                     || j                                                  }| j                            |dd           | j                            d|z   dgd           || j        |<   ||                                fS )NzCN={0},CN=Sites,{1}r4   )r9   r:   zCN=Servers,serversContainer)r<   r.   get_config_basednr=   r)   lower)r   r?   r9   s      r   	_add_sitezSiteCoverageTests._add_siteQ   s    "))$*..00
 
 	
!
 
 	 	 	 	
"$./
 
 	 	 	
 
24::<<r   d   c                     d                     || j                                                  }| j                            |dt	          |          |d           || j        |<   |S )Nz2CN={0},CN=IP,CN=Inter-Site Transports,CN=Sites,{1}siteLink)r9   r:   costsiteList)r<   r.   rC   r=   strr*   )r   r?   linksrI   r9   s        r   _add_site_linkz SiteCoverageTests._add_site_linka   ss    AHH$*..00
 
 	
%II	
 
 	 	 	 #	r   c                    | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   |||g           | j                                          t          | j         |          }|                                 | 	                    |g|           t          | j         |          }|                                 | 	                    g |           d S )NABCDBCDE	uncovered1link
r.   r2   rE   r%   r@   rM   r3   r   sortr   r   site1name1site2name2uncovered_dnrQ   to_covers           r   #test_single_site_link_same_dc_countz5SiteCoverageTests.test_single_site_link_same_dc_countn   s^   
$$&&&~~dkF&:;;u~~dkF&:;;u"&..{1J"K"Kiv-3U;;;v-3U;;;DK&0"E<8	: 	: 	:
%%'''+DJ>>)h///+DJ>>X&&&&&r   c                    | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   |||g           | j                                          t          | j         |          }|                                 | 	                    g |           t          | j         |          }|                                 | 	                    |g|           d S )NrO   rP   rQ   rR   23rS   rT   rV   s           r   (test_single_site_link_different_dc_countz:SiteCoverageTests.test_single_site_link_different_dc_count   s   
$$&&&~~dkF&:;;u~~dkF&:;;u"&..{1J"K"Kiv-3U;;;v-3U;;;v-3U;;;v-3U;;;v-3U;;;DK&0"E<8	: 	: 	:
%%'''+DJ>>X&&&+DJ>>)h/////r   c                    | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   ||g           |                     | j        dz   ||g           | j                                          t          | j         |          }|                                 | 	                    |g|           t          | j         |          }|                                 | 	                    |g|           d S )	NrO   rP   rQ   rR   r_   r`   link1link2rT   rV   s           r   test_two_site_links_same_costz/SiteCoverageTests.test_two_site_links_same_cost   s   
$$&&&~~dkF&:;;u~~dkF&:;;u"&..{1J"K"Kiv-3U;;;v-3U;;;v-3U;;;v-3U;;;v-3U;;;DK'1"L1	3 	3 	3DK'1"L1	3 	3 	3
%%'''+DJ>>)h///+DJ>>)h/////r   c                 v   | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   ||gd           |                     | j        d	z   ||gd
           | j                                          t          | j         |          }|                                 | 	                    |g|           t          | j         |          }|                                 | 	                    g |           d S )NrO   rP   rQ   rR   r_   rc   2   rI   rd   K   rT   rV   s           r   #test_two_site_links_different_costsz5SiteCoverageTests.test_two_site_links_different_costs   s   
$$&&&~~dkF&:;;u~~dkF&:;;u"&..{1J"K"Kiv-3U;;;v-3U;;;v-3U;;;DK'1"L1!# 	 	% 	% 	% 	DK'1"L1!# 	 	% 	% 	% 	
%%'''+DJ>>)h///+DJ>>X&&&&&r   c                    | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   ||gd	           |                     | j        d
z   ||gd	           |                     | j        dz   ||gd	           | j                                          t          | j         |          }	|	                                 | 	                    |g|	           t          | j         |          }	|	                                 | 	                    g |	           t          | j         |          }	|	                                 | 	                    g |	           d S )NrO   rP   CDEFrQ   rR   r_   rc   rg   rh   rd   ri   link3<   rT   
r   rW   rX   rY   rZ   site3name3r[   rQ   r\   s
             r   %test_three_site_links_different_costsz7SiteCoverageTests.test_three_site_links_different_costs   s`   
$$&&&~~dkF&:;;u~~dkF&:;;u~~dkF&:;;u"&..{1J"K"Kiv-3U;;;v-3U;;;v-3U;;;v-3U;;;DK'1"L1!# 	 	% 	% 	% 	DK'1"L1!# 	 	% 	% 	% 	DK'1"L1!# 	 	% 	% 	% 	
%%'''+DJ>>)h///+DJ>>X&&&+DJ>>X&&&&&r   c                    | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   ||gd	           |                     | j        d
z   ||gd	           |                     | j        dz   ||gd	           | j                                          t          | j         |          }	|	                                 | 	                    |g|	           t          | j         |          }	|	                                 | 	                    g |	           t          | j         |          }	|	                                 | 	                    |g|	           d S )NrO   rP   rl   rQ   rR   r_   rc   rg   rh   rd   ri   rm   rT   ro   s
             r   %test_three_site_links_duplicate_costsz7SiteCoverageTests.test_three_site_links_duplicate_costs  sb   
$$&&&~~dkF&:;;u~~dkF&:;;u~~dkF&:;;u"&..{1J"K"Kiv-3U;;;v-3U;;;v-3U;;;v-3U;;;DK'1"L1!# 	 	% 	% 	% 	DK'1"L1!# 	 	% 	% 	% 	DK'1"L1!# 	 	% 	% 	% 	
%%'''+DJ>>)h///+DJ>>X&&&+DJ>>)h/////r   c                 
   | j                                          |                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }	}
|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        dz             \  }}|                     | j        d	z             \  }}|                     | j        dz   d
z   |           |                     | j        dz   d
z   |           |                     | j        dz   dz   |           |                     | j        dz   d
z   |           |                     | j        dz   dz   |           |                     | j        dz   dz   |           |                     | j        dz   d
z   |           |                     | j        dz   dz   |           |                     | j        dz   d
z   |	           |                     | j        dz   dz   |	           |                     | j        dz   d
z   |           |                     | j        dz   ||||gd           |                     | j        dz   ||	||gd           |                     | j        dz   ||||gd           |                     | j        dz   ||	||gd           |                     | j        dz   ||||gd           |                     | j        dz   ||	||gd           | j                                          t          | j         |          }|                                 | 	                    g |           t          | j         |          }|                                 | 	                    g |           t          | j         |          }|                                 | 	                    ||g|           t          | j         |          }|                                 | 	                    ||g|           t          | j         |
          }|                                 | 	                    g |           t          | j         |          }|                                 | 	                    g |           |||fD ]A}t          | j         |          }|                                 | 	                    g |           Bd S )NrO   rP   rl   123423453456
uncovered1
uncovered2
uncovered3rR   r_   r`   link1A1   rh   link2Arg   link1Blink2Blink1Clink2CrT   )r   rW   rX   rY   rZ   rp   rq   site4name4site5name5site6name6uncovered_dn1ry   uncovered_dn2rz   uncovered_dn3r{   r\   to_checks                        r   0test_complex_setup_with_multiple_uncovered_siteszBSiteCoverageTests.test_complex_setup_with_multiple_uncovered_sites*  s   
$$&&&~~dkF&:;;u~~dkF&:;;u~~dkF&:;;u~~dkF&:;;u~~dkF&:;;u~~dkF&:;;u$(NN4;3M$N$N!z$(NN4;3M$N$N!z$(NN4;3M$N$N!z 	v-3U;;;v-3U;;;v-3U;;;v-3U;;;v-3U;;;v-3U;;; 	v-3U;;;v-3U;;;v-3U;;;v-3U;;;v-3U;;; 	DK(2"E5-@!# 	 	% 	% 	% 	DK(2"E5-@!# 	 	% 	% 	%
 	DK(2"E5-@!# 	 	% 	% 	% 	DK(2"E5-@!# 	 	% 	% 	%
 	DK(2"E5-@!# 	 	% 	% 	% 	DK(2"E5-@!# 	 	% 	% 	% 	
%%'''+DJ>>X&&&+DJ>>X&&&+DJ>>*j18<<<+DJ>>*j18<<<+DJ>>X&&&+DJ>>X&&&#Z< 	+ 	+H/
HEEHMMOOOR****		+ 	+r   N)r   r   r   r/   r6   r@   rE   rM   r]   ra   re   rj   rr   rt   r   r   r   r   r   r   ,   s        ' ' '	( 	( 	(         *,#    ' ' '00 0 060 0 0:' ' ':%' %' %'N&0 &0 &0P]+ ]+ ]+ ]+ ]+r   r   )__doc__r&   samba.testssamba.kcc.kcc_utilsr   r   r   samba.credentialsr   
samba.authr   samba.samdbr   r	   r'   TestCaser   r   r   r   r   <module>r      s  ( $ #      A A A A A A A A 8 8 8 8 8 8 ) ) ) ) ) ) % % % % % %       $ $ $ $ $ $@ @ @ @ @EK( @ @ @[+ [+ [+ [+ [+, [+ [+ [+ [+ [+r   