ó J(Zc@sVdZddlmZdZddlZddlZddlZddlZddlZddl Z e j ddkr—e j ddkr—ddl Tnddl Tyddl Z Wnek rÊdZ nXddlZddlZd ejfd „ƒYZd „Zd ejfd „ƒYZid„ZedkrRd„ZejddƒndS(s0Self-test suite for generic Crypto.Random stuff iÿÿÿÿ(t nested_scopess$Id$Niii(t*t RNGForkTestcBseZd„Zd„ZRS(cCsBtjjjƒ}|jjƒz|jjSWd|jjƒXdS(s‰ Get `FortunaAccumulator.reseed_count`, the global count of the number of times that the PRNG has been reseeded. N( tCryptotRandomt_UserFriendlyRNGt_get_singletont_locktacquiret_fat reseed_counttrelease(tselft rng_singleton((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt_get_reseed_count2s  c Csätjjdƒr,ttdƒ s(t‚dStjdƒ|jƒ}t j j j ƒj ƒt j jdƒ|jƒ}|j||ƒg}xÃtdƒD]µ}tjƒ\}}tjƒdkr)tj|ƒtj|dƒ}t j jƒt j jdƒ}|j|ƒ|jƒtjdƒntj|ƒ|jtj|d ƒƒqšWg} i} xD|D]<}tj|jƒƒ}| j|ƒd| |<|jƒqfWt| ƒt| jƒƒkràtd tj| ƒƒ‚ndS( Ntwintforkg333333Ã?ii itwbitrbs'RNG output duplicated across fork(): %s( tsystplatformt startswiththasattrtostAssertionErrorttimetsleepRRRRRtreinittget_random_bytestassertNotEqualtrangetpipeRtclosetfdopentatforktwritet_exittappendtbinasciithexlifytreadtlentkeystpprinttpformat( R treseed_count_beforetreseed_count_aftertrfilestitrfdtwfdtftdatatresultst results_dict((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pytrunTest>s@           (t__name__t __module__RR7(((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyR0s cCsntjjdƒ}tjdƒtjjdƒ}|jtj|ƒƒ|jtj|ƒƒ|jdƒdS(Nigš™™™™™¹?( RRRRRtputR&tb2a_hextNone(tqtatb((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt _task_mainss  tRNGMultiprocessingForkTestcBseZd„ZRS(c CsŠd}tjƒ}gt|ƒD]}|jdƒ^q}tjdƒtjjj ƒj ƒtjj dƒtj d|dtjj ƒ}|jt|ƒ}gt|ƒD]}||jdƒ^qª}gt|ƒD]}||jdƒ^qÖ}tt||ƒƒ} |jdƒ|jƒ|jƒtt|ƒƒt|ƒksgtt| ƒƒt| ƒkr†tdtj| ƒfƒ‚ndS(Niig333333Ã?t processest initializeris'RNG output duplicated across fork(): %s(tmultiprocessingtManagerRtQueueRRRRRRRRtPoolR"t map_asyncR@tgettlisttzipR tjoinR)tsetRR+R,( R tn_procstmanagerR0tqueuestpoolt map_resulttaatbbtres((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyR7~s" ( ,,   <(R8R9R7(((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyRA|scCs9g}|tƒg7}tdk r5|tƒg7}n|S(N(RRDR<RA(tconfigttests((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt get_tests s  t__main__cCstjtƒƒS(N(tunittestt TestSuiteRX(((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt¨st defaultTesttsuite(t__doc__t __future__Rt __revision__R&R+RZRRRt version_infotCrypto.Util.py21compattCrypto.Util.py3compatRDt ImportErrorR<tCrypto.Random._UserFriendlyRNGRtCrypto.Random.randomtTestCaseRR@RARXR8R^tmain(((sN/tmp/pip-build-LvEk9W/pycrypto/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyts0      &      C $