4\cA@sy dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl mZddl mZddl mZddl mZddlZddlmZdd lmZdd lmZdd lmZdd l m!Z!dd l"m#Z#ddl"m$Z$ddl"m%Z%ddl"m&Z&ej'dkrddl(Z)n ddl)Z)yddl)m*Z*Wn=e+k r_ej,ej-dddl*Z*WdQXnXej'dkr~ddl.Z.ndZ.dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVg@Z0ej1d#pbdWdkZ2dZej3kZ4erdndZ5e6ej7j8d$Z9e6ej7j8dZ:dZej3kZ4d]Z;dZ<e9se:rdnd`Z=e9se:r e;d9Z;e=d9Z=ndaZ>ej?dbkr*dcZ>nddZ>ej@jAej@jBejCe>ZDeDeEejFZDeDdeZGeDe$dfZHejIjJdkZKej@jLej@jAej@jMeNdidiZOej@jAeOdjZPej@jLej@jMeNZQeo e ZReSejTdkZUeSedlZVeSedmZWeSejTdnZXeSejTdoZYeSejTdpZZeSedqZ[eSejTdrZ\eSejTdsZ]eSejTdtZ^eSeduZ_ye_oe6ej`ZaWnebk recZanXeSedvZdeSedwZeeSejTdxZfdyZgegZheiejjdzZkgeleD]$Zmemjnd{r`eoeem^q`Zpeoe d|eqZreoe d}eqZsetZuetZvetZwejxd~ZyejxdZzdej{fdYZ|dZ}e}ddZ~e}dZdZe}dZe}dZedZdZdZdeqfdYZedejddde=dddZedeefddde=ddecedZededdde=dddZdZdZejdZddZe>dWdZde)jfdYZee)_e;dZddZddZddZejdWdZeeddZe jdZddZdZejdZdZdZdZdZdZdZer` eje>dZneje>dZdS(s Test utilities. i(tprint_functionN(tAF_INET(tAF_INET6(t SOCK_DGRAM(t SOCK_STREAM(tMACOS(tPOSIX(tSUNOS(tWINDOWS(t supports_ipv6(tPY3(tu(tunicode(twhichii(tmocktignoreiitAPPVEYORtDEVNULLtGLOBAL_TIMEOUTtMEMORY_TOLERANCEt NO_RETRIEStPYPYt PYTHON_EXEtROOT_DIRt SCRIPTS_DIRtTESTFILE_PREFIXtTESTFNtTESTFN_UNICODEtTOXtTRAVIStVALID_PROC_STATUSEStHAS_CPU_AFFINITYt HAS_CPU_FREQt HAS_ENVIRONtHAS_PROC_IO_COUNTERSt HAS_IONICEtHAS_MEMORY_MAPStHAS_PROC_CPU_NUMt HAS_RLIMITtHAS_SENSORS_BATTERYt HAS_BATTERYtHAS_SENSORS_FANStHAS_SENSORS_TEMPERATUREStHAS_MEMORY_FULL_INFOtpyrunt reap_childrentget_test_subprocesstcreate_zombie_proctcreate_proc_children_pairtThreadTaskunittesttskip_on_access_deniedtskip_on_not_implementedtretry_on_failuret install_piptinstall_test_depstchdirt safe_rmpatht create_exet decode_patht encode_pathtunique_filenamet get_winvertget_kernel_versiont call_untilt wait_for_pidt wait_for_filetcheck_connection_ntupletcheck_net_addresst get_free_porttunix_socket_patht bind_sockettbind_unix_socketttcp_socketpairtunix_socketpairtcreate_socketst reload_moduletimport_module_by_pathtwarntcopyload_shared_libt is_namedtuplett1ttruet__pypy__iii iig?s$testfntjavas $psutil-test-s @psutil-test-s -internals-ƒőőtasciisus-asciis..tscriptst cpu_affinitytcpu_freqt getloadavgtenvirontionicet memory_mapstnet_io_counterstcpu_numt io_counterstrlimittsensors_batteryt sensors_fanstsensors_temperaturestthreadscCsd}tr|tjpk|tjjtjpk|tdtjd pk|tj j }|st dn|Stjjtj}t r|j dd}ntjj|st||SdS(NcSsFy)tj|dgdtjdtjWntk r=dSX|SdS(Ns-Vtstdouttstderr(t subprocesst check_calltPIPEt ExceptiontNone(texe((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytattempts # s python%s.%sis"can't find python exe real abspaths\s\\(Rtsyst executabletostpathtrealpathR t version_infotpsutiltProcessRlt ValueErrorRtreplacetexiststAssertionError(RmRl((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt _get_py_exes sr+tSTATUS_tAF_UNIXtSOCK_SEQPACKETcCstjxtjtdD]h}t|trDtt}nt}|j|r yt |Wqt k rt j qXq q Wx:t D]2}yt |Wqt k rt j qXqWdS(Nt.(RtcloseRptlistdirR t isinstanceR Rt startswithR8Rjt tracebackt print_exct_testfiles_created(tnametprefixRq((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytcleanup_test_filess    cCstdtdS(Nt recursive(R-tTrue(((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytcleanup_test_procsst ThreadTaskcBsMeZdZdZdZdZdZdZdZdZ RS(s6A thread task which does nothing expect staying alive.cCs5tjj|t|_d|_tj|_dS(NgMbP?(t threadingtThreadt__init__tFalset_runningt _intervaltEventt_flag(tself((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRs  cCs&|jj}d||jt|fS(Ns<%s running=%s at %#x>(t __class__t__name__Rtid(RR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt__repr__s cCs|j|S(N(tstart(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt __enter__ s cOs|jdS(N(tstop(Rtargstkwargs((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt__exit__scCs9|jrtdntjj||jjdS(sStart thread and keep it running until an explicit stop() request. Polls for shutdown every 'timeout' seconds. salready startedN(RRvRRRRtwait(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRs cCs:t|_|jjx|jr5tj|jqWdS(N(RRRtsetttimetsleepR(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytruns   cCs/|jstdnt|_|jdS(s8Stop thread execution and and waits until it is stopped.salready stoppedN(RRvRtjoin(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR s  ( Rt __module__t__doc__RRRRRRR(((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRs     cs"tjfd}|S(Ncs3y||SWntk r.tnXdS(N(RjR-(RR(tfun(s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytwrapper.s  (t functoolstwraps(RR((Rs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt_reap_children_on_err-scKs|jdt|jdt|jdtj|jdtjtrhd}|jd|n|d krttdt}t d|g}t j ||}t j |ttd td tn,t j ||}t j |t|j|S( s{Creates a python subprocess which does nothing for 60 secs and return it as subprocess.Popen instance. If "cmd" is specified that is used instead of python. By default stdin and stdout are redirected to /dev/null. It also attemps to make sure the process is in a reasonably initialized state. The process is registered for cleanup on reap_children(). tstdinRetcwdtenvit creationflagss:from time import sleep;open(r'%s', 'w').close();sleep(60);s-ctdeletetemptyN(t setdefaultRRptgetcwdRZRRkR8t_TESTFNRRgtPopent_subprocesses_startedtaddRARR@tpid(tcmdtkwdstCREATE_NO_WINDOWtpylinetsproc((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR.8s&      cCstjjtd}tjd|tf}trJt|dd}n t|}t j |j }t |dt dt }t|t|}tj|t j |}||fS(sCreate a subprocess which creates another one as in: A (us) -> B (child) -> C (grandchild). Return a (child, grandchild) tuple. The 2 processes are fully initialized and will live for 60 secs and are registered for cleanup on reap_children(). t2s import subprocess, os, sys, time s = "import os, time;" s += "f = open('%s', 'w');" s += "f.write(str(os.getpid()));" s += "f.close();" s += "time.sleep(60);" p = subprocess.Popen(['%s', '-c', s]) p.wait() RiRR(RpRqtbasenameRttextwraptdedentRRR,RtRuRRARR8tintt _pids_startedR(t_TESTFN2tstsubptchild1tdatat child2_pidtchild2((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR0\s     c s'tjsttr'tjdtnt}tj d|}t j t j t j }|jt|j||jdt||j\}}zntj|jgggtt|jd}tj|tj|tfdd|SWd|jXWdQXdS(s+Create a zombie process and return its PID.Rs import os, sys, time, socket, contextlib child_pid = os.fork() if child_pid > 0: time.sleep(3000) else: # this is the zombie process s = socket.socket(socket.AF_UNIX) with contextlib.closing(s): s.connect('%s') if sys.version_info < (3, ): pid = str(os.getpid()) else: pid = bytes(str(os.getpid()), 'ascii') s.sendall(pid) iics jS(N(tstatus((tzproc(s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytssret == psutil.STATUS_ZOMBIEN(RtRRyRttempfiletmktempRRRRt contextlibtclosingtsocketR|t settimeoutRtbindtlistenR,taccepttselecttfilenoRtrecvRRRuR?R(t unix_filetsrctsocktconnt_tzpid((Rs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR/s$      cKs|jdd|jddtjdtdddtS}tj|j|j ||j t t |jg|}t |jWdQX|S(seRun python 'src' code string in a separate interpreter. Returns a subprocess.Popen instance. ReRfRtmodetwtRN(RRkRtNamedTemporaryFileRRRRRtwritetflushR.RR@R(RRtfR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR,s   cKst|ttfrtnt}tr3|r3dnd}|jd||jdtj|jdtj|jdt|jd|tj ||}t j ||j \}}|j dkrt|n|rt|n|jdr |d }n|S( sUrun cmd in a subprocess and return its output. raises RuntimeError on error. iitshellReRftuniversal_newlinesRs i(RtstrR RRRRRgRiRRRt communicatet returncodet RuntimeErrorRMtendswith(RRRtflagstpReRf((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pytshs"!   c Csd}|r0ttjjdt}n t}x trDtj}tj|j y|j WnCt k r}t r|j dkrq|jtjkrqnX|jr|jjn|jr|jjnz|jr|jjnWdy|jWn+t k r?}|jtjkr@q@nXXq<WxWtrtj}ytj|}Wntjk r||qHX|j|qHW|rx3|D]+}y|j Wqtjk rqXqWtj|dt\}}xA|D]9}td|y|jWqtjk r5qXqWtj|dt\}}|r}x|D]}td|qbWnx|D]}||j qWndS(s#Terminate and wait() any subprocess started by this test suite and ensure that no zombies stick around to hog resources and create problems when looking for refleaks. If resursive is True it also tries to terminate and wait() all grandchildren started by this process. cSstj| st||tjks:t|y,tj|}|j set|Wntjk r|nXdstd|dS(Nispid %s is not gone(Rtt pid_existsRytpidsRut is_runningt NoSuchProcess(RR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt assert_gonesRiNttimeouts0couldn't terminate process %r; attempting kill()sprocess %r survived kill()(RRtRutchildrenRRtpopRRRt terminatetOSErrorRtwinerrorterrnotESRCHReRRfRRtECHILDRt wait_procsRRMtkill( RRRRterrRRtgonetalive((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR-sh !             cCststdnd}tjd}x4|D],}|jsP|dkr]||7}q2Pq2W|s{td|nd}d}|jd}t|d}t|dkrt|d}nt|dkrt|d}n|||fS( s"Return a tuple such as (2, 6, 36).s not POSIXRPiR~scan't parse %riii( RtNotImplementedErrorRptunametisdigitRvtsplitRtlen(RRtctminortmicrotnumstmajor((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR>/s&  cCststdntj}t|drB|jp<d}n:tjd|d}|rvt|j d}nd}|d|d|fS(Ns not WINDOWStservice_pack_majoris\s\d$ii( RRRntgetwindowsversionthasattrRtretsearchRtgroup(twvtsptr((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR=Gs tretrycBsAeZdZedddddZdZdZdZRS(sA retry decorator.gMbP?cCsL|r|rtdn||_||_||_||_||_dS(Ns/timeout and retries args are mutually exclusive(Rvt exceptionRtretriestintervaltlogfun(RRRRRR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR^s     ccs~|jr=tj|j}x[tj|kr9dVqWn=|jrhx1t|jD] }dVqVWnxtrydVqkWdS(N(RRRtrangeR(Rtstop_atR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt__iter__ms     cCs&|jdk r"tj|jndS(N(RRkRR(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRyscs.tjfd}|_|S(Ncsd}xjD]b}y||SWq jk rn}|}jdk r^j|njq q Xq Wtr|ndS(N(RkRRRR (RRtexcR(RR(s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR~s    (RRt decorator(RRR((RRs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt__call__}s! N( RRRRjRkRRRR!(((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR[s RRRRgMbP?cCs'tj|tr#tjdndS(sWait for pid to show up in the process list then return. Used in the test suite to give time the sub process to initialize. g{Gz?N(RtRuRRR(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR@s cCsPt|d}|j}WdQX|s9|s9tn|rLt|n|S(s8Wait for a file to be written on disk with some content.trbN(topentreadRyR8(tfnameRRRR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRAs cCs|}t|st|S(sVKeep calling function for timeout secs and exit if eval() expression is True. (tevalRy(Rtexprtret((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR?s cCsd}yltj|}tj|jrEtjtj|}ntjtj|}t rj|n ||Wn+t k r}|j t j krqnXdS(s>Convenience function for removing temporary test files or dirscSstjd}xvtj|kry |SWqtk r}|}|jtjkr`qtdt|tjdqXqW|dS(Nis ignoring %sg{Gz?(Rt WindowsErrorRtENOENTRMRR(RRRR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt retry_funs N( RptstattS_ISDIRtst_modeRtpartialtshutiltrmtreetremoveRRRR*(RqR+tstRR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR8s  cCsCytj|Wn+tk r>}|jtjkr?q?nXdS(s-Convenience function for creating a directoryN(RptmkdirRRtEEXIST(tdirR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt safe_mkdirs ccs7tj}ztj|dVWdtj|XdS(s@Context manager which temporarily changes the current directory.N(RpRR7(tdirnametcurdir((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR7s    cCs*tjj| st||rtds@tdnt|tratj d}nt|t s|t|t j dddt dd}|j|Wd QXz tjd|jd |gWd t|jXnBtjt|tr&tj|}tj||jtjBnd S( s1Creates an executable file in the given location.tgccsgcc is not installeds #include int main() { pause(); return 1; } tsuffixs.cRRRNs-o(RpRqRxRyR RvRtboolRRRRRRRRgRhRR8R0tcopyfileRRR,tchmodR.tS_IEXEC(toutpathtc_codeRR3((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR9s$    cCstjd|d|S(NRR;(RR(RR;((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR<stTestCasecBs2eZdZeejds0ejjZnRS(cCsB|jj}|jds(d|}nd||jj|jfS(Nspsutil.s psutil.tests.s%s.%s.%s(RRRRt_testMethodName(Rtfqmod((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt__str__!s   tassertRaisesRegex(RRRERtunittestRBtassertRaisesRegexpRF(((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRBs c Cs(d}tdtddd|d|S(sZDecorator which runs a test function and retries N times before actually failing. cSstd|dtjdS(Ns %r, retryingtfile(tprintRnRf(R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR6sRRRRN(RRyRk(RR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR42s csfd}|S(s,Decorator to Ignore AccessDenied exceptions.cs%tjfd}|S(NcsVy||SWn>tjk rQdk r?s?q?ntjdnXdS(Nsraises AccessDenied(Rtt AccessDeniedRkRGtSkipTest(RR(Rtonly_if(s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR@s  (RR(RR(RM(Rs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR ?s! ((RMR ((RMs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR2=s csfd}|S(s3Decorator to Ignore NotImplementedError exceptions.cs%tjfd}|S(Ncs`y||SWnHtk r[dk r<s<q<ndj}tj|nXdS(Ns4%r was skipped because it raised NotImplementedError(RRkRRGRL(RRtmsg(RRM(s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRPs    (RR(RR(RM(Rs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR Os! ((RMR ((RMs;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyR3Ms s 127.0.0.1cCs\tjtjA}|jtjtjd|j|df|jdSWdQXdS(sReturn an unused TCP port.iiN(RRRt setsockoptt SOL_SOCKETt SO_REUSEADDRRt getsockname(thostR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRDdsccsTtjsttd|}z |VWdytj|Wntk rNnXXdS(saA context manager which returns a non-existent file name and tries to delete it on exit. R;N(RtRRyR<RptunlinkR(R;Rq((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyREls  cCs|dkr'|ttfkr'd}ntj||}yM|jtjtjd|j||tjkr|j dn|SWnt k r|j nXdS(sBinds a generic socket.RPiii N(RPi( RkRRRRORPRQRRRRjR(tfamilyttypetaddrR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRF|s    cCstjsttjj| s.t|tjtj|}y0|j||tj krr|j dnWnt k r|j nX|S(sBind a UNIX socket.i ( RtRRyRpRqRxRR|RRRRjR(RRVR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRGs   c Cstjtj|t}|j||jd|j}tj|t}y\|j||j}x<tr|j \}}||kr||fS|j quWWnt k r|j nXWdQXdS(s^Build a pair of TCP sockets connected to each other. Return a (server, client) tuple. i N( RRRRRRRRtconnectRRRR(RURWtllR tcaddrta((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRHs           cCstjstd}}yXt|dtj}|jdtjtjtj}|jd|j |WnFt k r|dk r|j n|dk r|j nnX||fS(sBuild a pair of UNIX sockets connected to each other through the same UNIX file name. Return a (server, client) tuple. RViN( RtRRyRkRGRRt setblockingR|RXRjR(Rtservertclient((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRIs        ccseg}d}}z|jttjtj|jttjtjtr|jttjtj|jttjtjnt r t r t j }t j }t |\}}t|dtj}x'|||fD]}|j|qWn|VWdx|D]}|jqW|dk rGt|n|dk r`t|nXdS(s1Open as many socket families / types as possible.RVN(RktappendRFRRRRR RRtHAS_CONNECTIONS_UNIXRERRIRGRR8(tsockstfname1tfname2ts1ts2ts3R((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRJs,        cCsddl}tr9tr9t|tjs9t|n|tjkrg|jdD]}t |^qX}t |dkst|x6|D].}d|kodknst|qWtst |}n|j |n|tj kr;t|tst|ts+t |}n|j|nE|tjkrqtjd|dk st|ntd|dS( s[Check a net address validity. Supported families are IPv4, IPv6 and MAC addresses. iNR~iiis([a-fA-F0-9]{2}[:|\-]?){6}sunknown family %r(t ipaddresstenumR RtIntEnumRyRRRRRR t IPv4AddressRRt IPv6AddressRttAF_LINKRtmatchRkRv(RWRURgtxtoctstnum((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRCs&  !( ,'c Cst|dkst|t|dk}t|dddk}|d|jksat|d|jkszt|d|jkst|d|jkst|d |jkst|d |jkst|r|d|j kstn|r|jdks!t|t t d rt ry"t j |j|j|j}Wn8t jtfk r}|jdtjkrqqXtj|5|j|jkst|j|jkstWd QXqn|jtttfks tt|j|jttfkr|jtkrt j |j|j}tj|Ty|j|jddfWn.t jk r}|jtjkrqnXWd QXqn3|jtkr|jtjkst|jn|jtttfkstt|j|jtkrG|jtjksGt|jnx|j|jfD]}|jttfkrt |t!st||sqZnt |j"t#st|j"d|j"kod knst|j"t$|j%|jqZ|jtkrZt |t&s.t|qZqZWt |jt&sPt|gt'tD]$}|j(dr]tt|^q]}|j|kst|d S(s*Check validity of a connection namedtuple.iitfdiiiiiiitfromfdNitCONN_(ii()RRytgetattrRqRURVtladdrtraddrRRRRRRrterrorRRRtEBADFRRRRR|treprRt EADDRNOTAVAILRtt CONN_NONERRR}RttupletportRRCtipRR6R( Rthas_pidthas_fdtdupsockRRRWRntvalids((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRBsf" $-$$!."7cCscy(ddl}t|ds'tnWn'tk rQddl}|j|SX|j|SdS(s,Backport of importlib.reload of Python 3.3+.iNtreload(t importlibRt ImportErrortimpR(tmoduleRR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRKMs    cCstjjtjj|d}tjddkrQddl}|j||Stjd dkrddlm }|||j Sddl }|j j ||}|j j|}|jj||SdS(Niiiii(tSourceFileLoader(ii(RpRqtsplitextRRnRsRt load_sourcetimportlib.machineryRt load_moduletimportlib.utiltutiltspec_from_file_locationtmodule_from_spectloadert exec_module(RqRRRRtspectmod((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRLZs"  cCstj|tdS(sRaise a warning msg.N(twarningsRMt UserWarning(RN((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRMoscCstt|}|j}t|dks7|dtkr;tSt|dd}t|ts`tStd|DS(s-Check if object is an instance of namedtuple.iit_fieldscss!|]}t|tkVqdS(N(RVR(t.0tn((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pys }sN( RVt __bases__RR|RRtRkRtall(RntttbR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyROts  "ccstr dnd}d}tjd|d|}gtjjD]C}tjj|jd|krC||jj krC|j^qC}t j |}t j ||ztj||VWdt|XdS(sCtx manager which picks up a random shared CO lib used by this process, copies it in another location and loads it in memory via ctypes. Return the new absolutized path. tpypytpythons.soRR;iN(RRRRtRuR\RpRqRtlowertrandomtchoiceR0R=tctypestCDLLR8(t dst_prefixRltexttdstRntlibsR((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRNs$  c csbddlm}ddlm}d}tjd|d|}gtjjD]j}tj j |j dj |krQdtj j |j j krQd |j j krQ|j ^qQ}t j|}tj||d }ztj|}|VWd |d k rStjjj} |jg| _| |j} | d krS|qSnt|Xd S( sCtx manager which picks up a random shared DLL lib used by this process, copies it in another location and loads it in memory via ctypes. Return the new absolutized, normcased path. i(twintypes(tWinErrors.dllRR;iRtwow64Ni(RRRRRRtRuR\RpRqRRRRRR0R=RktWinDLLtwindlltkernel32t FreeLibrarytHMODULEtargtypest_handleR8( RRRRRRnRRtcfileRR(((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyRNs*%!$    (ii(ii(RQstrue(iiii(sasciisus-ascii(RPi(Rt __future__RtatexitRRRRRpRRRR0RR,RgRnRRRRRRRRRRRtRRRRtpsutil._commonR tpsutil._compatR R R R Rst unittest2RGRRtcatch_warningst simplefilterRhRkt__all__tgetenvRtbuiltin_module_namesRt WIN_VISTAR<RZtgetRRRRRRRRqRRrRRRtgetpidRRtgetfilesystemencodingRtASCII_FStabspathR8t__file__RRtHERER`RRuRR tHAS_GETLOADAVGR!R#R$tHAS_NET_IO_COUNTERSR%R"R&R'RaR(RjRR)R*t HAS_THREADSRzRR#tdevnullRR6RnRRtRtobjectR|R}RRRRtregisterRRRRRR.R0R/R,RRR-R>R=RRR@tEnvironmentErrorRyRAR?R8R7tcontextmanagerR7R9R<RBR4R2R3RDRERFRGRHRIRJRCRBRKRLRMRORN(((s;/usr/lib64/python2.7/site-packages/psutil/tests/__init__.pyt sX                                     ' 0     $    0 ## % a  :    #           L