4\c @sddZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z ddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZe joe jd y4ddlZddlZddlZddlZWn&ek rejdkrqnXWdQXe j j!Z!e j"d%kZ#dZ$ej%e ddej&fdYZ'ej%e ddej&fdYZ(ej%e ddej&fdYZ)ej%e ddej&fdYZ*ej%e ddej&fdYZ+ej%e ddej&fdYZ,ej%e ddej&fd YZ-ej%e dd!ej&fd"YZ.e/d#kr`dd$l0m1Z1e1e2ndS(&sWindows specific tests.iN(tWINDOWS(tAPPVEYOR(tget_test_subprocess(t HAS_BATTERY(tmock(tPY3(t reap_children(tretry_on_failure(tsh(tunittesttignoretntii csfd}|S(Ncsy|||SWnqtk r}ddlm}|j|krZtjddn|jtjkrtjddnnXdS(Ni(tACCESS_DENIED_SET( tOSErrortpsutil._pswindowsR terrnotpsutilt AccessDeniedtNonetESRCHt NoSuchProcess(tselftargstkwargsterrR (tfun(s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pytwrapper5s((RR((Rs?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pytwrap_exceptions4s s WINDOWS onlyt TestCpuAPIscBsYeZejdejkddZdZdZdZ dZ dZ RS(tNUMBER_OF_PROCESSORSs-NUMBER_OF_PROCESSORS env var is not availablecCs-ttjd}|j|tjdS(NR(tinttostenviront assertEqualRt cpu_count(Rtnum_cpus((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt&test_cpu_count_vs_NUMBER_OF_PROCESSORSJscCs0tjd}tj}|j||dS(Ni(twin32apit GetSystemInfoRR"R!(Rt sys_valuet psutil_value((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_cpu_count_vs_GetSystemInfoRs cCs9tj}|jd}|jtj|jdS(Ni(twmitWMItWin32_ProcessorR!RR"tNumberOfLogicalProcessors(Rtwtproc((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_cpu_count_logical_vs_wmiYs cCs?tj}|jd}|jtjdt|jdS(Nitlogical(R*R+R,R!RR"tFalset NumberOfCores(RR.R/((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_cpu_count_phys_vs_wmi^s cCs,|jtjttjdtdS(Ntpercpu(R!RR"tlent cpu_timestTrue(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_cpu_count_vs_cpu_timescscCsXtj}|jd}|j|jtjj|j|jtjj dS(Ni( R*R+R,R!tCurrentClockSpeedRtcpu_freqtcurrentt MaxClockSpeedtmax(RR.R/((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_cpu_freqgs ( t__name__t __module__R tskipIfRR R$R)R0R4R9R?(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRGs    tTestSystemAPIscBs}eZdZdZejededZedZ dZ dZ dZ dZ d ZRS( cCs}td}tjdtj}xR|D]J}d|jddjkrUq+n||kr+|jd|q+q+WdS(Ns ipconfig /alltpernicspseudo-interfacet t-s-%r nic wasn't found in 'ipconfig /all' output(RRtnet_io_countersR8tkeystreplacetlowertfail(Rtouttnicstnic((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_nic_namesqs   cCs<tjjd}|jt|jtjjdS(Ni( R*R+tWin32_ComputerSystemR!RtTotalPhysicalMemoryRtvirtual_memoryttotal(RR.((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_total_phymem{sstest not relieable on appveyorcCsZtjj}tg|D]}|j^q}ttj}|j||dS(N(R*R+t Win32_Processtsett ProcessIdRtpidsR!(RR.txtwmi_pidst psutil_pids((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_pidss"cCs\tjdt}tjj}x1|D])}x |D]}|jjdd|jkr8|j siPnd|j kr|Pnytj |j }Wn,t k r}|j t jkrPqnX|j|jt|jt|j}|j|j|t|j|d kr5|jd|j|fnPq8q8W|jdt|q+WdS( Ntalls\ttcdromi ispsutil=%s, wmi=%sscan't find partition %si(i(Rtdisk_partitionsR8R*R+tWin32_LogicalDisktdeviceRItDeviceIDt mountpointtoptst disk_usageR RtENOENTR!RSRtSizet FreeSpacetfreetabsRKtrepr(Rtps_partst wmi_partstps_parttwmi_parttusageRtwmi_free((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_diskss.    cCsxtjD]}d|jkr(q ntj|j}tj|j}|j|d|jdd|j|d|j dd|j |j |j |jq WdS(NR_itdeltaiiii( RR`ReR%tGetDiskFreeSpaceExRdRftassertAlmostEqualRjRSR!tused(RtdiskR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_disk_usages cCs~gtjjdD]&}|r|jd r|d^q}gtjdtD]}|j^qU}|j||dS(Ns\sA:s\R]( R%tGetLogicalDriveStringstsplitt startswithRR`R8RdR!(RRYR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_disk_partitionss&(cCsttj}tjj}t}x.|D]&}|j|j|j|jq4W|j ||@d||fdS(Nsno common entries in %s, %s( RVtcextt net_if_statsR*R+tWin32_NetworkAdaptertaddtNametNetConnectionIDt assertTrue(Rtps_namest wmi_adapterst wmi_namest wmi_adapter((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_net_if_statss   cCstjj}|djjdd}tjj|d}tjjtj }t ||j }|j |ddS(Nit.s %Y%m%d%H%M%Si( R*R+tWin32_OperatingSystemtLastBootUpTimeR{tdatetimetstrptimet fromtimestampRt boot_timeRkt total_secondstassertLessEqual(Rtwmi_ost wmi_btime_strt wmi_btime_dtt psutil_dttdiff((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_boot_times  c Cstjddd|jtjdWdQXtjddd|jtjdWdQXtjddd|jtjdWdQXtjddd|jtjdWdQXdS(Ns psutil._pswindows.cext.boot_timet return_valueiiiiM(RtpatchR!RR(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_boot_time_fluctuations(R@RARORTR RBRRR\RsRyR}RRR(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRCns    tTestSensorsBatterycBsmeZdZeje ddZeje ddZdZdZ dZ dZ RS(cCs=tjdr&|jtjn|jtjdS(NtSystemBatteriesPresent(R%tGetPwrCapabilitiestassertIsNotNoneRtsensors_batteryt assertIsNone(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_has_batteryss no batterycCsKtj}|jdd}tj}|j|j|jdddS(Nsselect * from Win32_BatteryiRti(R*R+tqueryRRRvtpercenttEstimatedChargeRemaining(RR.t battery_wmitbattery_psutil((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_percents   cCsKtj}|jdd}tj}|j|j|jdkdS(Nsselect * from Win32_Batteryii(R*R+RRRR!t power_pluggedt BatteryStatus(RR.RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_power_pluggeds    cCsDtjddd)}|jtj|js:tWdQXdS(Ns&psutil._pswindows.cext.sensors_batteryRii(iiii(RRRRRtcalledtAssertionError(Rtm((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_emulate_no_battery s  cCsMtjddd2}|jtjjtj|jsCtWdQXdS(Ns&psutil._pswindows.cext.sensors_batteryRii(iiii( RRR!RRtsecslefttPOWER_TIME_UNLIMITEDRR(RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_emulate_power_connecteds    cCsMtjddd2}|jtjjtj|jsCtWdQXdS(Ns&psutil._pswindows.cext.sensors_batteryRii(iiii( RRR!RRRRRR(RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_emulate_power_chargings    cCsMtjddd2}|jtjjtj|jsCtWdQXdS(Ns&psutil._pswindows.cext.sensors_batteryRii(iiii( RRR!RRRtPOWER_TIME_UNKNOWNRR(RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_emulate_secs_left_unknowns    ( R@RARR RBRRRRRRR(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRs     t TestProcesscBseZedZedZdZdZdZdZdZ dZ e j e jdk d d Zd Zd ZdZdZdZdZdZdZRS(cCstj|_dS(N(Rtpid(tcls((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt setUpClass-scCs tdS(N(R(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt tearDownClass1scCs)tjd}|jtj|jdS(Ni(RtProcesst assertRaisesRtkill(Rtp((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_issue_245scCstjd}|j|jdt||j|j|jdky|jd \}}Wn0tj k rt j dd krqnX|j|d kdS( NitSystemgiitvistaswin-7twin7i(Rswin-7R( RRR!tnametstrtusernameRt create_timet memory_infoRtplatformtuname(RRtrsstvms((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_special_pid9s   cCs/tj|j}|jt|jtjdS(N(RRRRt ValueErrort send_signaltsignaltSIGINT(RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_send_signalJscCsx{tjD]m}y|j}Wntjk r9q Xy&|jtjj|j|Wq tj k ryq q Xq WdS(N( Rt process_iterRRR!RtpathtbasenametexetError(RRR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_exe_and_nameNs&cCstjtj}|j}tjtjtj tj}|j}|j ||dtj ||j |j|dS(Ni( RRRtgetpidt num_handlesR%t OpenProcesstwin32contPROCESS_QUERY_INFORMATIONtFALSER!t CloseHandle(RRtbeforethandletafter((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_num_handles_increment\s    c sfd}tj|j}g}xttjD]jds7dkr^q7q7y6|||j}|||j}Wntjtjfk rq7X||kr7d ||f}|j|q7q7W|r |j ddj |ndS(Ncs<t|d}|dk r4t|r4|n|dS(N(tgetattrRtcallable(Rtattr(R(s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pytcalljs t_t terminateRtsuspendtresumetniceRtwaittchildrentas_dicttmemory_info_exs@failure while processing Process.%s method (before=%s, after=%s)s ( s terminateskillRRsnices send_signalswaitRsas_dictR( RRRtdirR|RRRtappendRKtjoin(RRRtfailurestnum1tnum2RK((Rs?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_handles_leakfs,     iisCTRL_* signals not supportedcCstjtj}|jtj|jtj|j|j |j tj |jtj|j tj |jtjdS(N( RRRRRRt CTRL_C_EVENTtCTRL_BREAK_EVENTRRRR(RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_ctrl_signalss    cCs,|jtjjtjtjdS(N(R!RRRR%t GetUserNameExRtNameSamCompatible(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_usernamescCsPtjddtjj}djtjj}|j ||dS(Ns +RE( tretsubR%tGetCommandLinetstripRRRtcmdlineR!(RR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_cmdlines!cCsitjtjtjtj}|jtj|t j |}t j j }|j||dS(N(R%RRRRRRt addCleanupRt win32processtGetPriorityClassRRRR!(RRR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_nices  cCs@tjtjtj|j}|jtj|tj |}t j |jj }|j |d|j|j |d|j|j |d|j|j |d|j|j |d|j|j |d|j|j |d|j|j |d|j|j |j|j|j |j|jdS( NtPeakWorkingSetSizetWorkingSetSizetQuotaPeakPagedPoolUsagetQuotaPagedPoolUsagetQuotaPeakNonPagedPoolUsagetQuotaNonPagedPoolUsaget PagefileUsagetPeakPagefileUsage(R%RRRRRRRRtGetProcessMemoryInfoRRRR!t peak_wsettwsettpeak_paged_poolt paged_pooltpeak_nonpaged_poolt nonpaged_pooltpagefilet peak_pagefileRR(RRR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_memory_infos0  cCs|tjtjtj|j}|jtj|tj |j}|j |j }t j |}|j||dS(N(R%RRRRRRRRRRRRtGetExitCodeProcessR!(RRRR(R'((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_waits   cCsd}tjtjtj|j}|jtj||tj |d}t j |jj }|j ||dS(NcSs+gtdD]}d|>|@r |^q S(Ni@i(trange(RYti((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt from_bitmasksi(R%RRRRRRRRtGetProcessAffinityMaskRRt cpu_affinityR!(RRRR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_cpu_affinitys  cCstjtjtjtj}|jtj|t j |}t j j }|j|j|d|j|j|d|j|j|d|j|j|d|j|j|d|j|j|ddS(NtReadOperationCounttWriteOperationCounttReadTransferCounttWriteTransferCounttOtherOperationCounttOtherTransferCount(R%RRRRRRRRRtGetProcessIoCountersRRt io_countersR!t read_countt write_countt read_bytest write_bytest other_countt other_bytes(RRR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_io_counterss" cCsddl}ddl}d}|jjj|d|j}|j|jjj||jj }|jjj ||j ||j }t j|jj}|j||dS(Niii(tctypestctypes.wintypestwindlltkernel32RRRRtwintypestDWORDtGetProcessHandleCounttbyreftvalueRRRR!(RR0RRthndcntR'R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_num_handless     (ii(R@RAt classmethodRRRRRRRRR RBtsyst version_infoRRRRRRR R/R:(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR*s$     $     tTestProcessWMIcBskeZdZedZedZdZdZdZdZ dZ dZ d Z RS( s%Compare Process API results with WMI.cCstj|_dS(N(RR(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRscCs tdS(N(R(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRscCsNtjjd|jd}tj|j}|j|j|jdS(NRWi( R*R+RURRRR!RtCaption(RR.R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyt test_namescCsZtjjd|jd}tj|j}|j|jj|j jdS(NRWi( R*R+RURRRR!RRJtExecutablePath(RR.R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_exescCsctjjd|jd}tj|j}|jdj|j|j j dddS(NRWiREt"R^( R*R+RURRRR!RRt CommandLineRI(RR.R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR#scCsptjjd|jd}tj|j}|j\}}}d||f}|j|j|dS(NRWis%s\%s( R*R+RURRRtGetOwnerR!R(RR.RtdomainRR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR)s cCsjtjdtjjd|jd}tj|j}|jj }|j |t |j dS(Ng?RWi( ttimetsleepR*R+RURRRRRR!RR(RR.RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_memory_rss0s  cCstjdtjjd|jd}tj|j}|jj }t |j }||kr||dkr|j d||fndS(Ng?RWiiswmi=%s, psutil=%s( RGRHR*R+RURRRRRRt PageFileUsageRK(RR.RRt wmi_usage((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_memory_vms7s cCstjjd|jd}tj|j}t|jjdd}t j dt j |j }|j ||dS(NRWiRs %Y%m%d%H%M%S(R*R+RURRRRt CreationDateR{RGtstrftimet localtimeRR!(RR.Rt wmic_createt psutil_create((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_create_timeDs  ( R@RAt__doc__R;RRR@RBRRRIRLRR(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR> s      tTestDualProcessImplementationcBskeZdZedZedZdZdZdZdZ dZ dZ d Z RS( s{ Certain APIs on Windows have 2 internal implementations, one based on documented Windows APIs, another one based NtQuerySystemInformation() which gets called as fallback in case the first fails because of limited permission error. Here we test that the two methods return the exact same value, see: https://github.com/giampaolo/psutil/issues/304 cCstj|_dS(N(RR(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRYscCs tdS(N(R(R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR]scCsztj|jj}tjddtjtj8}|j tj|jj||j spt WdQXdS(Ns psutil._psplatform.cext.proc_exet side_effect( RRRRRRRRRR!RR(RRR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR@ds  "c Cstj|jj}tjddttjd}tj|jj}|j t |t |x`t t |D]L}|j ||d|j ||d|j ||||ddqW|jstWdQXdS(Ns(psutil._psplatform.cext.proc_memory_infoRUtmsgiRti(RRRRRRR RtEPERMR!R6RtassertGreaterEqualRvRR(Rtmem_1Rtmem_2R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRks "cCswtj|jj}tjddttjd8}|j tj|jj||j smt WdQXdS(Ns(psutil._psplatform.cext.proc_create_timeRURV( RRRRRRR RRWR!RR(RtctimeR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRRws  "c Cstj|jj}tjddttjdf}tj|jj}|j sct |j |j |j dd|j |j |j ddWdQXdS(Ns&psutil._psplatform.cext.proc_cpu_timesRURVRtg{Gz?(RRRR7RRR RRWRRRvtusertsystem(Rt cpu_times_1Rt cpu_times_2((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_cpu_times~s c Cstj|jj}tjddttjdi}tj|jj}x8t t |D]$}|j ||||ddqgW|j st WdQXdS(Ns(psutil._psplatform.cext.proc_io_countersRURVRti(RRRR(RRR RRWRR6RvRR(Rt io_counters_1Rt io_counters_2R((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR/s cCswtj|jj}tjddttjd8}|j tj|jj||j smt WdQXdS(Ns(psutil._psplatform.cext.proc_num_handlesRURV( RRRRRRR RRWR!RR(RRR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR:s  cCsddlm}xtjD]}y.tj|dt}tj|dt}Wn@tk r}||}t |tj tj fsqqX|j ||qWdS(Ni(tconvert_oserrortuse_peb( RRcRRXR~t proc_cmdlineR8R2R t isinstanceRRR!(RRcRtatbR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRs   ( R@RARSR;RRR@RRRR`R/R:R(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRTMs    tRemoteProcessTestCasecBseZdZedZedZddgZdZdZ edZ dZ d Z d Z d Zd Zd ZRS(sCertain functions require calling ReadProcessMemory. This trivially works when called on the current process. Check that this works on other processes, especially when they have a different bitness. cCszd}xmtjdD]\}tjd|d|gdtjdtj}|j\}}|tt kr|SqWdS(Ns6import sys; sys.stdout.write(str(sys.maxsize > 2**32))sC:\Python*\python.exeRs-ctstdouttstderr(tglobt subprocesstPopentPIPEtSTDOUTt communicateRt IS_64_BIT(tcodetfilenameR/toutputR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pytfind_other_interpreters  cCsa|j}|dkr*tjdntrHtj|_||_n||_tj|_dS(Ns0could not find interpreter with opposite bitness( RvRR tSkipTestRrR<t executabletpython64tpython32(Rt other_python((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRs      s-csimport sys; sys.stdin.read()cCstjj}ttj|dtj|jj}y|jWntjk r9nXdS(N(RRRRR R(RR((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_environ_64s (R@RARSt staticmethodRvR;RRRRRRRRRRR(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyRis       t TestServicescBseZdZdZRS(cCstdddddddg}tdd d g}tddd d d ddg}xtjD]z}|j}|j|dt|j|djd|j|dt|j|dt|j|d||ddk rtj |dn|j|dt|j|dt|j|dt|j|d||j|d||j|dt|j }|dk rtj |}|j |j ntj|j}|j||qdWdS(Ntrunningtpausedtstarttpausetcontinuetstoptstoppedt automatictmanualtdisabledt start_pendingt pause_pendingtcontinue_pendingt stop_pendingRR^t display_nameRtstatusRtbinpatht start_typet description(RVRtwin_service_iterRtassertIsInstanceRtassertNotEqualRRRRRRt is_runningtwin_service_getRR!(Rtvalid_statusestvalid_start_typestservtdataRRts((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_win_service_iter sR      c Cs-tjjj}tjjj}ttjj}|jtj }tj |dWdQX|j |j j|dtj |}t rddd|f}n |df}t|}tjdd||jtj |jWdQXtjdd||jtj |jWdQXt r=ddd|f}n |df}t|}tjdd||jtj|jWdQXtjdd||jtj|jWdQX|j|jt||j|jt||j|jt||j|jt|dS(Ns???iRVs/psutil._psplatform.cext.winservice_query_statusRUs/psutil._psplatform.cext.winservice_query_config(Rt _psplatformR~tERROR_SERVICE_DOES_NOT_EXISTtERROR_ACCESS_DENIEDtnextRRRRRR!t exceptionRt WindowsErrorRRRRRRRRRl(RRRRtcmtserviceRtexc((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyttest_win_service_get=s>            (R@RARR(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pyR s 0t__main__(trunI(3RSRRRlRRRRRmR<RGtwarningsRRt psutil.testsRRRRRRRRR tcatch_warningst simplefilterR%RRR*t ImportErrorRRR~tmaxsizeRrRRBtTestCaseRRCRRR>RTRiRR@tpsutil.tests.runnerRt__file__(((s?/usr/lib64/python2.7/site-packages/psutil/tests/test_windows.pytsl                    &~<A\_^