bg7t dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+erddl,m-Z-ddl,m.Z.ddl,m/Z/ddl,m0Z0ej12ej13e4Z5d Z6d!Z7d"Z8d#Z9d$Z:erd%Z;ejd& Zd)Z?d*Z@d+ZAd,ZBd-ZCd.ZDd/ZEejFd0ZGejFd1ZHejIe d2Gd3d4e"ZJejIe d2Gd5d6e"ZKejIe d2Gd7d8e"ZLejIe d2Gd9d:e"ZMejIe d2Gd;de"ZOejIe d2Gd?d@e"ZPejIe d2GdAdBe"ZQejIe d2GdCdDe"ZRejIe d2GdEdFe"ZSejIe d2GdGdHe"ZTejIe d2GdIdJe"ZUejIe d2GdKdLe"ZVejIe d2GdMdNe"ZWejIe d2GdOdPe"ZXejIe d2GdQdRe"ZYejIe d2GdSdTe"ZZejIe d2GdUdVe"Z[ejIe d2ejIe dWGdXdYe"Z\ejIe d2GdZd[e"Z]ejIe d2Gd\d]e"Z^ejIe d2Gd^d_e"Z_ejIe d2Gd`dae"Z`ejIe d2Gdbdce"ZaejIe d2Gdddee"ZbecdfkrddgldmeZeeee4dSdS)hzLinux specific tests.)divisionN)LINUX)PY3)FileNotFoundError) basestring)u)GITHUB_ACTIONS)GLOBAL_TIMEOUT) HAS_BATTERY) HAS_CPU_FREQ)HAS_GETLOADAVG) HAS_RLIMIT)PYPY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase) ThreadTask) call_until)mock) reload_module)retry_on_failure) safe_rmpath)sh)skip_on_not_implemented)which) CLOCK_TICKS)RootFsDeviceFinder)calculate_avail_vmem) open_binaryiii'iiiz/sys/class/hwmon/hwmon*c ddl}|dd}trt|d}tjtjtj}t j|5tj| | ttj d|ddcdddS#1swxYwYdSNrascii256s)fcntlrbytessocketAF_INET SOCK_DGRAM contextlibclosing inet_ntoaioctlfileno SIOCGIFADDRstructpackifnamer'ss j/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/psutil/tests/test_linux.pyget_ipv4_addressr8LsLLL CRC[F (vw'' fnf&788A  A  == KK # FF33 5 557U <====================#AC  CCc ddl}|dd}trt|d}tjtjtj}t j|5tj| | ttj d|ddcdddS#1swxYwYdSr!)r'rr(r)r*r+r,r-r.r/r0SIOCGIFNETMASKr2r3r4s r7get_ipv4_netmaskr<YLLL CRC[F (vw'' fnf&788A  A  == KK & FF33 5 557U <====================r9c ddl}|dd}trt|d}tjtjtj}t j|5tj| | ttj d|ddcdddS#1swxYwYdSr!)r'rr(r)r*r+r,r-r.r/r0SIOCGIFBRDADDRr2r3r4s r7get_ipv4_broadcastr@fr=r9ctdd5}g}|D]7}|}|d|kr||8t |dkrt d|z dddn #1swxYwYt dt |D]}||d}g}t dt |dD]"}||||dz#d|} tj tj | } tj tj | ||<|S)Nz/proc/net/if_inet6rtrzcould not find interface %r:) open readlinessplitappendlen ValueErrorrangejoinr) inet_ptonAF_INET6 inet_ntop) r5f all_fieldslinefieldsi unformattedgroupsj formattedpackeds r7get_ipv6_addressesr[ss "D ) )EQ KKMM * *DZZ\\FbzV##!!&))) z??a  :VCDD D EEEEEEEEEEEEEEE1c*oo & &BB mA& q#k**A.. 0 0A MM+aAg. / / / /HHV$$ !&/9==(&AA 1 sA4BBBc  ddl}|dd}trt|d}tjtjtj}t j|5|| ttj d|}trdn ddl }|jdfd|dd Ddd cdddS#1swxYwYdS) Nrr"r#r$c|SNxs r7ordzget_mac_address..ordsc,g|]}d|zS)z%02x:r_).0charrbs r7 z#get_mac_address..s&DDD##d))+DDDrcr&rC)r'rr(r)r*r+r,r-r/r0 SIOCGIFHWADDRr2r3 __builtin__rbrM)r5r'r6inforkrbs @r7get_mac_addressrmseLLL CRC[F (vw'' fnf&788A  A   K K{{ HHJJ v{66'B'BDD  "        /CwwDDDDRU DDDEEcrcJ K K K K K K K K K K K K K K K K K Ks$BC99C=C=ctddgddi}|d}|D]{}|drd|\}}}}tjdd}|t |t |t |cS|t d d|z) zQParse 'free' cmd and return swap memory's s total, used and free values. free-bLANGC.UTF-8env Swapztotal used freez&can't find 'Swap' in 'free' output: %s)rrH startswith collections namedtupleintrKrM)outlinesrS_totalusedronts r7 free_swaprs fd^&)!4 5 5 5C IIdOOE88 ??6 " " 8#'::<< AudD'0ABBB2c%jj#d))SYY77 7 7 7 8 1DIIe4D4DD F FFrccvtddgddi}|d}|D]h}|drQd|d d D\}}}}tjdd }||||||cSit d d|z) zSParse 'free' cmd and return physical memory's total, used and free values. rorprqrrrsruMemc,g|]}t|Sr_)rzrfras r7rhz free_physmem..s333AQ333rcztotal used free shared outputz%can't find 'Mem' in 'free' output: %s)rrHrwrxryrKrM)r{r|rSr~rrosharedrs r7 free_physmemrs fd^&)!4 5 5 5C IIdOOE66 ??5 ! ! 633ac!2333 &E4v'799B2eT455 5 5 5  6 0499U3C3CC E EErcctddgddi}|dD]D}|}||vr*t|ddcSEt d |z) Nvmstatz-srqrrrsru rz can't find %r in 'vmstat' output)rrHstriprzrK)statr{rSs r7rrs h FI#6 7 7 7C $++zz|| 4<<tzz#q)** * * *  7$> ? ??rcc tddg}d|vrtjdt t t tjd| dS)Nroz-VUNKNOWNzcan't determine free versionz\d+rC) rrunittestSkipTesttuplemaprzrefindallrH)r{s r7get_free_version_inforsl fd^   " " $ $CC >??? S"*VSYY[[_==>> ? ??rcc#Kfd}ttrdnd}tj|d|5}|VddddS#1swxYwYdS)zMock open() builtin and forces it to return a certain `content` on read() if the path being opened matches `for_path`. c|krXtr=ttrtjStjStjS|g|Ri|Sr^)r isinstancerioStringIOBytesIO)nameargskwargscontentfor_path orig_opens r7 open_mockz$mock_open_content..open_mocksx 8   +gz22/;w///:g...z'***9T3D333F33 3rc builtins.open__builtin__.openTcreate side_effectNrFrrpatch)rrr patch_pointmrs`` @r7mock_open_contentrs 4 4 4 4 4 4 4I%(@//.@K K) D D DAA A c#Kfd}ttrdnd}tj|d|5}|VddddS#1swxYwYdS)zZMock open() builtin and raises `exc` if the path being opened matches `for_path`. c,|kr|g|Ri|Sr^r_)rrrexcrrs r7rz&mock_open_exception..open_mocks3 8  I9T3D333F33 3rcrrTrNr)rrrrrrs`` @r7mock_open_exceptionrs 4444444 I%(@//.@K K) D D Drz LINUX onlyceZdZdZedZedZedZedZdS)"TestSystemVirtualMemoryAgainstFreectj}tjj}|||dSr^)rr~psutilvirtual_memory assertEqualself cli_value psutil_values r7 test_totalz-TestSystemVirtualMemoryAgainstFree.test_totals; NN( ,..4  L11111rcctdkr|dtj}t jj}|||tdS)Nr old free versiondelta)rskipTestrrrrassertAlmostEqualrrs r7 test_usedz,TestSystemVirtualMemoryAgainstFree.test_usedss ! " "Z / /-- 233 3 NN' ,..3  y,%6  8 8 8 8 8rcctj}tjj}|||t dSNr)rrorrrrrs r7 test_freez,TestSystemVirtualMemoryAgainstFree.test_freesM NN' ,..3  y,%6  8 8 8 8 8rcc t}|j}|dkrtjdt jj}|||t|d|d|jdS)Nrz%free does not support 'shared' columnr rmsg) rrrrrrrroutput)rro free_valuers r7 test_sharedz.TestSystemVirtualMemoryAgainstFree.test_shareds~~[ ??#$KLL L,..5    ,= * LLL$++F  H H H H Hrcc dtddg}|d}d|dvrtjdt |dd}t jj}|||t|d |d | dS) Nrorpru availablerz(free does not support 'available' columnrrCrrr) rrHrrrzrrrrr)rr{r|rrs r7test_availablez1TestSystemVirtualMemoryAgainstFree.test_available#s&$   $ eAh & &#$NOO OU1X^^--b122J!022>KKK hAI777 hAI777 hAI777 j#ai..999 iQY888 k3qy>>:::  Q///  Q///  q111  Q///  a000  222  1---) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .s6J  H1J< J J J J J  J$'J$cdi}td5}|D]7}|}t|ddz||d<8 dddn #1swxYwYt|}d|vr8|d}t ||z |z dz}||ddSdS)Nrrrrs MemAvailable:dr")rrHrzrabs assertLess)rmemsrQrSrTab diff_percents r7test_avail_old_percentz3TestSystemVirtualMemoryMocks.test_avail_old_percents  ) ) 8Q 8 8"%fQi..4"7VAY 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ! & & t # #%&Aq1u::>C/L OOL" - - - - - $ #s;AA!Actdtjd5}t jd5}t j}dddn #1swxYwY|jsJ| |j d|d}| dt|j ddddS#1swxYwYdS)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 determinedrrrrrrrrrrrrrrrs r7 test_avail_old_comes_from_kernelz=TestSystemVirtualMemoryMocks.test_avail_old_comes_from_kernelss  O  VXX! P #$(555 .+-- . . . . . . . . . . . . . . .8OO8   S]N ; ; ;1A MM>AI P P P- P P P P P P P P P P P P P P P P P P6C A+ C+A/ /C2A/ 3ACCCctdtjd5}t jd5}t j}dddn #1swxYwY|jsJ| |j d|d}| dt|j ddddS#1swxYwYdS)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`LGrr r rs r7test_avail_old_missing_fieldsz:TestSystemVirtualMemoryMocks.test_avail_old_missing_fieldsst  O     # # P'((555 .+-- . . . . . . . . . . . . . . .8OO8   S],K L L L1A MM>AI P P P% P P P P P P P P P P P P P P P P P Prc 6tdtjd5t dt t jd5tj d5}tj }| |j d|d}|d t|jdddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS) 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)rrrrs r7test_avail_old_missing_zoneinfozDDDcfd}ttrdnd}tj|d|5}t j}|jsJ||jd||j d||j d||j d ||j d ||j d ||jd ||jd ||jdddddS#1swxYwYdS)Nc|dkr8tjtjdS|g|Ri|S)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 )rrrrrrrrrs r7rzJTestSystemVirtualMemoryMocks.test_virtual_memory_mocked..open_mockse&&z(/131#1#b c1#1#1#f!y7777777rcrrTriiipiTii iX )rFrrrrrrrr~rorrrrrrr)rrrrmemrs @r7test_virtual_memory_mockedz7TestSystemVirtualMemoryMocks.test_virtual_memory_mockeds5 85 85 85 85 8n ),Doo2D Z Di H H H 6A'))C8OO8   SY 3 3 3   SXx 0 0 0   S[( 3 3 3   SZ 9 9 9   SZ 3 3 3   SZ 2 2 2   S\8 4 4 4   SXy 1 1 1   S]H 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6sDE  EEN) rrrrrr rrrrr_rcr7rrfs$.$.$.L . . .PPP8PPP2(((>G6G6G6G6G6rcrceZdZedZdZedZedZdZ dZ dZ dZ d S) TestSystemSwapMemoryctd5}|}dddn #1swxYwYd|vod|vS)z3Return True if /proc/meminfo provides swap metrics.rNz SwapTotal:z SwapFree:)rFread)rQdatas r7meminfo_has_swap_infoz*TestSystemSwapMemory.meminfo_has_swap_infoEs/ " " a6688D               t#; t(;;s 155ctj}tjj}|||t Sr)rr~r swap_memoryrrrrrs r7rzTestSystemSwapMemory.test_totalLsD[[& )++1 %%  ,=&?? ?rcctj}tjj}|||t Sr)rrrr'rrr(s r7rzTestSystemSwapMemory.test_usedRD[[% )++0 %%  ,=&?? ?rcctj}tjj}|||t Sr)rrorr'rrr(s r7rzTestSystemSwapMemory.test_freeYr*rcc0tjdd5}tjd5}tjdt j}|jsJ|t|d|d}| dt|j ||j d||jddddn #1swxYwYddddS#1swxYwYdS) Npsutil._common.openTrrrrrz9'sin' and 'sout' swap memory stats couldn't be determined)rrrrrrr'rrrJrrrsinsoutrs r7test_missing_sin_soutz*TestSystemSwapMemory.test_missing_sin_sout`s Z-d ; ; ; .q(555 .%h///(**xx  R!,,,qE $%(^^555  !,,,  1--- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .s5D B:C3' D 3C7 7D :C7 ;D  DDcTtdttjd5}t jd5}t jdtj}|j sJ| t|d|d}| dt|j| |jd| |jddddn #1swxYwYddddS#1swxYwYdS) Nz /proc/vmstatrTrrrrzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rrrrrrrrr'rrrJrrrr/r0rs r7test_no_vmstat_mockedz*TestSystemSwapMemory.test_no_vmstat_mockedns  &ABBDD .GH(555 .%h///(**xx  R!,,,qE 6 NN$$$  !,,,  1--- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .s5DB:D9 DD D D DD!$D!c|stjdStjd5}t j}dddn #1swxYwY|jrJddlm }| \}}}}}}}||z}||z}| |j || |j|tdS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinforr)r%rskiprrrr'rpsutil._psutil_linux _psutil_linux linux_sysinforr~rror)rrswapcextr}r~rounit_multipliers r7test_meminfo_against_sysinfoz1TestSystemSwapMemory.test_meminfo_against_sysinfos*))++ F=!DEE E Z< = = (%''D ( ( ( ( ( ( ( ( ( ( ( ( ( ( (8|++++++373E3E3G3G01aE4    U+++ ty$6GHHHHHsAA!$A!ctdd5}tj|jsJ ddddS#1swxYwYdS)Nrrc)rrr'rrrs r7#test_emulate_meminfo_has_no_metricsz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricss 4 4    8OO8O                  s<AAN) rrr staticmethodr%rrrrr1r3r<r?r_rcr7r!r!Bs<<\< ??? ??? ??? . . ....$III rcr!ceZdZdZdS)TestSystemCPUTimesc8tjj}tjdt jdd}ttt| d}|dkr| d|n| d||dkr| d|n| d||d kr| d |dS| d |dS) Nz \d+\.\d+\.\d+r.)rD steal)rDrFr&guest)rrDr guest_nice) r cpu_times_fieldsrrosunamerrrzrHr assertNotIn)rrT kernel_verkernel_ver_infos r7 test_fieldszTestSystemCPUTimes.test_fieldss !##+Z 0"(**Q-@@C C)9)9#)>)> ? ?@@ j ( ( MM'6 * * * *   Wf - - - j ( ( MM'6 * * * *   Wf - - - i ' ' MM, / / / / /   \6 2 2 2 2 2rcN)rrrrRr_rcr7rBrBs#33333rcrBcpeZdZejejd ddZejejd ddZ eje d dd Z eje d  d d Z d Z dS)TestSystemCPUCountLogical/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existcjtd5}|}dddn #1swxYwYdt|vrTt |dddz}|tj|dSdS)NrU-r) rFr#rrrzrHrr cpu_count)rrQvalues r7test_against_sysdev_cpu_onlinez8TestSystemCPUCountLogical.test_against_sysdev_cpu_onlines2 3 3 %qFFHHNN$$E % % % % % % % % % % % % % % % #e**   C((+,,q0E   V-// 7 7 7 7 7  s'AA A/sys/devices/system/cpuz&/sys/devices/system/cpu does not existctjd}td|D}|t j|dS)Nr[c<g|]}tjd||S)zcpu\d+$)rsearchrs r7rhzITestSystemCPUCountLogical.test_against_sysdev_cpu_num..s)KKK1bi A&>&>&JQ&J&J&Jrc)rMlistdirrJrrrX)rlscounts r7test_against_sysdev_cpu_numz5TestSystemCPUCountLogical.test_against_sysdev_cpu_numsUZ1 2 2KKKKKLL )++U33333rcnprocznproc utility not availablecttd}|tjd|dS)Nz nproc --allTlogical)rzrrrrX)rnums r7test_against_nprocz,TestSystemCPUCountLogical.test_against_nprocsA"]##$$ )$777=====rclscpulscpu utility not availablectd}td|dD}|t jd|dS)Nlscpu -pc<g|]}|d|S)#rwrs r7rhz@TestSystemCPUCountLogical.test_against_lscpu..s)GGGQ\\#5F5FG1GGGrcruTre)rrJrHrrrX)rr{rgs r7test_against_lscpuz,TestSystemCPUCountLogical.test_against_lscpus]nnGGciiooGGGHH )$777=====rccbddl}|j}tjdt 5}||j||jsJtjdd5}||j||j d||j ddddddn #1swxYwYtd d 5}| }dddn #1swxYwYtj|}tjd|d 5}||j|dddn #1swxYwYtd d 5}||j||jsJ dddn #1swxYwYddddS#1swxYwYdS) Nrzpsutil._pslinux.os.sysconfrr-Tr.rD /proc/stat /proc/cpuinforb return_valuerrc)psutil._pslinux_pslinuxcpu_count_logicalrrrKrr assertIsNone call_count call_argsrFr#rrr)rroriginalrrQ cpuinfo_data fake_files r7test_emulate_fallbacksz0TestSystemCPUCountLogical.test_emulate_fallbackssf?4466Z,*FFF IJ   V_>>@@( K K K8OO81$??? B1!!&/"C"C"E"EFFF  q111  Q!2LAAA  B B B B B B B B B B B B B B Bot,, ( vvxx  ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( <00I1)24AAA PDE  !B!B!D!DhOOO P P P P P P P P P P P P P P P #?C88 A  !B!B!D!DhOOOxx               1                  sA H$A/D5 H$D H$D H$D=1 H$=E H$E .H$3.F-! H$-F1 1H$4F1 5H$7H  H$ H H$H H$$H(+H(N)rrrrskipIfrMpathexistsrZrbrrhrprr_rcr7rTrTsX_(HIIIDFF88FF8X_(ABBB=??44??4 X_w')FGG>>HG>X_w')FGG>>HG>      rcrTcbeZdZejed ddZdZdZdS)TestSystemCPUCountCoresrirjcftd}t}|dD]G}|ds0|d}||dH|t jdt|dS)Nrlrurn,rFre) rsetrHrwaddrrrXrJ)rr{core_idsrSrTs r7rpz*TestSystemCPUCountCores.test_against_lscpusnn55IIdOO ( (D??3'' (C VAY''' )%888#h--HHHHHrcc"tj}tjdg5}tj}|jsJ dddn #1swxYwY||||dSdS)N glob.globrw)rrycpu_count_coresrrrr)rmeth_1rmeth_2s r7 test_method_2z%TestSystemCPUCountCores.test_method_2s0022 Z " 5 5 5 _4466F8OO8O                    VV , , , , ,  s(A**A.1A.cDtjdg5}tjdd5}|tjdddn #1swxYwYdddn #1swxYwY|jsJ|jsJdS)Nrrr-Tr.)rrr{rryrr)rm1m2s r7test_emulate_nonez)TestSystemCPUCountCores.test_emulate_nones5 Z " 5 5 5 E1$??? E2!!&/"A"A"C"CDDD E E E E E E E E E E E E E E E E E E E E E E E E E E E E E Eyyyys4B2A, B,A0 0B3A0 4BB BN) rrrrrrrprrr_rcr7rrslX_w')FGGIIHGI---rcrceZdZeje ddZeje ddZeje ddZeje ddZ eje ddZ dS)TestSystemCPUFrequency not supportedcfd}tjjtjd|d5t jsJ ddddS#1swxYwYdS)NcH|drdS|S)N&/sys/devices/system/cpu/cpufreq/policyFro)r orig_existss r7path_exists_mockzMTestSystemCPUFrequency.test_emulate_use_second_file..path_exists_mocks-GHH )u"{4(((rcos.path.existsT)rr)rMrrrrrcpu_freq)rrrs @r7test_emulate_use_second_filez3TestSystemCPUFrequency.test_emulate_use_second_files ) ) ) ) ) gn Z(6F#%%% % %?$$ $ $$ $ % % % % % % % % % % % % % % % % % %sAAAcfd}tjj tjd|5t t jt j}|sJ| |j d| |j dt jdD]8}| |j d| |j d9 dddn #1swxYwYt t jt t dS#t t jt t wxYw)NcH|drdS|S)Nz/sys/devices/system/cpu/Fro)ros_path_existss r7rzITestSystemCPUFrequency.test_emulate_use_cpuinfo..path_exists_mock%s-9:: ,u%~d+++rcrrrTpercpu) rMrrrrrrryrrmaxmin)rrrfreqrs @r7test_emulate_use_cpuinfoz/TestSystemCPUFrequency.test_emulate_use_cpuinfo!s , , , , ,  ",:JKKK 4 4fo...o'' s  #...  #..."O488844D$$TXs333$$TXs33334  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 &/ * * * & ! ! ! ! ! &/ * * * & ! ! ! !s/D+B5C1% D+1C55D+8C59D++/Ecfd}ttrdnd}tj||5tjdd5t j}||jd|jd kr||jd |j d kr||j d dddn #1swxYwYddddS#1swxYwYdS) Nc|dr)|drtjdS|dr)|drtjdS|dr)|drtjdS|dkrtjd S|g|Ri|S) N/scaling_cur_freqr500000/scaling_min_freq600000/scaling_max_freqs700000rtscpu MHz : 500endswithrwrrrs r7rz;TestSystemCPUFrequency.test_emulate_data..open_mock<s 122 8OO$LMM 8z),,,-- 344 8OO$LMM 8z),,,-- 344 8OO$LMM 8z),,,((z"6777 y7777777rcrrrrrTr@@r@g@ rFrrrrrrcurrentrrrrrrrs @r7test_emulate_dataz(TestSystemCPUFrequency.test_emulate_data:s 8 8 8 8 8 ),Doo2D Z  ; ; ; 6 6$4999 6 6((  u5558s??$$TXu5558s??$$TXu555 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s6C%A;C  C% C C%C C%%C),C)cfd}ttrdnd}tj||5tjdd5tjdd 5t jd }||d jd |d jd kr!||d jd|d j d kr!||d j d||djd|djd kr!||djd|dj d kr!||dj ddddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS)Nc<|}|dr)|drtjdS|dr)|drtjdS|dr)|drtjdS|dr)|drtjd S|dr)|drtjd S|dr)|drtjd S|d krtjd S|g|Ri|S)Nrz'/sys/devices/system/cpu/cpufreq/policy0s100000r200000rs300000z'/sys/devices/system/cpu/cpufreq/policy1s400000rrrts#cpu MHz : 100 cpu MHz : 400r)rrrnrs r7rz@TestSystemCPUFrequency.test_emulate_multi_cpu..open_mock[sA .// 8LL!JKK 8z),,,**011 8LL!JKK 8z),,,**011 8LL!JKK 8z),,,**011 8LL!JKK 8z),,,**011 8LL!JKK 8z),,,**011 8LL!JKK 8z),,,((z#7888!y7777777rcrrrrrTr!psutil._pslinux.cpu_count_logicalrDrrY@rgi@gr@rgy@rrrrs @r7test_emulate_multi_cpuz-TestSystemCPUFrequency.test_emulate_multi_cpuYs 8 8 8 8 84 ),Doo2D Z  ; ; ; = =,4@@@ = =Z C-.000 = =!?$777D$$T!W_e<<<Aw{c))((ae<<<Aw{c))((ae<<<$$T!W_e<<<Aw{c))((ae<<<Aw{c))((ae<<< = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =sZF8F D F = F  F F F F  F8 F$ $F8'F$ (F88F<?F<cfd}ttrdnd}tj||5tjdd5tjdd 5t j}||jd dddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS) Nc|drttjd|drt jdS|dkrt jdS|g|Ri|S)Nrrdz/cpuinfo_cur_freqrrtscpu MHz : 200)rrrrrrrs r7rzOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file..open_mocks}}011 8elB///233 8z),,,((z"6777 y7777777rcrrrrrTrrr)rFrrrrrrrrs @r7%test_emulate_no_scaling_cur_freq_filezrDrrz(.*) MTU:(\d+) Metric:(\d+)rzno matches were found)rrrrrr^rJrWrgrouplowerrHflagsrrfail)r matches_foundrrr{matchifconfig_flags psutil_flagss r7 test_flagszTestSystemNetIfStats.test_flagss !.006688 G GKD% G-.. "8#>> GS00A55!Q&M%(Q)=)=)?)?)E)Ec)J)J%K%KN#&u{'8'8'='=#>#>L$$^\BBBBI&FLLEGU\\^^!4!4!9!9%* ),U[[^^-A-A-C-C-I-I-K-K)L)L'*5;+<+.ifconfig"sRC]S())C"% 1377:#<# D DQ GHHCM ,?!E!Ea!HIIC N # A3GGJ!L!LC  # A3GGJ!L!LC JrcTF)pernicnowrapr irr rrrr rrr) rnet_io_countersrrrr r rrrrrr)rrniorr ifconfig_rets r7rz-TestSystemNetIOCounters.test_against_ifconfigs   "$D???99;; B BKD% 'x~~       " " ,|" > >  " " l84B # @ @ @  " " l84B # @ @ @  " " |I6b # B B B B' B Bs A A AN)rrrrrrrrr_rcr7rrsfX_z***,LMM'B'BNM'B'B'BrcrczeZdZejdeejdddZdZdS) TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntoprrzpsutil._pslinux.supports_ipv6Frc tjtjtj}||j|dn#tj$rYnwxYwtjddS)N)z::1rinet6kind) r)rO SOCK_STREAM addCleanupclosebinderrorrnet_connections)r supports_ipv6rPr6s r7test_emulate_ipv6_unsupportedz6TestSystemNetConnections.test_emulate_ipv6_unsupportedNs  fov/ABBA OOAG $ $ $ FF:    |    D G,,,,,,sAAA-,A-ctdtjd5}tjd|jsJ ddddS#1swxYwYdS)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 unixr)rrrrrrr>s r7test_emulate_unixz*TestSystemNetConnections.test_emulate_unixZs   O     " / / / /8OO8O                  sAAAN)rrrrrrKrr"r_rcr7rrKspTZ2 KKKTZ/eDDD--EDLK-     rcrceZdZejeed dedZdZ dZ dS)TestSystemDiskPartitionsstatvfszos.statvfs() not availablecVd}tjdD]}tj|j}||j\}}}}||j|||j|t||j |tdS)Nctd|z}|d}|d|d}|dd\}}}}|dkrd}t |t |t |}}}||||fS)Nzdf -P -B 1 "%s"rurrDnonerd)rrrHpoprz)rr{r|rSdevr~rros r7dfz4TestSystemDiskPartitions.test_against_df..dfts&-..4466CIIdOOE IIaLLL99Q<&E%FHHH;KM 022C9$$99$$9JJ3$$SV]E:::;;;;;;;;;;;;;;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sC2662D9 A D! D9!D% %D9(D% )D99D=D=c< tjdd5}|t5t jdddn #1swxYwY|jsJ dddn #1swxYwYdt_dS#dt_wxYw)Nzos.path.realpathz /non/existentr/proc)rr assertRaisesrrr-r PROCFS_PATHr>s r7test_emulate_realpath_failz3TestSystemDiskPartitions.test_emulate_realpath_fails! ).)8::: =>&&'899--*,,,---------------xx                ")F   F  ( ( ( (sQB A4A A4A A4A  A4( B 4A88B ;A8<B BN) rrrrrhasattrrMrr2r9r>r_rcr7r$r$lsX_Y///1MNN??ON?.;;;0 ) ) ) ) )rcr$c8eZdZdZdZdZdZdZdZdZ dS) TestSystemDiskIoCountersctdd5tjdd5tjd}||jd||jd ||jd tz||j d ||j d ||j d ||j dtz||jd||jddddn #1swxYwYddddS#1swxYwYdS)N/proc/diskstatsz+ 3 0 1 hda 2 3 4 5 6 7 8 9 10 11 12!psutil._pslinux.is_storage_deviceTrFr rrDrrDrrFrrrrrdisk_io_countersr read_countread_merged_count read_bytes SECTOR_SIZE read_time write_countwrite_merged_count write_bytes write_time busy_timerrs r7test_emulate_kernel_2_4z0TestSystemDiskIoCounters.test_emulate_kernel_2_4s!=?? 4 4?)-/// 4 4-U;;;  333  !6:::  [AAA  222  !444  !7;;;  !k/BBB  333  333 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 45E%DE  E% E E%E E%%E),E)ctdd5tjdd5tjd}||jd||jd ||jd tz||j d ||j d ||j d ||j dtz||jd||jddddn #1swxYwYddddS#1swxYwYdS)NrCz' 3 0 hda 1 2 3 4 5 6 7 8 9 10 11rDTrFrErrDrrDrrFrFrGrrHrTs r7test_emulate_kernel_2_6_fullz5TestSystemDiskIoCounters.test_emulate_kernel_2_6_fulls!9;; 4 4?)-/// 4 4-U;;;  333  !6:::  [AAA  222  !444  !7;;;  !k/BBB  333  333 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4rVctdd5tjdd5tjd}||jd||jd tz||j d ||j d tz||j d ||j d ||j d ||jd ||jd dddn #1swxYwYddddS#1swxYwYdS) NrCz 3 1 hda 1 2 3 4rDTrFrErrDrrDr)rrrrrIrrJrLrMrOrQrKrNrPrRrSrTs r7test_emulate_kernel_2_6_limitedz8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limiteds !)++ 3 3?)-/// 3 3-U;;;  333  [AAA  !444  !k/BBB  !6:::  222  !7;;;  333  222 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3rVcRtdtjd5tjdd5t jdd}|t|d||d j d ||d j d ||d j d ||d j d dddn #1swxYwYddddS#1swxYwYdS) NrC 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 rDFrTperdiskr rDnvme0n1r nvme0n1p1r) rrrrrrrIrrJrJrOrTs r7test_emulate_include_partitionsz8TestSystemDiskIoCounters.test_emulate_include_partitionss!! B B ?).000 B B-d5III  S1---  Y!:A>>>  [!1!D8 DD D D DD #D ctdtjd5tjdd5t jdd}||dddn #1swxYwYdddn #1swxYwYd}tdtjd5tjdd| 5t jdd}||j d ||j d dddn #1swxYwYddddS#1swxYwYdS) NrCr\rDFrr]c|dkS)Nr_r_)rs r7is_storage_devicezSTestSystemDiskIoCounters.test_emulate_exclude_partitions..is_storage_devices 9$ $rcTrrr) rrrrrrrIr{rrJrO)rrrds r7test_emulate_exclude_partitionsz8TestSystemDiskIoCounters.test_emulate_exclude_partitionssx!! ' ' ?).000 ' '-eEJJJ!!#&&& ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' % % %!! 5 5 ?#'5FHHH 5 5-eEJJJ  333  !444  5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5skB ,A2& B 2A6 6B 9A6 :B  B B 9EA D* E*D. .E1D. 2EE Ecd}tjd}tjdd|5tjd}dddn #1swxYwY|t |t |dS)Nc|dkrdSdS)NrCFTr_rs r7rz?TestSystemDiskIoCounters.test_emulate_use_sysfs..exists s(((u4rcT)r^psutil._pslinux.os.path.existsr)rrIrrrrJ)rrwprocfswsysfss r7test_emulate_use_sysfsz/TestSystemDiskIoCounters.test_emulate_use_sysfss    )$777 Z8#999 ; ;,T:::F ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Ws6{{33333sAAAcd}tjdd|5|ttjddddS#1swxYwYdS)NcdS)NFr_rhs r7rz>TestSystemDiskIoCounters.test_emulate_not_impl..exists,s5rcriTr)rrr<NotImplementedErrorrrI)rrs r7test_emulate_not_implz.TestSystemDiskIoCounters.test_emulate_not_impl+s   Z8#999 L L   163J K K K L L L L L L L L L L L L L L L L L Ls&AAAN) rrrrUrXrZrarerlrpr_rcr7rArAs444&444(333.BBB&555> 4 4 4LLLLLrcrAceZdZdZdZejeddZeje d dejeddZ dZ d S) TestRootFsDeviceFinderctjdj}tj||_tj||_dS)Nr6)rMrst_devmajorminor)rr*s r7setUpzTestRootFsDeviceFinder.setUp7s4gcll!Xc]] Xc]] rcct}tjdr|n |t |jtjd|jd|jdr| n |t |j | dSNz/proc/partitionsz/sys/dev/block/rEz/uevent) rrMrrask_proc_partitionsr<rrurvask_sys_dev_blockask_sys_class_block)rfinders r7test_call_methodsz(TestRootFsDeviceFinder.test_call_methods<s#%% 7>>, - - M  & & ( ( ( (   /1K L L L 7>>> DJJJ( ) ) K  $ $ & & & &   /1I J J J""$$$$$rczunsupported on GITHUB_ACTIONScBt}||dx}x}}tjdr|}tjd|jd|jdr| }| }|p|p|}|r|r| |||r|r| |||r|r| ||dSdSdSry) rassertIsNotNonefindrMrrrzrurvr|r{r)rr}rrcbases r7test_comparisonsz'TestRootFsDeviceFinder.test_comparisonsIsH#%% V[[]]+++A 7>>, - - -**,,A 7>>> DJJJ( ) ) -**,,A  $ $ & &{A{  &A &   T1 % % %  &A &   T1 % % %  &A &   T1 % % % % % & & & &rcfindmntzfindmnt utility not availablect}td}|||dS)Nzfindmnt -o SOURCE -rn /)rrrr)rr findmnt_values r7test_against_findmntz+TestRootFsDeviceFinder.test_against_findmnt^sE*++0022 455  }55555rcctjddg5}tjd}|jsJt sU||jd||jt n||jdddddS#1swxYwYdS)Nr5) /dev/rootr6ext4r7rrr) rrrr-rr assertNotEqualdevicerrr)rrr0s r7test_disk_partitions_mockedz2TestRootFsDeviceFinder.test_disk_partitions_mockedes  Z6>?AAA ;DE)++A.D8OO8! ;##DK===  .@.B.B.G.G.I.IJJJJ  k::: ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sBB??CCN) rrrrwr~rrr rrrrr_rcr7rrrr4s### % % %X_^%DEE&&FE&(X_y)))+JKKX_^%DEE66FELK6 ; ; ; ; ;rcrrc^eZdZdZdZdZdZdZdZe dZ dZ d S) TestMiscctd}tj}|t |t |dS)Nz boot time)rr boot_timerrzrs r7test_boot_timezTestMisc.test_boot_timezsIk** '))  \**C ,=,=>>>>>rcc \ |}tj|ttj|dd5}|d|d|ddddn #1swxYwY tfd}trdnd}tj || 5tt| ttj| ttjd | ttj| ttjd | ttj| ttjd |t_|tjd |t'tjd tjd }|t'|d tjd }|t't)t&|d ttj|dd5}|d |d|ddddn #1swxYwY|tjd |t'tjd d |t'tjd |t't)t&tjd d dddn #1swxYwYt-j|ttn-#t-j|ttwxYw|tjddS)Nrrzcpu 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 cz|drttjd|g|Ri|S)Nr;zrejecting access for test)rwrrrrs r7rz4TestMisc.test_no_procfs_on_import..open_mocksK??7++M!%,0KLLL y7777777rcrrrrTrrzcpu 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_testfnrMmkdirrFrrMwriterrrrrr<rrK cpu_percentcpu_times_percentr=rsumrrshutilrmtree)r my_procfsrQrrper_cpu_percentper_cpu_times_percentrs @r7test_no_procfs_on_importz!TestMisc.test_no_procfs_on_importsOO%%   "',,y&113 7 7 31 GG1 2 2 2 GG1 2 2 2 GG1 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 "I 8 8 8 8 8 .1H//6HKKY???$ M$ Mf%%%!!'6+;<<<!!'6+;D!III!!'6+=>>>!!'6+=d!KKK!!'6+CDDD!!V5d"DDD&/"  !3!5!5q999  V%=%?%?!@!@!DDD#)"4D"A"A"A  _!5!5q999)/(@(M(M(M%  S.C%D%D!E!EqIII"',,y&993??;1GG9:::GG9:::GG9:::;;;;;;;;;;;;;;; ##F$6$8$8!<<<##*$77788!===##C(@(B(B$C$CQGGG##C!9!F!F!FGGHH!MMMG$ M$ M$ M$ M$ M$ M$ M$ M$ M$ M$ M$ M$ M$ M$ ML M) $ $ $ & ! ! ! ! M) $ $ $ & ! ! ! ! +W55555sjAB$$B(+B(0-QHP+.AL:. P+:L> >P+L> CP+ Q+P//Q2P/3Q*R c tdtjd5}t j|jsJt jdt jt jddddn #1swxYwYtdtjd5}t j}|jsJt jd}t j}t jd}||d|t|d|t|d|t|d|ttt|d|ttt|d| |j d||j dddddS#1swxYwYdS)Nrsz 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 Trz 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 rr)rrrrrrrrrrrrrHuser)rrrcpu_percent_percpurcpu_times_percent_percpus r7test_cpu_steal_decreasez TestMisc.test_cpu_steal_decreases  O  VXX  2 #$   8OO8  d + + + +  $ & & &  $D 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2   O  VXX  ; #$ ,..K8OO8!'!34!@!@!@  & 8 : : '-'?t'L'L'L $    Q / / /   $6 7 7 ; ; ;   $5 6 6 : : :   $5 6 6 > > >   C-E$F$F G G K K K   C-E$F$F G G O O O   .4a 8 8 8    1 6 : : :) ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s%ABB"BE;I""I&)I&ctjdd5}|ttjj|jsJ ddddS#1swxYwYdS)Nr-Tr.)rrr<rrryrrr>s r7test_boot_time_mockedzTestMisc.test_boot_time_mockeds Z-d ; ; ; q   ) + + +8OO8O                   s4AA Actjddg5}|tjdjd|jsJ dddn #1swxYwYtjddg5}|tjdjd|jsJ dddn #1swxYwYtjddg5}|tjdjd|jsJ ddddS#1swxYwYdS) Nzpsutil._pslinux.cext.users) giampaolopts/2z:0hATrDrr localhost)rrz:0.0rTrD)rrfoorTrDr)rrrrusershostrr>s r7test_users_mockedzTestMisc.test_users_mockedsZ4'>&?@@@ CD   V\^^A.3[ A A A8OO8O                 Z4'>&?@@@ CD   V\^^A.3[ A A A8OO8O                 Z4'>&?@@@ CD   V\^^A.3U ; ; ;8OO8O                   s5 > >   gv'= > > >   gv': ; ; ;   gv'= > > >   f2FN C C C!(F   F  ( ( ( (s E FF&ct5tj}|}|t |dt |ddj}||j |tj|}| | |tj ddddS#1swxYwYdS)NrDc|jSr^)idr`s r7z)TestMisc.test_issue_687..src)keyr) rrrthreadsrrJsortedrrpidas_dictrOpids)rprtidpts r7test_issue_687zTestMisc.test_issue_687s\\ 1 1  AiikkG   S\\1 - - -nn555a8;C   s + + +$$B JJLLL   S&+-- 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1sCC..C25C2ctdd5}tjtjsJ|jsJ ddddS#1swxYwYdS)N/proc/%s/statusrd)rr pid_existsrMgetpidrr>s r7test_pid_exists_no_proc_statusz'TestMisc.test_pid_exists_no_proc_status$s0" 5 5 $RY[[11 1 118OO8O                  s1AAAN) rrrrrrrrrrrrr_rcr7rrws??? ;6;6;6z';';';R()))&111 rcrz no batteryceZdZejed ddZdZdZdZ dZ dZ d Z d Z d Zd S) TestSensorsBatteryacpizacpi utility not availablec td}t|dddd}t jj}|||ddS)Nzacpi -brrrrdr) rrzrHrreplacersensors_batterypercentr)rr{ acpi_valuers r7 test_percentzTestSensorsBattery.test_percent6swmm3*0022::3CCDD -//7  z.open_mock?Z}}\** 8dmmK.H.H 8z$''' y7777777rcrrrrT) rFrrrrrr power_pluggedsecsleftPOWER_TIME_UNLIMITEDrrrrrrs @r7test_emulate_power_pluggedz-TestSensorsBattery.test_emulate_power_plugged=s 8 8 8 8 8  ),Doo2D Z  ; ; ; q   V355CT J J J   &((163N P P P8OO8O                   sA,B))B-0B-cfd}ttrdnd}tj||5}|t jjd|jsJ ddddS#1swxYwYdS)Nc|ds|drttjd|dr!t jt dS|g|Ri|S)Nrrrd/statuschargingrrrrrrrrs r7rzBTestSensorsBattery.test_emulate_power_plugged_2..open_mockPs}}\** 8dmmK.H.H 8elB///y)) 8{1Z==111 y7777777rcrrrrT rFrrrrrrrrrs @r7test_emulate_power_plugged_2z/TestSensorsBattery.test_emulate_power_plugged_2Ms 8 8 8 8 8 ),Doo2D Z  ; ; ; q   V355CT J J J8OO8O                  6A33A7:A7cfd}ttrdnd}tj||5}|t jjd|jsJ ddddS#1swxYwYdS)Nc|ds|drtjdS|g|Ri|S)Nrr0rrs r7rzDTestSensorsBattery.test_emulate_power_not_plugged..open_mock`rrcrrrrFrrs @r7test_emulate_power_not_pluggedz1TestSensorsBattery.test_emulate_power_not_plugged^s 8 8 8 8 8  ),Doo2D Z  ; ; ; q   V355CU K K K8OO8O                  rcfd}ttrdnd}tj||5}|t jjd|jsJ ddddS#1swxYwYdS)Nc|ds|drttjd|dr!t jt dS|g|Ri|S)Nrrrdr dischargingrrs r7rzFTestSensorsBattery.test_emulate_power_not_plugged_2..open_mockos}}\** 8dmmK.H.H 8elB///y)) 8{1]#3#3444 y7777777rcrrrrFrrs @r7 test_emulate_power_not_plugged_2z3TestSensorsBattery.test_emulate_power_not_plugged_2ls 8 8 8 8 8 ),Doo2D Z  ; ; ; q   V355CU K K K8OO8O                  rcfd}ttrdnd}tj||5}|t jj|jsJ ddddS#1swxYwYdS)Nc|ds|drttjd|drt jdS|g|Ri|S)N"/sys/class/power_supply/AC0/online!/sys/class/power_supply/AC/onlinerd#/sys/class/power_supply/BAT0/statuss???)rwrrrrrrs r7rzETestSensorsBattery.test_emulate_power_undetermined..open_mocksCDD 8OO$GHH 8elB///!FGG 8z&))) y7777777rcrrrr) rFrrrr{rrrrrs @r7test_emulate_power_undeterminedz2TestSensorsBattery.test_emulate_power_undetermined}s 8 8 8 8 8 ),Doo2D Z  ; ; ; q   f466D E E E8OO8O                  s5A22A69A6ctdd5}|tjjd|jsJ ddddS#1swxYwYdS)N(/sys/class/power_supply/BAT0/energy_fullrr)rrrrrrr>s r7test_emulate_energy_full_0z-TestSensorsBattery.test_emulate_energy_full_0s :DBB EF   V355=q A A A8OO8O                  s6AAActdttjd5tdttjd5t dd5|t jjddddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS)Nrrdz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88X) rrrrrrrrrrs r7"test_emulate_energy_full_not_availz5TestSensorsBattery.test_emulate_energy_full_not_avails!: b))++ K K%>EL"--// K K'?HHKK$$V%;%=%=%ErJJJKKKKKKKKKKKKKKK K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K KsY)C B3#-B B3B B3#B $B3' C 3B7 7C :B7 ;C  CCc tdttjd5tdttjd5tdttjd5|t jjdddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS)Nrrdrr)rrrrr{rrrrs r7test_emulate_no_powerz(TestSensorsBattery.test_emulate_no_powers 3 b))++ N N%8EL"--// N N)= b1133NN%%f&<&>&>&LMMMNNNNNNNNNNNNNNN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N NsY)C")C ;,B3' C 3B7 7C :B7 ;C > C" C C"C C""C&)C&N)rrrrrrrrrrrrrrrr_rcr7rr2sX_v&(DEEBBFEB  "   "$ K K K N N N N NrcrceZdZdZdS)TestSensorsBatteryEmulatedc`fd}ttrdnd}tjddg5}tj||5}|t jdddn #1swxYwYdddn #1swxYwY|jsJ|jsJdS)Nc`|dr!tjtdS|dr!tjtdS|dr!tjtdS|g|Ri|S)Nz /energy_now60000000z /power_now0z /energy_full60000001rrrrrs r7rz5TestSensorsBatteryEmulated.test_it..open_mocks}}]++ 8{1Z==111|,, 8{1S66***~.. 8{1Z==111 y7777777rcrrz os.listdirBAT0rrr)rFrrrrrrr)rrrmlistdirmopenrs @r7test_itz"TestSensorsBatteryEmulated.test_itsA 8 8 8 8 8 ),Doo2D Z F8 < < < ?KY??? ?5$$V%;%=%=>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?||s5B'A:. B:A> >BA> BBBN)rrrr r_rcr7rrs#rcrceZdZdZdZdS)TestSensorsTemperaturescfd}ttrdnd}tj||5tjddg5t jdd }||jd ||jd ||j d ||j d dddn #1swxYwYddddS#1swxYwYdS)Nc|dr!tjtdS|dr!tjtdS|drtjdS|drtjdS|d rtjd S|g|Ri|S) N/namerz /temp1_labellabelz /temp1_input30000z /temp1_maxs40000z /temp1_crit50000)rrrrrrs r7rzCTestSensorsTemperatures.test_emulate_class_hwmon..open_mocks}}W%% 8{1V99---~.. 8{1W::...~.. 8z(+++|,, 8z(+++}-- 8z(+++ y7777777rcrrrrrz/sys/class/hwmon/hwmon0/temp1rrrr>@gD@I@ rFrrrrsensors_temperaturesrrrhighcritical)rrrtemprs @r7test_emulate_class_hwmonz0TestSensorsTemperatures.test_emulate_class_hwmons 8 8 8 8 8 ),Doo2D Z  ; ; ; 6 6K*I)JLLL 6 6244VC;cfd}d}ttrdnd}tj||5tjdd|5t jd d }||jd ||jd ||j d ||j d dddn #1swxYwYddddS#1swxYwYdS)Nc|drtjdS|drtjdS|dr!tjt dS|dr!tjt dS|g|Ri|S) N0_temprrr0_typertyper)rrrrrrs r7rzETestSensorsTemperatures.test_emulate_class_thermal..open_mocks}}X&& 8z(+++v&& 8z(+++x(( 8{1Z==111v&& 8{1V99--- y7777777rccL|dkrgS|dkrgS|dkrdgS|dkrddgSgS)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_tempr_rhs r7 glob_mockzETestSensorsTemperatures.test_emulate_class_thermal..glob_mocks\888 AAA ;;;:;;GGGLLNNIrcrrrrrTrrrrdrrr)rrr rrrs @r7test_emulate_class_thermalz2TestSensorsTemperatures.test_emulate_class_thermals 8 8 8 8 8    ),Doo2D Z  ; ; ; 6 6K)LLL 6 6244VC>N)rrrrr!r_rcr7r r s26666!6!6!6!6!6rcr ceZdZdZdS)TestSensorsFanscfd}ttrdnd}tj||5tjddg5t jdd }||jd ||jd dddn #1swxYwYddddS#1swxYwYdS) Nc`|dr!tjtdS|dr!tjtdS|dr!tjtdS|g|Ri|S)Nrrz /fan1_labelrz /fan1_input2000rrs r7rz4TestSensorsFans.test_emulate_data..open_mocks}}W%% 8{1V99---}-- 8{1W::...}-- 8{1V99--- y7777777rcrrrrrz/sys/class/hwmon/hwmon2/fan1rrrri) rFrrrr sensors_fansrrr)rrrfanrs @r7rz!TestSensorsFans.test_emulate_data sj 8 8 8 8 8 ),Doo2D Z  ; ; ; 4 4K*H)IKKK 4 4)++F3A6  G444  d333  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s6CAB) C)B- -C0B- 1CCCN)rrrrr_rcr7r#r# s#44444rcr#ceZdZedZdZejeddZ dZ dZ dZ dZ d Zd Zd Zd Zd ZdZdZeje ddZdZdZdZdZdS) TestProcessc|}tj|j\}}}tj|jd}||td|Dd||td|Dd||td|DddS)NF)groupedc,g|]}|j|jzSr_) private_dirty private_cleanrs r7rhz?TestProcess.test_parse_smaps_vs_memory_maps..0s!FFFAao7FFFrcrrcg|] }|j Sr_)pssrs r7rhz?TestProcess.test_parse_smaps_vs_memory_maps..3s***ae***rccg|] }|j Sr_)r9rs r7rhz?TestProcess.test_parse_smaps_vs_memory_maps..5s,,,!qv,,,rc) spawn_testprocrryrr _parse_smaps memory_mapsrr)rsprocussr1r9mapss r7test_parse_smaps_vs_memory_mapsz+TestProcess.test_parse_smaps_vs_memory_maps*s##%%00;;HHJJS$~ei((44U4CC  FFFFFGG      **T***++4  9 9 9  #,,t,,,--T  ; ; ; ; ;rcctdtjztjd5}t jtj}| \}}}|j sJ| |d| |d| |dddddS#1swxYwYdS)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<) rrMrrrrrryrr4rr)rrrr7r1r9s r7test_parse_smaps_mockedz#TestProcess.test_parse_smaps_mocked7s!  ry{{ * O  ,VXX1 .0#$'' 44A^^--NCd8OO8   S"5 6 6 6   S( + + +   T9 - - -= . . . . . . . . . . . . . . . . . .s BC**C.1C.zunreliable on PYPYcDd}|}t|d5|||jddddn #1swxYwYt|d5|||jddddn #1swxYwYt|d5|||jddddn #1swxYwYt|d5|||jddddn #1swxYwYt|d5|||jddddn #1swxYwYt|d5|||jddddn #1swxYwYtrt |t|d5|||jddddn #1swxYwYt |t|d 5|||jdddddS#1swxYwYdSdS) Nctj}tjtz} |D]G}|jt j|kr|cStj|krnH]r^) rrtimer open_filesrrMabspathr)fnamer giveup_atfiles r7 get_test_filez7TestProcess.test_open_files_mode..get_test_file\s  A n4I LLNNDyBGOOE$:$:::# y001  rcrrrzr+zw+za+razx+)rrFrmoderr)rrEtestfns r7test_open_files_modez TestProcess.test_open_files_modeZs @ @ @"" &#   > >   ]]6227 = = = > > > > > > > > > > > > > > > &#   > >   ]]6227 = = = > > > > > > > > > > > > > > > &#   > >   ]]6227 = = = > > > > > > > > > > > > > > >&$   ? ?   ]]6227 > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &$   ? ?   ]]6227 > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &$   ? ?   ]]6227 > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  C    fc"" B B  v!6!6!;SAAA B B B B B B B B B B B B B B B    fd## C C  v!6!6!;TBBB C C C C C C C C C C C C C C C C C C  C Cs%AA A4%B%%B),B)%C11C58C5 %D==EE%F  F F $%GGG%H77H;>H;!%JJJctj}|}t|d5t |jdt |ztjdttj d5}|}|rJ|j sJ dddn #1swxYwYtjdttj d5}||g|j sJ dddn #1swxYwYddddS#1swxYwYdS)Nrlen(ret) != %ipsutil._pslinux.os.readlinkrdrr)rrr@rFrrrJrrOSErrorrrrEINVALr)rrfilesrs r7test_open_files_file_gonez%TestProcess.test_open_files_file_gones  N    $//##S ) ) q|%5E %B C C C9(/ b(A(ACCC FG    yxx                9(/ b(A(ACCC FG  444xx                s[ AE"C  E C EC 1E2E9 EE E E EE!$E!ctj}|}t|d5t |jdt |ztrdnd}tj |ttj d5}|}|rJ|j sJ dddn #1swxYwYddddS#1swxYwYdS)NrrJrrrdrr)rrr@rFrrrJrrrrrrrrrrNrrs r7test_open_files_fd_gonez#TestProcess.test_open_files_fd_gonesl N    $//##S ) )  q|%5E %B C C C-0H//6HKK(/ b(A(ACCC FG    yxx                                  s7 AC0)"C C0C C0C C00C47C4c@tj}|}t|d5t |jdt |zd}tj|ttj d5}tjd5|}|rJ|j sJ dddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS)NrrJrKrdrrpsutil._pslinux.debug) rrr@rFrrrJrrrLr ENAMETOOLONGrrQs r7test_open_files_enametoolongz(TestProcess.test_open_files_enametoolongs N    $//##S ) ) $ $ q|%5E %B C C C7KK(/0BB(G(GIII $LMZ 788$$LLNNE$$$98OO8O$$$$$$$$$$$$$$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s[ AD C;5"C$ C;$C( (C;+C( ,C;/ D;C? ?DC? DDDc"tjdi5}|tjt j|j sJ ddddS#1swxYwYdS)Nz)psutil._pslinux._psposix.get_terminal_mapr) rrr{rryrrMrterminalrr>s r7test_terminal_mockedz TestProcess.test_terminal_mockeds ZC%'))) ,-   fo55bikkBBKKMM N N N8OO8O                  sABB Bc>tj}tjt d}t jd|d5}||ddg|j sJ dddn #1swxYwYtjt d}t jd|d5}||gd|j sJ ddddS#1swxYwYdS) Nzfoobarr-Trvrbarz foobarrr[rd rrrrrrrrcmdlinerrrrrs r7test_cmdline_mockedzTestProcess.test_cmdline_mockeds N  K"2 3 344 Z-%.t=== @A   QYY[[5%. 9 9 98OO8O               K"6 7 788 Z-%.t=== @A   QYY[[*<*<*< = = =8OO8O                  $ 4B  BB4DDDc>tj}tjt d}t jd|d5}||ddg|j sJ dddn #1swxYwYtjt d}t jd|d5}||gd|j sJ ddddS#1swxYwYdS) Nzfoo bar r-Trvrr[z foo bar r\r]r_s r7test_cmdline_spaces_mockedz&TestProcess.test_cmdline_spaces_mockeds N  K* .. Z-%.t=== @A   QYY[[5%. 9 9 98OO8O               K+// Z-%.t=== @A   QYY[[*<*<*< = = =8OO8O                  rac6tj}tjt d}t jd|d5}||ddg|j sJ ddddS#1swxYwYdS)Nzfoo barr-Trvrr[r]r_s r7test_cmdline_mixed_separatorsz)TestProcess.test_cmdline_mixed_separatorss N  K"2 3 344 Z-%.t=== @A   QYY[[5%. 9 9 98OO8O                  s 4BBBcHtjdd5|tjd|tjdddddS#1swxYwYdS)NrKz/home/foo (deleted)rz /home/foo)rrrrrexecwdrs r7!test_readlink_path_deleted_mockedz-TestProcess.test_readlink_path_deleted_mockeds Z5%:<<< B B   V^--1133[ A A A   V^--1133[ A A A B B B B B B B B B B B B B B B B B BsA3BBBcfd}ttrdnd}tj||5}t j}|jsJ||gdddn #1swxYwYfd}tj||5| tj t jjddddS#1swxYwYdS)Nc|dtjzrttjd|g|Ri|SNz /proc/%s/taskrd)rwrMrrrrrs r7 open_mock_1z4TestProcess.test_threads_mocked..open_mock_1sT<== 8elB/// y7777777rcrrrrc|dtjzrttjd|g|Ri|Srl)rwrMrrrEPERMrs r7 open_mock_2z4TestProcess.test_threads_mocked..open_mock_2sT<== 8ek2... y7777777rc) rFrrrrrrrrr< AccessDenied)rrmrrrrprs @r7test_threads_mockedzTestProcess.test_threads_mockeds  8 8 8 8 8  ),Doo2D Z  = = = &.""**,,C8OO8   S" % % % & & & & & & & & & & & & & & & 8 8 8 8 8 Z  = = = M M   f16>3C3C3K L L L M M M M M M M M M M M M M M M M M Ms$ABBB&7C**C.1C.cxtjdttjd5}tjdt jdd5}t j}|j sJ|j sJ| |dtjdd5| t j t jjdddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS) Nzpsutil._pslinux.readlinkrdrrzpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsFr) rrrLrrrrqrrgrrr< ZombieProcess)rrrrs r7test_exe_mockedzTestProcess.test_exe_mocked s. Z2$+EL"$=$=??? DBD4(.(;Ar(B(BDDD DGI n&&**,,y  yy  y  b)))Z A-2444DD%%,fn.>.>.BDDDDDDDDDDDDDDDDDD D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D DsZ*D/A$D=7D4 DD DD D D/D D/D D//D36D3cvtdtjzttjd5}t j}|t5| dddn #1swxYwY|j sJ ddddS#1swxYwYdS)Nr;rd) rrMrrrrrrr<rr5rrrrs r7test_issue_1014zTestProcess.test_issue_1014"s$! 29;;. b))++ ./  A""#455                  8OO8O                   s5.B.+B  B. B B.B  B..B25B2rcNtjdttjd5}t j}||t j 5}| t j dddn #1swxYwY|j sJ dddn #1swxYwY| |jj|j| |jj|dS)Nzpsutil._pslinux.prlimitrdrr)rrrLrENOSYSrrrr<rtrlimit RLIMIT_NOFILErr exceptionrrrrrs r7test_rlimit_zombiezTestProcess.test_rlimit_zombie-sm Z1$+EL"$=$=??? BC  A FFHHH""6#788 /C-... / / / / / / / / / / / / / / /8OO8O                 *AE222 +QVVXX66666s6AC6 B" C"B& &C)B& * CC Cc8tjdttjd5}t j}||t j 5}| dddn #1swxYwY|j sJ dddn #1swxYwY| |j j|j| |j j|dS)NrKrdrr)rrrLrrrrrr<rtrhrrr}rr~s r7test_cwd_zombiezTestProcess.test_cwd_zombie<sc Z5$+EL"$=$=??? BC  A FFHHH""6#788 C               8OO8O                 *AE222 +QVVXX66666s6AB86B B8B B8B  B88B<?B<c^gd}d|}tdtjz|5t j}||d|| t j || d|| dtz t jz|}||jdtz ||jdtz ||jd tz ||jd tz ||jd tz ||dddddS#1swxYwYdS) N)*rz(cat)Z1rrrrrrrrr2345rrrr6rrrrrrrrrrrrrrrrrrr7rz /proc/%s/statcatrrFrDrrDrrF)rMrrrMrrrrrstatus STATUS_ZOMBIEppid create_timerrrKrsystem children_userchildren_systemiowaitcpu_num)rrrrcpus r7test_stat_file_parsingz"TestProcess.test_stat_file_parsingGs + + + X((4..''))  > >   QVVXXq ) ) )    [63C3E3E!E G G G++--C   SXq; 7 7 7   SZ[ 9 9 9   S.K @ @ @   S0!k/ B B B   SZ[ 9 9 9   QYY[[! , , , - - - - - - - - - - - - - - - - - -sGH""H&)H&c tdtjztjd5t j}|| j d|| j d|| d| }||jd||jd||jd|}||jd ||jd ||jd ||jt)t+d d ddddS#1swxYwYdS)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 BiiiiiirrG)rrMrrrrrrrnum_ctx_switches voluntary involuntary num_threadsuidsreal effectivesavedgids_proc_get_eligible_cpuslistrL)rrrrs r7test_status_file_parsingz$TestProcess.test_status_file_parsings    + O3 4 45;FHH > > N N  A   Q//11;R @ @ @   Q//11=r B B B   Q]]__b 1 1 16688D   TY - - -   T^T 2 2 2   TZ . . .6688D   TY - - -   T^T 2 2 2   TZ . . .   QW77994a ;L;L M M M- N N N N N N N N N N N N N N N N N Ns F(G>>HHcRtjdttjd5}t j}tjd5|rJ|jsJ dddn #1swxYwYddddS#1swxYwYdS)NrKrdrrrT) rrrLrrUrr connectionsrrws r7test_connections_enametoolongz)TestProcess.test_connections_enametoolongs'Z5$+E,>$C$CEEE HI  A344  ==??***xx                                 s5(B B8 BB B B BB #B N)rrrrr9r<rrrrHrOrRrVrYr`rcrerirrrurxrrrrrrr_rcr7r*r*'s ; ; ; . . .FX_T/00"C"C10"CH   (   $$$&      BBB MMM:DDD*   X_^_55 7 765 7 7 7 7;-;-;-zNNN2      rcr*ceZdZdZedZdZdZdZdZ dZ dZ d Z e d Zd Zd Zd S)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. c6tj|_dSr^)rrproc)clss r7 setUpClassz#TestProcessAgainstStatus.setUpClasss>##rcctjd|jjz5}|D]}|}||rY|dd} t|ccdddS#t$r|cYccdddSwxYwtd|z#1swxYwYdS)Nr rDz can't find %r) r _psplatform open_textrrrrw partitionrzrK)r linestartrQrSrYs r7read_status_filez)TestProcessAgainstStatus.read_status_filesM   ) )!DIM133 :67 % %zz||??9--% NN4003E%"5zz)) : : : : : : : :&%%%$  : : : : : : : :% % _y899 9 : : : : : : : : : :s6A C7BC B1 C0B11CC C c|d}||j|dS)NzName:)rrrrrrYs r7 test_namez"TestProcessAgainstStatus.test_name=%%g.. ))511111rcc|d}||ddz|d}|dd}||j|dS)NzState:(r)rrW)rrrfindrrrrrs r7 test_statusz$TestProcessAgainstStatus.test_statuss|%%h//ejjoo)%++c*:*::; c3'' ))++U33333rcc|d}||j|dS)NzPPid:)rrrrrs r7 test_ppidz"TestProcessAgainstStatus.test_ppidrrcc|d}||j|dS)NzThreads:)rrrrrs r7test_num_threadsz)TestProcessAgainstStatus.test_num_threadss?%%j11 ..00%88888rcc|d}ttt|dd}||j|dS)NzUid:rrD)rrrrzrHrrrrs r7 test_uidsz"TestProcessAgainstStatus.test_uidse%%f--c#u{{}}QqS12233 ))511111rcc|d}ttt|dd}||j|dS)NzGid:rrD)rrrrzrHrrrrs r7 test_gidsz"TestProcessAgainstStatus.test_gidsrrcc"|d}||jj||d}||jj|dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)rrrrrrrs r7test_num_ctx_switchesz.TestProcessAgainstStatus.test_num_ctx_switchess~%%&@AA 3355?GGG%%&CDD 3355A5IIIIIrcc B|d}dt|vrxtt|d\}}||jtt||dzdSdS)NCpus_allowed_list:rWr) rrrrzrHrr cpu_affinityrrL)rrYmin_max_s r7test_cpu_affinityz*TestProcessAgainstStatus.test_cpu_affinitys%%&:;; #e**  S%++c"2"233JD$    &&(($uT4!8/D/D*E*E G G G G G  rcc|d}tjd5}|jjdddn #1swxYwYdt |vr |jrJdS|jsJdS)Nrzpsutil._pslinux.per_cpu_timesrW)rrrrrrrr)rrYrs r7test_cpu_affinity_eligible_cpusz8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpuss%%&:;; Z7 8 8 1A IO . . 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 #e**  x  <  8OO8OOsAAAN)rrr__doc__ classmethodrrrrrrrrrrrrr_rcr7rrs$$[$ : : :222444 222999222 222 JJJ GGGrcrceZdZdZdS) TestUtilsctjdd5}|tjdd|jsJ ddddS#1swxYwYdS)Nz os.readlinkz foo (deleted)rr[r)rrrrrreadlinkrr>s r7 test_readlinkzTestUtils.test_readlinks Z O D D D    V/88?? G G G8OO8O                  s=A""A&)A&N)rrrrr_rcr7rrs#rcr__main__) run_from_name)fr __future__rrxr,rglobrrMrrr)r2rr?rrrrpsutil._compatrrrr psutil.testsr r r r r rrrrrrrrrrrrrrrxrrrrrrAdirname__file__HEREr1 SIOCGIFCONFrjr;r?rMEMPTY_TEMPERATURESr8r<r@r[rmrrrrcontextmanagerrrrrrrr!rBrTrrrrrrrrr$rArrrrrr r#r*rrrpsutil.tests.runnerrr_rcr7rs    ,,,,,,%%%%%%''''''''''''$$$$$$%%%%%%''''''######------******''''''############&&&&&&))))))$$$$$$000000 ,++++++222222444444++++++ wrwx0011   K"#<=== = = = = = = = = =,KKK$ F F FEEE*@@@@@@ ,    *UL))3D3D3D3D3D3D3D*)3DlUL))/A/A/A/A/A>/A/A*)/AdUL))S6S6S6S6S6>S6S6*)S6vUL))SSSSS>SS*)SvUL))3333333*)3(UL))< < < < < < < *)< ~UL))n*)8UL))J8J8J8J8J8^J8J8*)J8ZUL)) F F F F F F F*) FUL)) O O O O O. O O*) O$UL))EEEEE>EE*)ERUL))/5/5/5/5/5>/5/5*)/5dUL))+B+B+B+B+Bn+B+B*)+B\UL))~*)@UL))<)<)<)<)<)~<)<)*)<)~UL))DLDLDLDLDL~DLDL*)DLNUL)):;:;:;:;:;^:;:;*):;DUL))rrrrr~rr*)rtUL))[,//zNzNzNzNzNzNzN0/*)zNzUL))*),UL))>6>6>6>6>6n>6>6*)>6BUL))44444n44*)48UL))~ ~ ~ ~ ~ .~ ~ *)~ B UL))JJJJJ~JJ*)JdUL))*) z111111M(rc