HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib64/python3.9/site-packages/borg/testsuite/__pycache__/archive.cpython-39.opt-1.pyc
a

HZ�h/�
@sddlZddlmZddlmZmZddlmZddlmZddl	Z	ddl
mZdd	lm
Z
dd
lmZmZmZmZmZmZddlmZmZmZmZddlmZdd
lmZddlmZmZddlm Z m!Z!e	�"�dd��Z#dd�Z$dHdd�Z%dd�Z&dd�Z'Gdd�d�Z(Gdd�de�Z)Gdd �d e�Z*Gd!d"�d"e�Z+e	j"d#d$��Z,e	j-�.d%gd&�d'd(�ddd)d*d+igd,gd-d.d/d0d1d2id1d2gd3gD��d4d5��Z/e0e1e��Z2e	j-j.d%d6d(�d7d8ied9d:�e2D��ed;d:�e2D��fD�gd<�d=�d>d?��Z3d@dA�Z4dBdC�Z5dDdE�Z6dFdG�Z7dS)I�N)�OrderedDict)�datetime�timezone)�StringIO)�Mock�)�BaseTestCase�)�PlaintextKey)�Archive�CacheChunkBuffer�RobustUnpacker�valid_msgpacked_dict�	ITEM_KEYS�
Statistics)�
BackupOSError�	backup_io�backup_io_iter�get_item_uid_gid)�Manifest)�msgpack)�Item�ArchiveItem)�uid2user�	gid2groupcCst�}|jdddd�|S)N��
T��unique)r�update��stats�r"�</usr/lib64/python3.9/site-packages/borg/testsuite/archive.pyr!sr!cCs|jdddd�dS)NrrFr)rr r"r"r#�test_stats_basicsr$�PcCs�|�dt|��t�}|j|d�d}d|t|�}t�}|jdddd�|jtd	d
�d|d�d}d|t|�}t�}|jtd
d
�d|d�d}d|t|�}dS)N�COLUMNS)�streamz20 B O 10 B C 10 B D 0 N � i�rFr�foo��path)�item�finalr'z1.02 kB O 10 B C 10 B D 0 N fooZxfoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoozP1.02 kB O 10 B C 10 B D 0 N foofoofoofoofoofoofoofo...oofoofoofoofoofoofoofoofoo)Zsetenv�strr�
show_progress�lenrr)r!Zmonkeypatch�columns�out�s�bufr"r"r#�tests_stats_progress#sr5cCs|j�}dS�N)Z	osize_fmt)r!r3r"r"r#�test_stats_format8sr7cCsTd|_t�}|jtdd�|d�t�|���}t�}|j|dd�t�|���}dS)NTr)r*)r,r')r'r-)Zoutput_jsonrr/r�json�loads�getvalue)r!r2�resultr"r"r#�test_stats_progress_jsonAs
r<c@s,eZdZGdd�d�Zdd�Zd	dd�ZdS)
�	MockCachec@seZdZddd�ZdS)zMockCache.MockRepoTcCsdSr6r")�self�waitr"r"r#�async_response`sz!MockCache.MockRepo.async_responseN)T)�__name__�
__module__�__qualname__r@r"r"r"r#�MockRepo_srDcCsi|_|��|_dSr6)�objectsrD�
repository�r>r"r"r#�__init__cszMockCache.__init__NTcCs||j|<|t|�t|�fSr6)rEr0)r>�id�chunkr!r?r"r"r#�	add_chunkgs
zMockCache.add_chunk)NT)rArBrCrDrHrKr"r"r"r#r=]sr=c@s$eZdZdd�Zdd�Zdd�ZdS)�ArchiveTimestampTestCasecCsHt�}t|�}t||�}t|||ddd�}t|d�|_|�|j|�dS)N�testT)Zcreate)�time)rr
rrr�metadata�assert_equal�ts)r>Z	isoformatZexpectedrF�keyZmanifest�ar"r"r#�_test_timestamp_parsingns
z0ArchiveTimestampTestCase._test_timestamp_parsingcCs$|�dtdddddddtj��dS)Nz1970-01-01T00:00:01.000001�rr�rTrrZutcrGr"r"r#�test_with_microsecondsvs�z/ArchiveTimestampTestCase.test_with_microsecondscCs$|�dtdddddddtj��dS)Nz1970-01-01T00:00:01rUrrrVrGr"r"r#�test_without_microseconds{s�z2ArchiveTimestampTestCase.test_without_microsecondsN)rArBrCrTrWrXr"r"r"r#rLlsrLc@seZdZdd�Zdd�ZdS)�ChunkBufferTestCasecCs�tdd�tdd�g}t�}td�}t||d�}|D]}|�|�|��q2|jdd�|�t|j�d�t	�
�}|jD]}|�|j|�qv|�|dd�|D��dS)	NZp1r*Zp2T��flushr	cSsg|]}t|d��qS�)Z
internal_dict�r��.0�dr"r"r#�
<listcomp>��z,ChunkBufferTestCase.test.<locals>.<listcomp>�
rr=r
r�addr[rPr0�chunksrZUnpacker�feedrE)r>�data�cacherRrer`�unpackerrIr"r"r#rM�s


zChunkBufferTestCase.testc	Cs�dd}td|d�td|d�g}t�}td�}t||d�}|D]}|�|�q>|jdd�|�t|j�d�|jd	d�|�t|j�d
�t	�
�}|jD]}|�|j|�q�|�|dd�|D��dS)
NZ$0123456789abcdefghijklmnopqrstuvwxyzi�aZfull)r+�source�partialFrZ�T�cSsg|]}t|d��qSr\r]r^r"r"r#ra�rbz4ChunkBufferTestCase.test_partial.<locals>.<listcomp>rc)	r>�bigrgrhrRrer`rirIr"r"r#�test_partial�s
z ChunkBufferTestCase.test_partialN)rArBrCrMror"r"r"r#rY�srYc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�RobustUnpackerTestCasecCsd�dd�|D��S)Nrbcss|]}t�d|i�VqdS)r+N�rZpackb)r_r,r"r"r#�	<genexpr>�rbz5RobustUnpackerTestCase.make_chunks.<locals>.<genexpr>)�join)r>�itemsr"r"r#�make_chunks�sz"RobustUnpackerTestCase.make_chunkscCst|t�o|�d�dvS)N�path��foo�bar�boo�baz)�
isinstance�dict�get)r>�valuer"r"r#�
_validator�sz!RobustUnpackerTestCase._validatorcCsXt|jtd�}g}|D]<\}}|r*|��|D]"}|�|�|D]}|�|�q@q.q|S)N)Z	validatorZ	item_keys)r
r�rZresyncrf�append)r>�inputrir;Zshould_syncrergr,r"r"r#�process�s
zRobustUnpackerTestCase.processcCsnd|�ddg�gfddg|�ddg�gfg}|�|�}|�|ddiddidd	d
dd	ddddiddig�dS)
NFrxrysgarbagerzr{rv�g�a�r�b�e)rur�rP)r>rer;r"r"r#�test_extra_garbage_no_sync�s�
�z1RobustUnpackerTestCase.test_extra_garbage_no_synccCs,g}|r(|�|d|��||d�}q|Sr6)r�)r>�left�length�partsr"r"r#�split�s
zRobustUnpackerTestCase.splitcCsR|�|�gd��d�}d|fg}|�|�}|�|ddiddiddiddig�dS)	Nrwr	Frvrxryrzr{�r�rur�rP�r>rer�r;r"r"r#�test_correct_stream�s

z*RobustUnpackerTestCase.test_correct_streamcCsb|�|�gd��d�}d|dd�fd|dd�fg}|�|�}|�|ddiddidd	ig�dS)
NrwrmFrlTrvrxrzr{r�r�r"r"r#�test_missing_chunk�s 
z)RobustUnpackerTestCase.test_missing_chunkcCsj|�|�gd��d�}d|dd�fdddg|dd�fg}|�|�}|�|dd	idd
iddig�dS)NrwrmFrlTsgarsbagervrxrzr{r�r�r"r"r#�test_corrupt_chunk�s(
z)RobustUnpackerTestCase.test_corrupt_chunkN)rArBrCrur�r�r�r�r�r�r�r"r"r"r#rp�s
rpcCsdd�tD�S)NcSsg|]}t�|��qSr"rq)r_�namer"r"r#ra�rbz(item_keys_serialized.<locals>.<listcomp>)rr"r"r"r#�item_keys_serialized�sr��packed)rb�x�foobarcCsg|]}t�|��qSr"rq�r_�or"r"r#ra�rbragF�r"�*g�Q��k7@Tr�rxry)rxrycCsdSr6r"�r�r�r"r"r#�test_invalid_msgpacked_item�sr�cCsg|]}t�|��qSr"rqr�r"r"r#ra�rbrvs/a/b/cccs|]}|dfVqdS)rbNr"�r_�kr"r"r#rr�rbrrccs|]}|dfVqdS)s�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNr"r�r"r"r#rr�rb)Zminimalzempty-valueszlong-values)ZidscCsdSr6r"r�r"r"r#�test_valid_msgpacked_items�sr�cCsd}|di}t�|�g}dS)Ns xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrbrq)rRrgr�r"r"r#�test_key_length_msgpacked_items�sr�c	CsZt�t��<t�td��Wd�n1s.0YWd�n1sL0YdS)N�{)�pytest�raisesrr�OSErrorr"r"r"r#�test_backup_iosr�cCshGdd�d�}|t�}t�t��t|�D]}q*Wd�n1sD0Y|t�}t|�D]}q^dS)Nc@seZdZdd�Zdd�ZdS)z%test_backup_io_iter.<locals>.IteratorcSs
||_dSr6��exc)r>r�r"r"r#rH
sz.test_backup_io_iter.<locals>.Iterator.__init__cSs|���dSr6r�rGr"r"r#�__next__sz.test_backup_io_iter.<locals>.Iterator.__next__N)rArBrCrHr�r"r"r"r#�Iteratorsr�)r�r�r�rr�
StopIteration)r�Zoserror_iterator�_Znormal_iteratorr"r"r#�test_backup_io_iters r�cCs�td�td�}}tddd||d�}t|dd�\}}t|dd�\}}t|dd	d
d�\}}tddd
||d�}t|dd�\}}t|dddd�\}}tdddddd�}t|dd�\}}t|dddd�\}}tdddddd�}t|dd�\}}t|dddd�\}}dS)Nr�filenamerr	)r+�uid�gid�user�groupF)�numericTrlrm)r�Z
uid_forcedZ
gid_forced��������)r�Zuid_defaultZgid_default������Z
udoesnotexistZ
gdoesnotexist���	r��)rrrr)Zuser0Zgroup0r,r�r�r"r"r#�test_get_item_uid_gidsr�)r%)8r8�collectionsrrr�iorZ
unittest.mockrr�r�rZ
crypto.keyr
�archiverrr
rrrrrrrZhelpersrrr,rr�platformrrZfixturer!r$r5r7r<r=rLrYrpr�ZmarkZparametrizer��sorted�listZIKr�r�r�r�r�r"r"r"r#�<module>sb 
	
	'8
����
��