a 5êdgÆ'ã@s4ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z ddlm Z ddlm Z ddlZddlZdZedZGdd„dƒZGd d „d eƒZd d „ZGd d„deejƒZe eedƒ d¡Gdd„deejƒƒZdd„ZGdd„deejƒZGdd„deejƒZdd„Zedkr0e  ¡dS)éN)ÚTESTFNÚrequiresÚunlinkÚ bigmemtest)Ú SHORT_TIMEOUT)Ú socket_helperly*Ú2c@s eZdZdd„Zedd„ƒZdS)Ú LargeFileTestcCsÎtj t¡rd}nd}| t|¡˜}t | ¡¡tj}|t dkrTWdƒdS|dkrf|  d¡|  d¡|  t ¡|  d¡|  ¡|  t | ¡¡tjt d¡Wdƒn1sÀ0YdS)Núr+bzw+bérózóa)ÚosÚpathÚexistsrÚopenÚfstatÚfilenoÚstatÚST_SIZEÚsizeÚwriteÚseekÚflushÚ assertEqual)ÚselfÚmodeÚfZ current_size©rú//usr/local/lib/python3.9/test/test_largefile.pyÚsetUps      zLargeFileTest.setUpcCsV| td¡Wdƒn1s"0Yt t¡tjdksJ| d¡‚ttƒdS)NÚwbrz0File was not truncated by opening with mode "wb")rrrrrZfailureExceptionrÚTESTFN2)ÚclsrrrÚ tearDownClass,s  zLargeFileTest.tearDownClassN)Ú__name__Ú __module__Ú __qualname__r Ú classmethodr$rrrrr sr c@sJeZdZeeddddd„ƒZdd„Zdd „Zd d „Zd d „Z dd„Z dS)ÚTestFileMethodséF)rZmemuseÚdry_runcCs\| td¡<}| t| ¡ƒtd¡| | ¡td¡Wdƒn1sN0YdS)NÚrbr )rrrÚlenÚreadrÚtell)rÚ_sizerrrrÚtest_large_read=szTestFileMethods.test_large_readcCs | t t¡tjtd¡dS)Nr )rrrrrr©rrrrÚ test_osstatDszTestFileMethods.test_osstatcCsÔ| td¡°}| | ¡d¡| | d¡d¡| | ¡d¡| d¡| | ¡d¡| dd¡| | ¡d¡| d¡| | ¡d¡| dd¡| | ¡d¡| dd¡| | ¡d¡| dd¡| | ¡d¡| dd¡| | ¡tdd¡| dd¡| | ¡tdd ¡| t dd¡| | ¡d¡| t¡| | ¡t¡| | d¡d ¡| t dd¡| | d¡d¡| | ¡d¡Wdƒn1sÆ0YdS) Nr,rr r é*éTr*éöÿÿÿé r )rrrr/r.rr©rrrrrÚtest_seek_readGs8         zTestFileMethods.test_seek_readcCs,| td¡}| t | ¡dd¡d¡| t | ¡dd¡d¡| t | ¡dd¡d¡| t | ¡dd¡d¡| t | ¡dd¡tdd¡| t | ¡dd¡tdd¡| t | ¡t dd¡d¡| t | ¡td¡t¡| | d¡d ¡Wdƒn1s0YdS) Nr,rr4r r5r*r6r7r )rrrrÚlseekrrr.r8rrrÚ test_lseekfs"" zTestFileMethods.test_lseekcCs8| td¡}t|dƒs$t d¡‚| dd¡| | ¡td¡td}| |¡|  ¡| | ¡|¡| dd¡| | ¡|¡|d8}| d¡|  |¡| | ¡d¡| dd¡| | ¡|¡| d¡|  d¡| | ¡d¡| d¡| t |  ¡ƒd¡Wdƒn1s*0YdS) Nr Útruncatez.open().truncate() not available on this systemrr*r r7r4) rrÚhasattrÚunittestÚSkipTestrrr/rr<r-r.)rrZnewsizerrrÚ test_truncatess,           zTestFileMethods.test_truncatec CsRdD]H}| td¡(}| |¡| | ¡¡Wdƒq1sB0YqdS)N)iÿÿÿlìr,)rrrZ assertTrueÚseekable)rÚposrrrrÚ test_seekable’s zTestFileMethods.test_seekableN) r%r&r'rrr1r3r9r;r@rDrrrrr)6s   r)cs‡‡fdd„}|S)Ncs‡‡‡fdd„}|S)NcsHt tj ˆ¡¡jˆkr:tˆddƒ}t d|›d¡‚ˆ|i|¤ŽS)Niz required z MiB of free disk space) ÚshutilÚ disk_usagerrÚrealpathÚfreeÚintr>r?)ÚargsÚkwargsZhsize)ÚfunrÚrequiredrrÚwrappers  ÿz6skip_no_disk_space..decorator..wrapperr)rLrN©rrM)rLrÚ decoratorœsz%skip_no_disk_space..decoratorr)rrMrPrrOrÚskip_no_disk_space›srQc@s,eZdZeejƒZeeedƒdd„ƒZ dS)Ú TestCopyfileç@cCsŠtj t¡}t tt¡| tj t¡|¡ttdƒ@}| |  d¡d¡|  |d¡| |  ¡d¡Wdƒn1s|0YdS)Nr,éózóa) rrÚgetsizerrEÚcopyfiler"rrr.r)rrrrrrÚtest_it¬s   zTestCopyfile.test_itN) r%r&r'Ú staticmethodÚiorrQrrrYrrrrrR§s  rRÚsendfilezsendfile not supportedcsTeZdZeejƒZeZ‡fdd„Z‡fdd„Z dd„Z e e e dƒdd „ƒZ‡ZS) ÚTestSocketSendfilecstƒ ¡d|_dS©N)Úsuperr Úthreadr2©Ú __class__rrr ¾s zTestSocketSendfile.setUpcs,tƒ ¡|jdur(|j |j¡d|_dSr^)r_ÚtearDownr`ÚjoinÚtimeoutr2rarrrcÂs  zTestSocketSendfile.tearDowncsJ‡‡fdd„}t ¡‰| ˆj¡tj||fdˆ_ˆj ¡ˆ ¡dS)Nc sÜ|Ä| ¡\}}| ˆj¡|ˆttdƒ^}ˆ ˆj¡| d¡}|srWdƒWdƒWdƒdS| |¡q.run)ÚtargetrJ)Ú threadingÚEventrgreÚThreadr`ÚstartÚset)rrjrprrnrÚ tcp_serverÈs    zTestSocketSendfile.tcp_serverrSc Cs*t ¡}t d|f¡|}| |¡t d|f¡D}ttdƒ}| |¡Wdƒn1s\0YWdƒn1sz0YWdƒn1s˜0Y|  ¡t j   t¡}|  t j   t¡|¡ttdƒ@}|  | d¡d¡| |d¡|  | ¡d¡Wdƒn1s0YdS)NÚz 127.0.0.1r,rTrUrV)rZfind_unused_portÚsocketÚ create_serverrwÚcreate_connectionrrr\rcrrrWrr"r.r)rÚportrjÚclientrrrrrrYÝs  d  zTestSocketSendfile.test_it)r%r&r'rZr[rrrer rcrwrQrrrYÚ __classcell__rrrarr]¹s    r]c Csàzddl}| |j|j¡Wnttfy2Yn0tjdd…dksPtjdkrdtddtt ƒƒnxt t ddd}zVz |  d ¡|  d ¡| ¡Wn ttfy´t d ¡‚Yn0W| ¡tt ƒn| ¡tt ƒ0dS) 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ÚstrrrrrrrÚOSErrorÚ OverflowErrorr>r?Úcloser)r„rrrrÚ setUpModuleïs( ÿ    ÿrc@seZdZeejƒZdS)ÚCLargeFileTestN)r%r&r'rZr[rrrrrrsrc@seZdZeejƒZdS)ÚPyLargeFileTestN)r%r&r'rZÚpyiorrrrrr‘sr‘cCsttƒttƒdSr^)rrr"rrrrÚtearDownModulesr“Ú__main__)!rrr‰r>ryrErrZ test.supportrrrrrrr[Z_pyior’rr"r r)rQZTestCaserRZskipIfr=r]rrr‘r“r%ÚmainrrrrÚs2   e 5$