Current File : //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/cache.cpython-36.pyc
3

y��b�#�@s�ddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlm
Z
dd	lmZdd
lmZmZddlmZddlmZdd
lmZejZGdd�d�ZGdd�d�ZdS)�N�)�H)�TestKey�)�
Statistics)�
AdHocCache)�CompressionSpec)�RepoKey)�
ChunkIndex�CacheSynchronizer)�Manifest)�msgpack)�
Repositoryc
@s2eZdZejdd��Zejdd��Zdd�Zdd�Zd	d
�Z	ej
jddd
idfed�ddgfd2d3d4d5d6f�ej
jddd�dd�dd�f�d d!���Z
ej
jd"d#ed$�d
d%d&fgid'fd#ed$�d
fgid'fd#d7gidfd#ded$�d
fgidfd#ed$�dd
fgidff�d(d)��Zd*d+�Zd,d-�Zd.d/�Zd0d1�ZdS)8�TestCacheSynchronizercCst�S)N)r
)�self�r�/usr/lib64/python3.6/cache.py�indexszTestCacheSynchronizer.indexcCst|�S)N)r)rrrrr�syncszTestCacheSynchronizer.synccCs0tddddgd��}|j|�t|�s,t�dS)N�bari�i.�chunks)�foo�bazr�userr)�packb�feed�len�AssertionError)rrr�datarrr�test_no_chunkss

z$TestCacheSynchronizer.test_no_chunksc	Csrtddddtd�ddftd�ddfgd��}|j|�t|�dksFt�|td�d	ksZt�|td�d
ksnt�dS)Nri�i.rrr�)rrrrr)rrr)rrr )rrrrr)rrrrrrr�test_simple(s
z!TestCacheSynchronizer.test_simplec	CsLtddddtd�ddftd�ddfgd��}|tdd	d
�dgd��7}|tdd	d
�td�ddftd�ddfgdgd��7}|tdtd�ddfgi�7}|tdtd�ddfgi�7}|dd
�}|d
d�}|dd�}|j|�|j|�|j|�t|�dk�st�|td�dk�st�|td�dk�s2t�|td�dk�sHt�dS)Nri�i.rrrr )rrrrrZ123456)zsecurity.foor)�xattrs�stuff)r"rr#�F�x)rrr )rrr )r rr)rrr )rrr)rrrrr)rrrrZpart1Zpart2Zpart3rrr�
test_multiple8sB


