HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/samba/tests/__pycache__/prefork_restart.cpython-310.pyc
o

�/a@�@s�dZddlZddlZddlZddlZddlmZmZddlm	Z	m
Z
ddlmZddl
mZddlmZmZddlmZdd	lmZmZdd
lmZddlmZdZd
ZGdd�de�ZdS)z�Tests process restarting in the pre-fork process model.
   NOTE: As this test kills samba processes it won't play nicely with other
         tests, so needs to be run in it's own environment.
�N)�TestCase�delete_force)�echo�netlogon)�	Messaging)�SamDB)�Credentials�DONT_USE_KERBEROS)�
get_string)�UF_WORKSTATION_TRUST_ACCOUNT�UF_PASSWD_NOTREQD)�SEC_CHAN_WKSTA)�system_session��PFRScs�eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Z�ZS)'�PreforkProcessRestartTestscs&tt|���|��}t|d�|_dS)N)�lp_ctx)�superr�setUp�get_loadparmr�msg_ctx)�selfr��	__class__��=/usr/lib/python3/dist-packages/samba/tests/prefork_restart.pyr/sz PreforkProcessRestartTests.setUpcstt|���dS�N)rr�tearDown)rrrrr4sz#PreforkProcessRestartTests.tearDowncCs:|j��}g}|D]}|jD]}|�|j|jf�qq	|Sr)r�irpc_all_servers�ids�append�name�pid)r�services�	processes�service�idrrr�get_process_data7s

�z+PreforkProcessRestartTests.get_process_datacCs*|��}|D]\}}||kr|SqdSr)r')rr!r$�pnamer"rrr�get_process@s�z&PreforkProcessRestartTests.get_processcCs@g}t|�D]}d�||�}|�|�|��|�||�q|S)N�prefork-worker-{0}-{1})�range�formatr r)�assertIsNotNone)rr!�workers�pids�x�process_namerrr�get_worker_pidsGsz*PreforkProcessRestartTests.get_worker_pidscCs<t|�}t|�D]}d�||�}|�|||ddd�qdS)Nr*r��)�lenr+r,�wait_for_process)rr!r.�num_workersr0r1rrr�wait_for_workersOs
�z+PreforkProcessRestartTests.wait_for_workerscCsdt�|�|}||kr'|�|�}|dur||krdSt�|�||7}||ks|�d�||��dS)Nz6Times out after {0} seconds waiting for {1} to restart)�time�sleepr)�failr,)rr!r"�
initial_delay�wait�timeout�delay�prrrr6Us


��z+PreforkProcessRestartTests.wait_for_processc	Csh|��}i}|D])\}}|�d�s|�d�s|�d�r1||vr1|||kr1|�d�||||��qdS)Nzprefork-�_server�srvz+Duplicate process for {0}, pids {1} and {2})r'�
startswith�endswithr;r,)rr$�process_mapr!r@rrr�check_for_duplicate_processesbs 
�����z8PreforkProcessRestartTests.check_for_duplicate_processescCsL|j|��d�}|�d|��|��f�tdtjd|��|d�|_	dS)N)�templatez%s\%sz
ldaps://%s�SERVER)�url�lp�credentials)
�insta_creds�get_credentials�set_bind_dn�
get_domain�get_usernamer�os�environr�samdb)r�credsrrr�simple_bindps��z&PreforkProcessRestartTests.simple_bindcCs.t�d|���}|�gd�|�gd���dS)Nzncalrpc:)r3��)r�rpcechor�assertEqual�EchoData)r�connrrr�rpc_echoysz#PreforkProcessRestartTests.rpc_echocCstjd}tjd}|��}|��}t�}td||||d�}t�dd�}t}d||�	�f}	t
||	�dt|��d�}
|�
|	d	d
|tttB�|
d��t�}|�|�|�t�|�t�|�|�|�|d�|�|�t�d
|||�t
||	�dS)NrH�	SERVER_IPz	ldap://%s)rI�session_inforKrJ� zcn=%s,%sz"%s"z	utf-16-le�computerz%s$)�dn�objectclass�sAMAccountName�userAccountControl�
unicodePwd�$zncacn_ip_tcp:%s[schannel,seal])rQrRrrMrr�samba�generate_random_password�MACHINE_NAME�	domain_dnrr
�encode�add�strrrr�guess�set_secure_channel_typer
�set_kerberos_stater	�set_password�set_username�set_workstationr)r�server�hostrJrK�session�ldb�machine_pass�machine_name�
machine_dn�utf16pw�
machine_credsrrrr}sF

