ó {G_Tc@sMddlZddlZddlZddlmZejdƒZdZdejfd„ƒYZ ddd„ƒYZ d e fd „ƒYZ d e ej fd „ƒYZ d e ej fd„ƒYZde ej fd„ƒYZdefd„ƒYZdejfd„ƒYZde ej fd„ƒYZd„ZedkrIeƒndS(iÿÿÿÿN(t test_supportt threadingit_TriggerThreadcBseZd„Zd„ZRS(cCs5||_||_tjƒ|_tjj|ƒdS(N(tfntargsRtEventt startedEventtThreadt__init__(tselfRR((s+/usr/local/lib/python2.7/test/test_queue.pyR s  cCs.tjdƒ|jjƒ|j|jŒdS(Ngš™™™™™¹?(ttimetsleepRtsetRR(R ((s+/usr/local/lib/python2.7/test/test_queue.pytruns  (t__name__t __module__RR (((s+/usr/local/lib/python2.7/test/test_queue.pyR s tBlockingTestMixincBs#eZd„Zd„Zd„ZRS(cCs d|_dS(N(tNonett(R ((s+/usr/local/lib/python2.7/test/test_queue.pyttearDown.scCsŽt||ƒ|_|jjƒ||Œ|_|jjjƒsT|jd|ƒn|jjdƒ|jjƒr‡|jd|ƒn|jS(Ns,blocking function '%r' appeared not to blocki s,trigger function '%r' appeared to not return( RRtstarttresultRtis_settfailtjointis_alive(R t block_funct block_argst trigger_funct trigger_args((s+/usr/local/lib/python2.7/test/test_queue.pytdo_blocking_test1s     cCs¶t||ƒ|_|jjƒz:y||ŒWn|k rF‚nX|jd|ƒWd|jjdƒ|jjƒr|jd|ƒn|jjjƒs±|jdƒnXdS(Nsexpected exception of kind %ri s,trigger function '%r' appeared to not returns(trigger thread ended but event never set(RRRRRRRR(R RRRRtexpected_exception_class((s+/usr/local/lib/python2.7/test/test_queue.pytdo_exceptional_blocking_test@s      (RRRRR (((s+/usr/local/lib/python2.7/test/test_queue.pyR,s  t BaseQueueTestcBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsd|_tjƒ|_dS(Ni(tcumRtLocktcumlock(R ((s+/usr/local/lib/python2.7/test/test_queue.pytsetUpVs c Csã|jƒstd‚n|jdƒ|jdƒ|jdƒtddddgddddgddddgƒ}|jƒ|jƒ|jƒg}|j|||jjdƒx<tt d ƒD]*}|j|ƒ|j |jƒ d ƒqÄW|j |j ƒ d ƒd t }dt }|j|ƒ|j |j ƒdƒy$|j|ddƒ|j dƒWnt jk rznXy$|j|ddƒ|j dƒWnt jk rµnX|j|j|f|jdƒ|j|j|tdf|jdƒxtt ƒD]}|jƒqW|j |jƒdƒy!|jddƒ|j dƒWnt jk rhnXy!|jddƒ|j dƒWnt jk r nX|j|jd|jdƒ|j|jtdf|jdƒdS( Ns&Call this function with an empty queueioiMiÞtQueuet LifoQueuet PriorityQueues&Didn't seem to queue the correct data!isQueue should not be emptysQueue should not be fulliisQueue should be fulltblockis(Didn't appear to block with a full queuettimeoutg{®Gáz„?s+Didn't appear to time-out with a full queuei sQueue should be emptys*Didn't appear to block with an empty queues-Didn't appear to time-out with an empty queuetemptyi((((sempty(sempty(R+t RuntimeErrortputtdicttgett assertEqualt __class__Rtranget QUEUE_SIZEt assertTruetfullRR&tFullRtTruetEmpty(R tqt target_ordert actual_ordertitlastR5((s+/usr/local/lib/python2.7/test/test_queue.pytsimple_queue_testZs\     !    %cCs`xYtr[|jƒ}|dkr/|jƒdS|j|j|7_WdQX|jƒqWdS(N(R7R/Rt task_doneR$R"(R R9tx((s+/usr/local/lib/python2.7/test/test_queue.pytworkers     cCs¸d|_x0dD](}tjd|jd|fƒjƒqWx!tdƒD]}|j|ƒqIW|jƒ|j|jt t dƒƒdƒxdD]}|jdƒq“W|jƒdS( NiittargetRids0q.join() did not block until all tasks were done(ii(ii( R"RRRARtxrangeR-RR0tsumR2R(R R9R<((s+/usr/local/lib/python2.7/test/test_queue.pytqueue_join_test™s  &  cCs?|jƒ}y|jƒWntk r-nX|jdƒdS(Ns(Did not detect task count going negative(t type2testR?t ValueErrorR(R R9((s+/usr/local/lib/python2.7/test/test_queue.pyttest_queue_task_done¦s   cCsY|jƒ}|j|ƒ|j|ƒy|jƒWntk rGnX|jdƒdS(Ns(Did not detect task count going negative(RFRER?RGR(R R9((s+/usr/local/lib/python2.7/test/test_queue.pyttest_queue_join°s    cCs-|jtƒ}|j|ƒ|j|ƒdS(N(RFR3R>(R R9((s+/usr/local/lib/python2.7/test/test_queue.pyttest_simple_queue½s ( RRR%R>RARERHRIRJ(((s+/usr/local/lib/python2.7/test/test_queue.pyR!Us  5 t QueueTestcBseZejZRS((RRR&RF(((s+/usr/local/lib/python2.7/test/test_queue.pyRKÅst LifoQueueTestcBseZejZRS((RRR&R'RF(((s+/usr/local/lib/python2.7/test/test_queue.pyRLÈstPriorityQueueTestcBseZejZRS((RRR&R(RF(((s+/usr/local/lib/python2.7/test/test_queue.pyRMËstFailingQueueExceptioncBseZRS((RR(((s+/usr/local/lib/python2.7/test/test_queue.pyRNÑst FailingQueuecBs#eZd„Zd„Zd„ZRS(cGs)t|_t|_tjj||ŒdS(N(tFalset fail_next_putt fail_next_getR&R(R R((s+/usr/local/lib/python2.7/test/test_queue.pyRÕs  cCs1|jrt|_td‚ntjj||ƒS(NsYou Lose(RQRPRNR&t_put(R titem((s+/usr/local/lib/python2.7/test/test_queue.pyRSÙs   cCs.|jrt|_td‚ntjj|ƒS(NsYou Lose(RRRPRNR&t_get(R ((s+/usr/local/lib/python2.7/test/test_queue.pyRUÞs   (RRRRSRU(((s+/usr/local/lib/python2.7/test/test_queue.pyROÔs  tFailingQueueTestcBseZd„Zd„ZRS(cCs¥|jƒstd‚nx%ttdƒD]}|j|ƒq)Wt|_y$|jdddƒ|jdƒWntk r€nXt|_y$|jdddƒ|jdƒWntk rÁnX|jd ƒ|j |j ƒd ƒt|_y-|j |jd|j dƒ|jdƒWntk r.nX|jd ƒt|_y9|j |jd td f|j dtƒ|jdƒWntk r‘nX|jd ƒ|j |j ƒd ƒ|j ƒ|j |j ƒ d ƒ|jd ƒ|j |j ƒd ƒ|j |jd|j dƒxttƒD]}|j ƒq"W|j |jƒdƒ|jdƒt|_y|j ƒ|jdƒWntk rnX|j |jƒ dƒt|_y!|j ddƒ|jdƒWntk rånX|j |jƒ dƒ|j ƒ|j |jƒdƒt|_y0|j |j d|jdtƒ|jdƒWntk rinX|j |jƒ dƒ|j ƒ|j |jƒdƒdS(Ns&Call this function with an empty queueitoopsR)is)The queue didn't fail when it should haveR*gš™™™™™¹?R=sQueue should be fullR5i sQueue should not be fullsQueue should be emptytfirstsQueue should not be emptyR+(sfull(((sfull(((sempty(R+R,R2R3R-R7RQRRNR4R5RR/R RR(R R9R<((s+/usr/local/lib/python2.7/test/test_queue.pytfailing_queue_testæsŠ           !              cCs*ttƒ}|j|ƒ|j|ƒdS(N(ROR3RY(R R9((s+/usr/local/lib/python2.7/test/test_queue.pyttest_failing_queue7s  (RRRYRZ(((s+/usr/local/lib/python2.7/test/test_queue.pyRVäs QcCstjttttƒdS(N(Rt run_unittestRKRLRMRV(((s+/usr/local/lib/python2.7/test/test_queue.pyt test_main?st__main__((R&R tunittestttestRt import_moduleRR3RRRR!tTestCaseRKRLRMt ExceptionRNRORVR\R(((s+/usr/local/lib/python2.7/test/test_queue.pyts"    )p[