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__/archive.cpython-36.opt-1.pyc
3

y��b%�
@s�ddlZddlmZddlmZmZddlmZddlmZddl	Z	ddl
mZdd	lm
Z
dd
lmZmZmZmZmZmZddlmZmZmZddlmZdd
lmZddlmZmZe	j�dd��Zdd�Z dBdd�Z!dd�Z"dd�Z#Gdd�d�Z$Gdd�de�Z%Gdd�de�Z&Gd d!�d!e�Z'e	jd"d#��Z(e	j)j*d$d%d&d'gd(d)�ddd*d+d,igfgd-d.d/d'd0d1id0d1gdCgD��d2d3��Z+e,e-e��Z.e	j)j*d$d4d)�d5d6ied7d8�e.D��ed9d8�e.D��gD��d:d;��Z/d<d=�Z0d>d?�Z1d@dA�Z2dS)D�N)�OrderedDict)�datetime�timezone)�StringIO)�Mock�)�BaseTestCase�)�PlaintextKey)�Archive�CacheChunkBuffer�RobustUnpacker�valid_msgpacked_dict�	ITEM_KEYS�
Statistics)�
BackupOSError�	backup_io�backup_io_iter)�Manifest)�msgpack)�Item�ArchiveItemcCst�}|jdddd�|S)N��
T)�unique)r�update)�stats�r�/usr/lib64/python3.6/archive.pyrsrcCs|jdddd�dS)NrrF)r)r)rrrr�test_stats_basicsr�PcCs�|jdt|��t�}|j|d�d}d|t|�}t�}|jdddd	�|jtd
d�d|d�d
}d|t|�}t�}|jtd
dd�d|d�d}d|t|�}dS)NZCOLUMNS)�streamz20 B O 10 B C 10 B D 0 N � r�rF)r�foo)�path)�item�finalr!z1.02 kB O 10 B C 10 B D 0 N foo�(zP1.02 kB O 10 B C 10 B D 0 N foofoofoofoofoofoofoofo...oofoofoofoofoofoofoofoofooi�)Zsetenv�strr�
show_progress�lenrr)rZmonkeypatch�columns�out�sZbufrrr�tests_stats_progress"sr/cCsdj|�}dS)Nz
{0.osize_fmt})�format)rr.rrr�test_stats_format7s
r1cCsTd|_t�}|jtdd�|d�tj|j��}t�}|j|dd�tj|j��}dS)NTr$)r%)r&r!)r!r')Zoutput_jsonrr*r�json�loads�getvalue)rr-�resultrrr�test_stats_progress_json@s
r6c@s,eZdZGdd�d�Zdd�Zd	dd�ZdS)
�	MockCachec@seZdZddd�ZdS)zMockCache.MockRepoTcCsdS)Nr)�self�waitrrr�async_response_sz!MockCache.MockRepo.async_responseN)T)�__name__�
__module__�__qualname__r:rrrr�MockRepo^sr>cCsi|_|j�|_dS)N)�objectsr>�
repository)r8rrr�__init__bszMockCache.__init__NTcCs||j|<|t|�t|�fS)N)r?r+)r8�id�chunkrr9rrr�	add_chunkfs
zMockCache.add_chunk)NT)r;r<r=r>rArDrrrrr7\sr7c@s$eZdZdd�Zdd�Zdd�ZdS)�ArchiveTimestampTestCasecCsHt�}t|�}t||�}t|||ddd�}t|d�|_|j|j|�dS)N�testT)Zcreate)Ztime)rr
rrrZmetadata�assert_equalZts)r8Z	isoformatZexpectedr@�keyZmanifest�arrr�_test_timestamp_parsingms
z0ArchiveTimestampTestCase._test_timestamp_parsingcCs$|jdtdddddddtj��dS)Nz1970-01-01T00:00:01.000001i�rr)rJrr�utc)r8rrr�test_with_microsecondsusz/ArchiveTimestampTestCase.test_with_microsecondscCs$|jdtdddddddtj��dS)Nz1970-01-01T00:00:01i�rr)rJrrrK)r8rrr�test_without_microsecondszsz2ArchiveTimestampTestCase.test_without_microsecondsN)r;r<r=rJrLrMrrrrrEksrEc@seZdZdd�Zdd�ZdS)�ChunkBufferTestCasecCs�tdd�tdd�g}t�}td�}t||d�}x|D]}|j|�|j�q4W|jdd�|jt|j�d�t	j
�}x|jD]}|j|j|�q|W|j|dd�|D��dS)	NZp1)r%Zp2T)�flushr	cSsg|]}t|d��qS))�
internal_dict)r)�.0�drrr�
<listcomp>�sz,ChunkBufferTestCase.test.<locals>.<listcomp>)
rr7r
r�addrOrGr+�chunksr�Unpacker�feedr?)r8�data�cacherHrUrR�unpackerrBrrrrF�s

