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

y��bpP�@s ddlZddlZddlZddlZddlZddlZddlmZmZm	Z	ddl
mZddlmZm
Z
ddl
mZdd	�Zd
d�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZdS) �N�)�NSIndex�
ChunkIndex�ChunkIndexEntry)�	hashindex)�IntegrityCheckedFile�FileIntegrityError�)�BaseTestCasecCstd|d�S)Nz%-0.32d�ascii)�bytes)�x�r�!/usr/lib64/python3.6/hashindex.py�HsrcCstjt|��j�S)N)�hashlib�sha256r�digest)r
rrr�H2src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�HashIndexTestCasec
CsZ|�}|jt|�d�x td�D]}||�|t|�<q W|jt|�d�x(td�D]}|j|t|�||��qRWx$td�D]}||d�|t|�<q|W|jt|�d�x,td�D] }|j|t|�||d��q�Wxtd�D]}|t|�=q�Wxtdd�D]}q�Wxtd�D]}�qWx&td�D]}|jt|jt|���q$W|jt|�d�tj�}|j	|j
�~t|j
d�� }|jtj
|j��j�|�WdQRX|j|j
�}|jt|�d�x0tdd�D]"}|j|t|�||d���q�W|j�|jt|�d�|j	|j
�~|jt|j|j
��d�|�}|jtd�|d��|jtd�|d��~dS)Nr�dr�2�rb�*�)�assert_equal�len�ranger�
assert_raises�KeyError�__delitem__�tempfile�NamedTemporaryFile�write�name�openrr�readZ	hexdigest�clear�
setdefault)�self�clsZ
make_valueZsha�idxr
�idx_name�fdrrr�
_generic_testsN $"zHashIndexTestCase._generic_testcCs|jtdd�d�dS)NcSs||fS)Nr)r
rrr�<lambda>[sz0HashIndexTestCase.test_nsindex.<locals>.<lambda>Z@85f72b036c692c8266e4f51ccf0cff2147204282b5e316ae508d30a448d88fef)r.r)r)rrr�test_nsindexZszHashIndexTestCase.test_nsindexcCs|jtdd�d�dS)NcSs
|||fS)Nr)r
rrrr/_sz3HashIndexTestCase.test_chunkindex.<locals>.<lambda>Z@c83fdf33755fc37879285f2ecfc5d1f63b97577494902126b6fb6f3e4d852488)r.r)r)rrr�test_chunkindex^sz!HashIndexTestCase.test_chunkindexcCs�d}tj�}t�}|j|j�tjj|j�}|jt	|�d�x t
|�D]}||f|t|�<qFW|j|j�xt
|�D]}|t|�=qtW|jt	|�d�|j|j�|j|tjj|j��dS)Ni�r)r!r"rr#r$�os�path�getsizerrrr)r)�nr,r+Zinitial_sizer
rrr�test_resizebszHashIndexTestCase.test_resizecCs�t�}x td�D]}||f|t|�<qW|j�}t|�}|jt|�d�|jtt	|�t|j|ddd��}|jt|�d�|j||dd��dS)Nr�1r)Zmarkerr)
rrrZ	iteritems�listrrr�
StopIteration�next)r)r+r
�iterator�allZsecond_halfrrr�test_iteritemsssz HashIndexTestCase.test_iteritemscCsbt�}d|td�<d|td�<d
|td�<t�}d|td�<d|td�<d|td�<|j|�dS)Nr	rr����,����)r	rr)rr>r>)r?r@r@)rArr)rBr>r>)rCrDrD)rr�merge)r)�idx1�idx2rrr�test_chunkindex_merge�s
z'HashIndexTestCase.test_chunkindex_mergecCsBt�}d
|td�<d|td�<d|td�<|j�\}}}}}}dS)
Nr	��rr��r>r?��,)r	rIr)rrJr>)r?rKrL)rrZ	summarize)r)r+�sizeZcsizeZunique_sizeZunique_csizeZ
unique_chunksZchunksrrr�test_chunkindex_summarize�sz+HashIndexTestCase.test_chunkindex_summarizeN)
�__name__�
__module__�__qualname__r.r0r1r6r=rHrNrrrrrs=
rc@seZdZdZdd�ZdS)�HashIndexExtraTestCasezRThese tests are separate because they should not become part of the selftest.
    cCs�tdtj�d}t|�}dd�t|�D�}|dd|d�|d|dd�}}x"t|�D]\}}|||f||<q`Wx"t|�D]\}}|||f||<q�Wx|D]
}||=q�Wxt|�D]\}}q�Wx|D]}q�Wx|D]
}||=q�WdS)Ni�
cSsg|]}tjt|��j��qSr)rrrr)�.0�krrr�
<listcomp>�sz=HashIndexExtraTestCase.test_chunk_indexer.<locals>.<listcomp>rrr?)�intrZMAX_LOAD_FACTORr�	enumerate)r)Z	key_count�indexZall_keys�keysZto_delete_keys�i�keyrrr�test_chunk_indexer�s"*




