Current File : //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/archive.cpython-36.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.pyrsrcCsl|jdkst�|j|jko$dkns.t�|jdddd�|jdksLt�|jdksZt�|jdksht�dS)NrrF)r�()Zosize�AssertionErrorZcsizeZusizer)rrrr�test_stats_basics r!�PcCs�|jdt|��t�}|j|d�d}d|t|�}|j�||dksNt�t�}|jddd	d
�|jtdd�d	|d
�d}d|t|�}|j�||dks�t�t�}|jtddd�d	|d
�d}d|t|�}|j�||dks�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 foorzP1.02 kB O 10 B C 10 B D 0 N foofoofoofoofoofoofoofo...oofoofoofoofoofoofoofoofooi�)	Zsetenv�strr�
show_progress�len�getvaluer rr)rZmonkeypatch�columns�out�sZbufrrr�tests_stats_progress"s"r2cCsDt|�dkst�dj|�}|dks&t�t|�djt|��ks@t�dS)NzNThis archive:                   20 B                 10 B                 10 Bz
{0.osize_fmt}z20 Bz)<Statistics object at {:#x} (20, 10, 10)>)r+r �format�repr�id)rr1rrr�test_stats_format7s


r6cCsPd|_t�}|jtdd�|d�tj|j��}|ddks>t�t|dt	�sPt�|dd	ks`t�|d
dkspt�|ddks�t�|d
dks�t�|ddks�t�|ddks�t�t�}|j|dd�tj|j��}|ddks�t�t|dt	�s�t�|ddk�st�d
|k�st�d|k�s"t�d
|k�s0t�d|k�s>t�d|k�sLt�dS)NTr')r()r)r#�typeZarchive_progress�timeZfinishedFr(Z
original_sizerZcompressed_sizerZdeduplicated_sizeZnfilesr)r#r*)
Zoutput_jsonrr,r�json�loadsr.r �
isinstance�float)rr0�resultrrr�test_stats_progress_json@s.r>c@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__rBrrrr�MockRepo^srFcCsi|_|j�|_dS)N)�objectsrF�
repository)r@rrr�__init__bszMockCache.__init__NTcCs||j|<|t|�t|�fS)N)rGr-)r@r5�chunkrrArrr�	add_chunkfs
zMockCache.add_chunk)NT)rCrDrErFrIrKrrrrr?\sr?c@s$eZdZdd�Zdd�Zdd�ZdS)�ArchiveTimestampTestCasecCsHt�}t|�}t||�}t|||ddd�}t|d�|_|j|j|�dS)N�testT)Zcreate)r8)rr
rrrZmetadata�assert_equalZts)r@Z	isoformatZexpectedrH�keyZmanifest�arrr�_test_timestamp_parsingms
z0ArchiveTimestampTestCase._test_timestamp_parsingcCs$|jdtdddddddtj��dS)Nz1970-01-01T00:00:01.000001i�rr)rQrr�utc)r@rrr�test_with_microsecondsusz/ArchiveTimestampTestCase.test_with_microsecondscCs$|jdtdddddddtj��dS)Nz1970-01-01T00:00:01i�rr)rQrrrR)r@rrr�test_without_microsecondszsz2ArchiveTimestampTestCase.test_without_microsecondsN)rCrDrErQrSrTrrrrrLksrLc@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>)
rr?r
r�addrVrNr-�chunksr�Unpacker�feedrG)r@�data�cacherOr\rY�unpackerr5rrrrM�s

zChunkBufferTestCase.testc	Cs�dd}td|d�td|d�g}t�}td�}t||d�}x|D]}|j|�q@W|jdd�|jt|j�d�|j	j
�d	ks�t�|jd
d�|jt|j�d�|j	j
�d	ks�t�tj
�}x|jD]}|j|j|�q�W|j|dd
�|D��dS)NZ$0123456789abcdefghijklmnopqrstuvwxyzi�aZfull)r(�source�partialF)rVr&rT�cSsg|]}t|d��qS))rW)r)rXrYrrrrZ�sz4ChunkBufferTestCase.test_partial.<locals>.<listcomp>)rr?r
rr[rVrNr-r\�buffer�tellr rr]r^rG)	r@Zbigr_r`rOr\rYrar5rrr�test_partial�s"
z ChunkBufferTestCase.test_partialN)rCrDrErMrgrrrrrU�srUc@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)rXr)rrr�	<genexpr>�sz5RobustUnpackerTestCase.make_chunks.<locals>.<genexpr>)�join)r@�itemsrrr�make_chunks�sz"RobustUnpackerTestCase.make_chunkscCst|t�o|jd�dkS)Nspath�foo�bar�boo�baz)rorprqrr)r;�dict�get)r@�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
rvrZresyncr^�append)r@�inputrar=Zshould_syncr\r_r)rrr�process�s


