B Œ=Ý_Ê^ã@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 Z4erÒd!Z5e d"¡ Z6d#d$„Z7d%d&„Z8d'd(„Z9d)d*„Z:d+d,„Z;d-d.„Zd3d4„Z?ej@d5d6„ƒZAej@d7d8„ƒZBe) Ce d9¡Gd:d;„d;eƒƒZDe) Ce d9¡Gdd?„d?eƒƒZFe) Ce d9¡Gd@dA„dAeƒƒZGe) Ce d9¡GdBdC„dCeƒƒZHe) Ce d9¡GdDdE„dEeƒƒZIe) Ce d9¡GdFdG„dGeƒƒZJe) Ce d9¡GdHdI„dIeƒƒZKe) Ce d9¡GdJdK„dKeƒƒZLe) Ce d9¡GdLdM„dMeƒƒZMe) Ce d9¡GdNdO„dOeƒƒZNe) Ce d9¡GdPdQ„dQeƒƒZOe) Ce d9¡GdRdS„dSeƒƒZPe) Ce d9¡GdTdU„dUeƒƒZQe) Ce d9¡GdVdW„dWeƒƒZRe) Ce d9¡e) Ce dX¡GdYdZ„dZeƒƒƒZSe) Ce d9¡Gd[d\„d\eƒƒZTe) Ce d9¡Gd]d^„d^eƒƒZUe) Ce d9¡Gd_d`„d`eƒƒZVe) Ce d9¡Gdadb„dbeƒƒZWe) Ce d9¡Gdcdd„ddeƒƒZXe) Ce d9¡Gdedf„dfeƒƒZYeZdgkrddhl[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)Úwhichi‰i‰i'‰i‰i‰iz/sys/class/hwmon/hwmon*c Cspddl}|dd…}tr"t|dƒ}t tjtj¡}t |¡*t |  |  ¡t t   d|¡¡dd…¡SQRXdS)NréÚasciiÚ256séé)ÚfcntlrÚbytesÚsocketÚAF_INETÚ SOCK_DGRAMÚ contextlibÚclosingÚ inet_ntoaÚioctlÚfilenoÚ SIOCGIFADDRÚstructÚpack)Úifnamer Ús©r/úJ/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_linux.pyÚget_ipv4_addressBs    r1c Cspddl}|dd…}tr"t|dƒ}t tjtj¡}t |¡*t |  |  ¡t t   d|¡¡dd…¡SQRXdS)Nrrrrrr)r rr!r"r#r$r%r&r'r(r)ÚSIOCGIFNETMASKr+r,)r-r r.r/r/r0Úget_ipv4_netmaskOs    r3c Cspddl}|dd…}tr"t|dƒ}t tjtj¡}t |¡*t |  |  ¡t t   d|¡¡dd…¡SQRXdS)Nrrrrrr)r rr!r"r#r$r%r&r'r(r)ÚSIOCGIFBRDADDRr+r,)r-r r.r/r/r0Úget_ipv4_broadcast\s    r5c Cs¬tddƒ:}x2| ¡D]}| ¡}|d|krPqWtd|ƒ‚WdQRX|d}g}x.tdt|ƒdƒD]}| |||d…¡qhWd |¡}t  tj |¡}t  tj |¡S)Nz/proc/net/if_inet6Úrtéÿÿÿÿzcould not find interface %rréú:) ÚopenÚ readlinesÚsplitÚ ValueErrorÚrangeÚlenÚappendÚjoinr"Z inet_ptonÚAF_INET6Ú inet_ntop) r-ÚfÚlineÚfieldsZ unformattedÚgroupsÚiZ formattedZpackedr/r/r0Úget_ipv6_addressis   rIc s¦ddl}|dd…}tr"t|dƒ}t tjtj¡}t |¡`| |  ¡t t   d|¡¡}trfdd„‰nddl }|j‰d ‡fdd „|d d …Dƒ¡dd …SQRXdS) NrrrrcSs|S)Nr/)Úxr/r/r0Úord„szget_mac_address..ordÚcsg|]}dˆ|ƒ‘qS)z%02x:r/)Ú.0Úchar)rKr/r0ú ‰sz#get_mac_address..érr7)r rr!r"r#r$r%r&r(r)Ú SIOCGIFHWADDRr+r,Ú __builtin__rKrA)r-r r.ÚinforRr/)rKr0Úget_mac_addresszs    rTcCs|tdddid}| d¡}xJ|D]B}| d¡r | ¡\}}}}t dd¡}|t|ƒt|ƒt|ƒƒSq Wtd d |¡ƒ‚d S) zQParse 'free' cmd and return swap memory's s total, used and free values. zfree -bÚLANGzC.UTF-8)ÚenvÚ ZSwapÚfreeztotal used freez&can't find 'Swap' in 'free' output: %sN)rr<Ú startswithÚ collectionsÚ namedtupleÚintr=rA)ÚoutÚlinesrEÚ_ÚtotalÚusedrXÚntr/r/r0Ú free_swapŒs    rccCs†tdddid}| d¡}xT|D]L}| d¡r dd„| ¡d d …Dƒ\}}}}t d d ¡}||||||ƒSq Wtd d |¡ƒ‚dS)zSParse 'free' cmd and return physical memory's total, used and free values. zfree -brUzC.UTF-8)rVrWZMemcSsg|] }t|ƒ‘qSr/)r\)rMrJr/r/r0rO¨sz free_physmem..éérXztotal used free shared outputz%can't find 'Mem' in 'free' output: %sN)rr<rYrZr[r=rA)r]r^rEr`rarXÚsharedrbr/r/r0Ú free_physmem›s   "rgcCsVtdddid}x4| d¡D]&}| ¡}||krt| d¡dƒSqWtd|ƒ‚dS) Nz vmstat -srUzC.UTF-8)rVrWú rz can't find %r in 'vmstat' output)rr<Ústripr\r=)Ústatr]rEr/r/r0Úvmstat°s rkcCs:tdƒ ¡}d|krt d¡‚ttt| ¡d d¡ƒƒS)Nzfree -VZUNKNOWNzcan't determine free versionr7Ú.)rrirÚSkipTestÚtupleÚmapr\r<)r]r/r/r0Úget_free_version_info¹s  rpc #sF‡‡‡fdd„}t‰trdnd}tj|d|d }|VWdQRXdS)zMock open() builtin and forces it to return a certain `content` on read() if the path being opened matches `for_path`. csL|ˆkr8tr,tˆtƒr t ˆ¡St ˆ¡SqHt ˆ¡Snˆ|f|ž|ŽSdS)N)rÚ isinstancerÚioÚStringIOÚBytesIO)ÚnameÚargsÚkwargs)ÚcontentÚfor_pathÚ orig_openr/r0Ú open_mockÅs    z$mock_open_content..open_mockz builtins.openz__builtin__.openT)ÚcreateÚ side_effectN)r:rrÚpatch)ryrxr{Ú patch_pointÚmr/)rxryrzr0Úmock_open_contentÀs   rc #sF‡‡‡fdd„}t‰trdnd}tj|d|d }|VWdQRXdS)zZMock open() builtin and raises `exc` if the path being opened matches `for_path`. cs"|ˆkrˆ‚nˆ|f|ž|ŽSdS)Nr/)rurvrw)Úexcryrzr/r0r{Üsz&mock_open_exception..open_mockz builtins.openz__builtin__.openT)r|r}N)r:rrr~)ryr‚r{rr€r/)r‚ryrzr0Úmock_open_exception×s  rƒz LINUX onlyc@s¬eZdZdd„Zeƒdd„ƒZeƒdd„ƒZeƒdd„ƒZeƒd d „ƒZeƒd d „ƒZ eƒd d„ƒZ eƒdd„ƒZ dd„Z eƒdd„ƒZ dd„Zdd„Zdd„Zdd„ZdS)ÚTestSystemVirtualMemorycCs&tdƒd}t ¡j}| ||¡dS)Nz total memoryi)rkÚpsutilÚvirtual_memoryr`ÚassertAlmostEqual)ÚselfÚ vmstat_valueÚ psutil_valuer/r/r0Ú test_totalðs  z"TestSystemVirtualMemory.test_totalcCsLtƒdkr| d¡‚tƒ}|j}t ¡j}|j||td|||jfddS)N)érŒé zold free versionz %s %s %s)ÚdeltaÚmsg) rpZskipTestrgrar…r†r‡rÚoutput)rˆrXÚ free_valuerŠr/r/r0Ú test_usedøs   z!TestSystemVirtualMemory.test_usedcCs*tdƒd}t ¡j}|j||tddS)Nz free memoryi)rŽ)rkr…r†rXr‡r)rˆr‰rŠr/r/r0Ú test_frees  z!TestSystemVirtualMemory.test_freecCs*tdƒd}t ¡j}|j||tddS)Nz buffer memoryi)rŽ)rkr…r†Úbuffersr‡r)rˆr‰rŠr/r/r0Ú test_bufferss  z$TestSystemVirtualMemory.test_bufferscCs*tdƒd}t ¡j}|j||tddS)Nz active memoryi)rŽ)rkr…r†Úactiver‡r)rˆr‰rŠr/r/r0Ú test_actives  z#TestSystemVirtualMemory.test_activecCs*tdƒd}t ¡j}|j||tddS)Nzinactive memoryi)rŽ)rkr…r†Úinactiver‡r)rˆr‰rŠr/r/r0Ú test_inactives  z%TestSystemVirtualMemory.test_inactivecCsJtƒ}|j}|dkrt d¡‚t ¡j}|j||td|||jfddS)Nrz%free does not support 'shared' columnz %s %s %s)rŽr) rgrfrrmr…r†r‡rr)rˆrXr‘rŠr/r/r0Ú test_shared#s  z#TestSystemVirtualMemory.test_sharedcCshtdƒ}| d¡}d|dkr*t d¡‚n:t|d ¡dƒ}t ¡j}|j||t d|||fd dS) Nzfree -brWÚ availablerz(free does not support 'available' columnrdr7z %s %s %s)rŽr) rr<rrmr\r…r†r›r‡r)rˆr]r^r‘rŠr/r/r0Útest_available.s    z&TestSystemVirtualMemory.test_availablec CsJtdt d¡ ¡ƒ*}tjdd}t d¡t ¡}|  t |ƒd¡|d}|  dt |j ƒ¡|  d t |j ƒ¡|  d t |j ƒ¡|  d t |j ƒ¡|  d t |j ƒ¡|  d t |j ƒ¡|  dt |j ƒ¡|  |jd¡|  |jd¡|  |jd¡|  |jd¡|  |jd¡|  |jd¡|  |jd¡WdQRXWdQRXdS)Nz /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 T)ÚrecordÚalwaysrdrz#memory stats couldn't be determinedÚcachedrfr–r˜r”r›)rÚtextwrapÚdedentÚencodeÚwarningsÚcatch_warningsÚ simplefilterr…r†Ú assertEqualr?ÚassertInÚstrÚmessagerŸr–r˜rfr”r›Úslab)rˆr€ÚwsÚretÚwr/r/r0Útest_warnings_on_misses=s0  z/TestSystemVirtualMemory.test_warnings_on_missesc Csšddlm}ddlm}i}|dƒ4}x,|D]$}| ¡}t|dƒd||d<q,WWdQRX||ƒ}d|kr–|d}t||ƒ|d} | | d ¡dS) Nr)Úcalculate_avail_vmem)Ú open_binaryz /proc/meminfordis MemAvailable:édr)Úpsutil._pslinuxr¯r°r<r\ÚabsZ assertLess) rˆr¯r°ZmemsrDrErFÚaÚbZ diff_percentr/r/r0Útest_avail_old_percentds    &z.TestSystemVirtualMemory.test_avail_old_percentc Csltdt d¡ ¡ƒN}tjdd}t ¡}WdQRX| |j d¡|d}|  dt |j ƒ¡WdQRXdS)Nz /proc/meminfoaL 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 T)rl œ"rz,inactive memory stats couldn't be determined) rr r¡r¢r£r¤r…r†r¦r›r§r¨r©)rˆr€r«r¬r­r/r/r0Ú test_avail_old_comes_from_kernelwsz8TestSystemVirtualMemory.test_avail_old_comes_from_kernelc Csltdt d¡ ¡ƒN}tjdd}t ¡}WdQRX| |j d¡|d}|  dt |j ƒ¡WdQRXdS)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 T)rl`LGrz,inactive memory stats couldn't be determined) rr r¡r¢r£r¤r…r†r¦r›r§r¨r©)rˆr€r«r¬r­r/r/r0Útest_avail_old_missing_fields“s z5TestSystemVirtualMemory.test_avail_old_missing_fieldsc CsŠtdt d¡ ¡ƒltdttjdƒƒNtj dd6}t   ¡}|  |j d¡|d}| d t|jƒ¡WdQRXWdQRXWdQRXdS) 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 directoryT)rl`LGrz,inactive memory stats couldn't be determined)rr r¡r¢rƒÚIOErrorÚerrnoÚENOENTr£r¤r…r†r¦r›r§r¨r©)rˆr«r¬r­r/r/r0Útest_avail_old_missing_zoneinfo¬s  z7TestSystemVirtualMemory.test_avail_old_missing_zoneinfoc s‡fdd„}t‰trdnd}tj|d|dŒ}t ¡}| |jd¡| |jd¡| |j d ¡| |j d ¡| |j d ¡| |j d ¡| |j d ¡| |jd¡| |jd¡WdQRXdS)Ncs0|dkrt t d¡ ¡¡Sˆ|f|ž|ŽSdS)Nz /proc/meminfoa= 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 )rrrtr r¡r¢)rurvrw)rzr/r0r{Ís1 zETestSystemVirtualMemory.test_virtual_memory_mocked..open_mockz builtins.openz__builtin__.openT)r|r}iiiipiTii iXi )r:rrr~r…r†r¦r`rXr”rŸrfr–r˜rªr›)rˆr{rr€Úmemr/)rzr0Útest_virtual_memory_mockedËs 7 z2TestSystemVirtualMemory.test_virtual_memory_mockedN)Ú__name__Ú __module__Ú __qualname__r‹rr’r“r•r—r™ršrœr®r¶r·r¸r¼r¾r/r/r/r0r„ís 'r„c@s\eZdZedd„ƒZdd„Zeƒdd„ƒZeƒdd„ƒZd d „Z d d „Z d d„Z dd„Z dS)ÚTestSystemSwapMemoryc Cs,tdƒ}| ¡}WdQRXd|ko*d|kS)z3Return True if /proc/meminfo provides swap metrics.z /proc/meminfoNz SwapTotal:z SwapFree:)r:Úread)rDÚdatar/r/r0Úmeminfo_has_swap_infos z*TestSystemSwapMemory.meminfo_has_swap_infocCs"tƒj}t ¡j}|j||tdS)N)rŽ)rcr`r…Ú swap_memoryr‡r)rˆr‘rŠr/r/r0r‹$s zTestSystemSwapMemory.test_totalcCs"tƒj}t ¡j}|j||tdS)N)rŽ)rcrar…rÆr‡r)rˆr‘rŠr/r/r0r’*s zTestSystemSwapMemory.test_usedcCs"tƒj}t ¡j}|j||tdS)N)rŽ)rcrXr…rÆr‡r)rˆr‘rŠr/r/r0r“1s zTestSystemSwapMemory.test_freec CsŽtjdddv}tjdd^}t d¡t ¡}| t|ƒd¡|d}|  dt |j ƒ¡| |j d¡| |j d¡WdQRXWdQRXdS) Nzpsutil._common.openT)r|)rržrdrz9'sin' and 'sout' swap memory stats couldn't be determined)rr~r£r¤r¥r…rÆr¦r?r§r¨r©ÚsinÚsout)rˆr€r«r¬r­r/r/r0Útest_missing_sin_sout8s  z*TestSystemSwapMemory.test_missing_sin_soutc Cs’tdttjdƒƒv}tjdd^}t d¡t ¡}|  t |ƒd¡|d}|  dt |j ƒ¡|  |jd¡|  |jd¡WdQRXWdQRXdS) Nz /proc/vmstatzno such file or directoryT)rržrdrzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rƒr¹rºr»r£r¤r¥r…rÆr¦r?r§r¨r©rÇrÈ)rˆr€r«r¬r­r/r/r0Útest_no_vmstat_mockedGs  z*TestSystemSwapMemory.test_no_vmstat_mockedc Cs†| ¡st d¡St d¡}t ¡}WdQRXddlm}|  ¡\}}}}}}}||9}||9}|  |j |¡|j |j |tddS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor)rŽ)rÅrÚskiprr~r…rÆZpsutil._psutil_linuxZ _psutil_linuxZ linux_sysinfor¦r`r‡rXr)rˆr€ÚswapZcextr_r`rXZunit_multiplierr/r/r0Útest_meminfo_against_sysinfoZs   z1TestSystemSwapMemory.test_meminfo_against_sysinfoc Cs"tddƒ}t ¡WdQRXdS)Nz /proc/meminfoó)rr…rÆ)rˆr€r/r/r0Ú#test_emulate_meminfo_has_no_metricsjs z8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsN) r¿rÀrÁÚ staticmethodrÅr‹rr’r“rÉrÊrÍrÏr/r/r/r0rÂs rÂc@seZdZdd„ZdS)ÚTestSystemCPUTimescCs t ¡j}t dt ¡d¡d}ttt |  d¡ƒƒ}|dkrL|  d|¡n |  d|¡|dkrn|  d|¡n |  d|¡|d kr|  d |¡n |  d |¡dS) Nz \d+\.\d+\.\d+érrl)rÒéé Ústeal)rÒrÓrZguest)rŒrÒrZ guest_nice) r…Ú cpu_timesÚ_fieldsÚreÚfindallÚosÚunamernror\r<r§Ú assertNotIn)rˆrFZ kernel_verZkernel_ver_infor/r/r0Ú test_fields{s   zTestSystemCPUTimes.test_fieldsN)r¿rÀrÁrÝr/r/r/r0rÑxsrÑc@s„eZdZe ej d¡ d¡dd„ƒZe ej d¡ d¡dd„ƒZ e e d ƒ d ¡d d „ƒZ e e d ƒ d¡dd„ƒZ dd„Z dS)ÚTestSystemCPUCountLogicalz/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc CsVtdƒ}| ¡ ¡}WdQRXdt|ƒkrRt| d¡dƒd}| t ¡|¡dS)Nz/sys/devices/system/cpu/onlineú-rd) r:rÃrir¨r\r<r¦r…Ú cpu_count)rˆrDÚvaluer/r/r0Útest_against_sysdev_cpu_onlines   z8TestSystemCPUCountLogical.test_against_sysdev_cpu_onlinez/sys/devices/system/cpuz&/sys/devices/system/cpu does not existcCs0t d¡}tdd„|Dƒƒ}| t ¡|¡dS)Nz/sys/devices/system/cpucSs g|]}t d|¡dk r|‘qS)zcpu\d+$N)rØÚsearch)rMrJr/r/r0rOszITestSystemCPUCountLogical.test_against_sysdev_cpu_num..)rÚÚlistdirr?r¦r…rà)rˆZlsÚcountr/r/r0Útest_against_sysdev_cpu_num™s z5TestSystemCPUCountLogical.test_against_sysdev_cpu_numZnprocznproc utility not availablecCs$ttdƒƒ}| tjdd|¡dS)Nz nproc --allT)Úlogical)r\rr¦r…rà)rˆÚnumr/r/r0Útest_against_nproc s z,TestSystemCPUCountLogical.test_against_nprocÚlscpuzlscpu utility not availablecCs8tdƒ}tdd„| d¡Dƒƒ}| tjdd|¡dS)Nzlscpu -pcSsg|]}| d¡s|‘qS)ú#)rY)rMrJr/r/r0rO¨sz@TestSystemCPUCountLogical.test_against_lscpu..rWT)rç)rr?r<r¦r…rà)rˆr]rèr/r/r0Útest_against_lscpu¥sz,TestSystemCPUCountLogical.test_against_lscpuc Csddl}|j ¡}tjdtdê}| |j ¡|¡tjddd:}| |j ¡¡| |jd¡| |j ddd¡WdQRXt d d ƒ}|  ¡}WdQRXt   |¡}tjd|dd }| |j ¡|¡WdQRXtd d ƒ}| |j ¡|¡|jWdQRXWdQRXdS) Nrzpsutil._pslinux.os.sysconf)r}zpsutil._common.openT)r|rÒz /proc/statz /proc/cpuinfoÚrb)Ú return_valuer|rÎ)r²Ú_pslinuxZcpu_count_logicalrr~r=r¦Ú assertIsNoneZ call_countÚ call_argsr:rÃrrrtrZcalled)rˆr…Zoriginalr€rDZ cpuinfo_dataÚ fake_filer/r/r0Útest_emulate_fallbacks«s$       z0TestSystemCPUCountLogical.test_emulate_fallbacksN)r¿rÀrÁrÚskipIfrÚÚpathÚexistsrârærrérìrór/r/r/r0rÞsrÞc@s6eZdZe edƒ d¡dd„ƒZdd„Zdd„Zd S) ÚTestSystemCPUCountPhysicalrêzlscpu utility not availablecCs`tdƒ}tƒ}x4| d¡D]&}| d¡s| d¡}| |d¡qW| tjddt|ƒ¡dS)Nzlscpu -prWrëú,rdF)rç) rÚsetr<rYÚaddr¦r…ràr?)rˆr]Zcore_idsrErFr/r/r0rìÐs  z-TestSystemCPUCountPhysical.test_against_lscpuc CsFtj ¡}tjdgd}tj ¡}WdQRX|dk rB| ||¡dS)Nz glob.glob)rî)r…rïÚcpu_count_physicalrr~r¦)rˆZmeth_1r€Zmeth_2r/r/r0Ú test_method_2Ús    z(TestSystemCPUCountPhysical.test_method_2c CsHtjdgd0}tjddd}| tj ¡¡WdQRXWdQRXdS)Nz glob.glob)rîzpsutil._common.openT)r|)rr~rðr…rïrû)rˆÚm1Úm2r/r/r0Útest_emulate_noneâs$z,TestSystemCPUCountPhysical.test_emulate_noneN) r¿rÀrÁrrôrrìrürÿr/r/r/r0r÷Ís r÷c@szeZdZe e d¡dd„ƒZe e d¡dd„ƒZe e d¡dd„ƒZe e d¡dd „ƒZ e e d¡d d „ƒZ d S) ÚTestSystemCPUFrequencyz not supportedc s4‡fdd„}tjj‰tjd|ddWdQRXdS)Ncs| d¡rdSˆ|ƒSdS)Nz&/sys/devices/system/cpu/cpufreq/policyF)rY)rõ)Ú orig_existsr/r0Úpath_exists_mockðs zMTestSystemCPUFrequency.test_emulate_use_second_file..path_exists_mockzos.path.existsT)r}r|)rÚrõrörr~)rˆrr/)rr0Útest_emulate_use_second_fileís   z3TestSystemCPUFrequency.test_emulate_use_second_filec s²‡‡fdd„}g‰tjj‰z~tjd|dfttjƒt ¡}|  |j d¡|  |j d¡x0tjddD] }|  |j d¡|  |j d¡qhWWdQRXWdttjƒttƒXdS)Ncs,| d¡rdS|dkr ˆ d¡ˆ|ƒSdS)Nz/sys/devices/system/cpu/Fz /proc/cpuinfo)rYr@)rõ)ÚflagsÚos_path_existsr/r0rÿs   zITestSystemCPUFrequency.test_emulate_use_cpuinfo..path_exists_mockzos.path.exists)r}gT)Úpercpu) rÚrõrörr~rr…rïÚcpu_freqr¦ÚmaxÚmin)rˆrr¬Úfreqr/)rrr0Útest_emulate_use_cpuinfoûs   z/TestSystemCPUFrequency.test_emulate_use_cpuinfoc sš‡fdd„}t‰trdnd}tj||dftjdddLt ¡}| |jd ¡|jd krj| |jd ¡|j d kr‚| |j d ¡WdQRXWdQRXdS) Ncs€| d¡r| d¡rt d¡S| d¡r<| d¡r.open_mockz builtins.openz__builtin__.open)r}zos.path.existsT)rîg@@ggÀ‚@gà…@) r:rrr~r…rr¦Úcurrentr r)rˆr{rr r/)rzr0Útest_emulate_datas     z(TestSystemCPUFrequency.test_emulate_datac s‡fdd„}t‰trdnd}tj||dêtjdddÐtjd d d¶tjdd }| |d jd ¡|d jdkrŠ| |d jd¡|d j dkrª| |d j d¡| |djd¡|djdkrÜ| |djd¡|dj dkrü| |dj d¡WdQRXWdQRXWdQRXdS)NcsÞ|}| d¡r"| d¡r"t d¡S| d¡r@| d¡r@t d¡S| d¡r^| d¡r^t d¡S| d¡r|| d¡r|t d ¡S| d¡rš| d¡ršt d ¡S| d¡r¸| d¡r¸t d ¡S|d krÊt d ¡Sˆ|f|ž|ŽSdS)Nz/scaling_cur_freqz'/sys/devices/system/cpu/cpufreq/policy0s100000z/scaling_min_freqs200000z/scaling_max_freqs300000z'/sys/devices/system/cpu/cpufreq/policy1s400000s500000s600000z /proc/cpuinfoscpu MHz : 100 cpu MHz : 400)r rYrrrt)rurvrwÚn)rzr/r0r{9s,                   z@TestSystemCPUFrequency.test_emulate_multi_cpu..open_mockz builtins.openz__builtin__.open)r}zos.path.existsT)rîz!psutil._pslinux.cpu_count_logicalrÒ)rrgY@ggi@gÀr@rdgy@g@@gÀ‚@) r:rrr~r…rr¦r r r)rˆr{rr r/)rzr0Útest_emulate_multi_cpu7s$    z-TestSystemCPUFrequency.test_emulate_multi_cpuc s„‡fdd„}t‰trdnd}tj||dPtjddd6tjd d dt ¡}| |jd ¡WdQRXWdQRXWdQRXdS) NcsR| d¡rttjdƒ‚n6| d¡r,t d¡S|dkr>t d¡Sˆ|f|ž|ŽSdS)Nz/scaling_cur_freqrLz/cpuinfo_cur_freqs200000z /proc/cpuinfoscpu MHz : 200)r r¹rºr»rrrt)rurvrw)rzr/r0r{hs    zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file..open_mockz builtins.openz__builtin__.open)r}zos.path.existsT)rîz!psutil._pslinux.cpu_count_logicalrdéÈ)r:rrr~r…rr¦r )rˆr{rr r/)rzr0Ú%test_emulate_no_scaling_cur_freq_filees   z.ifconfigTF)ZpernicÚnowrapr0i)rŽr1r*ir+r,é r-r.r/) r…Únet_io_countersrr$r‡r0r1r*r+r,r-r.r/)rˆr2Znior&Z ifconfig_retr/)rur0r'Þs.  z-TestSystemNetIOCounters.test_against_ifconfigN)r¿rÀrÁrr'r/r/r/r0r)Ûsr)c@s8eZdZejdedejddddd„ƒƒZdd „Zd S) ÚTestSystemNetConnectionsz psutil._pslinux.socket.inet_ntop)r}zpsutil._pslinux.supports_ipv6F)rîcCsRy*t tjtj¡}| |j¡| d¡Wntjk r@YnXtjdddS)N)z::1rZinet6)Úkind) r"rBZ SOCK_STREAMZ addCleanupÚcloseZbindÚerrorr…Únet_connections)rˆZ supports_ipv6rCr.r/r/r0Útest_emulate_ipv6_unsupported s z6TestSystemNetConnections.test_emulate_ipv6_unsupportedc Cs,tdt d¡ƒ}tjddWdQRXdS)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 Zunix)r7)rr r¡r…r:)rˆr€r/r/r0Útest_emulate_unixs   z*TestSystemNetConnections.test_emulate_unixN)r¿rÀrÁrr~r=r;r<r/r/r/r0r6 s  r6c@s>eZdZe eedƒ d¡eƒdd„ƒƒZdd„Z dd„Z d S) ÚTestSystemDiskPartitionsÚstatvfszos.statvfs() not availablecCsrdd„}xdtjddD]T}t |j¡}||jƒ\}}}}| |j|¡|j|j|td|j|j |tdqWdS)NcSsztd|ƒ ¡}| d¡}| d¡| d¡}| ¡dd…\}}}}|dkrRd}t|ƒt|ƒt|ƒ}}}||||fS)Nzdf -P -B 1 "%s"rWrr8ZnonerL)rrir<Úpopr\)rõr]r^rEÚdevr`rarXr/r/r0Údf2s   z4TestSystemDiskPartitions.test_against_df..dfF)Úall)rŽ) r…Údisk_partitionsZ disk_usageZ mountpointr¦r`r‡rXrra)rˆrAÚpartZusager@r`rarXr/r/r0Útest_against_df-s    z(TestSystemDiskPartitions.test_against_dfc Cs´tddƒ}| ¡}WdQRXd|krPxˆt ¡D]}|jdkr0Pq0W| d¡n`t tdƒ¡}t j d|dd<}t j d d gd  }t ¡}|  |d jd¡WdQRXWdQRXdS) Nz/proc/filesystemsrÚzfszcouldn't find any ZFS partitionz nodev zfs zpsutil._common.openT)rîr|z$psutil._pslinux.cext.disk_partitions)z /dev/sdb3ú/rFZrw)rîr) r:rÃr…rCZfstypeZfailrrrsrrr~r¦)rˆrDrÄrDròrýrþr¬r/r/r0Ú test_zfs_fsFs     z$TestSystemDiskPartitions.test_zfs_fsc CsJz.is_storage_deviceT)r|r}rdre) rr r¡rr~r…rPrðr¦rQrV)rˆr¬rar/r/r0Útest_emulate_exclude_partitions¾s$    z8TestSystemDiskIoCounters.test_emulate_exclude_partitionsc CsTdd„}tjdd}tjdd|dtjdd}WdQRX| t|ƒt|ƒ¡dS)NcSs|dkr dSdS)Nz/proc/diskstatsFTr/)rõr/r/r0röÞsz?TestSystemDiskIoCounters.test_emulate_use_sysfs..existsT)r^zpsutil._pslinux.os.path.exists)r|r})r…rPrr~r¦r?)rˆröZwprocfsZwsysfsr/r/r0Útest_emulate_use_sysfsÝs   z/TestSystemDiskIoCounters.test_emulate_use_sysfsc Cs6dd„}tjdd|d| ttj¡WdQRXdS)NcSsdS)NFr/)rõr/r/r0röêsz>TestSystemDiskIoCounters.test_emulate_not_impl..existszpsutil._pslinux.os.path.existsT)r|r})rr~rIÚNotImplementedErrorr…rP)rˆrör/r/r0Útest_emulate_not_implés z.TestSystemDiskIoCounters.test_emulate_not_implN) r¿rÀrÁr[r\r]r`rbrcrer/r/r/r0rMjs rMc@sReZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Ze ƒd d„ƒZ dd„Z dS)ÚTestMisccCs(tdƒ}t ¡}| t|ƒt|ƒ¡dS)Nz boot time)rkr…Ú boot_timer¦r\)rˆr‰rŠr/r/r0Útest_boot_timeúszTestMisc.test_boot_timec s| ¡}t |¡ttj |d¡dƒ$}| d¡| d¡| d¡WdQRXz¤t‰‡fdd„}trldnd }tj ||d nt t ƒ|  t t j¡|j t t jd d |  t t j¡|j t t jd d |  t t j¡|j t t jd d |t _| t  ¡d ¡| tt  ¡ƒd ¡t jd d }| t|ƒd ¡t jd d }| ttt|ƒƒd ¡ttj |d¡dƒ$}| d¡| d¡| d¡WdQRX| t  ¡d ¡| tt jd d ƒd ¡| tt  ¡ƒd ¡| tttt jd d ƒƒd ¡WdQRXWdt |¡t t ƒX| t jd¡dS)Nrjr­zcpu 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&| d¡rttjdƒ‚ˆ|f|ž|ŽS)Nz/proczrejecting access for test)rYr¹rºr»)rurvrw)rzr/r0r{ s  z4TestMisc.test_no_procfs_on_import..open_mockz builtins.openz__builtin__.open)r}T)rrzcpu 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)Ú get_testfnrÚÚmkdirr:rõrAÚwriterrr~rr…rIr¹rÖÚ cpu_percentÚcpu_times_percentrJr¦ÚsumroÚassertNotEqualÚshutilZrmtree)rˆZ my_procfsrDr{rZper_cpu_percentZper_cpu_times_percentr/)rzr0Útest_no_procfs_on_importÿsN         (  z!TestMisc.test_no_procfs_on_importc Cstdt d¡ ¡ƒ.}t ¡tjddt ¡tjddWdQRXtdt d¡ ¡ƒ²}t ¡}tjdd}t ¡}tjdd}| |d¡| t|ƒd¡| t|ƒd¡| t|ƒd¡| tt t|ƒƒd¡| tt t|ƒƒd¡|  |j d¡| |j d¡WdQRXdS)Nz /proc/statzŽ 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 T)rzŽ 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 rgY@) rr r¡r¢r…rlrmrornror¦rÕÚuser)rˆr€rlZcpu_percent_percpurmZcpu_times_percent_percpur/r/r0Útest_cpu_steal_decrease<s0    z TestMisc.test_cpu_steal_decreasec Cs.tjddd}| ttjj¡WdQRXdS)Nzpsutil._common.openT)r|)rr~rIr$r…rïrg)rˆr€r/r/r0Útest_boot_time_mockedes  zTestMisc.test_boot_time_mockedc Csštjddgd}| t ¡djd¡WdQRXtjddgd}| t ¡djd¡WdQRXtjddgd}| t ¡djd¡WdQRXdS) Nzpsutil._pslinux.cext.users)Ú giampaolozpts/2z:0g€hÕATrÒ)rîrZ localhost)ruzpts/2z:0.0g€hÕATrÒ)ruzpts/2Úfoog€hÕATrÒrv)rr~r¦r…ZusersZhost)rˆr€r/r/r0Útest_users_mockedls     zTestMisc.test_users_mockedcCs®| ¡}t |¡zŽ|t_| ttj¡| ttj¡|jttjdd| ttj ¡| ttj ¡| ttj ¡| ttj ¡| ttj ¡| tjtj¡Wddt_XdS)NT)rz/proc)rirÚrjr…rJrIr¹r†rÖrgr:r5r#rCZ NoSuchProcessÚProcess)rˆZtdirr/r/r0Útest_procfs_path€s zTestMisc.test_procfs_pathcCsˆtƒ}| ¡zjt ¡}| ¡}| t|ƒd¡t|dd„ddj}|  |j |¡t |¡}|  ¡|  |t  ¡¡Wd| ¡XdS)NrÒcSs|jS)N)Úid)rJr/r/r0Ú rÎz)TestMisc.test_issue_687..)Úkeyrd)rÚstartr…rxÚthreadsr¦r?ÚsortedrzroÚpidZas_dictrÜZpidsÚstop)rˆÚtÚpr~ÚtidZptr/r/r0Útest_issue_687“s zTestMisc.test_issue_687c Cstddƒ}WdQRXdS)Nz/proc/%s/statusrL)r)rˆr€r/r/r0Útest_pid_exists_no_proc_status¨s z'TestMisc.test_pid_exists_no_proc_statusN) r¿rÀrÁrhrqrsrtrwryrr…r†r/r/r/r0rf÷s=)rfz no batteryc@sfeZdZe edƒ d¡dd„ƒZdd„Zdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„ZdS)ÚTestSensorsBatteryZacpizacpi utility not availablecCsDtdƒ}t| d¡d ¡ dd¡ƒ}t ¡j}|j||dddS)Nzacpi -brørdrrL)rŽ) rr\r<riÚreplacer…Úsensors_batteryÚpercentr‡)rˆr]Z acpi_valuerŠr/r/r0Ú test_percentºs zTestSensorsBattery.test_percentc s`‡fdd„}t‰trdnd}tj||d,}| t ¡jd¡| t ¡jtj ¡WdQRXdS)Ncs2| d¡s| d¡rt d¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlineó1)r rrrt)rurvrw)rzr/r0r{Ãs z@TestSensorsBattery.test_emulate_power_plugged..open_mockz builtins.openz__builtin__.open)r}T) r:rrr~r¦r…r‰Ú power_pluggedZsecsleftZPOWER_TIME_UNLIMITED)rˆr{rr€r/)rzr0Útest_emulate_power_pluggedÁs  z-TestSensorsBattery.test_emulate_power_pluggedc sL‡fdd„}t‰trdnd}tj||d}| t ¡jd¡WdQRXdS)NcsN| d¡s| d¡r"ttjdƒ‚n(| d¡r:t tdƒ¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlinerLz/statusZcharging)r r¹rºr»rrrsr)rurvrw)rzr/r0r{Ôs  zBTestSensorsBattery.test_emulate_power_plugged_2..open_mockz builtins.openz__builtin__.open)r}T)r:rrr~r¦r…r‰r)rˆr{rr€r/)rzr0Útest_emulate_power_plugged_2Ñs   z/TestSensorsBattery.test_emulate_power_plugged_2c sL‡fdd„}t‰trdnd}tj||d}| t ¡jd¡WdQRXdS)Ncs2| d¡s| d¡rt d¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlineó0)r rrrt)rurvrw)rzr/r0r{äs zDTestSensorsBattery.test_emulate_power_not_plugged..open_mockz builtins.openz__builtin__.open)r}F)r:rrr~r¦r…r‰r)rˆr{rr€r/)rzr0Útest_emulate_power_not_pluggedâs   z1TestSensorsBattery.test_emulate_power_not_pluggedc sL‡fdd„}t‰trdnd}tj||d}| t ¡jd¡WdQRXdS)NcsN| d¡s| d¡r"ttjdƒ‚n(| d¡r:t tdƒ¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlinerLz/statusZ discharging)r r¹rºr»rrrsr)rurvrw)rzr/r0r{ós  zFTestSensorsBattery.test_emulate_power_not_plugged_2..open_mockz builtins.openz__builtin__.open)r}F)r:rrr~r¦r…r‰r)rˆr{rr€r/)rzr0Ú test_emulate_power_not_plugged_2ðs   z3TestSensorsBattery.test_emulate_power_not_plugged_2c sJ‡fdd„}t‰trdnd}tj||d}| t ¡j¡WdQRXdS)NcsJ| d¡s| d¡r"ttjdƒ‚n$| d¡r6t d¡Sˆ|f|ž|ŽSdS)Nz"/sys/class/power_supply/AC0/onlinez!/sys/class/power_supply/AC/onlinerLz#/sys/class/power_supply/BAT0/statuss???)rYr¹rºr»rrrt)rurvrw)rzr/r0r{s     zETestSensorsBattery.test_emulate_power_undetermined..open_mockz builtins.openz__builtin__.open)r})r:rrr~rðr…r‰r)rˆr{rr€r/)rzr0Útest_emulate_power_undetermineds   z2TestSensorsBattery.test_emulate_power_undeterminedc Cs,tddƒ}| t ¡jd¡WdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullrr)rr¦r…r‰rŠ)rˆr€r/r/r0Útest_emulate_energy_full_0s z-TestSensorsBattery.test_emulate_energy_full_0c CshtdttjdƒƒLtdttjdƒƒ.tddƒ| t ¡jd¡WdQRXWdQRXWdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullrLz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88éX) rƒr¹rºr»rr¦r…r‰rŠ)rˆr/r/r0Ú"test_emulate_energy_full_not_avails z5TestSensorsBattery.test_emulate_energy_full_not_availc CsntdttjdƒƒRtdttjdƒƒ4tdttjdƒƒ| t ¡j¡WdQRXWdQRXWdQRXdS)Nz!/sys/class/power_supply/AC/onlinerLz"/sys/class/power_supply/AC0/onlinez#/sys/class/power_supply/BAT0/status)rƒr¹rºr»rðr…r‰r)rˆr/r/r0Útest_emulate_no_power'sz(TestSensorsBattery.test_emulate_no_powerN)r¿rÀrÁrrôrr‹rŽrr‘r’r“r”r–r—r/r/r/r0r‡¶s r‡c@seZdZdd„ZdS)ÚTestSensorsBatteryEmulatedc sd‡fdd„}t‰trdnd}tjddgd.}tj||d}| t ¡¡WdQRXWdQRXdS) Ncs\| d¡rt tdƒ¡S| d¡r0t tdƒ¡S| d¡rHt tdƒ¡Sˆ|f|ž|ŽSdS)Nz /energy_nowZ60000000z /power_nowÚ0z /energy_fullZ60000001)r rrrsr)rurvrw)rzr/r0r{9s   z5TestSensorsBatteryEmulated.test_it..open_mockz builtins.openz__builtin__.openz os.listdirZBAT0)rî)r})r:rrr~ZassertIsNotNoner…r‰)rˆr{rZmlistdirZmopenr/)rzr0Útest_it8s  "z"TestSensorsBatteryEmulated.test_itN)r¿rÀrÁršr/r/r/r0r˜5sr˜c@seZdZdd„Zdd„ZdS)ÚTestSensorsTemperaturesc sž‡fdd„}t‰trdnd}tj||djtjddgdNt ¡d d }| |jd ¡| |jd ¡| |j d ¡| |j d¡WdQRXWdQRXdS)Ncs€| d¡rt tdƒ¡S| d¡r0t tdƒ¡S| d¡rDt d¡S| d¡rXt d¡S| d ¡rlt d ¡Sˆ|f|ž|ŽSdS) Nz/nameruz /temp1_labelÚlabelz /temp1_inputs30000z /temp1_maxs40000z /temp1_crits50000)r rrrsrrt)rurvrw)rzr/r0r{Ps        zCTestSensorsTemperatures.test_emulate_class_hwmon..open_mockz builtins.openz__builtin__.open)r}z glob.globz/sys/class/hwmon/hwmon0/temp1)rîrurrœg>@gD@gI@) r:rrr~r…Úsensors_temperaturesr¦rœr ÚhighÚcritical)rˆr{rÚtempr/)rzr0Útest_emulate_class_hwmonOs   z0TestSensorsTemperatures.test_emulate_class_hwmonc s¦‡fdd„}dd„}t‰tr dnd}tj||djtjdd |d Nt ¡d d }| |jd ¡| |jd¡| |j d¡| |j d¡WdQRXWdQRXdS)Ncsl| d¡rt d¡S| d¡r(t d¡S| d¡r@t tdƒ¡S| d¡rXt tdƒ¡Sˆ|f|ž|ŽSdS) NZ0_temps50000r s30000Z0_typerŸÚtyperu)r rrrtrsr)rurvrw)rzr/r0r{ks      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_tempr/)rõr/r/r0Ú glob_mockwszETestSensorsTemperatures.test_emulate_class_thermal..glob_mockz builtins.openz__builtin__.open)r}z glob.globT)r|r}rurrLg>@gI@) r:rrr~r…rr¦rœr ržrŸ)rˆr{r£rr r/)rzr0Útest_emulate_class_thermaljs   z2TestSensorsTemperatures.test_emulate_class_thermalN)r¿rÀrÁr¡r¤r/r/r/r0r›Lsr›c@seZdZdd„ZdS)ÚTestSensorsFansc s‚‡fdd„}t‰trdnd}tj||dNtjddgd2t ¡d d }| |jd ¡| |jd ¡WdQRXWdQRXdS) Ncs\| d¡rt tdƒ¡S| d¡r0t tdƒ¡S| d¡rHt tdƒ¡Sˆ|f|ž|ŽSdS)Nz/nameruz /fan1_labelrœz /fan1_inputZ2000)r rrrsr)rurvrw)rzr/r0r{’s   z4TestSensorsFans.test_emulate_data..open_mockz builtins.openz__builtin__.open)r}z glob.globz/sys/class/hwmon/hwmon2/fan1)rîrurrœiÐ) r:rrr~r…Z sensors_fansr¦rœr )rˆr{rZfanr/)rzr0r‘s   z!TestSensorsFans.test_emulate_dataN)r¿rÀrÁrr/r/r/r0r¥Žsr¥c@s´eZdZeƒdd„ƒZdd„Ze ed¡dd„ƒZ dd „Z d d „Z d d „Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Ze e d¡dd„ƒZdd „Zd!d"„Zd#d$„Zd%S)&Ú TestProcesscCsÀ| ¡}t d|¡}| |¡}tdd„d|ƒt |j¡}t  d¡|  ¡}|j dd}|j |j tdd „|Dƒƒd d |j |jtd d „|Dƒƒd d |j |jtd d „|Dƒƒd d dS)Nzk import time with open("%s", "w") as f: time.sleep(10) cSs t d¡S)Nrl)rÚrär/r/r/r0r{·rÎz3TestProcess.test_memory_full_info..z'%s' not in retgš™™™™™¹?F)ZgroupedcSsg|]}|j|j‘qSr/)Z private_dirtyZ private_clean)rMrJr/r/r0rO½sz5TestProcess.test_memory_full_info..i)rŽcSsg|] }|j‘qSr/)Úpss)rMrJr/r/r0rOÀscSsg|] }|j‘qSr/)rÌ)rMrJr/r/r0rOÂs)rir r¡Zpyrunrr…rxr€ÚtimeZsleepÚmemory_full_infoÚ memory_mapsr‡Úussrnr§rÌ)rˆÚtestfnÚsrcZsprocrƒr½Úmapsr/r/r0Útest_memory_full_info®s      z!TestProcess.test_memory_full_infoc Csftdt ¡t d¡ ¡ƒ@}t ¡}| ¡}|  |j d¡|  |j d¡|  |j d¡WdQRXdS)Nz/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 ili i<) rrÚÚgetpidr r¡r¢r…rxr©r¦r«r§rÌ)rˆr€rƒr½r/r/r0Útest_memory_full_info_mockedÄs z(TestProcess.test_memory_full_info_mockedzunreliable on PYPYc Csjdd„}| ¡}t|dƒ| ||ƒjd¡WdQRXt|dƒ| ||ƒjd¡WdQRXt|dƒ| ||ƒjd¡WdQRXt|dƒ| ||ƒjd¡WdQRXt|dƒ| ||ƒjd¡WdQRXt|dƒ| ||ƒjd¡WdQRXtrft|ƒt|d ƒ| ||ƒjd¡WdQRXt|ƒt|d ƒ| ||ƒjd¡WdQRXdS) NcSs\t ¡}t ¡t}x:x4| ¡D](}|jtj |¡kr:|St ¡|kr Pq WqWtdƒ‚dS)Nztimeout looking for test file) r…rxr¨r Ú open_filesrõrÚÚabspathr$)ZfnamerƒZ giveup_atÚfiler/r/r0Ú get_test_fileés   z7TestProcess.test_open_files_mode..get_test_filer­rr´zr+zw+za+rJzx+)rir:r¦Úmoderr)rˆrµr¬r/r/r0Útest_open_files_modeçs*         z TestProcess.test_open_files_modec Csžt ¡}| ¡}t| ¡dƒvt|jdt|ƒƒtjdt t j dƒd}| ¡}WdQRXtjdt t j dƒd}|  | ¡g¡WdQRXWdQRXdS)Nr­zlen(ret) != %izpsutil._pslinux.os.readlinkrL)r})r…rxr²r:rirr?rr~ÚOSErrorrºr»ZEINVALr¦)rˆrƒÚfilesr€r/r/r0Útest_open_files_file_gone s z%TestProcess.test_open_files_file_gonec Csxt ¡}| ¡}t| ¡dƒPt|jdt|ƒƒtr.open_mockz builtins.openz__builtin__.open)r}cs4| dt ¡¡r ttjdƒ‚nˆ|f|ž|ŽSdS)Nz /proc/%s/taskrL)rYrÚr°r¹rºZEPERM)rurvrw)rzr/r0r{€s) r:rrr~r…rxr~r¦rIÚ AccessDenied)rˆr{rr€r¬r/)rzr0Útest_threads_mockedls    zTestProcess.test_threads_mockedc CsŽtjdttjdƒdn}tjdt dd¡dL}t ¡ ¡}|  |d¡tjddd|  tj t ¡j¡WdQRXWdQRXWdQRXdS) Nzpsutil._pslinux.readlinkrL)r}zpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsF)rî) rr~r¸rºr»r…rÅrxrÂr¦rIÚ ZombieProcess)rˆrýrþr¬r/r/r0Útest_exe_mocked‰s   zTestProcess.test_exe_mockedc CsPtdt ¡ttjdƒƒ,}t ¡}| t ¡|  ¡WdQRXWdQRXdS)Nz/proc/%s/smapsrL) rƒrÚr°r¹rºr»r…rxrIrrª)rˆr€rƒr/r/r0Útest_issue_1014žs  zTestProcess.test_issue_1014z not supportedc Cs€tjdttjdƒd:}t ¡}| ¡| tj ¡}|  tj ¡WdQRXWdQRX|  |j j|j¡|  |j j| ¡¡dS)Nzpsutil._pslinux.prlimitrL)r})rr~r¸rºZENOSYSr…rxrurIrÇZrlimitZ RLIMIT_NOFILEr¦Ú exceptionr€)rˆr€rƒr‚r/r/r0Útest_rlimit_zombie©s zTestProcess.test_rlimit_zombiec Cs|tjdttjdƒd6}t ¡}| ¡| tj ¡}|  ¡WdQRXWdQRX|  |j j |j ¡|  |j j| ¡¡dS)Nzpsutil._pslinux.os.readlinkrL)r})rr~r¸rºr»r…rxrurIrÇrÃr¦rÊr€)rˆr€rƒr‚r/r/r0Útest_cwd_zombie¸s 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|¡|  | ¡d¡WdQRXdS)Nr)Ú CLOCK_TICKSr™z(cat)ÚZÚ1Ú2Ú3Ú4Ú5Ú6Ú7rhz /proc/%s/statÚcatrdrÓrÒrŒr8rerN)r²rÍrAr¢rrÚr°r…rxr¦ruÚstatusZ STATUS_ZOMBIEÚppidZ create_timergrÖrrÚsystemÚ children_userÚchildren_systemZiowaitZcpu_num)rˆrÍrvrxrƒZcpur/r/r0Útest_stat_file_parsingÃst z"TestProcess.test_stat_file_parsingc Csètdt ¡t d¡ ¡ƒÂt ¡}| |  ¡j d¡| |  ¡j d¡| |  ¡d¡|  ¡}| |jd¡| |jd¡| |jd¡| ¡}| |jd ¡| |jd ¡| |jd ¡| |j ¡ttd d ƒƒ¡WdQRXdS)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: 13ré éBièiéiêiìiíiîrrO)rrÚr°r r¡r¢r…rxr¦Únum_ctx_switchesÚ voluntaryÚ involuntaryÚ num_threadsÚuidsÚrealZ effectiveZsavedÚgidsÚ_procÚ_get_eligible_cpusÚlistr>)rˆrƒrãrår/r/r0Útest_status_file_parsings" z$TestProcess.test_status_file_parsingN)r¿rÀrÁrr¯r±rrôrr·rºr»r¼r¿rÀrÁrÄrÆrÈrÉr rËrÌrÜrér/r/r/r0r¦«s"#%   ?r¦c@sreZdZdZedd„ƒZdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z e ƒdd„ƒZdd„Zdd„ZdS)Ú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 ¡|_dS)N)r…rxÚproc)Úclsr/r/r0Ú setUpClass%sz#TestProcessAgainstStatus.setUpClassc Cs|tj d|jj¡^}xJ|D]B}| ¡}| |¡r| d¡d}yt|ƒSt k r\|SXqWt d|ƒ‚WdQRXdS)Nz/proc/%s/statusú rÒz can't find %r) r…Ú _psplatformZ open_textrër€rirYÚ partitionr\r=)rˆZ linestartrDrErár/r/r0Úread_status_file)s   z)TestProcessAgainstStatus.read_status_filecCs | d¡}| |j ¡|¡dS)NzName:)rñr¦rëru)rˆrár/r/r0Ú test_name6s z"TestProcessAgainstStatus.test_namecCsH| d¡}|| d¡d| d¡…}| dd¡}| |j ¡|¡dS)NzState:ú(rdú)rhrß)rñÚfindÚrfindrˆr¦rër×)rˆrár/r/r0Ú test_status:s  z$TestProcessAgainstStatus.test_statuscCs | d¡}| |j ¡|¡dS)NzPPid:)rñr¦rërØ)rˆrár/r/r0Ú test_ppid@s z"TestProcessAgainstStatus.test_ppidcCs | d¡}| |j ¡|¡dS)NzThreads:)rñr¦rërâ)rˆrár/r/r0Útest_num_threadsDs z)TestProcessAgainstStatus.test_num_threadscCs:| d¡}ttt| ¡dd…ƒƒ}| |j ¡|¡dS)NzUid:rdr8)rñrnror\r<r¦rërã)rˆrár/r/r0Ú test_uidsHs z"TestProcessAgainstStatus.test_uidscCs:| d¡}ttt| ¡dd…ƒƒ}| |j ¡|¡dS)NzGid:rdr8)rñrnror\r<r¦rërå)rˆrár/r/r0Ú test_gidsMs z"TestProcessAgainstStatus.test_gidscCs@| d¡}| |j ¡j|¡| d¡}| |j ¡j|¡dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)rñr¦rërßràrá)rˆrár/r/r0Útest_num_ctx_switchesRs  z.TestProcessAgainstStatus.test_num_ctx_switchescCsN| d¡}dt|ƒkrJtt| d¡ƒ\}}| |j ¡tt ||dƒƒ¡dS)NzCpus_allowed_list:rßrd) rñr¨ror\r<r¦rëZ cpu_affinityrèr>)rˆráZmin_Zmax_r/r/r0Útest_cpu_affinityYs   z*TestProcessAgainstStatus.test_cpu_affinityc Cs>| d¡}t d¡}|jj ¡WdQRXdt|ƒkr:ndS)NzCpus_allowed_list:zpsutil._pslinux.per_cpu_timesrß)rñrr~rërærçr¨)rˆrár€r/r/r0Útest_cpu_affinity_eligible_cpus`s    z8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)r¿rÀrÁÚ__doc__Ú classmethodrírñròr÷rørùrúrûrrürýrþr/r/r/r0rês  rêc@seZdZdd„Zdd„ZdS)Ú TestUtilsc Cs2tjddd}| tj d¡d¡WdQRXdS)Nz os.readlinkz foo (deleted))rîr½rv)rr~r¦r…rïÚreadlink)rˆr€r/r/r0Ú test_readlinkrszTestUtils.test_readlinkc Csx| ¡}t|dƒ}| d¡WdQRX| tjj|ddd¡| tjj|ddd¡| tjj|dd d d ¡dS) NZwtzfoo F)ZbinaryrvTsfooz??r½)Zfallback)rir:rkr¦r…rïrÖ)rˆr¬rDr/r/r0Útest_catws zTestUtils.test_catN)r¿rÀrÁrrr/r/r/r0rosrÚ__main__)Ú run_from_name)]rÿZ __future__rrZr%rºZglobrrrÚrØrpr"r+r r¨r£r…rZpsutil._compatrrrrZ psutil.testsrr r r r r rrrrrrrrrrrrrrõr³ÚdirnameÚ__file__ZHEREr*Z SIOCGIFCONFrQr2r4rTZEMPTY_TEMPERATURESr1r3r5rIrTrcrgrkrpÚcontextmanagerrrƒrôr„rÂrÑrÞr÷rrrrr"r)r6r=rMrfr‡r˜r›r¥r¦rêrr¿Zpsutil.tests.runnerrr/r/r/r0Úsä                              .]? )- ? ?  }ArR