z#TestCacheSynchronizer.test_multiplez
elem,errorrrzUnexpected object: map��z$Unexpected bytes in chunks structurezIncorrect key length�Unexpected object: integer��?�Unexpected object: doubleT�Unexpected object: trueF�Unexpected object: falseN�Unexpected object: nil�	structurecCsd|iS)Nrr)�elemrrr�<lambda>{szTestCacheSynchronizer.<lambda>cCs
d|giS)Nrr)r/rrrr0|scCsd|ddfgiS)Nrrrr)r/rrrr0}sc
Cs`t||��}tjt��}|j|�WdQRXt|t�r<|g}dd�|D�}t|j�|ks\t�dS)NcSsg|]}d|�qS)zcache_sync_feed failed: r)�.0�errorrrr�
<listcomp>�sz8TestCacheSynchronizer.test_corrupted.<locals>.<listcomp>)	r�pytest�raises�
ValueErrorr�
isinstance�str�valuer)rrr.r/r2�packed�excinfoZpossible_errorsrrr�test_corruptedos
z$TestCacheSynchronizer.test_corruptedz
data,errorr� r �zInvalid chunk list entry lengthc
CsBt|�}tjt��}|j|�WdQRXt|j�d|ks>t�dS)Nzcache_sync_feed failed: )rr4r5r6rr8r9r)rrrrr2r:r;rrr�test_corrupted_ancillary�s
z.TestCacheSynchronizer.test_corrupted_ancillarycCs�tj�}|jd�|jdjdd��|jdjdd��|jdjdd��|jd
jdd��|jtd��|j|jdd��|jdjdd��|jd	jdd��|jd�tj|�}|S)NsBORG_IDXrr>�littler=r ri�i.�)�io�BytesIO�write�to_bytesr�seekr
�read)rZrefcountZ
index_datarrrr�make_index_with_refcount�s


z.TestCacheSynchronizer.make_index_with_refcountc	Csf|jtjd�}t|�}tdtd�ddfgi�}tjt��}|j	|�WdQRXt
|j�dksbt�dS)Nrrrrz/cache_sync_feed failed: invalid reference count)
rHr
�	MAX_VALUErrrr4r5r6rr8r9r)rrrrr;rrr�test_corrupted_refcount�sz-TestCacheSynchronizer.test_corrupted_refcountcCsV|jtj�}t|�}tdtd�ddfgi�}|j|�|td�tjddfksRt�dS)Nrrrri�i.)rHr
rIrrrrr)rrrrrrr�test_refcount_max_value�s
z-TestCacheSynchronizer.test_refcount_max_valuecCs�|jtjd�}t|�}tdtd�ddfgi�}|j|�|td�tjddfksVt�|j|�|td�tjddfks|t�dS)Nrrrri�i.)rHr
rIrrrrr)rrrrrrr�!test_refcount_one_below_max_value�s

z7TestCacheSynchronizer.test_refcount_one_below_max_value)rr()r)r*)Tr+)Fr,)Nr-)rrr )�__name__�
__module__�__qualname__r4�fixturerrrr!r&ZmarkZparametrize�bytesr<r?rHrJrKrLrrrrrs:7
$rc@s�eZdZejdd��Zejdd��Zejdd��Zejdd��Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�TestAdHocCachec
csXtjjt|�d�|_t|jddd��*}|jtd�d�|jtj	d�|VWdQRXdS)N�
repositoryT)Z	exclusive�creaters1234s5678)
�os�path�joinr8Zrepository_locationrZputrr�MANIFEST_ID)rZtmpdirrSrrrrS�s
zTestAdHocCache.repositorycCs,|jdd�tj|tj��}td�j|_|S)NZBORG_PASSPHRASEZtestZnone)Zsetenvr	rTrZMockArgsrZ
compressor)rrSZmonkeypatch�keyrrrrY�szTestAdHocCache.keycCs$t||�j�tj||tjd�dS)N)rYZ
operationsr)rrD�loadZNO_OPERATION_CHECK)rrSrYrrr�manifest�szTestAdHocCache.manifestcCst|||�S)N)r)rrSrYr[rrr�cache�szTestAdHocCache.cachecCs|jtj�st�dS)N)�
seen_chunkrrXr)rr\rrr�test_does_not_contain_manifest�sz-TestAdHocCache.test_does_not_contain_manifestcCsD|jtd��tjkst�|jtd�t��|jtd��dks@t�dS)Nrs1234)r]rr
rIr�chunk_decrefr�get)rrSr\rrr�$test_does_not_delete_existing_chunks�sz3TestAdHocCache.test_does_not_delete_existing_chunksc
Cs2tjt��|jtd�dt�dd�WdQRXdS)Nrs5678T)Z	overwrite)r4r5r�	add_chunkrr)rr\rrr�test_does_not_overwrite�sz&TestAdHocCache.test_does_not_overwritecCs*|jtd�dt��td�ddfks&t�dS)Nrs5678r>r)rbrrr)rr\rrr�test_seen_chunk_add_chunk_size�sz-TestAdHocCache.test_seen_chunk_add_chunk_sizec
Csz|jtd�dt��|jtd��dks*t�|jtd�t��|jtd��sPt�tjtj	��|j
td��WdQRXdS)zE.g. checkpoint archives�s1010rN)rbrrr]rr_r4r5rZObjectNotFoundr`)rr\rSrrr�#test_deletes_chunks_during_lifetime�sz2TestAdHocCache.test_deletes_chunks_during_lifetimecCs:|jdtd�d�dkst�|jdks(t�|jdks6t�dS)Nsfoor=F�d)FN)Zfile_known_and_unchangedrQrZ
cache_mode�files)rr\rrr�test_files_cacheszTestAdHocCache.test_files_cachecCsV|jst�|jtd��|js$t�|js.t�|j�|jsBt�t|d�sRt�dS)Nrer)Z_txn_activerr]rrZrollback�hasattr)rr\rrr�test_txns

zTestAdHocCache.test_txncCsN|jtd�dt��td�ddfks&t�|jtd�t��td�ddfksJt�dS)Nr s5678r>�/)rbrrr�chunk_incref)rr\rrr�test_incref_after_add_chunks&z*TestAdHocCache.test_incref_after_add_chunkcCsN|jtd�dt��td�ddfks&t�|jtd�t��td�ddfksJt�dS)z9This case occurs with part files, see Archive.chunk_file.rs5678r>rN)rbrrrrm)rr\rrr�$test_existing_incref_after_add_chunks&z3TestAdHocCache.test_existing_incref_after_add_chunkN)rMrNrOr4rPrSrYr[r\r^rarcrdrfrirkrnrorrrrrR�s		rR)rBZos.pathrUr4Z	hashindexrrYr�archiverr\r�compressrZ
crypto.keyr	r
rZhelpersrr
rSrrrrRrrrr�<module>s ?