o
    HXîhè'  ã                   @   s@  	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dlm
Z
 d dlmZ d dlmZmZ d dlZd dlZdZed ZG dd	„ d	ƒZG d
d„ deƒZdd„ ZG dd„ deejƒZe ee dƒ d¡G dd„ deejƒƒZdd„ ZG dd„ deejƒZG dd„ deejƒZdd„ Ze dkrže !¡  dS dS )é    N)ÚrequiresÚ
bigmemtest)ÚSHORT_TIMEOUT)Úsocket_helper)ÚTESTFNÚunlinkl    y* Ú2c                   @   s    e Zd Zdd„ Zedd„ ƒZdS )ÚLargeFileTestc                 C   sÒ   t j t¡r	d}nd}|  t|¡N}t  | ¡ ¡tj }|t	d kr+	 W d   ƒ d S |dkr4| 
d¡ | d¡ | t	¡ | 
d¡ | ¡  |  t  | ¡ ¡tj t	d ¡ W d   ƒ d S 1 sbw   Y  d S )Núr+bzw+bé   r   ó   zó   a)ÚosÚpathÚexistsr   ÚopenÚfstatÚfilenoÚstatÚST_SIZEÚsizeÚwriteÚseekÚflushÚassertEqual)ÚselfÚmodeÚfZcurrent_size© r   ú=/opt/python-3.10.19/usr/lib/python3.10/test/test_largefile.pyÚsetUp   s    ý



""ôzLargeFileTest.setUpc                 C   sV   |   td¡ W d   ƒ n1 sw   Y  t t¡tj dks%|  d¡‚ttƒ d S )NÚwbr   z0File was not truncated by opening with mode "wb")r   r   r   r   r   ZfailureExceptionr   ÚTESTFN2)Úclsr   r   r   ÚtearDownClass-   s   ÿ
zLargeFileTest.tearDownClassN)Ú__name__Ú
__module__Ú__qualname__r    Úclassmethodr$   r   r   r   r   r	      s    r	   c                   @   sL   e Zd Z	 eeddddd„ ƒZdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )ÚTestFileMethodsé   F)r   ZmemuseÚdry_runc                 C   s^   |   td¡}|  t| ¡ ƒtd ¡ |  | ¡ td ¡ W d   ƒ d S 1 s(w   Y  d S )NÚrbr   )r   r   r   ÚlenÚreadr   Útell)r   Ú_sizer   r   r   r   Útest_large_read>   s   "þzTestFileMethods.test_large_readc                 C   s    |   t t¡tj td ¡ d S )Nr   )r   r   r   r   r   r   ©r   r   r   r   Útest_osstatE   s    zTestFileMethods.test_osstatc                 C   sÒ  |   td¡Ù}|  | ¡ d¡ |  | d¡d¡ |  | ¡ d¡ | d¡ |  | ¡ d¡ | dd¡ |  | ¡ d¡ | d¡ |  | ¡ d¡ | dd¡ |  | ¡ d¡ | dd¡ |  | ¡ d¡ | dd¡ |  | ¡ d¡ | dd¡ |  | ¡ td d ¡ | dd¡ |  | ¡ td d	 ¡ | t d d¡ |  | ¡ d¡ | t¡ |  | ¡ t¡ |  | d¡d
¡ | t d d¡ |  | d¡d¡ |  | ¡ d¡ W d   ƒ d S 1 sâw   Y  d S )Nr,   r   r   r   é*   éT   r*   éöÿÿÿé
   r   )r   r   r   r/   r.   r   r   ©r   r   r   r   r   Útest_seek_readH   s:   


