ó ¨Íï\c@sGdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl m Z ddl mZddl mZddl mZdd l mZdd l mZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)dd lm*Z*d!Z+d"Z,d#Z-e)rpe.ne/Z0e j1j2Z2e j3ƒZ4e)rše.ne/Z0d$„Z5d%e*j6fd&„ƒYZ7d'e7fd(„ƒYZ8d)e7fd*„ƒYZ9d+e8fd,„ƒYZ:d-e7fd.„ƒYZ;e<d/krCdd0l=m>Z>e>e?ƒndS(1s) Tests for detecting function memory leaks (typically the ones implemented in C). It does so by calling a function many times and checking whether process memory usage keeps increasing between calls or over time. Note that this may produce false positives (especially on Windows for some reason). iÿÿÿÿ(tprint_functionN(tLINUX(tMACOS(tOPENBSD(tPOSIX(tSUNOS(tWINDOWS(t bytes2human(txrange(tcreate_sockets(tget_test_subprocess(tHAS_CPU_AFFINITY(t HAS_CPU_FREQ(tHAS_GETLOADAVG(t HAS_ENVIRON(t HAS_IONICE(tHAS_MEMORY_MAPS(tHAS_NET_IO_COUNTERS(tHAS_PROC_CPU_NUM(tHAS_PROC_IO_COUNTERS(t HAS_RLIMIT(tHAS_SENSORS_BATTERY(tHAS_SENSORS_FANS(tHAS_SENSORS_TEMPERATURES(t reap_children(t safe_rmpath(tskip_on_access_denied(tTESTFN(tTRAVIS(tunittestièiicCstjtotdƒS(Ns worthless on LINUX (pure python)(RtskipIfRtSKIP_PYTHON_IMPL(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt skip_if_linuxIst TestMemLeakcBsYeZdZeZeZeZd„Z d„Z d„Z e d„ƒZ e d„ƒZRS(sŸBase framework class which calls a function many times and produces a failure if process memory usage keeps increasing between calls or over time. cCstjƒdS(N(tgctcollect(tself((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pytsetUpWsc sÿ‡‡‡‡‡fd†}ˆjdd ƒp3ˆj}ˆjdd ƒpNˆj‰ˆjdd ƒpiˆj}x'tdƒD]}ˆjˆˆˆŽqyWˆjtj gƒˆjt j ƒdƒˆjt j ƒgƒ|ƒˆjƒ}|ƒˆjƒ} | |} | |krûd} tjƒ|} x3tjƒ| kr\ˆjˆˆˆŽ| d7} q*W~ tjƒˆjƒ} | | }| | krût| |ƒ}td|d tjƒd }|d 7}|t| ƒˆt|ƒ| |f}ˆj|ƒqûnd S( sTest a callable.cs;x'tˆƒD]}ˆjˆˆˆŽq W~tjƒdS(N(Rt_callR"R#(tx(targstfuntkwargstloopsR$(sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pytcall_many_times\st tolerance_tloops_t retry_for_i iisexta proc mem: %stfiles0+%s after %s calls, +%s after another %s calls, s+%s extra proc memN(tpoptNonet toleranceR+t retry_fortrangeR&t assertEqualR"tgarbaget threadingt active_counttthisproctchildrent_get_memttimeR#Rtprinttsyststderrtfail(R$R)R(R*R,R3R4R'tmem1tmem2tdiff1tncallststop_attmem3tdiff2textra_proc_memtmsg((R(R)R*R+R$sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pytexecuteZsB          cs,‡‡‡‡‡fd†}ˆj|ƒdS(sRConvenience function which tests a callable raising an exception. csˆjˆˆˆˆŽdS(N(t assertRaises((R(texcR)R*R$(sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pytcall™sN(RK(R$RMR)R(R*RN((R(RMR)R*R$sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt execute_w_exc•scCs0tststrtjƒjStjƒjSdS(N(RRRR:tmemory_full_infotusst memory_infotrss(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR<žs cOs|||ŽdS(N((R)R(R*((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR&§s(t__name__t __module__t__doc__tMEMORY_TOLERANCER3tLOOPSR+t RETRY_FORR4R%RKROt staticmethodR<R&(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR!Ns  ;  tTestProcessObjectLeakscBsÎeZdZeZd„Zeƒd„ƒZeƒd„ƒZeƒd„ƒZ eƒd„ƒZ e j e dƒeƒd„ƒƒZe j e dƒeƒd„ƒƒZeƒd „ƒZd „Zd „Ze j e d ƒd „ƒZe j e d ƒd„ƒZe j e d ƒeƒd„ƒƒZe j e dƒd„ƒZeƒd„ƒZeƒedeƒd„ƒƒZe j e dƒd„ƒZe j e dƒeƒd„ƒƒZeƒd„ƒZ eƒedeƒd„ƒƒZ!eƒd„ƒZ"eƒe j e# d ƒd„ƒƒZ$eƒd„ƒZ%eƒd„ƒZ&e j e dƒeƒd„ƒƒZ'e j e oe(dƒd „ƒZ)eƒd!„ƒZ*e j e+ d ƒd"„ƒZ,e j e+ d ƒd#„ƒZ-eƒd$„ƒZ.e j e/ d ƒeƒd%„ƒƒZ0e j e1 d&ƒe j e2 d ƒd'„ƒƒZ3e j e1 d&ƒe j e2 d ƒd(„ƒƒZ4eƒe j ed)ƒd*„ƒƒZ5e j e6 d ƒd+„ƒZ7e j e dƒd,„ƒZ8RS(-s$Test leaks of Process class methods.cCsqtdƒ}x^ttjƒD]M}|jdƒr7qn||krIqn|jt|d|ƒd|ƒqWdS(Ntpidtas_dictR;t cpu_affinityt cpu_percenttionicet is_runningtkilltmemory_info_extmemory_percenttnicetoneshottparenttparentstrlimitt send_signaltsuspendt terminatetwaitt_ttest_RJ(spidR]schildrens cpu_affinityR_sioniceRaskillRcRdsniceRfsparentRhsrlimitRjssuspends terminateswait(tsettdirtpsutiltProcesst startswitht assertTruethasattr(R$tskiptname((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_coverage¶s  cCs|j|jjƒdS(N(RKtprocRx(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_nameÃscCs|j|jjƒdS(N(RKRztcmdline(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_cmdlineÇscCs|j|jjƒdS(N(RKRztexe(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_exeËscCs|j|jjƒdS(N(RKRztppid(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_ppidÏss POSIX onlycCs|j|jjƒdS(N(RKRztuids(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_uidsÓscCs|j|jjƒdS(N(RKRztgids(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_gidsØscCs|j|jjƒdS(N(RKRztstatus(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_statusÝscCs|j|jjƒdS(N(RKRzRe(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_nice_getáscCs&tjƒ}|j|jj|ƒdS(N(R:ReRKRz(R$tniceness((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_nice_setäs s not supportedcCs|j|jjƒdS(N(RKRzR`(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_ionice_getèscCsytr+tjƒ}|j|jj|ƒnJ|j|jjtjƒtjt j t j ƒddƒ}|j t|ƒdS(Niÿÿÿÿi(RR:R`RKRzRrtIOPRIO_CLASS_NONEt functoolstpartialtcexttproc_ioprio_settostgetpidROtOSError(R$tvalueR)((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_ionice_setìs  !cCs|j|jjƒdS(N(RKRzt io_counters(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_io_countersössworthless on POSIXcCs|j|jjƒdS(N(RKRztusername(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_usernameûscCs|j|jjƒdS(N(RKRzt create_time(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_create_timeÿstonly_ifcCs|j|jjƒdS(N(RKRzt num_threads(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_num_threadsss WINDOWS onlycCs|j|jjƒdS(N(RKRzt num_handles(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_num_handlesscCs|j|jjƒdS(N(RKRztnum_fds(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_num_fds scCs|j|jjƒdS(N(RKRztnum_ctx_switches(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_num_ctx_switchesscCs|j|jjƒdS(N(RKRztthreads(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_threadsscCs|j|jjƒdS(N(RKRzt cpu_times(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cpu_timesscCs|j|jjƒdS(N(RKRztcpu_num(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_cpu_numscCs|j|jjƒdS(N(RKRzRR(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_memory_info#scCs|j|jjƒdS(N(RKRzRP(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_memory_full_info'scCs|j|jjƒdS(N(RKRztterminal(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_terminal+ss worthless on POSIX (pure python)cCs|j|jjƒdS(N(RKRztresume(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_resume0scCs|j|jjƒdS(N(RKRztcwd(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cwd5scCs|j|jjƒdS(N(RKRzR^(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cpu_affinity_get9scCsKtjƒ}|j|jj|ƒtsG|jt|jjdgƒndS(Niÿÿÿÿ(R:R^RKRzRROt ValueError(R$taffinity((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cpu_affinity_set=s cCs7ttƒttdƒ|j|jjƒWdQXdS(Ntw(RRtopenRKRzt open_files(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_open_filesDs cCs|j|jjƒdS(N(RKRzt memory_maps(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_memory_mapsJss LINUX onlycCs|j|jjtjƒdS(N(RKRzRiRrt RLIMIT_NOFILE(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_rlimit_getOscCsKtjtjƒ}|j|jjtj|ƒ|jt|jjdƒdS(Niÿÿÿÿ(R:RiRrR½RKRzROR“(R$tlimit((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_rlimit_setTssworthless on WINDOWScCs<tƒ-trdnd}|j|jj|ƒWdQXdS(Ntinettall(R RRKRzt connections(R$tkind((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_connections[s cCs|j|jjƒdS(N(RKRztenviron(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_environgscCs|jtjtjƒƒdS(N(RKRt proc_infoR‘R’(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_proc_infoks(9RTRURVR:RzRyR R{R}RRRRRRƒR…R‡RˆRŠRR‹R•RR—R™R›RRRžRR R¢R¤R¦R¨RRªR«R¬R®RR°R²R R³R¶RºRR¼RRR¾RÀRÅRRÇRÉ(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR[±sf     tTestProcessDualImplementationcBs#eZer!d„Zd„ZnRS(cCs#|jtjtjƒdtƒdS(Ntuse_peb(RKRt proc_cmdlineR‘R’tTrue(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cmdline_peb_truesscCs#|jtjtjƒdtƒdS(NRË(RKRRÌR‘R’tFalse(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cmdline_peb_falsevs(RTRURRÎRÐ(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRÊps tTestTerminatedProcessLeakscBsteZdZed„ƒZed„ƒZd„Zerrd„Zd„Z d„Z d„Z d„Z d „Z nRS( sñRepeat the tests above looking for leaks occurring when dealing with terminated processes raising NoSuchProcess exception. The C functions are still invoked but will follow different code paths. We'll check those code paths. cCsOtt|ƒjƒtƒ}tj|jƒ|_|jjƒ|jj ƒdS(N( tsuperRÑt setUpClassR RrRsR\RzRbRm(tclstp((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRÓs   cCstt|ƒjƒtƒdS(N(RÒRÑt tearDownClassR(RÔ((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRÖ‰scOs,y|||ŽWntjk r'nXdS(N(Rrt NoSuchProcess(R$R)R(R*((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR&ŽscCs|j|jjƒdS(N(RKRzRb(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_kill–scCs|j|jjƒdS(N(RKRzRl(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_terminate™scCs|j|jjƒdS(N(RKRzRk(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_suspendœscCs|j|jjƒdS(N(RKRzR¯(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR°ŸscCs|j|jjƒdS(N(RKRzRm(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_wait¢scs ‡fd†}ˆj|ƒdS(NcsIytjˆjjƒSWn+tk rD}|jtjkrE‚qEnXdS(N(RRÈRzR\R“terrnotESRCH(terr(R$(sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRN§s (RK(R$RN((R$sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRÉ¥s(RTRURVt classmethodRÓRÖR&RRØRÙRÚR°RÛRÉ(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRÑzs      tTestModuleFunctionsLeaksc BsÜeZdZd„Zeƒd„ƒZeƒd„ƒZeƒd„ƒZeƒd„ƒZeƒd„ƒZ eƒe j e dƒd„ƒƒZ e j e dƒd „ƒZd „Ze j ed ƒd „ƒZe j eoãed ƒd„ƒZe j eoed ƒd„ƒZd„Ze j eo;ejjdƒ dƒeƒd„ƒƒZeƒd„ƒZe j eowedƒeƒe j e dƒd„ƒƒƒZ!e j edƒe j eoÏej"ƒdkdƒd„ƒƒZ#d„Z$e j edƒd„ƒZ%eƒe j e& dƒd„ƒƒZ'eƒe j e( dƒd„ƒƒZ)eƒe j e* dƒd „ƒƒZ+eƒd!„ƒZ,e j e-d"ƒd#„ƒZ.e-rÚd$„Z/d%„Z0d&„Z1d'„Z2d(„Z3nRS()s&Test leaks of psutil module functions.cCshtd ƒ}xUtjD]J}|jƒs.qn||kr@qn|jt|d|ƒd |ƒqWdS( Nt version_infot __version__t process_itert wait_procsR_tcpu_times_percentt cpu_countRoRJ(s version_infos __version__RãRäs cpu_percentRås cpu_count(RpRrt__all__tislowerRuRv(R$RwRx((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRy¹s   cCs|jtjdtƒdS(Ntlogical(RKRrRæRÍ(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cpu_count_logicalÆscCs|jtjdtƒdS(NRé(RKRrRæRÏ(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cpu_count_physicalÊscCs|jtjƒdS(N(RKRrR§(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyR¨ÎscCs|jtjdtƒdS(Ntpercpu(RKRrR§RÍ(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_per_cpu_timesÒscCs|jtjƒdS(N(RKRrt cpu_stats(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_cpu_statsÖss not supportedcCs|jtjƒdS(N(RKRrtcpu_freq(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_cpu_freqÚscCs|jtjƒdS(N(RKRrt getloadavg(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_getloadavgßscCs|jtjƒdS(N(RKRrtvirtual_memory(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_virtual_memoryåss&worthless on SUNOS (uses a subprocess)cCs|jtjƒdS(N(RKRrt swap_memory(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_swap_memoryéss worthless on POSIX (pure python)cCs|jtjtjƒƒdS(N(RKRrt pid_existsR‘R’(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_pid_existsîscCs|jtjdƒdS(Nt.(RKRrt disk_usage(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_disk_usageõscCs|jtjƒdS(N(RKRrtdisk_partitions(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_disk_partitionsúss/proc/diskstatss3/proc/diskstats not available on this Linux versioncCs|jtjdtƒdS(Ntnowrap(RKRrtdisk_io_countersRÏ(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_disk_io_countersýscCs|jtjƒdS(N(RKRrtpids(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_pidsssfalse positive on traviscCs|jtjdtƒdS(NRÿ(RKRrtnet_io_countersRÏ(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_net_io_counters ss worthless on Linux (pure python)isneed root accesscCs$tƒ|jtjƒWdQXdS(N(R RKRrtnet_connections(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_net_connectionss cCs&|jtjdtrdndƒdS(NR-iPii@(RKRrt net_if_addrsRR2(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_net_if_addrsssEPERM on traviscCs|jtjƒdS(N(RKRrt net_if_stats(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_net_if_statsscCs|jtjƒdS(N(RKRrtsensors_battery(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_sensors_battery#scCs|jtjƒdS(N(RKRrtsensors_temperatures(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_sensors_temperatures(scCs|jtjƒdS(N(RKRrt sensors_fans(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_sensors_fans-scCs|jtjƒdS(N(RKRrt boot_time(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_boot_time4ss(XXX produces a false positive on WindowscCs|jtjƒdS(N(RKRrtusers(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_users9scCs|jtjƒdS(N(RKRtwinservice_enumerate(R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_win_service_iterAscCsdS(N((R$((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_win_service_getDscCs/ttjƒƒjƒ}|jtj|ƒdS(N(tnextRrtwin_service_iterRxRKRtwinservice_query_config(R$Rx((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_win_service_get_configGscCs/ttjƒƒjƒ}|jtj|ƒdS(N(RRrRRxRKRtwinservice_query_status(R$Rx((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyttest_win_service_get_statusKscCs/ttjƒƒjƒ}|jtj|ƒdS(N(RRrRRxRKRtwinservice_query_descr(R$Rx((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyt test_win_service_get_descriptionOs(4RTRURVRyR RêRëR¨RíRïRRR RñR RóRõRR÷RRRùRüRþRR‘tpathtexistsRRRRRRtgetuidRR R RR RRRRRRRRRRRR (((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pyRà¶sX    " 0     t__main__(trun(@RVt __future__RRÜRR"R‘R?R8R=Rrtpsutil._commonRRRRRRRtpsutil._compatRt psutil.testsR R R R R RRRRRRRRRRRRRRRRRXRWRYRÍRÏRt _psplatformRRsR:R tTestCaseR!R[RÊRÑRàRTtpsutil.tests.runnerR%t__file__(((sD/usr/lib64/python2.7/site-packages/psutil/tests/test_memory_leaks.pytsn            c¿ <ž