Current File : //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/archiver.cpython-36.pyc |
3
up�de\ � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZd dl
Z
d dlZd dlZd dlZd dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d lmZ d dlZyd dl Z W n e!k
�r Y nX d dl"Z"d dl#Z"d
dl$m%Z%m&Z&m'Z' d
dl(m)Z)m*Z*m+Z+m,Z, d
d
l-m.Z.m/Z/m0Z0 d
dl1m2Z2m3Z3 d
dl4T d
dl5m6Z6m7Z7 d
dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d
dl?m@Z@mAZA d
dlBmCZC d
dl&mDZDmEZE d
dl&mFZFmGZGmHZH d
dl&mIZImJZJmKZK d
dl&mLZL d
dl&mMZM d
dl&mNZN d
dlOmPZPmQZQ d
dlRmSZSmTZTmUZU d
dlVmWZW d
dlXmYZY d
dlZm[Z[ d
dl\m]Z]m^Z^ d
d l_m`Z` d!d"l$maZambZb d!d#l$mcZcmdZdmeZemfZf d!d$l$mgZgmhZhmiZimjZjmkZk d!d%l'mlZl d!d&lmmnZn d!d'l$moZo ejpjqejpjrejpjset�d(��Zudd)dd*d)d+�d,d-�Zvd.d/� Zwyevd0d1d2d3� d4d5gZxW n eyk
�rj d4gZxY nX ejzexd6�d7d8� �Z{d9d:� Z|d;Z}ej~jejpj�e}� d<e} d=�d>d?� �Z�G d@dA� dAec�Z�G dBdC� dCe��Z�ej�d5exkdD�G dEdF� dFe���Z�G dGdH� dHe��Z�G dIdJ� dJe��Z�G dKdL� dLe��Z�G dMdN� dNe��Z�G dOdP� dPe��Z�G dQdR� dRe��Z�dSdT� Z�dUdV� Z�G dWdX� dX�Z�G dYdZ� dZ�Z�d[d\� Z�d]d^� Z�ej~j�d_e�e�� j�� ��d`da� �Z�ej~j�dbe�e.j�j�� ��dcdd� �Z�dS )e� N)� unhexlify�
b2a_base64)�ConfigParser)�datetime)�timezone)� timedelta)�sha256)�BytesIO�StringIO)�patch� )�xattr�helpers�platform)�Archive�ChunkBuffer�
flags_noatime�flags_normal)�Archiver�parse_storage_quota�PURE_PYTHON_MSGPACK_WARNING)�Cache�
LocalCache)�*)�
bytes_to_long�num_aes_blocks)�KeyfileKeyBase�RepoKey�
KeyfileKey�
Passphrase�TAMRequiredError�ArchiveTAMRequiredError)�RepoIdMismatch�NotABorgKeyFile)�FileIntegrityError)�Location�get_security_dir)�Manifest�MandatoryFeatureUnsupported�ArchiveInfo)�EXIT_SUCCESS�EXIT_WARNING�
EXIT_ERROR)�
bin_to_hex)�MAX_S)�msgpack)�
RstToTextLazy�rst_to_terminal)� IECommand�PatternMatcher�
parse_pattern)�Item)�
LockFailed)�
setup_logging)�RemoteRepository�PathNotAllowed)�
Repository� )�has_lchflags�
has_llfuse)�BaseTestCase� changedir�environment_variable�
no_selinux)�are_symlinks_supported�are_hardlinks_supported�are_fifos_supported�is_utime_fully_supported�is_birthtime_fully_supported)�fakeroot_detected)�make_attic_repo)�keyz..F� )�archiver�fork�exe�input�
binary_outputc O s� |r�yX|d krt jddf}n$t|t�r.|f}nt|t�s@td��tj|| tj|d�}d} W nZ tj k
r� }
z|
j
}|
j} W Y d d }
~
X n, tk
r� }
zd}|
j
} W Y d d }
~
X nX |r�| |fS | tj|�fS �nt jt jt j }}}
z�t|j� �t _t|�t j_t� }tj|dd� } t _t _| d k�r8t� } d d
� | _t| _tt_y| jt|��}W nF tk
�r� }
z(|j � |
j
|�r�|j!� n
|j!� j� fS d }
~
X nX | j"|�} |j � | |�r�|j!� n
|j!� j� fS |||
t _t _t _X d S )Nz-mz
borg.archiverz"exe must be None, a tuple or a str)�stderrrN r � zutf-8)�encodingc W s d S )N� )�argsrS rS � /usr/lib64/python3.6/archiver.py�<lambda>d s zexec_cmd.<locals>.<lambda>)#�sys�
executable�
isinstance�str�tuple�
ValueError�
subprocessZcheck_outputZSTDOUTZCalledProcessError�output�
returncode�
SystemExit�code�os�fsdecode�stdin�stdoutrP r
�decoder �buffer�io�
TextIOWrapperr Z
prerun_checksr* � exit_coder �
parse_args�list�flush�getvalueZrun)rK rL rM rN rO rT �kw�borgr^ �ret�erd re rP Zoutput_textrS rS rU �exec_cmdE sN
,
rs c C s6 t jd�sdS tjddgtjd�} | j� \}}d|kS )N�tarFz --version)re s GNU tar)�shutil�whichr] �Popen�PIPEZcommunicate)�popenre rP rS rS rU �have_gnutarv s
rz �helpzborg.exeT)rM rL �python�binary)Zparamsc s8 | j dkrd � n| j dkr d� ntd��� fdd�}|S )Nr| r} zborg.exez"param must be 'python' or 'binary'c s t | � dd�|��S )NT)rM rL )rs )rT ro )rM rS rU �exec_fn� s zcmd.<locals>.exec_fn)Zparamr\ )Zrequestr~ rS )rM rU �cmd� s
r c C s� |j d�}|j d�}|j d�}|jd�jd� | dddt|� �\}}|tksRt�| d d
| t|��\}}|tksvt�tt|���$ | dd
| �\}}|tks�t�W d Q R X | dd
| d�\}}|tks�t�| d d
| t|��\}}|tks�t�d S )
N�reporN r^ Z test_file�content�initz--encryption=nonez%s�createz%s::archive�extractzdoes/not/match) �mkdir�join�writerZ r* �AssertionErrorr? r+ r, )r �tmpdirr� rN r^ �rc�outrS rS rU �test_return_codes� s
r� z/tmp/borg-mountzneeds a 16MB fs mounted on %s)�reasonc ) C s
ddd�}t dd���� t}tjj|�s,t�tjj|d�}tjj|d�}tjj|d�}�x�td �D �]�}tj |dd
� tj |dd
� ||ddd
d� | d|�\}}|t
kr�td||� |t
ks�t�z�d\} }
x�| �r�|
d7 }
y||dd� W n6 tk
�r" } z|j
t
jk�rP � W Y d d }~X nX z6| dd||
f |�\}}|t
k} | �sXtd||� W d tj tjj|d�dd
� tjtjj|d�� X q�W W d tj |dd
� X | d|�\}}|t
k�r�td||� | dd|�\}}|t
k�r�td||� |t
ksbt�qbW W d Q R X d S )NTc
S s� t j| dd� tj| � |r<tjd|�}|dkr<tjd|�}xLt|�D ]@}tjj| d| �}t |d��}tj
|�}|j|� W d Q R X qFW d S )NT)�
ignore_errorsr; zfile%03d�wb)ru �rmtreerb r� �randomZrandint�range�pathr� �open�urandomr� )�dir�count�size�rnd�i�fn�f�datarS rS rU �
make_files� s
z"test_disk_full.<locals>.make_files�YES)�!BORG_CHECK_I_KNOW_WHAT_I_AM_DOINGr� rN �reserve�d )r� �P i�� F)r� r� r r; � i@
r� z%s::test%03dzlock.exclusivezlock.rosterrl �checkz--repair)T)Tr )r@ �DF_MOUNTrb r� �existsr� r� r� ru r� r* �print�OSError�errnoZENOSPC�remove)r r� �mountr� rN r� �jr� r� �successr� �errrS rS rU �test_disk_full� sP
r� c @ sZ e Zd ZdZdZdZdd� Zdd� Zdd � Zd
d� Z dd
� Z
dd� Zddd�Zdd� Z
dS )�ArchiverTestCaseBaseNFrQ c C s� dt jd<