"äzTestFileMethods.test_seek_readc                 C   s*  |   td¡…}|  t | ¡ dd¡d¡ |  t | ¡ dd¡d¡ |  t | ¡ dd¡d¡ |  t | ¡ dd¡d¡ |  t | ¡ dd¡td d ¡ |  t | ¡ dd¡td d ¡ |  t | ¡ t d d¡d¡ |  t | ¡ td¡t¡ |  | d¡d	¡ W d   ƒ d S 1 sŽw   Y  d S )
Nr,   r   r4   r   r5   r*   r6   r7   r   )r   r   r   r   Úlseekr   r   r.   r8   r   r   r   Ú
test_lseekg   s   "" "özTestFileMethods.test_lseekc                 C   s6  |   td¡‹}t|dƒst d¡‚| dd¡ |  | ¡ td ¡ td }| |¡ | 	¡  |  | ¡ |¡ | dd¡ |  | ¡ |¡ |d8 }| d¡ | 	|¡ |  | ¡ d¡ | dd¡ |  | ¡ |¡ | d¡ | 	d¡ |  | ¡ d¡ | d¡ |  t
| ¡ ƒd¡ W d   ƒ d S 1 s”w   Y  d S )	Nr
   Útruncatez.open().truncate() not available on this systemr   r*   r   r7   r4   )r   r   ÚhasattrÚunittestÚSkipTestr   r   r/   r   r<   r-   r.   )r   r   Znewsizer   r   r   Útest_truncatet   s.   







"äzTestFileMethods.test_truncatec              	   C   sR   dD ]$}|   td¡}| |¡ |  | ¡ ¡ W d   ƒ n1 s!w   Y  qd S )N)iÿÿÿl        ì       r,   )r   r   r   Z
assertTrueÚseekable)r   Úposr   r   r   r   Útest_seekable“   s   
þ€ÿzTestFileMethods.test_seekableN)r%   r&   r'   r   r   r1   r3   r9   r;   r@   rD   r   r   r   r   r)   7   s    
r)   c                    s   ‡ ‡fdd„}|S )Nc                    s   ‡ ‡‡fdd„}|S )Nc                     sH   t  tj ˆ¡¡jˆk rtˆd d ƒ}t d|› d¡‚ˆ | i |¤ŽS )Ni   z	required z MiB of free disk space)	ÚshutilÚ
disk_usager   r   ÚrealpathÚfreeÚintr>   r?   )ÚargsÚkwargsZhsize)Úfunr   Úrequiredr   r   Úwrapperž   s   
ÿz6skip_no_disk_space.<locals>.decorator.<locals>.wrapperr   )rL   rN   ©r   rM   )rL   r   Ú	decorator   s   z%skip_no_disk_space.<locals>.decoratorr   )r   rM   rP   r   rO   r   Úskip_no_disk_spaceœ   s   rQ   c                   @   s,   e Zd ZeejƒZeeed ƒdd„ ƒZ	dS )ÚTestCopyfileç      @c                 C   sŒ   t j t¡}t tt¡ |  t j t¡|¡ ttdƒ!}|  | 	d¡d¡ | 
|d ¡ |  | 	¡ d¡ W d   ƒ d S 1 s?w   Y  d S )Nr,   é   ó   z    ó       a)r   r   Úgetsizer   rE   Úcopyfiler"   r   r   r.   r   )r   r   r   r   r   r   Útest_it­   s   "ýzTestCopyfile.test_itN)
r%   r&   r'   ÚstaticmethodÚior   rQ   r   r   rY   r   r   r   r   rR   ¨   s    
rR   Úsendfilezsendfile not supportedc                       sT   e Zd ZeejƒZeZ‡ fdd„Z‡ fdd„Z	dd„ Z
eeed ƒdd	„ ƒZ‡  ZS )
ÚTestSocketSendfilec                    s   t ƒ  ¡  d | _d S ©N)Úsuperr    Úthreadr2   ©Ú	__class__r   r   r    ¿   s   