z)HashIndexExtraTestCase.test_chunk_indexerN)rOrPrQ�__doc__r]rrrrrR�srRc@seZdZdd�Zdd�ZdS)�HashIndexSizeTestCasecCs
t�}dS)N)r)r)r+rrr�test_size_on_disk�sz'HashIndexSizeTestCase.test_size_on_diskc	Csdt�}x*td�D]}||d|df|t|�<qWtj�� }|j|j�tjj	|j�}WdQRXdS)Ni�rr?)
rrrr!r"r#r$r2r3r4)r)r+r[�filerMrrr�test_size_on_disk_accurate�s
z0HashIndexSizeTestCase.test_size_on_disk_accurateN)rOrPrQr`rbrrrrr_�sr_c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�HashIndexRefcountingTestCasecCsjt�}tjdddf|td�<x"td�D]}|jtd��^}}q(Wx"td�D]}|jtd��^}}qLWdS)Nr	rrB)r�	MAX_VALUErr�incref�decref)r)r+r[�refcount�_rrr�test_chunkindex_limit�sz2HashIndexRefcountingTestCase.test_chunkindex_limitcCsdd�}|||�}|S)NcSsNt�}|ddf|td�<t�}|ddf|td�<|j|�|td�^}}|S)Nr	r)rrrE)Z	refcount1Z	refcount2rFrGrgrhrrrrE�s
z2HashIndexRefcountingTestCase._merge.<locals>.merger)r)Z	refcountaZ	refcountbrE�resultrrr�_merge�s
z#HashIndexRefcountingTestCase._mergecCstjd}dS)Nr)rrd)r)�halfrrr�test_chunkindex_merge_limit1�s
z9HashIndexRefcountingTestCase.test_chunkindex_merge_limit1cCsdS)Nr)r)rrr�test_chunkindex_merge_limit2�sz9HashIndexRefcountingTestCase.test_chunkindex_merge_limit2cCstjd}dS)Nr)rrd)r)rlrrr�test_chunkindex_merge_limit3�s
z9HashIndexRefcountingTestCase.test_chunkindex_merge_limit3cCstjd}dS)Nr)rrd)r)rlrrr�test_chunkindex_merge_limit4�s
z9HashIndexRefcountingTestCase.test_chunkindex_merge_limit4cCs2t�}|jtd�ddd�|jtd�ddd�dS)Nr	rBrC�rr?)r�addr)r)rFrrr�test_chunkindex_add�sz0HashIndexRefcountingTestCase.test_chunkindex_addcCs<t�}tjddf|td�<|jtd��|td�^}}dS)NrCrqr	)rrdrre)r)rFrgrhrrr�test_incref_limits
z.HashIndexRefcountingTestCase.test_incref_limitcCs<t�}tjddf|td�<|jtd��|td�^}}dS)NrCrqr	)rrdrrf)r)rFrgrhrrr�test_decref_limit
s
z.HashIndexRefcountingTestCase.test_decref_limitc
Cs:t�}d|td�<|jt��|jtd��WdQRXdS)Nrr	)rrr)rrr�AssertionErrorrf)r)rFrrr�test_decref_zerosz-HashIndexRefcountingTestCase.test_decref_zerocCs:t�}|jtd�ddd�|jtd��|jtd��dS)Nr	rBrCrq)rrrrrerf)r)rFrrr�test_incref_decrefs
z/HashIndexRefcountingTestCase.test_incref_decrefcCs8t�}|jt��tjdddf|td�<WdQRXdS)Nr	r)rrrvrdr)r)rFrrr�test_setitem_raises#sz0HashIndexRefcountingTestCase.test_setitem_raisesc!Cs�t�}|jt��|jtd��WdQRX|jt��|jtd��WdQRX|jt��|td�WdQRX|jt��|jtd�ddd�WdQRXdS)Nr	r���)rrrrerrf�
OverflowErrorrr)r)r+rrr�
test_keyerror(sz*HashIndexRefcountingTestCase.test_keyerrorN)rOrPrQrirkrmrnrorprsrtrurwrxryr|rrrrrc�s
	rcc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�HashIndexDataTestCases(eJzt0L0NgmAUhtHLT0LDEI6AuAEhMVYmVnSuYefC7AB3Aj9KNedJbnfyFne6P67P27w0EdG1Eac+Cm1ZybAsy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7Isy7LsL9nhc+cqTZ3XlO2Ys++Du5fX+l1/YFmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVmWZVn2/+0O2rYccw==cCsPtj��>}tjj|d�}|j|�t|d��}|j|j��SQRXWdQRXdS)Nr+r)	r!�TemporaryDirectoryr2r3�joinr#r%�_packr&)r)r+�tempdirra�frrr�_serialize_hashindex:s


z*HashIndexDataTestCase._serialize_hashindexcCsRtj��@}tjj|d�}t|d��}|j|j|��WdQRXtj	|�SQRXdS)Nr+�wb)
r!r~r2r3rr%r#�_unpackrr&)r)�
bytestringr�rar�rrr�_deserialize_hashindexAs

z,HashIndexDataTestCase._deserialize_hashindexcCstjtj|��S)N)�base64Z	b64encode�zlib�compress)r)r�rrrr�HszHashIndexDataTestCase._packcCstjtj|��S)N)r�Z
decompressr�Z	b64decode)r)r�rrrr�KszHashIndexDataTestCase._unpackcCs8t�}d|td�<d
|td�<d|td�<|j|�}dS)Nr	rr?�r�xl�)r	rr?l��)r�rr)r�rr)rrr�)r)rFZ
serializedrrr�test_identical_creationNs
z-HashIndexDataTestCase.test_identical_creationcCs,|j|j�}t�}d	|td�<|j|�dS)
Nr� i@�rCrqr?l���)r�rCrq)r��	HASHINDEXrrrE)r)rFrGrrr�test_read_known_goodWs

z*HashIndexDataTestCase.test_read_known_goodN)
rOrPrQr�r�r�r�r�r�r�rrrrr}4s	r}c@seZdZdd�Zdd�ZdS)�HashIndexIntegrityTestCasec	CsJ|j|j�}tjj|d�}t|dd��}|j|�WdQRX|j}||fS)Nr+T)r3r#)r�r�r2r3rrr#�integrity_data)r)r�r+rar-r�rrr�write_integrity_checked_indexdsz8HashIndexIntegrityTestCase.write_integrity_checked_indexcCs�tj��n}|j|�\}}t|d��}|jd�WdQRX|jt��*t|d|d��}tj	|�WdQRXWdQRXWdQRXdS)Nzr+bsFooF)r3r#r�)
r!r~r�r%r#rrrrr&)r)r�rar�r-rrr�test_integrity_checked_filens
z6HashIndexIntegrityTestCase.test_integrity_checked_fileN)rOrPrQr�r�rrrrr�cs
r�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�HashIndexCompactTestCasecCsdtj�}|jd�|j|jdd��|j|jdd��|jdjdd��|jdjdd��||_dS)NsBORG_IDXrA�littler�r	r?�)�io�BytesIOr#�to_bytes�
index_data)r)�num_entries�num_bucketsr�rrrrYys
zHashIndexCompactTestCase.indexcCs|jjd�tj|j�}|S)Nr)r��seekrr&)r)rYrrr�index_from_data�sz(HashIndexCompactTestCase.index_from_datacCstj�}|j|�|j�S)N)r�r�r#�getvalue)r)rY�datarrr�
index_to_data�s
z&HashIndexCompactTestCase.index_to_datacCs|j�}|j�|j|�}|S)N)r��compactr�)r)rY�
compact_indexrrr�index_from_data_compact_to_data�s
z8HashIndexCompactTestCase.index_from_data_compact_to_datacGs2|jj|�x |D]}|jj|jdd��qWdS)NrAr�)r�r#r�)r)r\�values�valuerrr�write_entry�s
z$HashIndexCompactTestCase.write_entrycCs|j|ddd�dS)Nl��r)r�)r)r\rrr�write_empty�sz$HashIndexCompactTestCase.write_emptycCs|j|ddd�dS)Nl��r)r�)r)r\rrr�
write_deleted�sz&HashIndexCompactTestCase.write_deletedcCs�|jddd�|jtd�ddd�|jtd��|jtd��|jtd�ddd�|jtd	�d
dd�|jtd��|j�}|jddd�|jtd�ddd�|jtd�ddd�|jtd	�d
dd�dS)
Nr?rC)r�r�rr	rrBrqrA��	rS)rYr�rr�r�r�)r)r�rrr�test_simple�sz$HashIndexCompactTestCase.test_simplecCs�|jddd�|jtd��|jtd�ddd�|jtd��|jtd�ddd�|jtd	�d
dd�|jtd��|j�}|jddd�|jtd�ddd�|jtd�ddd�|jtd	�d
dd�dS)
Nr?rC)r�r�r	rrrBrqrAr�r�rS)rYr�rr�r�r�)r)r�rrr�test_first_empty�sz)HashIndexCompactTestCase.test_first_emptycCs�|jddd�|jtd��|jtd�ddd�|jtd��|jtd�ddd�|jtd��|jtd	�d
dd�|j�}|jddd�|jtd�ddd�|jtd�ddd�|jtd	�d
dd�dS)
Nr?rC)r�r�r	rrrBrqrAr�r�rS)rYr�rr�r�r�)r)r�rrr�test_last_used�sz'HashIndexCompactTestCase.test_last_usedcCs�|jddd�|jtd��|jtd�ddd�|jtd�ddd�|jtd��|jtd��|jtd	�d
dd�|j�}|jddd�|jtd�ddd�|jtd�ddd�|jtd	�d
dd�dS)
Nr?rC)r�r�r	rrrBrqrAr�r�rS)rYr�rr�r�r�)r)r�rrr�test_too_few_empty_slots�sz1HashIndexCompactTestCase.test_too_few_empty_slotscCs||jddd�|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|j�}|jddd�dS)	NrrC)r�r�r	r?rrBrA)rYr�rr�r�)r)r�rrr�
test_empty�sz#HashIndexCompactTestCase.test_emptycCsFt�}t�}d|td�<d|td�<d	|td�<|j�|j|�dS)
Nr	rrr>r?�,)r	rr)rr>r>)r?r�r�)rrr�rE)r)ZmasterrFrrr�
test_merge�s
z#HashIndexCompactTestCase.test_mergeN)rOrPrQrYr�r�r�r�r�r�r�r�r�r�r�r�rrrrr�xsr�c@seZdZdd�ZdS)�NSIndexTestCasecCsHt�}|jt��tjddf|td�<WdQRXtjdf|td�<dS)Nr	rr)rrrvrdr)r)r+rrr�test_nsindex_segment_limits
 z*NSIndexTestCase.test_nsindex_segment_limitN)rOrPrQr�rrrrr�sr�c@seZdZdd�ZdS)�AllIndexTestCasecCsdS)Nr)r)rrr�test_max_load_factorsz%AllIndexTestCase.test_max_load_factorN)rOrPrQr�rrrrr�
sr�c@seZdZdd�ZdS)�IndexCorruptionTestCasecs�ddlm��fdd��t��x"td�D]}d|f��d|�<q(Wxtd�D]}��d|�=qLWx"td�D]}d|f��d|�<qjWdS)	Nr)�packcs�d||ddd�S)Nz<IIQQQrr)r
�y)r�rr�HHsz1IndexCorruptionTestCase.test_bug_4829.<locals>.HHi�i�iJiX)�structr�rr)r)r�r)r�r+r�r�
test_bug_4829s	z%IndexCorruptionTestCase.test_bug_4829N)rOrPrQr�rrrrr�sr�)r�rr�r2r!r�rrrr�Zcrypto.file_integrityrrr
rrrrRr_rcr}r�r�r�r�r�rrrr�<module>s.f/