ó ükWc@sòddlmZmZmZmZmZmZmZmZm Z ddl Z ddl Z ddl Z ddl Z ddlZddlZedƒZejZde jfd„ƒYZde jfd„ƒYZd„Zed krîeƒndS( iÿÿÿÿ( tTESTFNt run_unittestt import_moduletunlinktrequirest_2Gt_4Gt gc_collectt cpython_onlyNtmmapt MmapTestscBsÙeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z e j e ed ƒd ƒd „ƒZe j e ed ƒd ƒd „ƒZe j e ed ƒd ƒd „ƒZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Ze j e edƒdƒd„ƒZd„Zd„Ze j ejdkdƒd„ƒZe e j ejdkdƒd„ƒƒZ!e j ejdkdƒd„ƒZ"e j ejdkdƒd „ƒZ#RS(!cCs&tjjtƒr"tjtƒndS(N(tostpathtexistsRR(tself((s$/usr/lib/python2.7/test/test_mmap.pytsetUp scCs)ytjtƒWntk r$nXdS(N(R RRtOSError(R((s$/usr/lib/python2.7/test/test_mmap.pyttearDowns cCs®ttdƒ}zu|jdtƒ|jdƒ|jdtdƒ|jƒtj|jƒdtƒ}|jƒtt |ƒƒ}|j |j dƒtƒ|j t |ƒdtƒ|j |ddƒ|j |dd!dƒ|j t|jt |ƒƒ|j t|jt |ƒdƒd|dii(RRRRR RRI(RR3tmf((s$/usr/lib/python2.7/test/test_mmap.pyttest_double_close6s  !  tstatsneeds os.stat()cCsŸttdƒ}|jddƒ|jƒttdƒ}tj|jƒdƒ}|jt|ƒd dƒ|j|jd ƒd dƒ|jƒ|jƒdS( Nsw+iiR4srb+is Map size should equal file size.iiii( RRRRR RR!R#RL(RR3Ri((s$/usr/lib/python2.7/test/test_mmap.pyttest_entire_fileCs  c Cs”ttdƒ}|jd dƒWdQXttdƒV}tj|jƒddddtjƒ}z|jt|jd ƒWd|j ƒXWdQXdS( NR;iiR4R=itoffsetR>i€8i( RRRR RRIR$R%R&R(RR3Ri((s$/usr/lib/python2.7/test/test_mmap.pyttest_length_0_offsetRs'c Csjttdƒ}|jddƒWdQXttdƒ,}|jttj|jƒdddƒWdQXdS(NR;ióÃR4sw+biRmiÿ(RRRR$R/R R(RR3((s$/usr/lib/python2.7/test/test_mmap.pyttest_length_0_large_offsetbs c Cs»ttdƒ}|jdƒ|jƒtj|jƒdƒ}|jdddƒ|j|ddƒ|jƒ|jƒd}xÓt t |ƒƒD]¿}x¶t t |ƒƒD]¢}x™t t |ƒt ||ƒƒD]x}|| ||||!|||}tjd t |ƒƒ}||(|j|||ƒ|j||ƒ|jƒqÑWq«Wq’Wtjd d ƒ}d d dd d g} xQt j | | | ƒD]:\} }} y|j| || ƒWq’tk rËq’Xq’Wdddddddg} x3| D]+\} }} |jt|j| || ƒqòW|jƒtjd d ƒ}|jt|jddd ƒ|jt|jd dd ƒ|jt|jdd d ƒ|jddd ƒ|jdddƒdS(Nsw+t ABCDEabcdei iit ABCDEABCDEs'Map move should have duplicated front 5t 0123456789iÿÿÿÿidiœÿÿÿii(iÿÿÿÿiÿÿÿÿiÿÿÿÿ(iÿÿÿÿiÿÿÿÿi(iÿÿÿÿiiÿÿÿÿ(iiÿÿÿÿiÿÿÿÿ(iÿÿÿÿii(iiÿÿÿÿi(iiiÿÿÿÿ(RRRRR RtmoveR!RR^R#tmaxt itertoolstproductR/R$( RR3RiR_tdesttsrctcounttexpectedR4toffsetstsourceR2((s$/usr/lib/python2.7/test/test_mmap.pyt test_movemsH    &%%    cCs‡tjdtƒ}x+ttƒD]}|j||ddƒqWx@ttƒD]2}t|d@ƒ||<}|j|||ƒqMWdS(NiÿÿÿÿRs+anonymously mmap'ed contents should be zeroiÿ(R RtxrangeR!tchr(RR4R]tch((s$/usr/lib/python2.7/test/test_mmap.pyttest_anonymousžs c CsÀdjd„ttdƒƒDƒƒ}tjdt|ƒƒ}||(|j||ƒd }x^|D]V}xM|D]E}x<|dD]0}|j||||…||||…ƒq€WqoWqbWdS(Ntcss|]}t|ƒVqdS(N(R(t.0RC((s$/usr/lib/python2.7/test/test_mmap.pys ªsiiÿÿÿÿiiiii,iþÿÿÿiáÿÿÿiÔþÿÿ( iNiiii,iÿÿÿÿiþÿÿÿiáÿÿÿiÔþÿÿ(tjointreversedR^R R#R!R*(RtsR4tindicesR7tstoptstep((s$/usr/lib/python2.7/test/test_mmap.pyttest_extended_getslice¨s%  c Cs djd„ttdƒƒDƒƒ}tjdt|ƒƒ}d }xÀ|D]¸}x¯|D]§}xž|dD]’}||(|j||ƒt|ƒ}||||…}djt|ƒƒ}|||||…<|||||…<|j|dj|ƒƒqhWqWWqJWdS(NR‚css|]}t|ƒVqdS(N(R(RƒRC((s$/usr/lib/python2.7/test/test_mmap.pys ¸siiÿÿÿÿiiiii,iþÿÿÿiáÿÿÿiÔþÿÿ( iNiiii,iÿÿÿÿiþÿÿÿiáÿÿÿiÔþÿÿ(R„R…R^R R#R*R!tlist( RR†R4R‡R7RˆR‰tLR_((s$/usr/lib/python2.7/test/test_mmap.pyttest_extended_set_del_slice¶s%   cCsS|jd|ƒ|jdƒ|jd|dƒ|jƒtj|jƒdƒS(NRRii(RRR R(RR3thalfsize((s$/usr/lib/python2.7/test/test_mmap.pytmake_mmap_fileÊs   c Cs`ttdƒ}|jƒttdƒ2}|jtdtj|jƒddtjƒWdQXdS(Nsw+bR=scannot mmap an empty fileiR>(RRRtassertRaisesRegexpR/R RRI(RR3((s$/usr/lib/python2.7/test/test_mmap.pyttest_empty_fileÒs  cCs6ttdƒ}zðtj}|j||ƒ}|jƒ|jƒ|d}ttdƒ}xvdddgD]e}y2tj|jƒ|d|ƒ}|jddƒWnt t t fk r¾qjX|jddƒqjW|jƒttdƒ}tj|jƒ||d|ƒ}|j|dd !d ƒ|jƒy|j d ƒWnt k rSn¡X|jt|ƒd ƒ|jt |jd dƒ|j|dd !d ƒttƒ}|jddƒ|j|jƒ|d ƒ|jƒ|j|jƒ|d ƒ|jƒWd|jƒytjtƒWntk r0nXXdS( Nsw+bisr+biþÿÿÿiÿÿÿÿRmiiiRii(RRR tALLOCATIONGRANULARITYRRR*RR!R/RJt OverflowErrorR0R1R#R$R-R.R2R RR(RR3RŽR4RWRm((s$/usr/lib/python2.7/test/test_mmap.pyt test_offsetÛsL     "      cCs'dtjfd„ƒY}|tƒdS(Nt anon_mmapcBseZd„ZRS(c_stjj|d||ŽS(Niÿÿÿÿ(R t__new__(tklasstargstkwargs((s$/usr/lib/python2.7/test/test_mmap.pyR–s(t__name__t __module__R–(((s$/usr/lib/python2.7/test/test_mmap.pyR•s(R R(RR•((s$/usr/lib/python2.7/test/test_mmap.pyt test_subclasssRUsneeds mmap.PROT_READcCstd}ttdƒjd|ƒttdƒ}tj|jƒ|dtjƒ}|jt|jdƒ|jƒdS(Ni R;R<R=RFR( RRRR RRUR$RJR(RRWR3R4((s$/usr/lib/python2.7/test/test_mmap.pyttest_prot_readonlys !cCs6|jttjtƒƒ|jdttjƒƒdS(Ns mmap.error(t assertTruet issubclassR RZtEnvironmentErrortassertInR(R((s$/usr/lib/python2.7/test/test_mmap.pyt test_error#scCs d}ttdƒjdt|ƒƒttdƒ}tj|jƒt|ƒƒ}|jƒx[tt|ƒƒD]G}|j|j ƒ|ƒ|j ||ƒ|j|j ƒ|dƒqpW|j t |j dƒ|j||ƒ|j dƒxdtt|ƒƒD]P}|j|j ƒ|ƒ|j|jƒ||ƒ|j|j ƒ|dƒqW|j t |jƒ|j dƒ|j|jdƒdƒ|j|j ƒd ƒ|j dƒ|jd ƒ|j|j ƒd ƒ|j|d ƒ|j d ƒ|j t |jd ƒdS( NRrR;R]sr+biiit345iRt 012bar6789i(RRRR#R RRR~R!R.RKR$R/R-t read_byteRL(RR_R3R4ti((s$/usr/lib/python2.7/test/test_mmap.pyttest_io_methods's4       tntsrequires WindowscCs.d}d}t|ƒt|ƒks*t‚tjdt|ƒddƒ}||(tjdt|ƒddƒ}||(|j||ƒ|j||ƒ|jƒ|jƒtjdt|ƒddƒ}||(tjdt|ƒddƒ}||(|j||ƒ|j||ƒ|jƒ|jƒdS(NRrt abcdefghijiÿÿÿÿttagnameRtboo(R#tAssertionErrorR R!R(Rtdata1tdata2tm1tm2((s$/usr/lib/python2.7/test/test_mmap.pyt test_tagnameGs&   cCsdtjddƒ}d}tjddd|ƒ}|jtj|ƒtj|ƒt|ƒdƒdS(NiÿÿÿÿidRRªi(R R!RMt getsizeofR#(RR¯RªR°((s$/usr/lib/python2.7/test/test_mmap.pyt test_sizeofas cCsÊtjddddƒ}ytjddddƒWnnX|jƒttdƒjd ƒttd ƒ}tj|jƒd ƒ}|jƒy|jd ƒWnnXy |WnnX|jƒdS( NiÿÿÿÿièRªRiˆR;R]i sr+bit xxxxxxxxxx(R RRRRRR0(RR4R3((s$/usr/lib/python2.7/test/test_mmap.pyttest_crasher_on_windowsjs&   cCsStjƒ}z5|jtjƒtj|jƒdƒ}WdQXWd|jƒXdS(Ni (tsocketR$R RZRR(RR†R4((s$/usr/lib/python2.7/test/test_mmap.pyttest_invalid_descriptorƒs  "($RšR›RRR:RYR[RcRfRhRjtunittestt skipUnlessthasattrR RlRnRoR}RRŠRRR‘R”RœR RR¢R§RSR±RR³RµR·(((s$/usr/lib/python2.7/test/test_mmap.pyR s8   a „     $$$ 1    9 $  $'$tLargeMmapTestscBs†eZd„Zd„Zd„Zd„Zd„Zd„Zej e j e kdƒd„ƒZ ej e j e kdƒd„ƒZRS( cCsttƒdS(N(RR(R((s$/usr/lib/python2.7/test/test_mmap.pyR’scCsttƒdS(N(RR(R((s$/usr/lib/python2.7/test/test_mmap.pyR•scCsªtjd dks"tjdkr<tddtdƒƒnttdƒ}y(|j|ƒ|j|ƒ|jƒWn0t t fk r¥|j ƒt j dƒ‚nX|S( NiRBtdarwint largefiles-test requires %s bytes and a long time to runlsw+bs*filesystem does not have largefile support(RMRNRRRRR-RRtIOErrorR“RR¸tSkipTest(Rt num_zeroesttailR3((s$/usr/lib/python2.7/test/test_mmap.pyt_make_test_file˜s"   c Csl|jddƒT}tj|jƒddddtjƒ}z|j|ddƒWd|jƒXWdQXdS(Nlÿÿt iRmlR>iÿÿÿ(RÂR RRIR!R(RR3R4((s$/usr/lib/python2.7/test/test_mmap.pyttest_large_offset¦s 'cCsä|jddƒÌ}tjdkr‘|jtƒ$tj|jƒddtjƒWdQX|jtƒ$tj|jƒddtjƒWdQXntj|jƒddtjƒ}z|j |j ƒdƒWd|j ƒXWdQXdS(NlÿÿRÃlR>ii( RÂRMtmaxsizeR$R“R RRIR/R!R2R(RR3R4((s$/usr/lib/python2.7/test/test_mmap.pyttest_large_filesize®s%(!c Cs“d}|t|ƒd}|t|ƒ}|j||ƒQ}tj|jƒddtjƒ}z|j|||!|ƒWd|jƒXWdQXdS(Ns DEARdear iiR>(R#RÂR RRIR!R(RtboundaryRÁR7R8R3R4((s$/usr/lib/python2.7/test/test_mmap.pyt_test_around_boundary¿s!s!test cannot run on 32-bit systemscCs|jtƒdS(N(RÈR(R((s$/usr/lib/python2.7/test/test_mmap.pyttest_around_2GBÊscCs|jtƒdS(N(RÈR(R((s$/usr/lib/python2.7/test/test_mmap.pyttest_around_4GBÎs(RšR›RRRÂRÄRÆRÈR¸R¹RMRÅRRÉRÊ(((s$/usr/lib/python2.7/test/test_mmap.pyR»s      $cCstttƒdS(N(RR R»(((s$/usr/lib/python2.7/test/test_mmap.pyt test_mainÓst__main__(ttest.test_supportRRRRRRRRRR¸R R(RuR¶RMR RtTestCaseR R»RËRš(((s$/usr/lib/python2.7/test/test_mmap.pyts@ <  ÿÿˆC