�

�




�z#PreforkProcessRestartTests.netlogoncC�|��|�d�}|�|�|�dt�}t�|tj�|�	d|ddd�|�
d|�|�d�}|�|�|�||�|�dt�}tt�D]}|�||||�qD|�
�|��dS)N�prefork-master-ldap�ldapr3r4)rUr)r-r2�NUM_WORKERSrQ�kill�signal�SIGTERMr6r8�assertNotEqualsr+rF�rr"r.�new_pid�new_workersr0rrr�test_ldap_master_restart�s



z3PreforkProcessRestartTests.test_ldap_master_restartcCs�|��|�d�}|�|�|�dt�}t�|dtj�|�	d|ddd�|�d�}|�|�|�
||�|�dt�}|�|d|d�|�
|d|d�|�
|d|d�|�
|d|d�|��|��dS)	Nr~rrzprefork-worker-ldap-0r3r4rVrW)
rUr)r-r2r�rQr�r�r�r6rYr�rF�rr"r.r�r�rrr�test_ldap_worker_restart�s 



z3PreforkProcessRestartTests.test_ldap_worker_restartcCs�|��|�d�}|�|�|�dt�}|D]	}t�|tj�q|�	d|�|�d�}|�|�|�
||�|�dt�}tt�D]}|�||||�q@|�
�|��dS)Nr~r)rUr)r-r2r�rQr�r�r�r8rYr+r�rF�rr"r.r0r�r�rrr�test_ldap_all_workers_restart�s



z8PreforkProcessRestartTests.test_ldap_all_workers_restartcCr})N�prefork-master-rpc�rpcr3r4)r\r)r-r2r�rQr�r�r�r6r8r�r+rFr�rrr�test_rpc_master_restarts



z2PreforkProcessRestartTests.test_rpc_master_restartcCs�|��|��|�d�}|�|�|�dt�}t�|dtj	�|�
d|dddd�|�d�}|�|�|�||�|�dt�}|�|d|d�|�|d|d�|�|d|d�|�|d|d�|�
�|��|��dS)	Nr�r�rzprefork-worker-rpc-0r3r4rVrW)r\rr)r-r2r�rQr�r�r�r6rYr�rFr�rrr�test_rpc_worker_zero_restartBs$



z7PreforkProcessRestartTests.test_rpc_worker_zero_restartcCs�|��|��|�d�}|�|�|�dt�}|D]	}t�|tj	�qt
t�D]}|�d�|�||ddd�q(|�d�}|�|�|�
||�|�dt�}t
t�D]}|�||||�qS|��|��|��dS)Nr�r�zprefork-worker-rpc-{0}rr3r4)r\rr)r-r2r�rQr�r�r�r+r6r,rYr�rFr�rrr�test_rpc_all_workers_restartjs(

�

z7PreforkProcessRestartTests.test_rpc_all_workers_restartcCs�|�d�}|�|�d}dD]=}|�dt�}|�d�}t�|tj�t��}|�	d|ddd�|�
d|�t��}||}|�|||�|�||�q|�dt�}	t
t�D]}
|�||
|	|
�qV|��dS)	Nzprefork-master-echo��rr��
r��kdcrr3r4r)r)r-r2r�rQr�r�r�r9r6r8�
assertLess�assertGreaterEqualr+r�rF)rr"�backoff_increment�expectedr.�process�start�end�durationr�r0rrr�test_master_restart_backoff�s$


z6PreforkProcessRestartTests.test_master_restart_backoffcCs�d}dD]6}|�d�}|�|�t�|tj�t��}|�d|ddd�t��}||}|�|||�|�	||�q|�
�dS)Nr�r�zprefork-worker-echo-2rr3r4)r)r-rQr�r�r�r9r6r�r�rF)rr�r�r�r�r�r�rrr�test_worker_restart_backoff�s

z6PreforkProcessRestartTests.test_worker_restart_backoff)�__name__�
__module__�__qualname__rrr'r)r2r8r6rFrUr\rr�r�r�r�r�r�r�r��
__classcell__rrrrr-s(	
	*'*$&(((r)�__doc__rQr�r9rg�samba.testsrr�samba.dcerpcrr�samba.messagingr�samba.samdbr�samba.credentialsrr	�samba.commonr
�
samba.dsdbrr�samba.dcerpc.miscr
�
samba.authrr�rirrrrr�<module>s"