HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/locking.cpython-36.opt-1.pyc
3

�i�%�@s�ddlZddlZddlZddlmZddlmZmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZdZdZej�d	d
��ZGdd�d�Zej�d
d��ZGdd�d�ZGdd�d�Zej�dd��ZGdd�d�ZdS)�N�)�	daemonize)�get_process_id�
process_alive)�TimeoutTimer�
ExclusiveLock�Lock�
LockRoster�ADD�REMOVE�SHARED�	EXCLUSIVE�LockTimeout�	NotLocked�	NotMyLock�foo��barcCs2t�\}}}x tjdd�}t|||�s|SqWdS)zBReturn a free PID not used by any process (naturally this is racy)i�i�N)r�randomZrandintr)�host�pid�tid�r�/usr/lib64/python3.6/locking.py�free_pids
rc@seZdZdd�Zdd�ZdS)�TestTimeoutTimercCs"d}t|�j�}tj|d�dS)Ng�?g�?)r�start�time�sleep)�self�timeout�trrr�test_timeoutszTestTimeoutTimer.test_timeoutcCsd\}}t||�j�}dS)N��?)Nr#)rr)rr rr!rrr�test_notimeout_sleep"sz%TestTimeoutTimer.test_notimeout_sleepN)�__name__�
__module__�__qualname__r"r$rrrrrsrcCst|jd��S)N�lock)�str�join)�tmpdirrrr�lockpath+sr,c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestExclusiveLockc	Cst|dd��}WdQRXdS)Nr)r )r)rr,r(rrr�test_checks1szTestExclusiveLock.test_checksc	Cs4t|td�j�}|j�t|td��WdQRXdS)N)�id)r�ID1�acquire�
break_lock�ID2)rr,r(rrr�test_acquire_break_reacquire5sz.TestExclusiveLock.test_acquire_break_reacquirecCsDt|td��.tjt��t|tdd�j�WdQRXWdQRXdS)N)r/g�������?)r/r )rr0�pytest�raisesrr3r1)rr,rrrr";szTestExclusiveLock.test_timeoutc
)Cs�t�\}}}}|||f}d	}t||d�j�}	t||dd��$tjt��|	j�WdQRXWdQRXtjt��|	j�WdQRXt||d��0tjt��t||ddd�j�WdQRXWdQRXdS)
N�foo.bar.example.netrr)r/T)r/�kill_stale_locksg�������?)r/r8r )r7rr)	rrr1r5r6r�releaserr)
rr,rrrr�our_id�dead_id�cant_know_if_dead_id�	dead_lockrrr�test_kill_stale@s
z!TestExclusiveLock.test_kill_stalecCs6tt}}t||d�j�}|j}|j||�|j}dS)N)r/)r0r3rr1Zunique_name�migrate_lock)rr,�old_id�new_idr(Zold_unique_nameZnew_unique_namerrr�test_migrate_lockPs
z#TestExclusiveLock.test_migrate_lockN)r%r&r'r.r4r"r>rBrrrrr-0s
r-c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestLockcCs8t|dtd�j�}t|dtd�j�}|j�|j�dS)NF)�	exclusiver/)rr0r1r3r9)rr,Zlock1Zlock2rrr�test_shared_szTestLock.test_sharedc	Cst|dtd��}WdQRXdS)NT)rDr/)rr0)rr,r(rrr�test_exclusiveiszTestLock.test_exclusivec	Cs,t|dd��}|j�|j�WdQRXdS)NF)rD)rZupgrade)rr,r(rrr�test_upgradeoszTestLock.test_upgradec	Cs,t|dd��}|j�|j�WdQRXdS)NT)rD)rZ	downgrade)rr,r(rrr�test_downgradewszTestLock.test_downgradecCs"t|dtd�}|j�|j�dS)NT)rDr/)rr0r1r9)rr,r(rrr�test_got_exclusive_lock~sz TestLock.test_got_exclusive_lockc	Cs8t|dtd�j�}|j�t|dtd��WdQRXdS)NT)rDr/)rr0r1r2r3)rr,r(rrr�
test_break�szTestLock.test_breakc0Cs�t|dtd��0tjt��t|dtdd�j�WdQRXWdQRXt|dtd��0tjt��t|dtdd�j�WdQRXWdQRXt|dtd��0tjt��t|dtdd�j�WdQRXWdQRXdS)NF)rDr/Tg�������?)rDr/r )rr0r5r6rr3r1)rr,rrrr"�s((zTestLock.test_timeoutc"Cs�t�\}}}}|||f}d	}t||dd�j�}	|	j}
t||dd��WdQRXtjt��|	j�WdQRXt||dd��0tjt��t||ddd�j�WdQRXWdQRXdS)
N�foo.bar.example.netrrT)r/rD)r/r8g�������?)r/r8r )rKrr)	rrr1Z_rosterr5r6rr9r)rr,rrrrr:r;r<r=�rosterrrrr>�s

zTestLock.test_kill_stalecCsZtt}}t||dd�j�}|j||�|j�t||dd�j�}|j||�|j�dS)NT)r/rDF)r0r3rr1r?r9)rr,r@rAr(rrrrB�s
zTestLock.test_migrate_lockN)r%r&r'rErFrGrHrIrJr"r>rBrrrrrC^s
rCcCst|jd��S)NrL)r)r*)r+rrr�
rosterpath�srMc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestLockRostercCst|�}|j�}|j|�dS)N)r	�loadZsave)rrMrL�emptyrrr�
test_empty�s
zTestLockRoster.test_emptycCsdt|td�}|jtt�t|td�}|jtt�t|td�}|jtt�t|td�}|jtt�dS)N)r/)r	r0�modifyrr
r3r)rrM�roster1Zroster2rrr�test_modify_get�szTestLockRoster.test_modify_getcCsvt�\}}}}|||f}t||d�}|jtt�d}	t||	d�}|jtt�t|dd�}
|
jtt�t|dd�}dS)N)r/�foo.bar.example.netrrT)r8)rUrr)rr	rRrr
)rrMrrrrr:r;rSr<Z
killer_rosterZother_killer_rosterrrrr>�s
zTestLockRoster.test_kill_stalecCs4tt}}t||d�}|jtt�|jt||�dS)N)r/)r0r3r	rRrr
r?)rrMr@rArLrrrrB�s

z TestLockRoster.test_migrate_lockN)r%r&r'rQrTr>rBrrrrrN�srN)rrr)rrr)rrr5Zhelpersr�platformrrZlockingrrrr	r
rrr
rrrr0r3Zfixturerrr,r-rCrMrNrrrr�<module>s4._