zTestSocketSendfile.setUpc                    s0   t ƒ  ¡  | jd ur| j | j¡ d | _d S d S r^   )r_   ÚtearDownr`   ÚjoinÚtimeoutr2   ra   r   r   rc   Ã   s
   


þzTestSocketSendfile.tearDownc                    sJ   ‡ ‡fdd„}t  ¡ ‰ | ˆj¡ t j||fdˆ_ˆj ¡  ˆ  ¡  d S )Nc              
      sä   | f |   ¡ \}}| ˆj¡ |? ttdƒ*}ˆ  ˆj¡ 	 | d¡}|s;	 W d   ƒ W d   ƒ W d   ƒ d S | |¡ q1 sDw   Y  W d   ƒ n1 sSw   Y  W d   ƒ d S W d   ƒ d S 1 skw   Y  d S )Nr!   Ti   )ÚacceptÚ
settimeoutre   r   r"   ÚwaitÚrecvr   )ÚsockÚconnÚ_r   Úchunk©Úeventr   r   r   ÚrunÊ   s"   
ûý
	ü0þý"ýz*TestSocketSendfile.tcp_server.<locals>.run)ÚtargetrJ   )Ú	threadingÚEventrg   re   ÚThreadr`   ÚstartÚset)r   rj   rp   r   rn   r   Ú
tcp_serverÉ   s   
zTestSocketSendfile.tcp_serverrS   c              
   C   s*  t  ¡ }t d|f¡>}|  |¡ t d|f¡"}ttdƒ}| |¡ W d   ƒ n1 s.w   Y  W d   ƒ n1 s=w   Y  W d   ƒ n1 sLw   Y  |  	¡  t
j t¡}|  t
j t¡|¡ ttdƒ!}|  | d¡d¡ | |d ¡ |  | ¡ d¡ W d   ƒ d S 1 sŽw   Y  d S )NÚ z	127.0.0.1r,   rT   rU   rV   )r   Zfind_unused_portÚsocketÚcreate_serverrw   Úcreate_connectionr   r   r\   rc   r   r   rW   r   r"   r.   r   )r   Úportrj   Úclientr   r   r   r   r   rY   Þ   s&   
ÿ€ÿ€þ"ýzTestSocketSendfile.test_it)r%   r&   r'   rZ   r[   r   r   re   r    rc   rw   rQ   r   r   rY   Ú__classcell__r   r   ra   r   r]   º   s    
r]   c               	   C   sÜ   zdd l } |   | j| j¡ W n ttfy   Y nw tjd d… dks(tjdkr3tddtt	ƒ ƒ d S t
tddd}z*z| d	¡ | d
¡ | ¡  W n ttfyY   t d¡‚w W | ¡  ttƒ d S | ¡  ttƒ w )Nr   é   ÚwinÚdarwinZ	largefilez-test requires %s bytes and a long time to runr!   )Ú	bufferingrA   ó   xz*filesystem does not have largefile support)ÚsignalÚSIGXFSZÚSIG_IGNÚImportErrorÚAttributeErrorÚsysÚplatformr   Ústrr   r   r   r   r   r   ÚOSErrorÚOverflowErrorr>   r?   Úcloser   )r„   r   r   r   r   ÚsetUpModuleð   s.   ÿ
ÿ


ÿÿÿ
r   c                   @   ó   e Zd ZeejƒZdS )ÚCLargeFileTestN)r%   r&   r'   rZ   r[   r   r   r   r   r   r‘     ó    r‘   c                   @   r   )ÚPyLargeFileTestN)r%   r&   r'   rZ   Úpyior   r   r   r   r   r“     r’   r“   c                   C   s   t tƒ t tƒ d S r^   )r   r   r"   r   r   r   r   ÚtearDownModule  s   r•   Ú__main__)"r   r   r‰   r>   ry   rE   rr   Ztest.supportr   r   r   r   Ztest.support.os_helperr   r   r[   Z_pyior”   r   r"   r	   r)   rQ   ZTestCaserR   ZskipIfr=   r]   r   r‘   r“   r•   r%   Úmainr   r   r   r   Ú<module>   s:     e5$ÿ