o
    +kex                     @   s   d Z ddlZddlZddlmZmZ ddlmZ ejdd Z	ejd	d
gddd Z
ejdddgddd Zejd	dgddd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZdS )'zM
Do benchmarks using pytest-benchmark.

Usage:

    py.test --benchmark-only
    N   )	changedircmd   )zerosc                 c   s~    | dd | dd | dd | dd | dt|d	 | d
t|d t|dV  |jdd d S )NZBORG_PASSPHRASEZ123456Z!BORG_CHECK_I_KNOW_WHAT_I_AM_DOINGYESZ"BORG_DELETE_I_KNOW_WHAT_I_AM_DOINGZ*BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OKyesZBORG_KEYS_DIRkeysZBORG_CACHE_DIRcache
repositoryr   Zrec)Zsetenvstrjoinremove)requesttmpdirZmonkeypatch r   <usr/lib/python3.10/site-packages/borg/testsuite/benchmark.pyrepo_url   s   r   noneZrepokey)paramsc                 C   s   |dd| j | |S )Ninitz--encryptionparam)r   r   r   r   r   r   repo   s   r   Zsessionr   random)scoper   c           	   	   c   s    d\}}|t tksJ |d}| j}|dkrdd }n|dkr'dd }ntdt|D ]%}tt|t|d	}|	|| W d    n1 sOw   Y  q/t|V  |j
d
d d S )N)
   i@B datar   c                 S   s   t td |  S N)
memoryviewr   sizer   r   r   r   +   s   ztestdata.<locals>.datar   c                 S   s
   t | S r   )osurandomr!   r   r   r   r   .   s   
z&data_type must be 'random' or 'zeros'.wbr   r   )lenr   mktempr   
ValueErrorrangeopenr   r   writer   )	r   Ztmpdir_factorycountr"   pZ	data_typer   ifr   r   r   testdata#   s"   



r0   lz4c                 C   s   |d }|dd| j || |S )N::testcreate--compressionr   )r   r   r   r0   Zarchive_urlr   r   r   archive9   s   r5   c                 C   .   |  |ddd|d |f\}}|dksJ d S )Nr3   r4   r   r2   r   pedantic	benchmarkr   r   r0   resultoutr   r   r   test_create_none@      r=   c                 C   r6   )Nr3   r4   r1   r2   r   r7   r9   r   r   r   test_create_lz4E   r>   r?   c                 C   sP   t t| | |d|f\}}W d    n1 sw   Y  |dks&J d S )Nextractr   )r   r   r8   )r:   r   r5   r   r;   r<   r   r   r   test_extractJ   s   rA   c                 C   s$   |  |d|f\}}|dksJ d S )Ndeleter   r7   r:   r   r5   r;   r<   r   r   r   test_deleteP   s   rD   c                 C       | |d|\}}|dksJ d S )Nlistr   r   rC   r   r   r   	test_listU      rG   c                 C   rE   )Ninfor   r   rC   r   r   r   	test_infoZ   rH   rJ   c                 C   s.   | dd }| |d|\}}|dksJ d S )Nz::r   check)split)r:   r   r5   r   r;   r<   r   r   r   
test_check_   s   rM   c                 C   s   | |d\}}|dksJ d S )Nhelpr   r   )r:   r   r;   r<   r   r   r   	test_helpe   s   rO   )__doc__r#   Zpytestarchiverr   r   	constantsr   Zfixturer   r   r0   r5   r=   r?   rA   rD   rG   rJ   rM   rO   r   r   r   r   <module>   s*    



