3 JZ3@sdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ej,j-ej,j.e/Z0dZ1dZ2dZ3erdZ4dd Z5d!d"Z6d#d$Z7d%d&Z8d'd(Z9d)d*Z:e*j;e d+Gd,d-d-e*j<Z=e*j;e d+Gd.d/d/e*j<Z>e*j;e d+Gd0d1d1e*j<Z?e*j;e d+Gd2d3d3e*j<Z@e*j;e d+Gd4d5d5e*j<ZAe*j;e d+Gd6d7d7e*j<ZBe*j;e d+Gd8d9d9e*j<ZCe*j;e d+e*j;e d:Gd;d<dd>e*j<ZEe*j;e d+Gd?d@d@e*j<ZFe*j;e d+GdAdBdBe*j<ZGe*j;e d+GdCdDdDe*j<ZHe*j;e d+GdEdFdFe*j<ZIeJdGkre#e/dS)HzLinux specific tests.)divisionN)LINUX)PY3)u) call_until) HAS_BATTERY) HAS_CPU_FREQ) HAS_RLIMIT)MEMORY_TOLERANCE)mock)PYPY)pyrun) reap_children) reload_module)retry_before_failing)run_test_module_by_name) safe_rmpath)sh)skip_on_not_implemented)TESTFN) ThreadTask)TRAVIS)unittest)whichiii'icCspddl}|dd}tr"t|d}tjtjtj}tj|*tj|j |j t t j d|ddSQRXdS)Nrascii256s)fcntlrbytessocketAF_INET SOCK_DGRAM contextlibclosingZ inet_ntoaioctlfileno SIOCGIFADDRstructpack)ifnamersr-"/usr/lib64/python3.6/test_linux.pyget_ipv4_address@s    r/c sddl}|dd}tr"t|d}tjtjtj}tj|`|j|j t t j d|}trfddnddl }|jdjfdd |d d Ddd SQRXdS)NrrrrcSs|S)Nr-)xr-r-r.ordWszget_mac_address..ordcsg|]}d|qS)z%02x:r-).0char)r1r-r. \sz#get_mac_address..r)rrr r!r"r#r$r%r&r' SIOCGIFHWADDRr)r* __builtin__r1join)r+rr,infor:r-)r1r.get_mac_addressMs    r=cCsttd}|jd}xJ|D]B}|jdr|j\}}}}tjdd}|t|t|t|SqWtddj|dS)zQParse 'free' cmd and return swap memory's s total, used and free values. zfree -b ZSwapfreeztotal used freez&can't find 'Swap' in 'free' output: %sN)rsplit startswith collections namedtupleint ValueErrorr;)outlinesline_totalusedr?ntr-r-r. free_swap_s    rMcCs~td}|jd}xT|D]L}|jdrdd|jddD\}}}}tjdd }||||||SqWtd dj|d S) zSParse 'free' cmd and return physical memory's total, used and free values. zfree -br>ZMemcSsg|] }t|qSr-)rD)r3r0r-r-r.r5{sz free_physmem..r7r?ztotal used free shared outputz%can't find 'Mem' in 'free' output: %sN)rr@rArBrCrEr;)rFrGrHrJrKr?sharedrLr-r-r. free_physmemns   "rPcCsNtd}x4|jdD]&}|j}||krt|jddSqWtd|dS)Nz vmstat -sr> rz can't find %r in 'vmstat' output)rr@striprDrE)statrFrHr-r-r.vmstats rTcCs(tdj}ttt|jdjdS)Nzfree -Vr7.r8)rrRtuplemaprDr@)rFr-r-r.get_free_version_infos rXz LINUX onlyc@seZdZddZejeo ed kdeddZ eje ded d Z ed d Z eje ded dZ eje deddZeddZeddZddZddZddZddZddZdS)!TestSystemVirtualMemorycCs&tdd}tjj}|j||dS)Nz total memoryi)rTpsutilvirtual_memoryrJassertAlmostEqual)self vmstat_value psutil_valuer-r-r. test_totals  z"TestSystemVirtualMemory.test_total zold free versioncCs8t}|j}tjj}|j||td|||jfddS)Nz %s %s %s)deltamsg)rPrKrZr[r\r output)r]r? free_valuer_r-r-r. test_useds  z!TestSystemVirtualMemory.test_usedzunreliable on TRAVIScCs*tdd}tjj}|j||tddS)Nz free memoryi)rc)rTrZr[r?r\r )r]r^r_r-r-r. test_frees  z!TestSystemVirtualMemory.test_freecCs*tdd}tjj}|j||tddS)Nz buffer memoryi)rc)rTrZr[buffersr\r )r]r^r_r-r-r. test_bufferss  z$TestSystemVirtualMemory.test_bufferscCs*tdd}tjj}|j||tddS)Nz active memoryi)rc)rTrZr[activer\r )r]r^r_r-r-r. test_actives  z#TestSystemVirtualMemory.test_activecCs*tdd}tjj}|j||tddS)Nzinactive memoryi)rc)rTrZr[inactiver\r )r]r^r_r-r-r. test_inactives  z%TestSystemVirtualMemory.test_inactivecCsJt}|j}|dkrtjdtjj}|j||td|||jfddS)Nrz%free does not support 'shared' columnz %s %s %s)rcrd) rPrOrSkipTestrZr[r\r re)r]r?rfr_r-r-r. test_shareds  z#TestSystemVirtualMemory.test_sharedcCshtd}|jd}d|dkr*tjdn:t|djd }tjj}|j||t d|||fddS) Nzfree -br> availablerz(free does not support 'available' columnr7z %s %s %s)rcrdr8) rr@rrorDrZr[rqr\r )r]rFrGrfr_r-r-r.test_availables    z&TestSystemVirtualMemory.test_availablecsTfdd}ttrdnd}tj|d|d}tjdd}tjdtj}|j t |d |d }|j d t |j |j d t |j |j d t |j |j dt |j |j dt |j |j dt |j |j dt |j |j |jd |j |jd |j |jd |j |jd |j |jd |j |jd WdQRXWdQRXdS)Ncs0|dkrtjtjdjS|f||SdS)Nz /proc/meminfoa Active(anon): 6145416 kB Active(file): 2950064 kB Inactive(anon): 574764 kB Inactive(file): 1567648 kB MemAvailable: -1 kB MemFree: 2057400 kB MemTotal: 16325648 kB SReclaimable: 346648 kB )ioBytesIOtextwrapdedentencode)nameargskwargs) orig_openr-r. open_mocks zBTestSystemVirtualMemory.test_warnings_on_misses..open_mockz builtins.openz__builtin__.openT)create side_effect)recordalwaysr7rz#memory stats couldn't be determinedcachedrOrkrmrirq)openrr patchwarningscatch_warnings simplefilterrZr[ assertEquallenassertInstrmessagerrkrmrOrirq)r]r| patch_pointmwsretwr-)r{r.test_warnings_on_missess.   z/TestSystemVirtualMemory.test_warnings_on_missesc Csddlm}ddlm}i}|d4}x,|D]$}|j}t|dd||d<q,WWdQRX||}d|kr|d}t|||d} |j| d dS) Nr)calculate_avail_vmem) open_binaryz /proc/meminfor7is MemAvailable:d )psutil._pslinuxrrr@rDabsZ assertLess) r]rrZmemsfrHfieldsabZ diff_percentr-r-r.test_avail_old_percents    &z.TestSystemVirtualMemory.test_avail_old_percentcsfdd}ttrdnd}tj|d|dN}tjdd}tj}WdQRX|j|j d |d }|j d t |j WdQRXdS) Ncs0|dkrtjtjdjS|f||SdS)Nz /proc/meminfoa Active: 9444728 kB Active(anon): 6145416 kB Active(file): 2950064 kB Buffers: 287952 kB Cached: 4818144 kB Inactive(file): 1578132 kB Inactive(anon): 574764 kB Inactive(file): 1567648 kB MemAvailable: 6574984 kB MemFree: 2057400 kB MemTotal: 16325648 kB Shmem: 577588 kB SReclaimable: 346648 kB )rsrtrurvrw)rxryrz)r{r-r.r|0s zKTestSystemVirtualMemory.test_avail_old_comes_from_kernel..open_mockz builtins.openz__builtin__.openT)r}r~)riSdirz,inactive memory stats couldn't be determinedl ") rrr rrrrZr[rrqrrr)r]r|rrrrrr-)r{r. test_avail_old_comes_from_kernel-s  z8TestSystemVirtualMemory.test_avail_old_comes_from_kernelcsfdd}ttrdnd}tj|d|dN}tjdd}tj}WdQRX|j|j d|d }|j d t |j WdQRXdS)Ncs0|dkrtjtjdjS|f||SdS)Nz /proc/meminfoa Active: 9444728 kB Active(anon): 6145416 kB Buffers: 287952 kB Cached: 4818144 kB Inactive(file): 1578132 kB Inactive(anon): 574764 kB MemFree: 2057400 kB MemTotal: 16325648 kB Shmem: 577588 kB )rsrtrurvrw)rxryrz)r{r-r.r|Ss zHTestSystemVirtualMemory.test_avail_old_missing_fields..open_mockz builtins.openz__builtin__.openT)r}r~)ridiiIrz,inactive memory stats couldn't be determinedi}l'Ll`LG) rrr rrrrZr[rrqrrr)r]r|rrrrrr-)r{r.test_avail_old_missing_fieldsOs  z5TestSystemVirtualMemory.test_avail_old_missing_fieldscsfdd}ttrdnd}tj|d|dN}tjdd}tj}WdQRX|j|j d|d }|j d t |j WdQRXdS)NcsF|dkrtjtjdjS|dkr2ttjdn|f||SdS)Nz /proc/meminfoaT Active: 9444728 kB Active(anon): 6145416 kB Active(file): 2950064 kB Buffers: 287952 kB Cached: 4818144 kB Inactive(file): 1578132 kB Inactive(anon): 574764 kB Inactive(file): 1567648 kB MemFree: 2057400 kB MemTotal: 16325648 kB Shmem: 577588 kB SReclaimable: 346648 kB z/proc/zoneinfozno such file or directory)rsrtrurvrwIOErrorerrnoENOENT)rxryrz)r{r-r.r|qs  zJTestSystemVirtualMemory.test_avail_old_missing_zoneinfo..open_mockz builtins.openz__builtin__.openT)r}r~)ridiiIrz,inactive memory stats couldn't be determinedi}l'Ll`LG) rrr rrrrZr[rrqrrr)r]r|rrrrrr-)r{r.test_avail_old_missing_zoneinfons  z7TestSystemVirtualMemory.test_avail_old_missing_zoneinfoN)rararb)__name__ __module__ __qualname__r`rskipIfrrXrrgrrhrjrlrnrprrrrrrrr-r-r-r.rYs$      ,"rYc@s\eZdZeddZddZeddZeddZd d Z d d Z d dZ ddZ dS)TestSystemSwapMemoryc Cs,td}|j}WdQRXd|ko*d|kS)z3Return True if /proc/meminfo provides swap metrics.z /proc/meminfoNz SwapTotal:z SwapFree:)rread)rdatar-r-r.meminfo_has_swap_infos z*TestSystemSwapMemory.meminfo_has_swap_infocCs"tj}tjj}|j||tdS)N)rc)rMrJrZ swap_memoryr\r )r]rfr_r-r-r.r`s zTestSystemSwapMemory.test_totalcCs"tj}tjj}|j||tdS)N)rc)rMrKrZrr\r )r]rfr_r-r-r.rgs zTestSystemSwapMemory.test_usedcCs"tj}tjj}|j||tdS)N)rc)rMr?rZrr\r )r]rfr_r-r-r.rhs zTestSystemSwapMemory.test_freecCstjdddv}tjdd^}tjdtj}|jt|d|d}|j dt |j |j|j d|j|j dWdQRXWdQRXdS) Nzpsutil._pslinux.openT)r})rrr7rz9'sin' and 'sout' swap memory stats couldn't be determined)r rrrrrZrrrrrrsinsout)r]rrrrr-r-r.test_missing_sin_souts  z*TestSystemSwapMemory.test_missing_sin_soutcsfdd}ttrdnd}tj|d|dv}tjdd^}tjdtj}|j t |d |d }|j d t |j |j |jd |j |jd WdQRXWdQRXdS) Ncs*|dkrttjdn|f||SdS)Nz /proc/vmstatzno such file or directory)rrr)rxryrz)r{r-r.r|sz=TestSystemSwapMemory.test_no_vmstat_mocked..open_mockz builtins.openz__builtin__.openT)r}r~)rrr7rzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rrr rrrrrZrrrrrrrr)r]r|rrrrrr-)r{r.test_no_vmstat_mockeds    z*TestSystemSwapMemory.test_no_vmstat_mockedcCs|jstjdStjd}tj}WdQRXddlj}|j \}}}}}}}||9}||9}|j |j ||j |j |dS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor) rrskipr rrZrZpsutil._psutil_linuxZ _psutil_linuxZ linux_sysinforrJr?)r]rswapZcextrIrJr?Zunit_multiplierr-r-r.test_meminfo_against_sysinfos   z1TestSystemSwapMemory.test_meminfo_against_sysinfoc sDfdd}ttrdnd}tj|d|d}tjWdQRXdS)Ncs&|dkrtjdS|f||SdS)Nz /proc/meminfo)rsrt)rxryrz)r{r-r.r|s zKTestSystemSwapMemory.test_emulate_meminfo_has_no_metrics..open_mockz builtins.openz__builtin__.openT)r}r~)rrr rrZr)r]r|rrr-)r{r.#test_emulate_meminfo_has_no_metricss   z8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsN) rrr staticmethodrr`rrgrhrrrrr-r-r-r.rs rc@s&eZdZejedddZejejj d dddZ ejejj d d d d Z eje d  d ddZ eje d dddZddZddZeje dddZejedeje dddZeje dddZeje dd d!Zejedeje dd"d#Zd$S)% TestSystemCPUzunknown failure on traviscCstjj}tjdtjdd}ttt |j d}|d krL|j d|n |j d||d krn|j d |n |j d ||dkr|j d |n |j d |dS)Nz \d+\.\d+\.\d+rrU ZstealrZguestraZ guest_nice)rrr)rrr)rarr) rZ cpu_times_fieldsrefindallosunamerVrWrDr@r assertNotIn)r]rZ kernel_verZkernel_ver_infor-r-r.test_cpu_timess   zTestSystemCPU.test_cpu_timesz/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc CsVtd}|jj}WdQRXdt|krRt|jddd}|jtj|dS)Nz/sys/devices/system/cpu/online-r7) rrrRrrDr@rrZ cpu_count)r]rvaluer-r-r.*test_cpu_count_logical_w_sysdev_cpu_onlines   z8TestSystemCPU.test_cpu_count_logical_w_sysdev_cpu_onlinez/sys/devices/system/cpuz&/sys/devices/system/cpu does not existcCs0tjd}tdd|D}|jtj|dS)Nz/sys/devices/system/cpucSs g|]}tjd|dk r|qS)zcpu\d+$N)rsearch)r3r0r-r-r.r5%szITestSystemCPU.test_cpu_count_logical_w_sysdev_cpu_num..)rlistdirrrrZr)r]Zlscountr-r-r.'test_cpu_count_logical_w_sysdev_cpu_num!s z5TestSystemCPU.test_cpu_count_logical_w_sysdev_cpu_numZnprocznproc utility not availablecCs$ttd}|jtjdd|dS)Nz nproc --allT)logical)rDrrrZr)r]numr-r-r.test_cpu_count_logical_w_nproc(s z,TestSystemCPU.test_cpu_count_logical_w_nprocZlscpuzlscpu utility not availablecCs8td}tdd|jdD}|jtjdd|dS)Nzlscpu -pcSsg|]}|jds|qS)#)rA)r3r0r-r-r.r50sz@TestSystemCPU.test_cpu_count_logical_w_lscpu..r>T)r)rrr@rrZr)r]rFrr-r-r.test_cpu_count_logical_w_lscpu-sz,TestSystemCPU.test_cpu_count_logical_w_lscpuc &s2ddl}|jj}tjdtd}|j|jj|tjddd:}|j|jj|j|jd|j|j dddWdQRXt d d }|j }WdQRXt j |}tjd|dd }|j|jj|WdQRXfd d }t trdnd}tj||dd|j|jj|WdQRXWdQRXdS)Nrzpsutil._pslinux.os.sysconf)r~zpsutil._pslinux.openT)r}rz /proc/statz /proc/cpuinforb) return_valuer}cs(|jdrtjdS|f||SdS)Nz /proc/cpuinfor)rArsrt)rxryrz)r{r-r.r|Ps  z>TestSystemCPU.test_cpu_count_logical_mocked..open_mockz builtins.openz__builtin__.open)r~r})r_pslinuxZcpu_count_logicalr rrEr assertIsNoneZ call_count call_argsrrrsrtr) r]rZoriginalrrZ cpuinfo_data fake_filer|rr-)r{r.test_cpu_count_logical_mocked3s(       z+TestSystemCPU.test_cpu_count_logical_mockedc Cs.tjddd}|jtjjWdQRXdS)Nzpsutil._pslinux.openT)r})r rrrZrZcpu_count_physical)r]rr-r-r.test_cpu_count_physical_mocked[sz,TestSystemCPU.test_cpu_count_physical_mockedz not supportedc Cs,tjdgd|jtjWdQRXdS)Nzpsutil._pslinux.glob.glob)r)r rrrZcpu_freq)r]r-r-r.test_cpu_freq_no_resultbsz%TestSystemCPU.test_cpu_freq_no_resultzfails on Travisc sHfdd}gtjtjd|dd|jtdWdQRXdS)Ncs.|jdrjdgSjd|SdS)Nz&/sys/devices/system/cpu/cpufreq/policy)rAappend)pattern)flags orig_globr-r. glob_mockks    z>TestSystemCPU.test_cpu_freq_use_second_file..glob_mockzpsutil._pslinux.glob.globT)r~r}r)globr rrr)r]rr-)rrr.test_cpu_freq_use_second_filegs  z+TestSystemCPU.test_cpu_freq_use_second_filecsfdd}ttrdnd}tj||dTtjddgd8tj}|j|jd |j|jd |j|j d WdQRXWdQRXdS) NcsP|jdrtjdS|jdr(tjdS|jdr.open_mockz builtins.openz__builtin__.open)r~z glob.globz'/sys/devices/system/cpu/cpufreq/policy0)rg@@g@g@) rrr rrZrrcurrentminmax)r]r|rfreqr-)r{r.test_cpu_freq_emulate_datazs   z(TestSystemCPU.test_cpu_freq_emulate_datacsfdd}ttrdnd}dddg}tj||dRtjd |d 8tj}|j|jd |j|jd |j|j d WdQRXWdQRXdS)NcsP|jdrtjdS|jdr(tjdS|jdr.open_mockz builtins.openz__builtin__.openz'/sys/devices/system/cpu/cpufreq/policy0z'/sys/devices/system/cpu/cpufreq/policy1z'/sys/devices/system/cpu/cpufreq/policy2)r~z glob.glob)rgY@gi@gr@) rrr rrZrrrrr)r]r|rpoliciesrr-)r{r.test_cpu_freq_emulate_multi_cpus  z-TestSystemCPU.test_cpu_freq_emulate_multi_cpucsfdd}ttrdnd}dddg}tj||d6tjd |d tj}|j|jd WdQRXWdQRXfd d}ttrdnd}tj||d.tjd |d |jt tjWdQRXWdQRXdS) Ncs@|jdrttjdn$|jdr,tjdS|f||SdS)Nz/scaling_cur_freqr2z/cpuinfo_cur_freqs200000)rrrrrsrt)rxryrz)r{r-r.r|s    zGTestSystemCPU.test_cpu_freq_no_scaling_cur_freq_file..open_mockz builtins.openz__builtin__.openz'/sys/devices/system/cpu/cpufreq/policy0z'/sys/devices/system/cpu/cpufreq/policy1z'/sys/devices/system/cpu/cpufreq/policy2)r~z glob.glob)rcsD|jdrttjdn(|jdr0ttjdn|f||SdS)Nz/scaling_cur_freqr2z/cpuinfo_cur_freq)rrrr)rxryrz)r{r-r.r|s   ) rrr rrZrrr assertRaisesNotImplementedError)r]r|rrrr-)r{r.&test_cpu_freq_no_scaling_cur_freq_files   "  z4TestSystemCPU.test_cpu_freq_no_scaling_cur_freq_fileN)rrrrrrrrpathexistsrrrrrrrrrrrrrr-r-r-r.rs (  rc@s4eZdZejedddZejedddZdS)TestSystemCPUStatszfails on TraviscCs&td}tjj}|j||dddS)Nzcontext switchesi)rc)rTrZ cpu_statsZ ctx_switchesr\)r]r^r_r-r-r.test_ctx_switchess z$TestSystemCPUStats.test_ctx_switchescCs&td}tjj}|j||dddS)N interruptsi)rc)rTrZrrr\)r]r^r_r-r-r.test_interruptss z"TestSystemCPUStats.test_interruptsN)rrrrrrrrr-r-r-r.rsrc@s|eZdZddZddZeddZeje d deje d d d Z e j d ed e j dddddZddZdS)TestSystemNetworkcCsjxdtjjD]T\}}xJ|D]B}|jtjkr@|j|jt|q|jtj kr|j|jt |qWqWdS)N) rZ net_if_addrsitemsZfamilyZAF_LINKrZaddressr=r!r"r/)r]rxZaddrsZaddrr-r-r.test_net_if_addrs_ipss    z'TestSystemNetwork.test_net_if_addrs_ipscCsbx\tjjD]L\}}ytd|}Wntk r:YqX|j|jttj d|dqWdS)Nz ifconfig %sz(?i)MTU[: ](\d+)r) rZ net_if_statsrr RuntimeErrorrZmturDrr)r]rxstatsrFr-r-r.test_net_if_statssz#TestSystemNetwork.test_net_if_statscsfdd}tjddd}x|jD]\}y |}Wntk rNw$YnX|j|j|ddd |j|j|d dd |j|j|d dd |j|j|d dd |j|j |d dd |j|j |ddd |j|j |ddd |j|j |ddd q$WdS)Ncsi}td}ttjd|d|d<ttjd|d|d<ttjd|d|d<ttjd|d |d <ttjd |d|d <ttjd |d |d <ttjd|d|d<ttjd|d|d<|S)Nz ifconfig %szRX packets[: ](\d+)r packets_recvzTX packets[: ](\d+) packets_sentzerrors[: ](\d+)errinr7erroutzdropped[: ](\d+)dropindropoutz#RX (?:packets \d+ +)?bytes[: ](\d+) bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+) bytes_sent)rrDrr)ZnicrrF)rxr-r.ifconfigs z8TestSystemNetwork.test_net_io_counters..ifconfigTF)ZpernicnowraprirN)rcrrrrrrrrii) rZnet_io_countersrrr\rrrrrrrr)r]rZniorZ ifconfig_retr-)rxr.test_net_io_counterss.  z&TestSystemNetwork.test_net_io_countersZipz'ip' utility not availablezskipped on TraviscCstdj}ddtjjD}d}xL|jdD]>}|j}tjd|r2|d7}|jddj}|j||q2W|j t ||d t j ||fd dS) Nzip addrcSsg|]}d|kr|qS):r-)r3r0r-r-r.r52sz7TestSystemNetwork.test_net_if_names..rr>z^\d+:r7rz %s --- %s)rd) rrRrZrkeysr@rrrrrpprintZpformat)r]rFZnicsfoundrHrxr-r-r.test_net_if_names.s  z#TestSystemNetwork.test_net_if_namesz psutil._pslinux.socket.inet_ntop)r~zpsutil._pslinux.supports_ipv6F)rc CsRy*tjtjtj}|j|j|jdWntjk r@YnXtjdddS)N::1rZinet6)kind)r r) r!ZAF_INET6Z SOCK_STREAM addCleanupcloseZbinderrorrZnet_connections)r]Z supports_ipv6Z inet_ntopr,r-r-r.%test_net_connections_ipv6_unsupported=s z7TestSystemNetwork.test_net_connections_ipv6_unsupportedc sFfdd}ttrdnd}tj||d}tjddWdQRXdS)Ncs,|dkrtjtjdS|f||SdS)Nz/proc/net/unixaB 0: 00000003 000 000 0001 03 462170 @/tmp/dbus-Qw2hMPIU3n 0: 00000003 000 000 0001 03 35010 @/tmp/dbus-tB2X8h69BQ 0: 00000003 000 000 0001 03 34424 @/tmp/dbus-cHy80Y8O 000000000000000000000000000000000000000000000000000000 )rsStringIOrurv)rxryrz)r{r-r.r|Jsz@TestSystemNetwork.test_net_connections_mocked..open_mockz builtins.openz__builtin__.open)r~Zunix)r)rrr rrZr)r]r|rrr-)r{r.test_net_connections_mockedIs    z-TestSystemNetwork.test_net_connections_mockedN)rrrrrrrrrrrr r rrErrr-r-r-r.rs  *  rc@sNeZdZejeed deddZddZ ddZ d d Z d d Z d S)TestSystemDisksstatvfszos.statvfs() not availablecCsdd}xtjddD]|}tj|j}||j\}}}}|j|j|t|j|d krl|jd|j|ft|j |d kr|jd|j |fqWdS) NcSsztd|j}|jd}|jd|jd}|jdd\}}}}|dkrRd}t|t|t|}}}||||fS)Nzdf -P -B 1 "%s"r>rZnoner2)rrRr@poprD)rrFrGrHdevrJrKr?r-r-r.dfis   z:TestSystemDisks.test_disk_partitions_and_usage..dfF)allrizpsutil=%s, df=%si(ii(i) rZdisk_partitionsZ disk_usageZ mountpointrrJrr?failrK)r]rpartZusagerrJrKr?r-r-r.test_disk_partitions_and_usageds  z.TestSystemDisks.test_disk_partitions_and_usagecCstdd}|j}WdQRXd|krPxtjD]}|jdkr0Pq0W|jdn`tjtd}t j d|dd<}t j d dgd  }tj}|j |djdWdQRXWdQRXdS)Nz/proc/filesystemsrzfszcouldn't find any ZFS partitionz nodev zfs zpsutil._pslinux.openT)rr}z$psutil._pslinux.cext.disk_partitions /dev/sdb3/rw)rr)r#r$r"r%) rrrZrZfstyperrsrrr rr)r]rrrrm1m2rr-r-r.test_disk_partitions_mocked~s     z+TestSystemDisks.test_disk_partitions_mockedc sfdd}ttrdnd}tj||d}tjdd}|j|jd|j|jd |j|j d t |j|j d |j|j d |j|j d |j|jdt |j|jd|j|jdWdQRXdS)NcsB|dkrtjtjdS|dkr.tjtdS|f||SdS)Nz/proc/partitionszu major minor #blocks name 8 0 488386584 hda z/proc/diskstatsz+ 3 0 1 hda 2 3 4 5 6 7 8 9 10 11 12)rsrrurvr)rxryrz)r{r-r.r|s zJTestSystemDisks.test_disk_io_counters_kernel_2_4_mocked..open_mockz builtins.openz__builtin__.open)r~F)rr7rrarrNrr)rrr rrZdisk_io_countersr read_countread_merged_count read_bytes SECTOR_SIZE read_time write_countwrite_merged_count write_bytes write_time busy_time)r]r|rrrr-)r{r.'test_disk_io_counters_kernel_2_4_mockeds   z7TestSystemDisks.test_disk_io_counters_kernel_2_4_mockedc sfdd}ttrdnd}tj||d}tjdd}|j|jd|j|jd |j|j d t |j|j d |j|j d |j|j d |j|jdt |j|jd|j|jdWdQRXdS)NcsB|dkrtjtjdS|dkr.tjtdS|f||SdS)Nz/proc/partitionszu major minor #blocks name 8 0 488386584 hda z/proc/diskstatsz' 3 0 hda 1 2 3 4 5 6 7 8 9 10 11)rsrrurvr)rxryrz)r{r-r.r|s zOTestSystemDisks.test_disk_io_counters_kernel_2_6_full_mocked..open_mockz builtins.openz__builtin__.open)r~F)rr7rrarrNrr)r*r)rrr rrZr+rr,r-r.r/r0r1r2r3r4r5)r]r|rrrr-)r{r.,test_disk_io_counters_kernel_2_6_full_mockeds   z.open_mockz builtins.openz__builtin__.open)r~F)rr7rrarr)rrr rrZr+rr,r.r/r1r3r-r0r2r4r5)r]r|rrrr-)r{r./test_disk_io_counters_kernel_2_6_limited_mockeds   z?TestSystemDisks.test_disk_io_counters_kernel_2_6_limited_mockedN) rrrrrhasattrrrr r(r6r7r8r-r-r-r.ras  rc@sVeZdZddZejdddZddZdd Zd d Z d d Z ddZ ddZ dS)TestMisccCs(td}tj}|jt|t|dS)Nz boot time)rTrZ boot_timerrD)r]r^r_r-r-r.test_boot_timeszTestMisc.test_boot_timezpsutil.traceback.print_excc"stj}ttjj|dd$}|jd|jd|jdWdQRXztfdd}trbdnd }tj ||d nt t |j t t j|j t t jd d |j t t j|j t t jd d |j t t j|j t t jd d |t _|jt jd |jtt jd t jd d }|jt|d t jd d }|jttt|d ttjj|dd$}|jd|jd|jdWdQRX|jt jd |jtt jd d d |jtt jd |jtttt jd d d WdQRXWdtj|t t X|jt jddS)NrSrzcpu 0 0 0 0 0 0 0 0 0 0 zcpu0 0 0 0 0 0 0 0 0 0 0 zcpu1 0 0 0 0 0 0 0 0 0 0 cs&|jdrttjd|f||S)Nz/proczrejecting access for test)rArrr)rxryrz)r{r-r.r|s  z4TestMisc.test_no_procfs_on_import..open_mockz builtins.openz__builtin__.open)r~T)percpurzcpu 1 0 0 0 0 0 0 0 0 0 zcpu0 1 0 0 0 0 0 0 0 0 0 zcpu1 1 0 0 0 0 0 0 0 0 0 z/proc)tempfilemkdtemprrrr;writerr rrrZrrrZ cpu_percentZcpu_times_percent PROCFS_PATHrsumrWZassertNotEqualshutilZrmtree)r]tbZ my_procfsrr|rZper_cpu_percentZper_cpu_times_percentr-)r{r.test_no_procfs_on_importsL        (  z!TestMisc.test_no_procfs_on_importc Cs.tjddd}|jttjjWdQRXdS)Nzpsutil._pslinux.openT)r})r rrrrZrr;)r]rr-r-r.test_boot_time_mockedDs  zTestMisc.test_boot_time_mockedcCstjdd gd}|jtjd jd WdQRXtjddgd}|jtjd jd WdQRXtjddgd}|jtjd jd WdQRXdS)Nzpsutil._pslinux.cext.users giampaolopts/2:0hATr)rrZ localhost:0.0foo)rGrHrIrJTr)rGrHrKrJTr)rGrHrLrJTr)r rrrZZusershost)r]rr-r-r.test_users_mockedKs     zTestMisc.test_users_mockedc Cstj}z|t_|jttj|jttj|jttjdd|jttj|jttj |jttj |jttj |jttj |jttj |jtjtjWddt_tj|XdS)NT)r=z/proc)r>r?rZrArrr[rr;rrrr+rZ NoSuchProcessProcessrrmdir)r]Ztdirr-r-r.test_procfs_path_szTestMisc.test_procfs_pathc sHfdd}gttrdnd}tj||dtjWdQRXdS)NcsJtrt|tr|j}d|kr6jdttjdn|f||SdS)NZhw_sector_sizer2)r isinstancer decoderrrr)rxryrz)flagr{r-r.r|us  z1TestMisc.test_sector_size_mock..open_mockz builtins.openz__builtin__.open)r~)rrr rrZr+)r]r|rr-)rTr{r.test_sector_size_mockrs  zTestMisc.test_sector_size_mockc CsZt}|jz.open_mockz builtins.openz__builtin__.open)r~)rrr r)r]r|rr-)r{r.test_pid_exists_no_proc_statuss   z'TestMisc.test_pid_exists_no_proc_statusN) rrrr<r rrErFrNrQrUr]r_r-r-r-r.r:s>r:z no batteryc@seZdZejed dddZejed dddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZdS)TestSensorsBatteryZacpizacpi utility not availablecCsDtd}t|jddjjdd}tjj}|j||dddS)Nzacpi -b,r7%r2)rc) rrDr@rRreplacerZsensors_batterypercentr\)r]rFZ acpi_valuer_r-r-r. test_percents zTestSensorsBattery.test_percentcCsTtd}d|jkrtjdSd|kr,d}nd|jddk}|jtjj|dS) Nzacpi -bunknownzacpi output not reliablezdischarging at zero rateTZChargingr>r) rlowerrrr@rrZrd power_plugged)r]rFZpluggedr-r-r.test_power_pluggeds  z%TestSensorsBattery.test_power_pluggedc s`fdd}ttrdnd}tj||d,}|jtjjd|jtjjtj WdQRXdS)Ncs2|jds|jdrtjdS|f||SdS)Nz AC0/onlinez AC/online1)rrsrt)rxryrz)r{r-r.r|s z@TestSensorsBattery.test_emulate_power_plugged..open_mockz builtins.openz__builtin__.open)r~T) rrr rrrZrdriZsecsleftZPOWER_TIME_UNLIMITED)r]r|rrr-)r{r.test_emulate_power_pluggeds  z-TestSensorsBattery.test_emulate_power_pluggedc sLfdd}ttrdnd}tj||d}|jtjjdWdQRXdS)NcsN|jds|jdr"ttjdn(|jdr:tjtdS|f||SdS)Nz AC0/onlinez AC/onliner2z/statusZcharging)rrrrrsrr)rxryrz)r{r-r.r|s  zBTestSensorsBattery.test_emulate_power_plugged_2..open_mockz builtins.openz__builtin__.open)r~T)rrr rrrZrdri)r]r|rrr-)r{r.test_emulate_power_plugged_2s   z/TestSensorsBattery.test_emulate_power_plugged_2c sLfdd}ttrdnd}tj||d}|jtjjdWdQRXdS)Ncs2|jds|jdrtjdS|f||SdS)Nz AC0/onlinez AC/online0)rrsrt)rxryrz)r{r-r.r|s zDTestSensorsBattery.test_emulate_power_not_plugged..open_mockz builtins.openz__builtin__.open)r~F)rrr rrrZrdri)r]r|rrr-)r{r.test_emulate_power_not_pluggeds   z1TestSensorsBattery.test_emulate_power_not_pluggedc sLfdd}ttrdnd}tj||d}|jtjjdWdQRXdS)NcsN|jds|jdr"ttjdn(|jdr:tjtdS|f||SdS)Nz AC0/onlinez AC/onliner2z/statusZ discharging)rrrrrsrr)rxryrz)r{r-r.r|s  zFTestSensorsBattery.test_emulate_power_not_plugged_2..open_mockz builtins.openz__builtin__.open)r~F)rrr rrrZrdri)r]r|rrr-)r{r. test_emulate_power_not_plugged_2s   z3TestSensorsBattery.test_emulate_power_not_plugged_2c sJfdd}ttrdnd}tj||d}|jtjjWdQRXdS)NcsJ|jds|jdr"ttjdn$|jdr6tjdS|f||SdS)Nz"/sys/class/power_supply/AC0/onlinez!/sys/class/power_supply/AC/onliner2z#/sys/class/power_supply/BAT0/statuss???)rArrrrsrt)rxryrz)r{r-r.r|s     zETestSensorsBattery.test_emulate_power_undetermined..open_mockz builtins.openz__builtin__.open)r~)rrr rrrZrdri)r]r|rrr-)r{r.test_emulate_power_undetermineds   z2TestSensorsBattery.test_emulate_power_undeterminedc sHfdd}ttrdnd}tj||d}|jtjWdQRXdS)Ncs6|jds|jdr"ttjdn|f||SdS)Nz'/sys/class/power_supply/BAT0/energy_nowz'/sys/class/power_supply/BAT0/charge_nowr2)rArrr)rxryrz)r{r-r.r|s  z@TestSensorsBattery.test_emulate_no_base_files..open_mockz builtins.openz__builtin__.open)r~)rrr rrrZrd)r]r|rrr-)r{r.test_emulate_no_base_filess   z-TestSensorsBattery.test_emulate_no_base_filesc sLfdd}ttrdnd}tj||d}|jtjjdWdQRXdS)Ncs(|jdrtjdS|f||SdS)Nz(/sys/class/power_supply/BAT0/energy_fullrn)rArsrt)rxryrz)r{r-r.r|&s  z@TestSensorsBattery.test_emulate_energy_full_0..open_mockz builtins.openz__builtin__.open)r~r)rrr rrrZrdre)r]r|rrr-)r{r.test_emulate_energy_full_0$s   z-TestSensorsBattery.test_emulate_energy_full_0c sLfdd}ttrdnd}tj||d}|jtjjdWdQRXdS)NcsRd}d}|j|s|j|r*ttjdn$|jdr>tjdS|f||SdS)Nz(/sys/class/power_supply/BAT0/energy_fullz(/sys/class/power_supply/BAT0/charge_fullr2z%/sys/class/power_supply/BAT0/capacitys88)rArrrrsrt)rxryrzZ energy_fullZ charge_full)r{r-r.r|5s  zHTestSensorsBattery.test_emulate_energy_full_not_avail..open_mockz builtins.openz__builtin__.open)r~X)rrr rrrZrdre)r]r|rrr-)r{r."test_emulate_energy_full_not_avail2s   z5TestSensorsBattery.test_emulate_energy_full_not_availc s:fdd}tjjtjd|d}tjWdQRXdS)Ncs|jdrdS|SdS)Nz"/sys/class/power_supply/AC0/onlineF)rA)rx)orig_path_existsr-r.path_exists_mockGs zGTestSensorsBattery.test_emulate_no_ac0_online..path_exists_mockzpsutil._pslinux.os.path.exists)r~)rrrr rrZrd)r]rwrr-)rvr.test_emulate_no_ac0_onlineEs   z-TestSensorsBattery.test_emulate_no_ac0_onlinec sJfdd}ttrdnd}tj||d}|jtjjWdQRXdS)Ncs@|jds|jds|jdr,ttjdn|f||SdS)Nz!/sys/class/power_supply/AC/onlinez"/sys/class/power_supply/AC0/onlinez#/sys/class/power_supply/BAT0/statusr2)rArrr)rxryrz)r{r-r.r|Us    z;TestSensorsBattery.test_emulate_no_power..open_mockz builtins.openz__builtin__.open)r~)rrr rrrZrdri)r]r|rrr-)r{r.test_emulate_no_powerSs   z(TestSensorsBattery.test_emulate_no_powerN)rrrrrrrfrjrlrmrorprqrrrsrurxryr-r-r-r.r`s r`c@s(eZdZejedddZddZdS)TestSensorsTemperatureszunreliable on TRAVIScsxfdd}ttrdnd}tj||dD}tjdd,}|jtji|j dt |d j WdQRXWdQRXdS) Ncs,|jdrttjdn|f||SdS)NZ_inputr2)rOSErrorrZEIO)rxryrz)r{r-r.r|is zATestSensorsTemperatures.test_emulate_eio_error..open_mockz builtins.openz__builtin__.open)r~T)rZignoringr) rrr rrrrrZsensors_temperaturesrrr)r]r|rrrr-)r{r.test_emulate_eio_errorgs  z.TestSensorsTemperatures.test_emulate_eio_errorcsfdd}ttrdnd}tj||djtjddgdNtjd d }|j|jd |j|jd |j|j d |j|j dWdQRXWdQRXdS)Ncs|jdrtjtdS|jdr0tjtdS|jdrDtjdS|jdrXtjdS|jd rltjd S|f||SdS) Nz/namerxz /temp1_labellabelz /temp1_inputs30000z /temp1_maxs40000z /temp1_crits50000)rrsrrrt)rxryrz)r{r-r.r|xs        z.open_mockz builtins.openz__builtin__.open)r~z glob.globz/sys/class/hwmon/hwmon0/temp1)rrxrr~g>@gD@gI@) rrr rrZr|rr~rZhighZcritical)r]r|rZtempr-)r{r.test_emulate_dataws   z)TestSensorsTemperatures.test_emulate_dataN)rrrrrrr}rr-r-r-r.rzdsrzc@seZdZddZdS)TestSensorsFanscsfdd}ttrdnd}tj||dNtjddgd2tjd d }|j|jd |j|jd WdQRXWdQRXdS) Ncs\|jdrtjtdS|jdr0tjtdS|jdrHtjtdS|f||SdS)Nz/namerxz /fan1_labelr~z /fan1_inputZ2000)rrsrr)rxryrz)r{r-r.r|s   z4TestSensorsFans.test_emulate_data..open_mockz builtins.openz__builtin__.open)r~z glob.globz/sys/class/hwmon/hwmon2/fan1)rrxrr~i) rrr rrZZ sensors_fansrr~r)r]r|rZfanr-)r{r.rs   z!TestSensorsFans.test_emulate_dataN)rrrrr-r-r-r.rsrc@seZdZddZeZddZejedddZ dd Z d d Z d d Z ddZ ddZddZddZddZddZeje dddZddZdd Zd!d"Zd#S)$ TestProcesscCs ttdS)N)rr)r]r-r-r.setUpszTestProcess.setUpcCstjdt}t|}|jttdddttj|j }t j d|j }|j dd}|j|jtdd |Dd d |j|jtd d |Dd d |j|jtd d |Dd d dS)Nzk import time with open("%s", "w") as f: time.sleep(10) cSs tjdS)NrU)rrr-r-r-r.sz3TestProcess.test_memory_full_info..z'%s' not in retg?F)ZgroupedcSsg|]}|j|jqSr-)Z private_dirtyZ private_clean)r3r0r-r-r.r5sz5TestProcess.test_memory_full_info..i)rccSsg|] }|jqSr-)pss)r3r0r-r-r.r5scSsg|] }|jqSr-)r)r3r0r-r-r.r5s)rurvrr rrrrZrOpidtimeZsleepZmemory_full_info memory_mapsr\ZussrBrr)r]srcZsprocr[Zmemmapsr-r-r.test_memory_full_infos      z!TestProcess.test_memory_full_infozunreliable on PYPYc;CsRdd}ttd|j|jdWdQRXttd|j|jdWdQRXttd|j|jdWdQRXttd|j|jdWdQRXttd|j|jdWdQRXttd|j|jdWdQRXtrNttttd |j|jdWdQRXttttd |j|jdWdQRXdS) NcSs\tj}tjd}x:x4|jD](}|jtjjtkr:|Stj|kr Pq WqWtddS)Nrztimeout looking for test file) rZrOr open_filesrrabspathrr)r[Z giveup_atfiler-r-r. get_test_files   z7TestProcess.test_open_files_mode..get_test_filerr!rzr+zw+za+r0zx+)rrrmoderr)r]rr-r-r.test_open_files_modes(        z TestProcess.test_open_files_modecCstj}|j}tjvt|jdt|tjdt t j dd}|j}WdQRXtjdt t j dd}|j |jgWdQRXWdQRXdS)Nzlen(ret) != %izpsutil._pslinux.os.readlinkr2)r~)rZrOrr>NamedTemporaryFilerrr rr{rrZEINVALr)r]r[filesrr-r-r.test_open_files_file_gones  z%TestProcess.test_open_files_file_gonecCsrtj}|j}tjPt|jdt|tr6dnd}tj |t t j dd}|j}WdQRXWdQRXdS)Nzlen(ret) != %iz builtins.openz__builtin__.openr2)r~) rZrOrr>rrrrr rrrr)r]r[rrrr-r-r.test_open_files_fd_gones  z#TestProcess.test_open_files_fd_gonec Cs8tjdid }|jtjjtjjWdQRXdS)Nz)psutil._pslinux._psposix.get_terminal_map)r) r rrrZrrOrr^Zterminal)r]rr-r-r.test_terminal_mockeds z TestProcess.test_terminal_mockedcCstj}tjtd}tjd|dd}|j|jddgWdQRXtjtd}tjd|dd}|j|jdddgWdQRXdS) Nzfoobarzpsutil._pslinux.openT)rr}rLbarz foobarr2) rZrOrsrrr rrcmdline)r]r[rrr-r-r.test_cmdline_mocked%s   zTestProcess.test_cmdline_mockedcCstj}tjtd}tjd|dd}|j|jddgWdQRXtjtd}tjd|dd}|j|jdddgWdQRXdS) Nzfoo bar zpsutil._pslinux.openT)rr}rLrz foo bar r2) rZrOrsrrr rrr)r]r[rrr-r-r.test_cmdline_spaces_mocked3s   z&TestProcess.test_cmdline_spaces_mockedc CsFtjddd.|jtjjd|jtjjdWdQRXdS)Nzpsutil._pslinux.os.readlinkz/home/foo (deleted))rz /home/foo)r rrrZrOexecwd)r]r-r-r.!test_readlink_path_deleted_mockedAs z-TestProcess.test_readlink_path_deleted_mockedcsfdd}ttrdnd}tj||d}tjj}|j|gWdQRXfdd}tj||d|jtj tjjWdQRXdS)Ncs4|jdtjr ttjdn|f||SdS)Nz /proc/%s/taskr2)rArr^rrr)rxryrz)r{r-r.r|Lsz2TestProcess.test_threads_mocked..open_mockz builtins.openz__builtin__.open)r~cs4|jdtjr ttjdn|f||SdS)Nz /proc/%s/taskr2)rArr^rrZEPERM)rxryrz)r{r-r.r|[s) rrr rrZrOrWrr AccessDenied)r]r|rrrr-)r{r.test_threads_mockedGs    zTestProcess.test_threads_mockedcCstjdttjddn}tjdtjdddL}tjj}|j |dtjddd|j tj tjjWdQRXWdQRXWdQRXdS) Nzpsutil._pslinux.readlinkr2)r~zpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsF)r) r rr{rrrZrrOrrr ZombieProcess)r]r&r'rr-r-r.test_exe_mockedds   zTestProcess.test_exe_mockedcsrfdd}ttrdnd}tj||d>}tj}|jt}|jWdQRX|j |j j t j WdQRXdS)Ncs4|jdtjr ttjdn|f||SdS)Nz/proc/%s/smapsr2)rArr^rrr)rxryrz)r{r-r.r||sz.TestProcess.test_issue_1014..open_mockz builtins.openz__builtin__.open)r~) rrr rrZrOrrrr exceptionrr)r]r|rrr[errr-)r{r.test_issue_1014ys   zTestProcess.test_issue_1014z not supportedcCstjdttjdd:}tj}|j|jtj }|j tj WdQRXWdQRX|j |j j|j|j |j j|jdS)Nz"psutil._pslinux.cext.linux_prlimitr2)r~)r rr{rZENOSYSrZrOrxrrZrlimitZ RLIMIT_NOFILErrr)r]rr[excr-r-r.test_rlimit_zombies zTestProcess.test_rlimit_zombiecCs|tjdttjdd6}tj}|j|jtj }|j WdQRXWdQRX|j |j j |j |j |j j|jdS)Nzpsutil._pslinux.os.readlinkr2)r~)r rr{rrrZrOrxrrrrrr)r]rr[rr-r-r.test_cwd_zombies zTestProcess.test_cwd_zombiec sddlm}fdd}ttr$dnd}tj||dtj}|j|j d|j|j tj |j|j d |j|j d |tj|j}|j|jd ||j|jd ||j|jd ||j|jd||j|jd WdQRXdS)Nr) CLOCK_TICKSc's|jdtjrxddddddddddddddddd ddddd ddddddddddddddddd g'}tjd j|jS|f||SdS) Nz /proc/%s/stat0z(cat)Z123456rQ)rArr^rsrtr;rw)rxryrz)r{r-r.r|sTz5TestProcess.test_stat_file_parsing..open_mockz builtins.openz__builtin__.open)r~catr7rrrarrN)rrrrr rrZrOrrxstatusZ STATUS_ZOMBIEppidZ create_timer;rusersystem children_userchildren_systemZcpu_num)r]rr|rr[Zcpur-)r{r.test_stat_file_parsings"  / z"TestProcess.test_stat_file_parsingc sfdd}ttrdnd}tj||dtj}|j|jjd|j|jj d|j|j d|j }|j|j d |j|j d |j|jd |j}|j|j d |j|j d |j|jd|j|jjttddWdQRXdS)Ncs:|jdtjr&tjtjdjS|f||SdS)Nz/proc/%s/statusa+ Uid: 1000 1001 1002 1003 Gid: 1004 1005 1006 1007 Threads: 66 Cpus_allowed: f Cpus_allowed_list: 0-7 voluntary_ctxt_switches: 12 nonvoluntary_ctxt_switches: 13)rArr^rsrtrurvrw)rxryrz)r{r-r.r|s z7TestProcess.test_status_file_parsing..open_mockz builtins.openz__builtin__.open)r~rb Biiiiiirr*)rrr rrZrOrnum_ctx_switches voluntary involuntary num_threadsuidsrealZ effectiveZsavedgids_proc_get_eligible_cpuslistrange)r]r|rr[rrr-)r{r.test_status_file_parsings"  z$TestProcess.test_status_file_parsingN)rrrrZtearDownrrrr rrrrrrrrrrr rrrrr-r-r-r.rs"$ Brc@sreZdZdZeddZddZddZdd Zd d Z d d Z ddZ ddZ e ddZddZddZdS)TestProcessAgainstStatusa /proc/pid/stat and /proc/pid/status have many values in common. Whenever possible, psutil uses /proc/pid/stat (it's faster). For all those cases we check that the value found in /proc/pid/stat (by psutil) matches the one found in /proc/pid/status. cCstj|_dS)N)rZrOproc)clsr-r-r. setUpClasssz#TestProcessAgainstStatus.setUpClasscCs|tjjd|jj^}xJ|D]B}|j}|j|r|jdd}yt|St k r\|SXqWt d|WdQRXdS)Nz/proc/%s/status rz can't find %r) rZ _psplatform open_textrrrRrA partitionrDrE)r]Z linestartrrHrr-r-r.read_status_files   z)TestProcessAgainstStatus.read_status_filecCs |jd}|j|jj|dS)NzName:)rrrrx)r]rr-r-r. test_name!s z"TestProcessAgainstStatus.test_namecCsH|jd}||jdd|jd}|jdd}|j|jj|dS)NzState:(r7)rQr)rfindrfindrcrrr)r]rr-r-r. test_status%s  z$TestProcessAgainstStatus.test_statuscCs |jd}|j|jj|dS)NzPPid:)rrrr)r]rr-r-r. test_ppid+s z"TestProcessAgainstStatus.test_ppidcCs |jd}|j|jj|dS)NzThreads:)rrrr)r]rr-r-r.test_num_threads/s z)TestProcessAgainstStatus.test_num_threadscCs:|jd}ttt|jdd}|j|jj|dS)NzUid:r7r)rrVrWrDr@rrr)r]rr-r-r. test_uids3s z"TestProcessAgainstStatus.test_uidscCs:|jd}ttt|jdd}|j|jj|dS)NzGid:r7r)rrVrWrDr@rrr)r]rr-r-r. test_gids8s z"TestProcessAgainstStatus.test_gidscCs@|jd}|j|jjj||jd}|j|jjj|dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)rrrrrr)r]rr-r-r.test_num_ctx_switches=s  z.TestProcessAgainstStatus.test_num_ctx_switchescCsN|jd}dt|krJtt|jd\}}|j|jjtt ||ddS)NzCpus_allowed_list:rr7) rrrWrDr@rrZ cpu_affinityrr)r]rZmin_Zmax_r-r-r.test_cpu_affinityDs   z*TestProcessAgainstStatus.test_cpu_affinityc Cs>|jd}tjd}|jjjWdQRXdt|kr:ndS)NzCpus_allowed_list:zpsutil._pslinux.per_cpu_timesr)rr rrrrr)r]rrr-r-r.test_cpu_affinity_eligible_cpusKs    z8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)rrr__doc__ classmethodrrrrrrrrrrrrr-r-r-r.rs  rc@s,eZdZddZddZddZddZd S) TestUtilsc Cs*tjjt}|j|jdWdQRXdS)NZrt)rZrr__file__rr)r]rr-r-r.test_open_text]szTestUtils.test_open_textc Cs*tjjt}|j|jdWdQRXdS)Nr)rZrrrrr)r]rr-r-r.test_open_binaryaszTestUtils.test_open_binaryc Cs2tjddd}|jtjjddWdQRXdS)Nz os.readlinkz foo (deleted))rrrL)r rrrZrreadlink)r]rr-r-r. test_readlinkeszTestUtils.test_readlinkc Cs|tjjt}t|d}|jdWdQRX|jtjj tddd|jtjj tddd|jtjj tdd d d dS) NZwtzfoo F)ZbinaryrLTsfooz??r)Zfallback) rrrrrr@rrZrr)r]Zfnamerr-r-r.test_catjs  zTestUtils.test_catN)rrrrrrrr-r-r-r.rZsr__main__)KrZ __future__rrBr$rrrsrr rrCr!r)r>rurrrZrZpsutil._compatrrZ psutil.testsrrrr r r r r rrrrrrrrrrrrrrdirnamerZHEREr(Z SIOCGIFCONFr9r/r/r=rMrPrTrXrZTestCaserYrrrrrr:r`rzrrrrrr-r-r-r.s                             k T  t  .  7 -  Y R