U =_^@sdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ej+,ej+-e.Z/dZ0dZ1dZ2dZ3d Z4erd!Z5ed" Z6d#d$Z7d%d&Z8d'd(Z9d)d*Z:d+d,Z;d-d.Zd3d4Z?ej@d5d6ZAej@d7d8ZBe)Ce d9Gd:d;d;eZDe)Ce d9Gdd?d?eZFe)Ce d9Gd@dAdAeZGe)Ce d9GdBdCdCeZHe)Ce d9GdDdEdEeZIe)Ce d9GdFdGdGeZJe)Ce d9GdHdIdIeZKe)Ce d9GdJdKdKeZLe)Ce d9GdLdMdMeZMe)Ce d9GdNdOdOeZNe)Ce d9GdPdQdQeZOe)Ce d9GdRdSdSeZPe)Ce d9GdTdUdUeZQe)Ce d9GdVdWdWeZRe)Ce d9e)Ce dXGdYdZdZeZSe)Ce d9Gd[d\d\eZTe)Ce d9Gd]d^d^eZUe)Ce d9Gd_d`d`eZVe)Ce d9GdadbdbeZWe)Ce d9GdcddddeZXe)Ce d9GdedfdfeZYeZdgkrddhl[m\Z\e\e.dS)izLinux specific tests.)divisionN)LINUX) basestring)FileNotFoundError)PY3)u) call_until)GLOBAL_TIMEOUT) HAS_BATTERY) HAS_CPU_FREQ)HAS_GETLOADAVG) HAS_RLIMIT)mock)PsutilTestCase)PYPY) reload_module)retry_on_failure) safe_rmpath)sh)skip_on_not_implemented) ThreadTask)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)unittest)whichiii'iiiz/sys/class/hwmon/hwmon*c Cs|ddl}|dd}tr"t|d}ttjtj}t|6t| | t t d|ddW5QRSQRXdSNrascii256s)fcntlrbytessocketAF_INET SOCK_DGRAM contextlibclosing inet_ntoaioctlfileno SIOCGIFADDRstructpackifnamer!sr1J/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_linux.pyget_ipv4_addressBs     r3c Cs|ddl}|dd}tr"t|d}ttjtj}t|6t| | t t d|ddW5QRSQRXdSr)r!rr"r#r$r%r&r'r(r)r*SIOCGIFNETMASKr,r-r.r1r1r2get_ipv4_netmaskOs     r5c Cs|ddl}|dd}tr"t|d}ttjtj}t|6t| | t t d|ddW5QRSQRXdSr)r!rr"r#r$r%r&r'r(r)r*SIOCGIFBRDADDRr,r-r.r1r1r2get_ipv4_broadcast\s     r7c Cstdd8}|D]}|}|d|krq>qtd|W5QRX|d}g}tdt|dD]}||||dqdd|}t tj |}t tj |S)Nz/proc/net/if_inet6rtzcould not find interface %rr:) open readlinessplit ValueErrorrangelenappendjoinr#Z inet_ptonAF_INET6 inet_ntop) r/flinefieldsZ unformattedgroupsiZ formattedZpackedr1r1r2get_ipv6_addressis    rKc sddl}|dd}tr"t|d}ttjtj}t|l|| t t d|}trfddnddl }|jdfdd |d d Ddd W5QRSQRXdS) NrrrrcSs|SNr1xr1r1r2ordszget_mac_address..ordcsg|]}d|qS)z%02x:r1).0charrOr1r2 sz#get_mac_address..r r9)r!rr"r#r$r%r&r'r)r* SIOCGIFHWADDRr,r- __builtin__rOrC)r/r!r0inforWr1rSr2get_mac_addresszs      rYcCs|tdddid}|d}|D]F}|dr|\}}}}tdd}|t|t|t|Sqtd d|d S) zQParse 'free' cmd and return swap memory's s total, used and free values. free -bLANGC.UTF-8env ZSwapfreeztotal used freez&can't find 'Swap' in 'free' output: %sN)rr> startswith collections namedtupleintr?rC)outlinesrG_totalusedr`ntr1r1r2 free_swaps    rkcCstdddid}|d}|D]P}|drdd|d d D\}}}}td d }||||||Sqtd d|dS)zSParse 'free' cmd and return physical memory's total, used and free values. rZr[r\r]r_ZMemcSsg|] }t|qSr1)rdrQrNr1r1r2rTsz free_physmem..r`ztotal used free shared outputz%can't find 'Mem' in 'free' output: %sN)rr>rarbrcr?rC)rerfrGrhrir`sharedrjr1r1r2 free_physmems    rpcCsVtdddid}|dD]*}|}||krt|ddSqtd|dS) Nz vmstat -sr[r\r]r_ rz can't find %r in 'vmstat' output)rr>striprdr?)statrerGr1r1r2vmstats rtcCs:td}d|krtdttt|ddS)Nzfree -VZUNKNOWNzcan't determine free versionr9.)rrrrSkipTesttuplemaprdr>)rer1r1r2get_free_version_infos  ryc #sFfdd}ttrdnd}tj|d|d }|VW5QRXdS)zMock open() builtin and forces it to return a certain `content` on read() if the path being opened matches `for_path`. csL|kr8tr,ttr tStSqHtSn|f||SdSrL)r isinstancerioStringIOBytesIOnameargskwargscontentfor_path orig_openr1r2 open_mocks    z$mock_open_content..open_mock builtins.open__builtin__.openTcreate side_effectNr<rrpatch)rrr patch_pointmr1rr2mock_open_contents   rc #sFfdd}ttrdnd}tj|d|d }|VW5QRXdS)zZMock open() builtin and raises `exc` if the path being opened matches `for_path`. cs"|krn|f||SdSrLr1r~excrrr1r2rsz&mock_open_exception..open_mockrrTrNr)rrrrrr1rr2mock_open_exceptions  rz LINUX onlyc@seZdZddZeddZeddZeddZed d Zed d Z ed dZ eddZ ddZ eddZ ddZddZddZddZdS)TestSystemVirtualMemorycCs&tdd}tj}|||dS)Nz total memory)rtpsutilvirtual_memoryrhassertAlmostEqualselfZ vmstat_value psutil_valuer1r1r2 test_totals  z"TestSystemVirtualMemory.test_totalcCsLtdkr|dt}|j}tj}|j||td|||jfddS)N)r zold free version %s %s %sdeltamsg) ryZskipTestrprirrrroutputrr` free_valuerr1r1r2 test_useds   z!TestSystemVirtualMemory.test_usedcCs*tdd}tj}|j||tddS)Nz free memoryrr)rtrrr`rrrr1r1r2 test_frees  z!TestSystemVirtualMemory.test_freecCs*tdd}tj}|j||tddS)Nz buffer memoryrr)rtrrbuffersrrrr1r1r2 test_bufferss  z$TestSystemVirtualMemory.test_bufferscCs*tdd}tj}|j||tddS)Nz active memoryrr)rtrractiverrrr1r1r2 test_actives  z#TestSystemVirtualMemory.test_activecCs*tdd}tj}|j||tddS)Nzinactive memoryrr)rtrrinactiverrrr1r1r2 test_inactives  z%TestSystemVirtualMemory.test_inactivecCsJt}|j}|dkrtdtj}|j||td|||jfddS)Nrz%free does not support 'shared' columnrr) rprorrvrrrrrrr1r1r2 test_shared#s  z#TestSystemVirtualMemory.test_sharedcCshtd}|d}d|dkr*tdn:t|dd}tj}|j||t d|||fd dS) NrZr_ availablerz(free does not support 'available' columnrmr9rr) rr>rrvrdrrrrr)rrerfrrr1r1r2test_available.s     z&TestSystemVirtualMemory.test_availablec CsdtdtdD}tjdd*}tdt}|j sDt | t |d|d}|j dslt |d t|j|d t|j|d t|j|d t|j|d t|j|dt|j|dt|j| |jd| |jd| |jd| |jd| |jd| |jd| |jdW5QRXW5QRXdS)N /proc/meminfoap 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 Trecordalwaysrmrpsutil/_pslinux.pyz#memory stats couldn't be determinedcachedrorrrr)rtextwrapdedentencodewarningscatch_warnings simplefilterrrcalledAssertionError assertEqualrAfilenameendswithassertInstrmessagerrrrorrslabrrwsretwr1r1r2test_warnings_on_misses=s:    z/TestSystemVirtualMemory.test_warnings_on_missesc Csddlm}ddlm}i}|d0}|D]$}|}t|dd||d<q*W5QRX||}d|kr|d}t|||d} || d dS) Nr)calculate_avail_vmem) open_binaryrrmrs MemAvailable:dr)psutil._pslinuxrrr>rdabsZ assertLess) rrrZmemsrFrGrHabZ diff_percentr1r1r2test_avail_old_percentds   $z.TestSystemVirtualMemory.test_avail_old_percentc CsvtdtdX}tjdd}t}W5QRX|js@t | |j d|d}| dt |jW5QRXdS)NraL 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 Trl "r,inactive memory stats couldn't be determinedrrrrrrrrrrrrrrrrr1r1r2 test_avail_old_comes_from_kernelws  z8TestSystemVirtualMemory.test_avail_old_comes_from_kernelc CsvtdtdX}tjdd}t}W5QRX|js@t | |j d|d}| dt |jW5QRXdS)Nra 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 Tr`LGrrrrr1r1r2test_avail_old_missing_fieldss   z5TestSystemVirtualMemory.test_avail_old_missing_fieldsc CstdtdltdttjdNtj dd6}t }| |j d|d}|d t|jW5QRXW5QRXW5QRXdS) NraT 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/zoneinfono such file or directoryTrrrr)rrrrrIOErrorerrnoENOENTrrrrrrrrr)rrrrr1r1r2test_avail_old_missing_zoneinfos&  z7TestSystemVirtualMemory.test_avail_old_missing_zoneinfoc sfdd}ttrdnd}tj|d|d}t}|js@t||j d||j d||j d ||j d ||j d ||jd ||jd ||jd||jdW5QRXdS)Ncs0|dkrttdS|f||SdS)Nra= MemTotal: 100 kB MemFree: 2 kB MemAvailable: 3 kB Buffers: 4 kB Cached: 5 kB SwapCached: 6 kB Active: 7 kB Inactive: 8 kB Active(anon): 9 kB Inactive(anon): 10 kB Active(file): 11 kB Inactive(file): 12 kB Unevictable: 13 kB Mlocked: 14 kB SwapTotal: 15 kB SwapFree: 16 kB Dirty: 17 kB Writeback: 18 kB AnonPages: 19 kB Mapped: 20 kB Shmem: 21 kB Slab: 22 kB SReclaimable: 23 kB SUnreclaim: 24 kB KernelStack: 25 kB PageTables: 26 kB NFS_Unstable: 27 kB Bounce: 28 kB WritebackTmp: 29 kB CommitLimit: 30 kB Committed_AS: 31 kB VmallocTotal: 32 kB VmallocUsed: 33 kB VmallocChunk: 34 kB HardwareCorrupted: 35 kB AnonHugePages: 36 kB ShmemHugePages: 37 kB ShmemPmdMapped: 38 kB CmaTotal: 39 kB CmaFree: 40 kB HugePages_Total: 41 kB HugePages_Free: 42 kB HugePages_Rsvd: 43 kB HugePages_Surp: 44 kB Hugepagesize: 45 kB DirectMap46k: 46 kB DirectMap47M: 47 kB DirectMap48G: 48 kB )r{r}rrrr~rr1r2rs3zETestSystemVirtualMemory.test_virtual_memory_mocked..open_mockrrTriiipiTii iX )r<rrrrrrrrrhr`rrrorrrr)rrrrmemr1rr2test_virtual_memory_mockeds 7  z2TestSystemVirtualMemory.test_virtual_memory_mockedN)__name__ __module__ __qualname__rrrrrrrrrrrrrrrr1r1r1r2rs,       ' rc@s\eZdZeddZddZeddZeddZd d Z d d Z d dZ ddZ dS)TestSystemSwapMemoryc Cs,td}|}W5QRXd|ko*d|kS)z3Return True if /proc/meminfo provides swap metrics.rz SwapTotal:z SwapFree:)r<read)rFdatar1r1r2meminfo_has_swap_infos z*TestSystemSwapMemory.meminfo_has_swap_infocCs"tj}tj}|j||tdSNr)rkrhr swap_memoryrrrrrr1r1r2r$s zTestSystemSwapMemory.test_totalcCs"tj}tj}|j||tdSr)rkrirrrrrr1r1r2r*s zTestSystemSwapMemory.test_usedcCs"tj}tj}|j||tdSr)rkr`rrrrrr1r1r2r1s zTestSystemSwapMemory.test_freec Cstjddd}tjddx}tdt}|js:t| t |d|d}|j dsbt| d t|j| |jd| |jdW5QRXW5QRXdS) Npsutil._common.openTrrrrmrrz9'sin' and 'sout' swap memory stats couldn't be determined)rrrrrrrrrrrArrrrrsinsoutrr1r1r2test_missing_sin_sout8s  z*TestSystemSwapMemory.test_missing_sin_soutc Cstdttjd}tjddx}tdt}|j s>t | t |d|d}|j dsft |d t|j| |jd| |jdW5QRXW5QRXdS) Nz /proc/vmstatrTrrrmrrzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rrrrrrrrrrrrrArrrrrrrrr1r1r2test_no_vmstat_mockedGs$   z*TestSystemSwapMemory.test_no_vmstat_mockedc Cs|stdStd}t}W5QRX|jr:tddl m }| \}}}}}}}||9}||9}| |j ||j|j|tddS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinforr)rrskiprrrrrrZpsutil._psutil_linuxZ _psutil_linuxZ linux_sysinforrhrr`r)rrswapZcextrgrhr`Zunit_multiplierr1r1r2test_meminfo_against_sysinfoZs    z1TestSystemSwapMemory.test_meminfo_against_sysinfoc Cs,tdd}t|jstW5QRXdS)Nr)rrrrrrrr1r1r2#test_emulate_meminfo_has_no_metricsjs z8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsN) rrr staticmethodrrrrrrrrrr1r1r1r2rs   rc@seZdZddZdS)TestSystemCPUTimescCstj}tdtdd}ttt | d}|dkrL| d|n | d||dkrn| d|n | d||d kr| d |n | d |dS) Nz \d+\.\d+\.\d+rru)r steal)rrr Zguest)rrrZ guest_nice) r cpu_times_fieldsrefindallosunamerwrxrdr>r assertNotIn)rrHZ kernel_verZkernel_ver_infor1r1r2 test_fields{s   zTestSystemCPUTimes.test_fieldsN)rrrrr1r1r1r2rxsrc@seZdZeejd dddZeejd dddZ ee d  d d d Z ee d  dddZ ddZ dS)TestSystemCPUCountLogical/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc CsVtd}|}W5QRXdt|krRt|ddd}|t|dS)Nr-rm) r<rrrrrdr>rr cpu_count)rrFvaluer1r1r2test_against_sysdev_cpu_onlines   z8TestSystemCPUCountLogical.test_against_sysdev_cpu_online/sys/devices/system/cpuz&/sys/devices/system/cpu does not existcCs0td}tdd|D}|t|dS)Nr cSs g|]}td|dk r|qS)zcpu\d+$N)rsearchrlr1r1r2rTszITestSystemCPUCountLogical.test_against_sysdev_cpu_num..)rlistdirrArrr )rZlscountr1r1r2test_against_sysdev_cpu_nums z5TestSystemCPUCountLogical.test_against_sysdev_cpu_numZnprocznproc utility not availablecCs$ttd}|tjdd|dS)Nz nproc --allTZlogical)rdrrrr )rnumr1r1r2test_against_nprocs z,TestSystemCPUCountLogical.test_against_nproclscpulscpu utility not availablecCs8td}tdd|dD}|tjdd|dS)Nlscpu -pcSsg|]}|ds|qS)#rarlr1r1r2rTs z@TestSystemCPUCountLogical.test_against_lscpu..r_Tr)rrAr>rrr )rrerr1r1r2test_against_lscpusz,TestSystemCPUCountLogical.test_against_lscpuc Csddl}|j}tjdtd}||j||js>ttjddd:}| |j||j d||j dddW5QRXt d d }| }W5QRXt|}tjd|dd }||j|W5QRXtd d }||j||jW5QRXW5QRXdS) Nrzpsutil._pslinux.os.sysconfrrTrr /proc/stat /proc/cpuinforb return_valuerr)r_pslinuxZcpu_count_logicalrrr?rrr assertIsNoneZ call_countZ call_argsr<rr{r}r)rrZoriginalrrFZ cpuinfo_data fake_filer1r1r2test_emulate_fallbackss2      z0TestSystemCPUCountLogical.test_emulate_fallbacksN)rrrrskipIfrpathexistsr rrrrr$r1r1r1r2rs    rc@s6eZdZeed dddZddZddZd S) TestSystemCPUCountPhysicalrrcCs\td}t}|dD]&}|ds|d}||dq|tjddt|dS)Nrr_r,rmFr) rsetr>raaddrrr rA)rreZcore_idsrGrHr1r1r2rs  z-TestSystemCPUCountPhysical.test_against_lscpuc CsPtj}tjdgd}tj}|js.tW5QRX|dk rL|||dS)N glob.globr )rr!cpu_count_physicalrrrrr)rZmeth_1rZmeth_2r1r1r2 test_method_2s   z(TestSystemCPUCountPhysical.test_method_2c Cs\tjdgd0}tjddd}|tjW5QRXW5QRX|jsNt|jsXtdS)Nr,r-rTr)rrr"rr!r.rr)rm1m2r1r1r2test_emulate_nones $ z,TestSystemCPUCountPhysical.test_emulate_noneN) rrrrr%rrr/r2r1r1r1r2r(s r(c@szeZdZee dddZee dddZee dddZee ddd Z ee dd d Z d S) TestSystemCPUFrequency not supportedc s@fdd}tjjtjd|ddts2tW5QRXdS)Ncs|drdS|SdS)N&/sys/devices/system/cpu/cpufreq/policyFrr&Z orig_existsr1r2path_exists_mocks zMTestSystemCPUFrequency.test_emulate_use_second_file..path_exists_mockos.path.existsT)rr)rr&r'rrrcpu_freqr)rr8r1r7r2test_emulate_use_second_files  z3TestSystemCPUFrequency.test_emulate_use_second_filec sfdd}gtjjztjd|drttjt}|sFt sNt | |j d| |j dtjddD] }| |j d| |j dqvW5QRXW5ttjttXdS)Ncs,|drdS|dkr d|SdS)Nz/sys/devices/system/cpu/Fr)rarBr6flagsZos_path_existsr1r2r8s   zITestSystemCPUFrequency.test_emulate_use_cpuinfo..path_exists_mockr9rTZpercpu) rr&r'rrr!rrr:rrmaxmin)rr8rfreqr1r<r2test_emulate_use_cpuinfos   z/TestSystemCPUFrequency.test_emulate_use_cpuinfoc sfdd}ttrdnd}tj||dftjdddLt}||jd |jd krj||jd |j d kr||j d W5QRXW5QRXdS) Ncs|dr|drtdS|dr<|dr.open_mockrrrr9Tr-@@r>@g@ r<rrrrr:rcurrentrAr@rrrrBr1rr2test_emulate_datas    z(TestSystemCPUFrequency.test_emulate_datac sfdd}ttrdnd}tj||dtjdddtjd d dtjdd }||d jd |d jdkr||d jd|d j dkr||d j d||djd|djdkr||djd|dj dkr||dj dW5QRXW5QRXW5QRXdS)Ncs|}|dr"|dr"tdS|dr@|dr@tdS|dr^|dr^tdS|dr||dr|td S|dr|drtd S|dr|drtd S|d krtd S|f||SdS)NrDz'/sys/devices/system/cpu/cpufreq/policy0s100000rF200000rHs300000z'/sys/devices/system/cpu/cpufreq/policy1s400000rErGrscpu MHz : 100 cpu MHz : 400rI)rrrnrr1r2r9s8             z@TestSystemCPUFrequency.test_emulate_multi_cpu..open_mockrrrr9Tr-!psutil._pslinux.cpu_count_logicalrr?rY@r>gi@gr@rmgy@rJrKrLrNr1rr2test_emulate_multi_cpu7s&   z-TestSystemCPUFrequency.test_emulate_multi_cpuc sfdd}ttrdnd}tj||dPtjddd6tjd d dt}||jd W5QRXW5QRXW5QRXdS) NcsR|drttjdn6|dr,tdS|dkr>tdS|f||SdS)NrDrPz/cpuinfo_cur_freqrPrscpu MHz : 200)rrrrr{r}r~rr1r2rhs    zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file..open_mockrrrr9Tr-rRrm)r<rrrrr:rrMrNr1rr2%test_emulate_no_scaling_cur_freq_filees  zrfloat)rrrFZ proc_valuer1r1r2test_getloadavgs  zTestLoadAvg.test_getloadavgN)rrrrr%r rar1r1r1r2r]s r]c@seZdZddZdS)TestSystemNetIfAddrscCstD]\}}|D]}|jtjkr<||jt|q|jtj kr||jt |||j t ||j dk r||j t|q|t|dq|jtjkr|jdd}||t|qq dS)Nz0.0.0.0%r)rZ net_if_addrsitemsZfamilyZAF_LINKraddressrYr#r$r3Znetmaskr5Z broadcastr7rDr>rK)rrZaddrsZaddrrer1r1r2test_ipss    zTestSystemNetIfAddrs.test_ipsN)rrrrfr1r1r1r2rbsrbc@seZdZddZddZdS)TestSystemNetIfStatsc CsttD]b\}}ztd|}Wntk r8Yq X|j|jd|k|d||jtt d|dq dS)N ifconfig %sZRUNNING)rz(?i)MTU[: ](\d+)r) r net_if_statsrdr RuntimeErrorrZisupmturdrr)rrstatsrer1r1r2test_against_ifconfigsz*TestSystemNetIfStats.test_against_ifconfigc CsNtD]<\}}td|d }||jt|W5QRXq dS)Nz/sys/class/net/%s/mtur8) rrirdr<rrkrdrrr)rrrlrFr1r1r2test_mtuszTestSystemNetIfStats.test_mtuN)rrrrmrnr1r1r1r2rgs rgc@seZdZeddZdS)TestSystemNetIOCountersc sfdd}tjddd}|D]\}z |}Wntk rNYq"YnX|j|j|ddd|j|j|d dd|j|j|d d d|j|j|d d d|j|j |d dd|j|j |ddd|j|j |ddd|j|j |dddq"dS)Ncsi}td}ttd|d|d<ttd|d|d<ttd|d|d<ttd|d |d <ttd |d|d <ttd |d |d <ttd|d|d<ttd|d|d<|S)NrhzRX packets[: ](\d+)r packets_recvzTX packets[: ](\d+) packets_sentzerrors[: ](\d+)errinrmerroutzdropped[: ](\d+)dropindropoutz#RX (?:packets \d+ +)?bytes[: ](\d+) bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+) bytes_sent)rrdrr)Znicrrerr1r2ifconfigs& z?TestSystemNetIOCounters.test_against_ifconfig..ifconfigTF)Zpernicnowraprvirrwrprrqrr rsrtru) rnet_io_countersrdrjrrvrwrprqrrrsrtru)rryZniorlZ ifconfig_retr1rxr2rms^   z-TestSystemNetIOCounters.test_against_ifconfigN)rrrrrmr1r1r1r2rosroc@s8eZdZejdedejdddddZdd Zd S) TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntoprzpsutil._pslinux.supports_ipv6Fr-cCsRz*ttjtj}||j|dWntjk r@YnXtjdddS)N)z::1rZinet6Zkind) r#rDZ SOCK_STREAMZ addCleanupcloseZbinderrorrnet_connections)rZ supports_ipv6rEr0r1r1r2test_emulate_ipv6_unsupported s z6TestSystemNetConnections.test_emulate_ipv6_unsupportedc Cs6tdtd}tjdd|js(tW5QRXdS)Nz/proc/net/unixa. 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 Zunixr~)rrrrrrrrr1r1r2test_emulate_unixs z*TestSystemNetConnections.test_emulate_unixN)rrrrrr?rrr1r1r1r2r} s   r}c@s>eZdZeeed deddZddZ ddZ d S) TestSystemDiskPartitionsstatvfszos.statvfs() not availablecCsndd}tjddD]T}t|j}||j\}}}}||j||j|j|td|j|j |tdqdS)NcSsztd|}|d}|d|d}|dd\}}}}|dkrRd}t|t|t|}}}||||fS)Nzdf -P -B 1 "%s"r_rr:ZnonerP)rrrr>poprd)r&rerfrGdevrhrir`r1r1r2df2s   z4TestSystemDiskPartitions.test_against_df..dfF)allr) rdisk_partitionsZ disk_usageZ mountpointrrhrr`rri)rrpartZusagerrhrir`r1r1r2test_against_df-s    z(TestSystemDiskPartitions.test_against_dfc Cstdd}|}W5QRXd|krNtD]}|jdkr.qq.|dn|ttd}t j d|ddX}t j d d gd <}t}|j st |j st |st | |d jdW5QRXW5QRXdS) Nz/proc/filesystemsr^zfszcouldn't find any ZFS partitionz nodev zfs rTrz$psutil._pslinux.cext.disk_partitions)z /dev/sdb3/rZrwr-r)r<rrrZfstypeZfailr{r|rrrrrr)rrFrrr#r0r1rr1r1r2 test_zfs_fsFs.      z$TestSystemDiskPartitions.test_zfs_fsc CsTzFtjddd.}|ttW5QRX|js:tW5QRXW5dt_XdS)N/proczos.path.realpathz /non/existentr-) r PROCFS_PATHrr assertRaisesrrrrrr1r1r2test_emulate_realpath_fail^s z3TestSystemDiskPartitions.test_emulate_realpath_failN) rrrrr%hasattrrrrrrr1r1r1r2r*s  rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)TestSystemDiskIoCountersc Cstddtjdddtjdd}||jd||jd ||jd t ||j d ||j d ||j d ||j dt ||jd||jdW5QRXW5QRXdS)N/proc/diskstatsz+ 3 0 1 hda 2 3 4 5 6 7 8 9 10 11 12!psutil._pslinux.is_storage_deviceTr-Frzrmrrr:rnrr{rrrrdisk_io_countersr read_countread_merged_count read_bytes SECTOR_SIZE read_time write_countwrite_merged_count write_bytes write_time busy_timerrr1r1r2test_emulate_kernel_2_4ms" z0TestSystemDiskIoCounters.test_emulate_kernel_2_4c Cstddtjdddtjdd}||jd||jd ||jd t ||j d ||j d ||j d ||j dt ||jd||jdW5QRXW5QRXdS)Nrz' 3 0 hda 1 2 3 4 5 6 7 8 9 10 11rTr-Frrmrrr:rnrrrr{rrr1r1r2test_emulate_kernel_2_6_fulls" z5TestSystemDiskIoCounters.test_emulate_kernel_2_6_fullc Cstddtjdddtjdd}||jd||jd t||j d ||j d t||j d ||j d ||j d ||jd ||jd W5QRXW5QRXdS) Nrz 3 1 hda 1 2 3 4rTr-Frrmrrr:r)rrrrrrrrrrrrrrrrrr1r1r2test_emulate_kernel_2_6_limiteds" z8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limitedc Cstdtdtjdddltjddd}|t|d||d j d ||d j d ||d j d ||d j d W5QRXW5QRXdS) Nr 3 0 nvme0n1 1 2 3 4 5 6 7 8 9 10 11 3 0 nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11 rFr-Tperdiskrzrnvme0n1rmZ nvme0n1p1rn) rrrrrrrrrArrrr1r1r2test_emulate_include_partitionssz8TestSystemDiskIoCounters.test_emulate_include_partitionsc Cstdtd8tjdddtjddd}||W5QRXW5QRXdd}tdtdLtjdd |d 0tjddd}||j d ||j d W5QRXW5QRXdS) NrrrFr-rcSs|dkS)Nrr1rxr1r1r2is_storage_deviceszSTestSystemDiskIoCounters.test_emulate_exclude_partitions..is_storage_deviceTrrmrn) rrrrrrrr"rrr)rrrr1r1r2test_emulate_exclude_partitionss*z8TestSystemDiskIoCounters.test_emulate_exclude_partitionsc CsTdd}tjdd}tjdd|dtjdd}W5QRX|t|t|dS)NcSs|dkr dSdS)NrFTr1r6r1r1r2r'sz?TestSystemDiskIoCounters.test_emulate_use_sysfs..existsT)rpsutil._pslinux.os.path.existsr)rrrrrrA)rr'ZwprocfsZwsysfsr1r1r2test_emulate_use_sysfss z/TestSystemDiskIoCounters.test_emulate_use_sysfsc Cs6dd}tjdd|d|ttjW5QRXdS)NcSsdS)NFr1r6r1r1r2r'sz>TestSystemDiskIoCounters.test_emulate_not_impl..existsrTr)rrrNotImplementedErrorrr)rr'r1r1r2test_emulate_not_impls z.TestSystemDiskIoCounters.test_emulate_not_implN) rrrrrrrrrrr1r1r1r2rjs rc@sReZdZddZddZddZddZd d Zd d Ze d dZ ddZ dS)TestMisccCs(td}t}|t|t|dS)Nz boot time)rtr boot_timerrdrr1r1r2test_boot_timeszTestMisc.test_boot_timec s|}t|ttj|dd$}|d|d|dW5QRXztfdd}t rldnd }t j ||d nt t |tt j|jtt jd d |tt j|jtt jd d |tt j|jtt jd d |t _|t d |tt d t jd d }|t|d t jd d }|ttt|d ttj|dd$}|d|d|dW5QRX|t d |tt jd d d |tt d |tttt jd d d W5QRXW5t|t t X|t 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&|drttjd|f||S)Nrzrejecting access for test)rarrrr~rr1r2r s  z4TestMisc.test_no_procfs_on_import..open_mockrrrTr?rzcpu 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 r) get_testfnrmkdirr<r&rCwriteshutilZrmtreerrrrrrrr cpu_percentcpu_times_percentrrsumrxassertNotEqual)rZ my_procfsrFrrZper_cpu_percentZper_cpu_times_percentr1rr2test_no_procfs_on_imports\           z!TestMisc.test_no_procfs_on_importc Cs,tdtd8}t|js(ttjddttjddW5QRXtdtd}t}|jszttjdd}t}tjdd}| |d| t |d| t |d| t |d| t t t |d| t t t |d| |j d| |jdW5QRXdS)Nrz cpu 0 0 0 0 0 0 0 1 0 0 cpu0 0 0 0 0 0 0 0 1 0 0 cpu1 0 0 0 0 0 0 0 1 0 0 Tr?z cpu 1 0 0 0 0 0 0 0 0 0 cpu0 1 0 0 0 0 0 0 0 0 0 cpu1 1 0 0 0 0 0 0 0 0 0 rrS)rrrrrrrrrrrrxrruser)rrrZcpu_percent_percpurZcpu_times_percent_percpur1r1r2test_cpu_steal_decrease<s8        z TestMisc.test_cpu_steal_decreasec Cs8tjddd }|ttjj|js*tW5QRXdS)NrTr) rrrrjrr!rrrrr1r1r2test_boot_time_mockedes zTestMisc.test_boot_time_mockedc Cstjddgd&}|tdjd|js2tW5QRXtjddgd&}|tdjd|jsntW5QRXtjddgd&}|tdjd|jstW5QRXdS) Nzpsutil._pslinux.cext.users) giampaolopts/2z:0hATrr-rZ localhost)rrz:0.0rTr)rrfoorTrr)rrrrZusersZhostrrrr1r1r2test_users_mockedls$zTestMisc.test_users_mockedcCs|}t|z|t_|ttj|ttj|jttjdd|ttj |ttj |ttj |ttj |ttj |tjtjW5dt_XdS)NrTr?)rrrrrrrrrrrr|rirZ NoSuchProcessProcess)rZtdirr1r1r2test_procfs_paths zTestMisc.test_procfs_pathcCst}|zjt}|}|t|dt|ddddj }| |j |t|}| | |tW5|XdS)NrcSs|jSrL)idrMr1r1r2rz)TestMisc.test_issue_687..)keyrm)rstartstoprrthreadsrrAsortedrrpidZas_dictrZpids)rtprtidZptr1r1r2test_issue_687s zTestMisc.test_issue_687c Cs6tdd"}ttst|js(tW5QRXdS)N/proc/%s/statusrP)rrZ pid_existsrgetpidrrrr1r1r2test_pid_exists_no_proc_statuss z'TestMisc.test_pid_exists_no_proc_statusN) rrrrrrrrrrrrr1r1r1r2rs=) rz no batteryc@sfeZdZeed dddZddZddZd d Z d d Z d dZ ddZ ddZ ddZdS)TestSensorsBatteryZacpizacpi utility not availablecCsDtd}t|dddd}tj}|j||dddS)Nzacpi -br)rmrcrPr) rrdr>rrreplacersensors_batterypercentr)rreZ acpi_valuerr1r1r2 test_percents zTestSensorsBattery.test_percentc sjfdd}ttrdnd}tj||d6}|tjd|tjtj |j s\t W5QRXdS)Ncs2|ds|drtdS|f||SdS)N AC0/online AC/online1rr{r}r~rr1r2rs z@TestSensorsBattery.test_emulate_power_plugged..open_mockrrrT) r<rrrrrr power_pluggedZsecsleftZPOWER_TIME_UNLIMITEDrrrrrrr1rr2test_emulate_power_pluggeds  z-TestSensorsBattery.test_emulate_power_pluggedc sVfdd}ttrdnd}tj||d"}|tjd|jsHt W5QRXdS)NcsN|ds|dr"ttjdn(|dr:ttdS|f||SdS)NrrrP/statusZchargingrrrrr{r|rr~rr1r2rs  zBTestSensorsBattery.test_emulate_power_plugged_2..open_mockrrrT r<rrrrrrrrrrr1rr2test_emulate_power_plugged_2s   z/TestSensorsBattery.test_emulate_power_plugged_2c sVfdd}ttrdnd}tj||d"}|tjd|jsHt W5QRXdS)Ncs2|ds|drtdS|f||SdS)Nrr0rr~rr1r2rs zDTestSensorsBattery.test_emulate_power_not_plugged..open_mockrrrFrrr1rr2test_emulate_power_not_pluggeds   z1TestSensorsBattery.test_emulate_power_not_pluggedc sVfdd}ttrdnd}tj||d"}|tjd|jsHt W5QRXdS)NcsN|ds|dr"ttjdn(|dr:ttdS|f||SdS)NrrrPrZ dischargingrr~rr1r2rs  zFTestSensorsBattery.test_emulate_power_not_plugged_2..open_mockrrrFrrr1rr2 test_emulate_power_not_plugged_2s   z3TestSensorsBattery.test_emulate_power_not_plugged_2c sTfdd}ttrdnd}tj||d }|tj|jsFt W5QRXdS)NcsJ|ds|dr"ttjdn$|dr6tdS|f||SdS)N"/sys/class/power_supply/AC0/online!/sys/class/power_supply/AC/onlinerP#/sys/class/power_supply/BAT0/statuss???)rarrrr{r}r~rr1r2rs   zETestSensorsBattery.test_emulate_power_undetermined..open_mockrrr) r<rrrr"rrrrrrr1rr2test_emulate_power_undetermineds   z2TestSensorsBattery.test_emulate_power_undeterminedc Cs6tdd"}|tjd|js(tW5QRXdS)N(/sys/class/power_supply/BAT0/energy_fullrr)rrrrrrrrr1r1r2test_emulate_energy_full_0sz-TestSensorsBattery.test_emulate_energy_full_0c CshtdttjdLtdttjd.tdd|tjdW5QRXW5QRXW5QRXdS)NrrPz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88X) rrrrrrrrrrr1r1r2"test_emulate_energy_full_not_avails  z5TestSensorsBattery.test_emulate_energy_full_not_availc CsntdttjdRtdttjd4tdttjd|tjW5QRXW5QRXW5QRXdS)NrrPrr)rrrrr"rrrrr1r1r2test_emulate_no_power's   z(TestSensorsBattery.test_emulate_no_powerN)rrrrr%rrrrrrrrrrr1r1r1r2rs  rc@seZdZddZdS)TestSensorsBatteryEmulatedc sxfdd}ttrdnd}tjddgd.}tj||d}|tW5QRXW5QRX|jsjt|jsttdS) Ncs\|drttdS|dr0ttdS|drHttdS|f||SdS)Nz /energy_nowZ60000000z /power_now0z /energy_fullZ60000001rr{r|rr~rr1r2r9s   z5TestSensorsBatteryEmulated.test_it..open_mockrrz os.listdirZBAT0r-r) r<rrrZassertIsNotNonerrrr)rrrZmlistdirZmopenr1rr2test_it8s  " z"TestSensorsBatteryEmulated.test_itN)rrrrr1r1r1r2r5src@seZdZddZddZdS)TestSensorsTemperaturesc sfdd}ttrdnd}tj||djtjddgdNtd d }||jd ||jd ||j d ||j dW5QRXW5QRXdS)Ncs|drttdS|dr0ttdS|drDtdS|drXtdS|d rltd S|f||SdS) N/namerz /temp1_labellabelz /temp1_input30000z /temp1_maxs40000z /temp1_crit50000)rr{r|rr}r~rr1r2rPs        zCTestSensorsTemperatures.test_emulate_class_hwmon..open_mockrrrr,z/sys/class/hwmon/hwmon0/temp1r-rrr>@gD@I@ r<rrrrZsensors_temperaturesrrrMZhighcritical)rrrtempr1rr2test_emulate_class_hwmonOs  z0TestSensorsTemperatures.test_emulate_class_hwmonc sfdd}dd}ttr dnd}tj||djtjdd |d Ntd d }||jd ||jd||j d||j dW5QRXW5QRXdS)Ncsl|drtdS|dr(tdS|dr@ttdS|drXttdS|f||SdS) NZ0_temprrrZ0_typertyper)rr{r}r|rr~rr1r2rks      zETestSensorsTemperatures.test_emulate_class_thermal..open_mockcSs:|dkr gS|dkrgS|dkr&dgS|dkr6ddgSgS)Nz/sys/class/hwmon/hwmon*/temp*_*z&/sys/class/hwmon/hwmon*/device/temp*_*z /sys/class/thermal/thermal_zone*z /sys/class/thermal/thermal_zone0z,/sys/class/thermal/thermal_zone0/trip_point*z2/sys/class/thermal/thermal_zone1/trip_point_0_typez2/sys/class/thermal/thermal_zone1/trip_point_0_tempr1r6r1r1r2 glob_mockwszETestSensorsTemperatures.test_emulate_class_thermal..glob_mockrrrr,TrrrrPrrr)rrrrrr1rr2test_emulate_class_thermaljs   z2TestSensorsTemperatures.test_emulate_class_thermalN)rrrrr r1r1r1r2rLsrc@seZdZddZdS)TestSensorsFansc sfdd}ttrdnd}tj||dNtjddgd2td d }||jd ||jd W5QRXW5QRXdS) Ncs\|drttdS|dr0ttdS|drHttdS|f||SdS)Nrrz /fan1_labelrz /fan1_inputZ2000rr~rr1r2rs   z4TestSensorsFans.test_emulate_data..open_mockrrrr,z/sys/class/hwmon/hwmon2/fan1r-rrri) r<rrrrZ sensors_fansrrrM)rrrZfanr1rr2rOs  z!TestSensorsFans.test_emulate_dataN)rrrrOr1r1r1r2r sr c@seZdZeddZddZeedddZ dd Z d d Z d d Z ddZ ddZddZddZddZddZddZee dddZdd Zd!d"Zd#d$Zd%S)& TestProcesscCs|}td|}||}tddd|t|j}t d| }|j dd}|j |j tdd |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 tdS)Nru)rrr1r1r1r2rrz3TestProcess.test_memory_full_info..z'%s' not in retg?F)ZgroupedcSsg|]}|j|jqSr1)Z private_dirtyZ private_cleanrlr1r1r2rTsz5TestProcess.test_memory_full_info..rrcSsg|] }|jqSr1)pssrlr1r1r2rTscSsg|] }|jqSr1)rrlr1r1r2rTs)rrrZpyrunrrrrtimesleepmemory_full_info memory_mapsrussrr r)rtestfnsrcZsprocrrmapsr1r1r2test_memory_full_infos2    z!TestProcess.test_memory_full_infoc CsptdttdJ}t}|}|j s8t | |j d| |j d| |jdW5QRXdS)N/proc/%s/smapsa fffff0 r-xp 00000000 00:00 0 [vsyscall] Size: 1 kB Rss: 2 kB Pss: 3 kB Shared_Clean: 4 kB Shared_Dirty: 5 kB Private_Clean: 6 kB Private_Dirty: 7 kB Referenced: 8 kB Anonymous: 9 kB LazyFree: 10 kB AnonHugePages: 11 kB ShmemPmdMapped: 12 kB Shared_Hugetlb: 13 kB Private_Hugetlb: 14 kB Swap: 15 kB SwapPss: 16 kB KernelPageSize: 17 kB MMUPageSize: 18 kB Locked: 19 kB VmFlags: rd ex ilri<)rrrrrrrrrrrrrr r)rrrrr1r1r2test_memory_full_info_mockeds   z(TestProcess.test_memory_full_info_mockedzunreliable on PYPYc Csjdd}|}t|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXtrft|t|d |||jdW5QRXt|t|d |||jdW5QRXdS) NcSsZt}tt}|D].}|jtj|kr:|St|krqqqtddS)Nztimeout looking for test file) rrr r open_filesr&rabspathrj)ZfnamerZ giveup_atfiler1r1r2 get_test_files   z7TestProcess.test_open_files_mode..get_test_filerr^rzr+zw+za+rNzx+)rr<rmoderr)rrrr1r1r2test_open_files_modes*         z TestProcess.test_open_files_modec Cst}|}t|dt|jdt|tjdt t j dd }|}|r\t |j sft W5QRXtjdt t jdd }||g|j st W5QRXW5QRXdS)Nrlen(ret) != %ipsutil._pslinux.os.readlinkrPr)rrrr<rrrArrOSErrorrrrrZEINVALr)rrfilesrr1r1r2test_open_files_file_gone s"  z%TestProcess.test_open_files_file_gonec Cst}|}t|dbt|jdt|tr.open_mockrrrcs4|dtr ttjdn|f||SdSr.)rarrrrZEPERMr~rr1r2rs) r<rrrrrrrrrr AccessDenied)rrrrrr1rr2test_threads_mockedls     zTestProcess.test_threads_mockedc Cstjdttjdd}tjdtddd`}t}|j sFt |j sPt | |dtjddd| tj tjW5QRXW5QRXW5QRXdS) Nzpsutil._pslinux.readlinkrPrzpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsFr-)rrr rrrr/rr+rrrr ZombieProcess)rr0r1rr1r1r2test_exe_mockeds&      zTestProcess.test_exe_mockedc CsZtdtttjd6}t}|t | W5QRX|j sLt W5QRXdS)NrrP) rrrrrrrrrrrrr)rrrr1r1r2test_issue_1014s   zTestProcess.test_issue_1014r4c CstjdttjddD}t}||tj }| tj W5QRX|j sVt W5QRX||jj|j||jj|dS)Nzpsutil._pslinux.prlimitrPr)rrr rZENOSYSrrrrr1ZrlimitZ RLIMIT_NOFILErrr exceptionrrrrrr1r1r2test_rlimit_zombies zTestProcess.test_rlimit_zombiec Cstjdttjdd@}t}||tj }| W5QRX|j sRt W5QRX| |jj|j| |jj|dS)NrrPr)rrr rrrrrrr1r,rrrr4rr5r1r1r2test_cwd_zombies zTestProcess.test_cwd_zombiec*Cs\ddlm}dddddddddddddddd d ddddd ddddddddddddddddd ddd g*}d |}tdt|t}| | d| | tj | | d| |d|t|}| |jd|| |jd|| |jd|| |jd|| |jd|| |dW5QRXdS)Nr) CLOCK_TICKSrz(cat)Z1234567rqz /proc/%s/statcatrmrrrr:rnr)rr8rCrrrrrrrrstatusZ STATUS_ZOMBIEppidZ create_timerrrsystem children_userchildren_systemZiowaitZcpu_num)rr8rrrZcpur1r1r2test_stat_file_parsingsz ,z"TestProcess.test_stat_file_parsingc Cstdttdt}|| j d|| j d|| d| }||jd||jd||jd|}||jd ||jd ||jd ||jttd d W5QRXdS)Nra 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: 13r Biiiiiirr)rrrrrrrrrnum_ctx_switches voluntary involuntary num_threadsuidsrealZ effectiveZsavedgids_proc_get_eligible_cpuslistr@)rrrNrPr1r1r2test_status_file_parsings"   z$TestProcess.test_status_file_parsingN)rrrrrrrr%rrr"r#r$r(r)r*r-r0r2r3r r6r7rGrTr1r1r1r2r s( #  $    ?r c@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. cCst|_dSrL)rrproc)clsr1r1r2 setUpClass%sz#TestProcessAgainstStatus.setUpClassc Cstjd|jj}|D]h}|}||r|dd}zt|WW5QRSt k r|YW5QRSXqt d|W5QRXdS)Nr rz can't find %r) r _psplatformZ open_textrVrrrra partitionrdr?)rZ linestartrFrGr r1r1r2read_status_file)s  z)TestProcessAgainstStatus.read_status_filecCs |d}||j|dS)NzName:)r\rrVrrr r1r1r2 test_name6s z"TestProcessAgainstStatus.test_namecCsH|d}||dd|d}|dd}||j|dS)NzState:(rm)rqr )r\findrfindrrrVrBr]r1r1r2 test_status:s  z$TestProcessAgainstStatus.test_statuscCs |d}||j|dS)NzPPid:)r\rrVrCr]r1r1r2 test_ppid@s z"TestProcessAgainstStatus.test_ppidcCs |d}||j|dS)NzThreads:)r\rrVrMr]r1r1r2test_num_threadsDs z)TestProcessAgainstStatus.test_num_threadscCs:|d}ttt|dd}||j|dS)NzUid:rmr:)r\rwrxrdr>rrVrNr]r1r1r2 test_uidsHs z"TestProcessAgainstStatus.test_uidscCs:|d}ttt|dd}||j|dS)NzGid:rmr:)r\rwrxrdr>rrVrPr]r1r1r2 test_gidsMs z"TestProcessAgainstStatus.test_gidscCs@|d}||jj||d}||jj|dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r\rrVrJrKrLr]r1r1r2test_num_ctx_switchesRs  z.TestProcessAgainstStatus.test_num_ctx_switchescCsN|d}dt|krJtt|d\}}||jtt ||ddS)NCpus_allowed_list:r rm) r\rrxrdr>rrVZ cpu_affinityrSr@)rr Zmin_Zmax_r1r1r2test_cpu_affinityYs  z*TestProcessAgainstStatus.test_cpu_affinityc CsR|d}td}|jjW5QRXdt|krD|jrNtn |jsNtdS)Nrizpsutil._pslinux.per_cpu_timesr ) r\rrrVrQrRrrr)rr rr1r1r2test_cpu_affinity_eligible_cpus`s     z8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)rrr__doc__ classmethodrXr\r^rcrdrerfrgrrhrjrkr1r1r1r2rUs   rUc@seZdZddZddZdS) TestUtilsc Cs<tjddd$}|tjdd|js.tW5QRXdS)Nz os.readlinkz foo (deleted)r-r%r)rrrrrZreadlinkrrrr1r1r2 test_readlinkrszTestUtils.test_readlinkc Csx|}t|d}|dW5QRX|tjj|ddd|tjj|ddd|tjj|dd d d dS) NZwtzfoo F)ZbinaryrTsfooz??r%)Zfallback)rr<rrrrZrA)rrrFr1r1r2test_catws zTestUtils.test_catN)rrrrprqr1r1r1r2rnosrn__main__) run_from_name)]rlZ __future__rrbr&rZglobr{rrrr#r,rr rrrZpsutil._compatrrrrZ psutil.testsrr r r r r rrrrrrrrrrrrrr&rdirname__file__ZHEREr+Z SIOCGIFCONFrVr4r6rZEMPTY_TEMPERATURESr3r5r7rKrYrkrprtrycontextmanagerrrr%rrrrr(r3rWr]rbrgror}rrrrrrr r rUrnrZpsutil.tests.runnerrsr1r1r1r2s                                 . ]  ?     )  -  ?  ?  }  A  r R