zChunkBufferTestCase.testc	Cs�dd}td|d�td|d�g}t�}td�}t||d�}x|D]}|j|�q@W|jdd�|jt|j�d�|jd	d�|jt|j�d
�t	j
�}x|jD]}|j|j|�q�W|j|dd�|D��dS)
NZ$0123456789abcdefghijklmnopqrstuvwxyzi�aZfull)r%�source�partialF)rOr#T�cSsg|]}t|d��qS))rP)r)rQrRrrrrS�sz4ChunkBufferTestCase.test_partial.<locals>.<listcomp>)
rr7r
rrTrOrGr+rUrrVrWr?)	r8ZbigrXrYrHrUrRrZrBrrr�test_partial�s
z ChunkBufferTestCase.test_partialN)r;r<r=rFr^rrrrrN�srNc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�RobustUnpackerTestCasecCsdjdd�|D��S)N�css|]}tjd|i�VqdS)r%N)r�packb)rQr&rrr�	<genexpr>�sz5RobustUnpackerTestCase.make_chunks.<locals>.<genexpr>)�join)r8�itemsrrr�make_chunks�sz"RobustUnpackerTestCase.make_chunkscCst|t�o|jd�dkS)Nspath�foo�bar�boo�baz)rfrgrhri)�
isinstance�dict�get)r8�valuerrr�
_validator�sz!RobustUnpackerTestCase._validatorcCsdt|jtd�}g}xL|D]D\}}|r,|j�x.|D]&}|j|�x|D]}|j|�qFWq2WqW|S)N)Z	validatorZ	item_keys)r
rnrZresyncrW�append)r8�inputrZr5Zshould_syncrUrXr&rrr�process�s


zRobustUnpackerTestCase.processcCsnd|jddg�gfddg|jddg�gfg}|j|�}|j|ddiddidd	d
dd	ddddiddig�dS)
NFsfoosbarsgarbagesboosbazspath�g�a�r�b�e)rerqrG)r8rUr5rrr�test_extra_garbage_no_sync�s
z1RobustUnpackerTestCase.test_extra_garbage_no_synccCs0g}x&|r*|j|d|��||d�}qW|S)N)ro)r8�leftZlength�partsrrr�split�s
zRobustUnpackerTestCase.splitcCsV|j|jddddg�d�}d|fg}|j|�}|j|ddiddiddiddig�dS)Nsfoosbarsboosbazr	Fspath)rzrerqrG)r8rUrpr5rrr�test_correct_stream�s

z*RobustUnpackerTestCase.test_correct_streamcCsf|j|jddddg�d�}d|dd�fd|dd�fg}|j|�}|j|d	did	did	dig�dS)
Nsfoosbarsboosbazr]Fr#Tspath)rzrerqrG)r8rUrpr5rrr�test_missing_chunk�s 
z)RobustUnpackerTestCase.test_missing_chunkcCsn|j|jddddg�d�}d|dd�fdd	d
g|dd�fg}|j|�}|j|ddiddiddig�dS)Nsfoosbarsboosbazr]Fr#Tsgarsbagespath)rzrerqrG)r8rUrpr5rrr�test_corrupt_chunk�s(
z)RobustUnpackerTestCase.test_corrupt_chunkN)r;r<r=rernrqrwrzr{r|r}rrrrr_�s
r_cCsdd�tD�S)NcSsg|]}tj|��qSr)rra)rQ�namerrrrS�sz(item_keys_serialized.<locals>.<listcomp>)rrrrr�item_keys_serialized�sr�packedr`�xsfoobarcCsg|]}tj|��qSr)rra)rQ�orrrrS�srSgF��*g�Q��k7@T�foo�barcCsdS)Nr)r�rrrr�test_invalid_msgpacked_item�sr�cCsg|]}tj|��qSr)rra)rQr�rrrrS�sspaths/a/b/cccs|]}|dfVqdS)r`Nr)rQ�krrrrb�srbccs|]}|ddfVqdS)r�i�Nr)rQr�rrrrb�scCsdS)Nr)r�rrrr�test_valid_msgpacked_items�sr�cCs dd}|di}tj|�g}dS)Nr�� r`)rra)rHrXrrrr�test_key_length_msgpacked_items�sr�cCs2tjt��t�td��WdQRXWdQRXdS)N�{)�pytest�raisesrr�OSErrorrrrr�test_backup_iosr�c	Cs\Gdd�d�}|t�}tjt��xt|�D]}q,WWdQRX|t�}xt|�D]}qPWdS)Nc@seZdZdd�Zdd�ZdS)z%test_backup_io_iter.<locals>.IteratorcSs
||_dS)N)�exc)r8r�rrrrAsz.test_backup_io_iter.<locals>.Iterator.__init__cSs|j��dS)N)r�)r8rrr�__next__sz.test_backup_io_iter.<locals>.Iterator.__next__N)r;r<r=rAr�rrrr�Iterator
sr�)r�r�r�rr�
StopIteration)r�Zoserror_iterator�_Znormal_iteratorrrr�test_backup_io_iter	sr�)r )r�r�)3r2�collectionsrrr�iorZ
unittest.mockrr�r�rZ
crypto.keyr
�archiverrr
rrrrrrZhelpersrrr&rrZfixturerrr/r1r6r7rErNr_rZmarkZparametrizer��sorted�listZIKr�r�r�r�rrrr�<module>sH 	
	'8,"