zRobustUnpackerTestCase.processcCsnd|jddg�gfddg|jddg�gfg}|j|�}|j|ddiddidd	d
dd	ddddiddig�dS)
NFsfoosbarsgarbagesboosbazspath�g�a�r�b�e)rnryrN)r@r\r=rrr�test_extra_garbage_no_sync�s
z1RobustUnpackerTestCase.test_extra_garbage_no_synccCs0g}x&|r*|j|d|��||d�}qW|S)N)rw)r@�leftZlength�partsrrr�split�s
zRobustUnpackerTestCase.splitcCsV|j|jddddg�d�}d|fg}|j|�}|j|ddiddiddiddig�dS)Nsfoosbarsboosbazr	Fspath)r�rnryrN)r@r\rxr=rrr�test_correct_stream�s

z*RobustUnpackerTestCase.test_correct_streamcCsf|j|jddddg�d�}d|dd�fd|dd�fg}|j|�}|j|d	did	did	dig�dS)
NsfoosbarsboosbazrdFr&Tspath)r�rnryrN)r@r\rxr=rrr�test_missing_chunk�s 
z)RobustUnpackerTestCase.test_missing_chunkcCsn|j|jddddg�d�}d|dd�fdd	d
g|dd�fg}|j|�}|j|ddiddiddig�dS)NsfoosbarsboosbazrdFr&Tsgarsbagespath)r�rnryrN)r@r\rxr=rrr�test_corrupt_chunk�s(
z)RobustUnpackerTestCase.test_corrupt_chunkN)rCrDrErnrvryrr�r�r�r�rrrrrh�s
rhcCsdd�tD�S)NcSsg|]}tj|��qSr)rrj)rX�namerrrrZ�sz(item_keys_serialized.<locals>.<listcomp>)rrrrr�item_keys_serialized�sr��packedri�xsfoobarcCsg|]}tj|��qSr)rrj)rX�orrrrZ�srZgF��*g�Q��k7@T�foo�barcCst||�st�dS)N)rr )r�r�rrr�test_invalid_msgpacked_item�sr�cCsg|]}tj|��qSr)rrj)rXr�rrrrZ�sspaths/a/b/cccs|]}|dfVqdS)riNr)rX�krrrrk�srkccs|]}|ddfVqdS)r�i�Nr)rXr�rrrrk�scCst||�st�dS)N)rr )r�r�rrr�test_valid_msgpacked_items�sr�cCs4dd}|di}tj|�g}ttj|�|�s0t�dS)Nr�� ri)rrjrr )rOr_r�rrr�test_key_length_msgpacked_items�sr�cCs2tjt��t�td��WdQRXWdQRXdS)N�{)�pytest�raisesrr�OSErrorrrrr�test_backup_iosr�c
CshGdd�d�}|t�}tjt��xt|�D]}q,WWdQRX|t�}xt|�D]}dsPtd��qPWdS)Nc@seZdZdd�Zdd�ZdS)z%test_backup_io_iter.<locals>.IteratorcSs
||_dS)N)�exc)r@r�rrrrIsz.test_backup_io_iter.<locals>.Iterator.__init__cSs|j��dS)N)r�)r@rrr�__next__sz.test_backup_io_iter.<locals>.Iterator.__next__N)rCrDrErIr�rrrr�Iterator
sr�Fz!StopIteration handled incorrectly)r�r�r�rr�
StopIterationr )r�Zoserror_iterator�_Znormal_iteratorrrr�test_backup_io_iter	sr�)r")r�r�)3r9�collectionsrrr�iorZ
unittest.mockrr�r�rZ
crypto.keyr
�archiverrr
rrrrrrZhelpersrrr)rrZfixturerr!r2r6r>r?rLrUrhr�ZmarkZparametrizer��sorted�listZIKr�r�r�r�rrrr�<module>sH 	
	'8,"