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"Ú inet_ptonÚAF_INET6Ú inet_ntop) r-ÚfÚlineÚfieldsZ unformattedÚgroupsÚiÚ formattedZpackedr/r/r0Úget_ipv6_addressis   rKc 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)rMr/r0ú ‰sz#get_mac_address..érr7)r rr!r"r#r$r%r&r(r)Ú SIOCGIFHWADDRr+r,Ú __builtin__rMrA)r-r r.ÚinforTr/)rMr0Úget_mac_addresszs    rVcCs|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ÚlinesrFÚ_ÚtotalÚusedrZÚntr/r/r0Ú free_swapŒs    recCs†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 -brWzC.UTF-8)rXrYZMemcSsg|] }t|ƒ‘qSr/)r^)rOrLr/r/r0rQ¨sz free_physmem..éérZztotal used free shared outputz%can't find 'Mem' in 'free' output: %sN)rr<r[r\r]r=rA)r_r`rFrbrcrZÚsharedrdr/r/r0Ú free_physmem›s   "ricCsVtdddid}x4| d¡D]&}| ¡}||krt| d¡dƒSqWtd|ƒ‚dS) Nz vmstat -srWzC.UTF-8)rXrYú rz can't find %r in 'vmstat' output)rr<Ústripr^r=)Ústatr_rFr/r/r0Úvmstat°s rmcCs:tdƒ ¡}d|krt d¡‚ttt| ¡d d¡ƒƒS)Nzfree -VÚUNKNOWNzcan't determine free versionr7Ú.)rrkrÚSkipTestÚtupleÚmapr^r<)r_r/r/r0Úget_free_version_info¹s  rsc #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)r|r{r~Ú patch_pointÚmr/)r{r|r}r0Úmock_open_contentÀs   r„c #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/)rxryrz)Úexcr|r}r/r0r~Üsz&mock_open_exception..open_mockz builtins.openz__builtin__.openT)rr€N)r:rrr)r|r…r~r‚rƒr/)r…r|r}r0Ú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)rmÚpsutilÚvirtual_memoryrbÚ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) rsZskipTestrircrˆr‰rŠrÚoutput)r‹rZÚ free_valuerr/r/r0Ú test_usedøs   z!TestSystemVirtualMemory.test_usedcCs*tdƒd}t ¡j}|j||tddS)Nz free memoryi)r‘)rmrˆr‰rZrŠr)r‹rŒrr/r/r0Ú test_frees  z!TestSystemVirtualMemory.test_freecCs*tdƒd}t ¡j}|j||tddS)Nz buffer memoryi)r‘)rmrˆr‰ÚbuffersrŠr)r‹rŒrr/r/r0Ú test_bufferss  z$TestSystemVirtualMemory.test_bufferscCs*tdƒd}t ¡j}|j||tddS)Nz active memoryi)r‘)rmrˆr‰ÚactiverŠr)r‹rŒrr/r/r0Ú test_actives  z#TestSystemVirtualMemory.test_activecCs*tdƒd}t ¡j}|j||tddS)Nzinactive memoryi)r‘)rmrˆr‰ÚinactiverŠr)r‹rŒrr/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’) rirhrrprˆr‰rŠrr“)r‹rZr”rr/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 -brYÚ availablerz(free does not support 'available' columnrfr7z %s %s %s)r‘r’) rr<rrpr^rˆr‰ržrŠr)r‹r_r`r”rr/r/r0Útest_available.s    z&TestSystemVirtualMemory.test_availablec Csdtdt d¡ ¡ƒD}tjdd*}t d¡t ¡}|j sDt ‚|  t |ƒd¡|d}|j  d¡slt ‚| 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¡|  |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Úalwaysrfrzpsutil/_pslinux.pyz#memory stats couldn't be determinedÚcachedrhr™r›r—rž)r„ÚtextwrapÚdedentÚencodeÚwarningsÚcatch_warningsÚ simplefilterrˆr‰ÚcalledÚAssertionErrorÚ assertEqualr?ÚfilenameÚendswithÚassertInÚstrÚmessager¢r™r›rhr—ržÚslab)r‹rƒÚwsÚretÚwr/r/r0Útest_warnings_on_misses=s4   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/meminforfis MemAvailable:édr)Úpsutil._pslinuxr¶r·r<r^ÚabsZ assertLess) r‹r¶r·ZmemsrErFrGÚaÚbZ diff_percentr/r/r0Útest_avail_old_percentds    &z.TestSystemVirtualMemory.test_avail_old_percentc Csvtdt d¡ ¡ƒX}tjdd}t ¡}WdQRX|js@t ‚|  |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)r l œ"rz,inactive memory stats couldn't be determined)r„r£r¤r¥r¦r§rˆr‰r©rªr«ržr®r¯r°)r‹rƒr²r³r´r/r/r0Ú test_avail_old_comes_from_kernelws z8TestSystemVirtualMemory.test_avail_old_comes_from_kernelc Csvtdt d¡ ¡ƒX}tjdd}t ¡}WdQRX|js@t ‚|  |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)r l`LGrz,inactive memory stats couldn't be determined)r„r£r¤r¥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)r l`LGrz,inactive memory stats couldn't be determined)r„r£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 ṡfdd„}t‰trdnd}tj|d|d–}t ¡}|js@t‚| |j d¡| |j d¡| |j d ¡| |j d ¡| |j d ¡| |jd ¡| |jd ¡| |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 )rurwr£r¤r¥)rxryrz)r}r/r0r~Ís1 zETestSystemVirtualMemory.test_virtual_memory_mocked..open_mockz builtins.openz__builtin__.openT)rr€iiiipiTii iXi )r:rrrrˆr‰r©rªr«rbrZr—r¢rhr™r›r±rž)r‹r~r‚rƒÚmemr/)r}r0Útest_virtual_memory_mockedËs 7  z2TestSystemVirtualMemory.test_virtual_memory_mockedN)Ú__name__Ú __module__Ú __qualname__rŽrr•r–r˜ršrœrrŸ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)rEÚdatar/r/r0Úmeminfo_has_swap_infos z*TestSystemSwapMemory.meminfo_has_swap_infocCs"tƒj}t ¡j}|j||tdS)N)r‘)rerbrˆÚ swap_memoryrŠr)r‹r”rr/r/r0rŽ$s zTestSystemSwapMemory.test_totalcCs"tƒj}t ¡j}|j||tdS)N)r‘)rercrˆrÍrŠr)r‹r”rr/r/r0r•*s zTestSystemSwapMemory.test_usedcCs"tƒj}t ¡j}|j||tdS)N)r‘)rerZrˆrÍrŠr)r‹r”rr/r/r0r–1s zTestSystemSwapMemory.test_freec Cs¨tjddd}tjddx}t d¡t ¡}|js:t‚|  t |ƒd¡|d}|j   d¡sbt‚|  d t|jƒ¡|  |jd¡|  |jd¡WdQRXWdQRXdS) Nzpsutil._common.openT)r)r r¡rfrzpsutil/_pslinux.pyz9'sin' and 'sout' swap memory stats couldn't be determined)rrr¦r§r¨rˆ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ƒƒ}tjddx}t d¡t ¡}|j s>t ‚|  t |ƒd¡|d}|j  d¡sft ‚| d t|jƒ¡|  |jd¡|  |jd¡WdQRXWdQRXdS) Nz /proc/vmstatzno such file or directoryT)r r¡rfrzpsutil/_pslinux.pyzK'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²r³r´r/r/r0Útest_no_vmstat_mockedGs   z*TestSystemSwapMemory.test_no_vmstat_mockedc Cs| ¡st d¡St d¡}t ¡}WdQRX|jr:t‚ddl m }|  ¡\}}}}}}}||9}||9}|  |j |¡|j|j|tddS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor)r‘)rÌrÚskiprrrˆrÍr©rªZpsutil._psutil_linuxZ _psutil_linuxZ linux_sysinfor«rbrŠrZr)r‹rƒÚswapZcextrarbrZZunit_multiplierr/r/r0Útest_meminfo_against_sysinfoZs    z1TestSystemSwapMemory.test_meminfo_against_sysinfoc Cs,tddƒ}t ¡|jst‚WdQRXdS)Nz /proc/meminfoó)r„rˆrÍr©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+érro)rÙéé Ústeal)rÙrÚrZguest)rrÙrZ guest_nice) rˆÚ cpu_timesÚ_fieldsÚreÚfindallÚosÚunamerqrrr^r<r®Ú assertNotIn)r‹rGZ 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ú-rf) r:rÊrkr¯r^r<r«rˆÚ cpu_count)r‹rEÚ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)rOrLr/r/r0rQszITestSystemCPUCountLogical.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)ú#)r[)rOrLr/r/r0rQ¨sz@TestSystemCPUCountLogical.test_against_lscpu..rYT)rî)rr?r<r«rˆrç)r‹r_rïr/r/r0Útest_against_lscpu¥sz,TestSystemCPUCountLogical.test_against_lscpuc Csddl}|j ¡}tjdtdô}| |j ¡|¡|js>t‚tjddd:}|  |j ¡¡| |j d¡| |j ddd¡WdQRXt d d ƒ}|  ¡}WdQRXt |¡}tjd|dd }| |j ¡|¡WdQRXtd d ƒ}| |j ¡|¡|jWdQRXWdQRXdS) Nrzpsutil._pslinux.os.sysconf)r€zpsutil._common.openT)rrÙz /proc/statz /proc/cpuinfoÚrb)Ú return_valuerrÕ)r¹Ú_pslinuxZcpu_count_logicalrrr=r«r©rªÚ assertIsNoneZ call_countÚ call_argsr:rÊrurwr„)r‹rˆÚoriginalrƒrEZ 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 -prYròú,rfF)rî) rÚsetr<r[Úaddr«rˆrçr?)r‹r_Zcore_idsrFrGr/r/r0róÐs  z-TestSystemCPUCountPhysical.test_against_lscpuc CsPtj ¡}tjdgd}tj ¡}|js.t‚WdQRX|dk rL| ||¡dS)Nz glob.glob)rõ)rˆröÚcpu_count_physicalrrr©rªr«)r‹Zmeth_1rƒZmeth_2r/r/r0Ú test_method_2Ús   z(TestSystemCPUCountPhysical.test_method_2c Cs\tjdgd0}tjddd}| tj ¡¡WdQRXWdQRX|jsNt‚|jsXt‚dS)Nz glob.glob)rõzpsutil._common.openT)r)rrr÷rˆrörr©rª)r‹Úm1Úm2r/r/r0Útest_emulate_noneâs $ z,TestSystemCPUCountPhysical.test_emulate_noneN) rÆrÇrÈrrürrórrr/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 s@‡fdd„}tjj‰tjd|ddt ¡s2t‚WdQRXdS)Ncs| d¡rdSˆ|ƒSdS)Nz&/sys/devices/system/cpu/cpufreq/policyF)r[)rý)Ú orig_existsr/r0Úpath_exists_mockðs zMTestSystemCPUFrequency.test_emulate_use_second_file..path_exists_mockzos.path.existsT)r€r)rárýrþrrrˆÚcpu_freqrª)r‹r r/)r r0Útest_emulate_use_second_fileís   z3TestSystemCPUFrequency.test_emulate_use_second_filec s‡‡fdd„}g‰tjj‰zŽtjd|dvttjƒt ¡}|sFt ‚ˆsNt ‚|  |j d¡|  |j d¡x0tjddD] }|  |j d¡|  |j d¡qxWWdQRXWdttjƒttƒXdS)Ncs,| d¡rdS|dkr ˆ d¡ˆ|ƒSdS)Nz/sys/devices/system/cpu/Fz /proc/cpuinfo)r[r@)rý)ÚflagsÚos_path_existsr/r0r ÿs   zITestSystemCPUFrequency.test_emulate_use_cpuinfo..path_exists_mockzos.path.exists)r€gT)Úpercpu) rárýrþrrrrˆrör rªr«ÚmaxÚmin)r‹r r³Úfreqr/)r rr0Ú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:rrrrˆr r«Úcurrentrr)r‹r~r‚rr/)r}r0Ú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­r[rurw)rxryrzÚn)r}r/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@rfgy@g@@gÀ‚@) r:rrrrˆr r«rrr)r‹r~r‚rr/)r}r0Ú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_freqrNz/cpuinfo_cur_freqs200000z /proc/cpuinfoscpu MHz : 200)r­rÀrÁrÂrurw)rxryrz)r}r/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_logicalrféÈ)r:rrrrˆr r«r)r‹r~r‚rr/)r}r0Ú%test_emulate_no_scaling_cur_freq_filees   z.ifconfigTF)ZpernicÚnowrapr?i)r‘r@r9ir:r;é r<r=r>) rˆÚnet_io_countersr'r2rŠr?r@r9r:r;r<r=r>)r‹rAZnior5Z ifconfig_retr/)rxr0r6Þs.  z-TestSystemNetIOCounters.test_against_ifconfigN)rÆrÇrÈrr6r/r/r/r0r8Ûsr8c@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::1rÚinet6)Úkind) r"rCÚ SOCK_STREAMZ addCleanupÚcloseÚbindÚerrorrˆÚnet_connections)r‹Ú supports_ipv6rDr.r/r/r0Útest_emulate_ipv6_unsupported s z6TestSystemNetConnections.test_emulate_ipv6_unsupportedc Cs6tdt d¡ƒ}tjdd|js(t‚WdQRXdS)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 Úunix)rG)r„r£r¤rˆrLr©rª)r‹rƒr/r/r0Útest_emulate_unixs   z*TestSystemNetConnections.test_emulate_unixN)rÆrÇrÈrrr=rNrPr/r/r/r0rE s  rEc@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"rYrr8ZnonerN)rrkr<Úpopr^)rýr_r`rFÚdevrbrcrZr/r/r0Údf2s   z4TestSystemDiskPartitions.test_against_df..dfF)Úall)r‘) rˆÚdisk_partitionsÚ disk_usageÚ mountpointr«rbrŠrZrrc)r‹rUÚpartÚusagerTrbrcrZr/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|ddX}t j d d gd <}t ¡}|j s”t ‚|j sžt ‚|s¦t ‚|  |d jd¡WdQRXWdQRXdS) Nz/proc/filesystemsr!Úzfszcouldn't find any ZFS partitionz nodev zfs zpsutil._common.openT)rõrz$psutil._pslinux.cext.disk_partitions)z /dev/sdb3ú/r]Úrw)rõr)r:rÊrˆrWÚfstypeZfailrurvrrrr©rªr«)r‹rErËrZrúrrr³r/r/r0Ú test_zfs_fsFs$       z$TestSystemDiskPartitions.test_zfs_fsc CsTzFtjddd.}| t¡t ¡WdQRX|js:t‚WdQRXWddt_XdS)Nzos.path.realpathz /non/existent)rõz/proc) rrÚ assertRaisesrrˆrWr©rªÚ PROCFS_PATH)r‹rƒr/r/r0Útest_emulate_realpath_fail^s  z3TestSystemDiskPartitions.test_emulate_realpath_failN) rÆrÇrÈrrüÚhasattrrárr\rardr/r/r/r0rQ*srQc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚTestSystemDiskIoCountersc CsÆtddƒ²tjddd˜tjdd}| |jd¡| |jd ¡| |jd t ¡| |j d ¡| |j d ¡| |j d ¡| |j dt ¡| |jd¡| |jd¡WdQRXWdQRXdS)Nz/proc/diskstatsz+ 3 0 1 hda 2 3 4 5 6 7 8 9 10 11 12z!psutil._pslinux.is_storage_deviceT)rõF)rBrfrÙrr8rgrÚéérC)r„rrrˆÚdisk_io_countersr«Ú read_countÚread_merged_countÚ read_bytesÚ SECTOR_SIZEÚ read_timeÚ write_countÚwrite_merged_countÚ write_bytesÚ write_timeÚ busy_time)r‹r³r/r/r0Útest_emulate_kernel_2_4ms  z0TestSystemDiskIoCounters.test_emulate_kernel_2_4c CsÆtddƒ²tjddd˜tjdd}| |jd¡| |jd ¡| |jd t ¡| |j d ¡| |j d ¡| |j d ¡| |j dt ¡| |jd¡| |jd¡WdQRXWdQRXdS)Nz/proc/diskstatsz' 3 0 hda 1 2 3 4 5 6 7 8 9 10 11z!psutil._pslinux.is_storage_deviceT)rõF)rBrfrÙrr8rgrÚrgrhrC)r„rrrˆrir«rjrkrlrmrnrorprqrrrs)r‹r³r/r/r0Útest_emulate_kernel_2_6_full€s  z5TestSystemDiskIoCounters.test_emulate_kernel_2_6_fullc CsÆtddƒ²tjddd˜tjdd}| |jd¡| |jd t¡| |j d ¡| |j d t¡| |j d ¡| |j d ¡| |j d ¡| |jd ¡| |jd ¡WdQRXWdQRXdS) Nz/proc/diskstatsz 3 1 hda 1 2 3 4z!psutil._pslinux.is_storage_deviceT)rõF)rBrfrÙrr8r)r„rrrˆrir«rjrlrmrorqrkrnrprrrs)r‹r³r/r/r0Útest_emulate_kernel_2_6_limited”s  z8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limitedc Cs tdt d¡ƒ†tjdddltjddd}| t|ƒd¡| |d j d ¡| |d j d ¡| |d j d ¡| |d j d ¡WdQRXWdQRXdS) Nz/proc/diskstatsz 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 z!psutil._pslinux.is_storage_deviceF)rõT)ÚperdiskrBrÙÚnvme0n1rfZ nvme0n1p1rg) r„r£r¤rrrˆrir«r?rjro)r‹r³r/r/r0Útest_emulate_include_partitions«s  z8TestSystemDiskIoCounters.test_emulate_include_partitionsc Cs¼tdt d¡ƒ8tjdddtjddd}| |¡WdQRXWdQRXdd„}tdt d¡ƒLtjdd |d 0tjddd}| |j d ¡| |j d ¡WdQRXWdQRXdS) Nz/proc/diskstatsz 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 z!psutil._pslinux.is_storage_deviceF)rõ)rwrBcSs|dkS)Nrxr/)rxr/r/r0Úis_storage_deviceÎszSTestSystemDiskIoCounters.test_emulate_exclude_partitions..is_storage_deviceT)rr€rfrg) r„r£r¤rrrˆrir÷r«rjro)r‹r³rzr/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)rwzpsutil._pslinux.os.path.exists)rr€)rˆrirrr«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)rr€)rrrbÚNotImplementedErrorrˆri)r‹rþr/r/r0Útest_emulate_not_implés z.TestSystemDiskIoCounters.test_emulate_not_implN) rÆrÇrÈrtrurvryr{r|r~r/r/r/r0rfjs rfc@sReZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Ze ƒd d„ƒZ dd„Z dS)ÚTestMisccCs(tdƒ}t ¡}| t|ƒt|ƒ¡dS)Nz boot time)rmrˆÚ boot_timer«r^)r‹rŒrr/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)Nrlr´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)r[rÀrÁrÂ)rxryrz)r}r/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ÚwriterrrrrˆrbrÀrÝÚ cpu_percentÚcpu_times_percentrcr«ÚsumrrÚassertNotEqualÚshutilÚrmtree)r‹Z my_procfsrEr~r‚Zper_cpu_percentZper_cpu_times_percentr/)r}r0Útest_no_procfs_on_importÿsN         (  z!TestMisc.test_no_procfs_on_importc Cs,tdt d¡ ¡ƒ8}t ¡|js(t‚tjddt ¡tjddWdQRXtdt d¡ ¡ƒ¼}t ¡}|jszt‚tjdd}t ¡}tjdd}|  |d¡|  t |ƒd¡|  t |ƒd¡|  t |ƒd¡|  t t t |ƒƒd¡|  t t t |ƒƒd¡|  |j d¡|  |jd¡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@)r„r£r¤r¥rˆr…r©rªr†rˆr‡rrr«rÜÚuser)r‹rƒr…Zcpu_percent_percpur†Zcpu_times_percent_percpur/r/r0Útest_cpu_steal_decrease<s4      z TestMisc.test_cpu_steal_decreasec Cs8tjddd }| ttjj¡|js*t‚WdQRXdS)Nzpsutil._common.openT)r) rrrbr2rˆrör€r©rª)r‹rƒr/r/r0Útest_boot_time_mockedes  zTestMisc.test_boot_time_mockedc Cs¸tjddgd&}| t ¡djd¡|js2t‚WdQRXtjddgd&}| t ¡djd¡|jsnt‚WdQRXtjddgd&}| t ¡djd¡|jsªt‚WdQRXdS) Nzpsutil._pslinux.cext.users)Ú giampaolozpts/2z:0g€hÕATrÙ)rõrZ localhost)rzpts/2z:0.0g€hÕATrÙ)rzpts/2Úfoog€hÕATrÙr)rrr«rˆZusersÚhostr©rª)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)r‚rárƒrˆrcrbrÀr‰rÝr€rLrDr1rWÚ 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)rLr/r/r0Ú rÕz)TestMisc.test_issue_687..)Úkeyrf)rÚstartrˆr”Úthreadsr«r?Úsortedr–rˆÚpidZas_dictrãZpidsÚstop)r‹ÚtÚpršÚtidÚptr/r/r0Útest_issue_687“s zTestMisc.test_issue_687c Cs6tddƒ"}t t ¡¡st‚|js(t‚WdQRXdS)Nz/proc/%s/statusrN)r„rˆZ pid_existsráÚgetpidrªr©)r‹rƒr/r/r0Útest_pid_exists_no_proc_status¨s z'TestMisc.test_pid_exists_no_proc_statusN) rÆrÇrÈrr‹rrŽr’r•rr¢r¤r/r/r/r0r÷s=)rz 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 -brrfr&rN)r‘) rr^r<rkÚreplacerˆÚsensors_batteryÚpercentrŠ)r‹r_Z acpi_valuerr/r/r0Ú test_percentºs zTestSensorsBattery.test_percentc sj‡fdd„}t‰trdnd}tj||d6}| t ¡jd¡| t ¡jtj ¡|j s\t ‚WdQRXdS)Ncs2| d¡s| d¡rt d¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlineó1)r­rurw)rxryrz)r}r/r0r~Ãs z@TestSensorsBattery.test_emulate_power_plugged..open_mockz builtins.openz__builtin__.open)r€T) r:rrrr«rˆr§Ú power_pluggedÚsecsleftÚPOWER_TIME_UNLIMITEDr©rª)r‹r~r‚rƒr/)r}r0Útest_emulate_power_pluggedÁs  z-TestSensorsBattery.test_emulate_power_pluggedc sV‡fdd„}t‰trdnd}tj||d"}| t ¡jd¡|jsHt ‚WdQRXdS)NcsN| d¡s| d¡r"ttjdƒ‚n(| d¡r:t tdƒ¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlinerNz/statusZcharging)r­rÀrÁrÂrurvr)rxryrz)r}r/r0r~Ôs  zBTestSensorsBattery.test_emulate_power_plugged_2..open_mockz builtins.openz__builtin__.open)r€T) r:rrrr«rˆr§r«r©rª)r‹r~r‚rƒr/)r}r0Útest_emulate_power_plugged_2Ñs   z/TestSensorsBattery.test_emulate_power_plugged_2c sV‡fdd„}t‰trdnd}tj||d"}| t ¡jd¡|jsHt ‚WdQRXdS)Ncs2| d¡s| d¡rt d¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlineó0)r­rurw)rxryrz)r}r/r0r~äs zDTestSensorsBattery.test_emulate_power_not_plugged..open_mockz builtins.openz__builtin__.open)r€F) r:rrrr«rˆr§r«r©rª)r‹r~r‚rƒr/)r}r0Útest_emulate_power_not_pluggedâs   z1TestSensorsBattery.test_emulate_power_not_pluggedc sV‡fdd„}t‰trdnd}tj||d"}| t ¡jd¡|jsHt ‚WdQRXdS)NcsN| d¡s| d¡r"ttjdƒ‚n(| d¡r:t tdƒ¡Sˆ|f|ž|ŽSdS)Nz AC0/onlinez AC/onlinerNz/statusZ discharging)r­rÀrÁrÂrurvr)rxryrz)r}r/r0r~ós  zFTestSensorsBattery.test_emulate_power_not_plugged_2..open_mockz builtins.openz__builtin__.open)r€F) r:rrrr«rˆr§r«r©rª)r‹r~r‚rƒr/)r}r0Ú test_emulate_power_not_plugged_2ðs   z3TestSensorsBattery.test_emulate_power_not_plugged_2c sT‡fdd„}t‰trdnd}tj||d }| t ¡j¡|jsFt ‚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/onlinerNz#/sys/class/power_supply/BAT0/statuss???)r[rÀrÁrÂrurw)rxryrz)r}r/r0r~s     zETestSensorsBattery.test_emulate_power_undetermined..open_mockz builtins.openz__builtin__.open)r€) r:rrrr÷rˆr§r«r©rª)r‹r~r‚rƒr/)r}r0Útest_emulate_power_undetermineds   z2TestSensorsBattery.test_emulate_power_undeterminedc Cs6tddƒ"}| t ¡jd¡|js(t‚WdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullr°r)r„r«rˆr§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_fullrNz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88éX) r†rÀrÁrÂr„r«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/onlinerNz"/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®r¯r±r²r³r´r¶r·r/r/r/r0r¥¶s r¥c@seZdZdd„ZdS)ÚTestSensorsBatteryEmulatedc sx‡fdd„}t‰trdnd}tjddgd.}tj||d}| t ¡¡WdQRXWdQRX|jsjt‚|jstt‚dS) Ncs\| d¡rt tdƒ¡S| d¡r0t tdƒ¡S| d¡rHt tdƒ¡Sˆ|f|ž|ŽSdS)Nz /energy_nowZ60000000z /power_nowÚ0z /energy_fullZ60000001)r­rurvr)rxryrz)r}r/r0r~9s   z5TestSensorsBatteryEmulated.test_it..open_mockz builtins.openz__builtin__.openz os.listdirZBAT0)rõ)r€) r:rrrZassertIsNotNonerˆr§r©rª)r‹r~r‚ZmlistdirZmopenr/)r}r0Ú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/namerxz /temp1_labelÚlabelz /temp1_inputs30000z /temp1_maxs40000z /temp1_crits50000)r­rurvrrw)rxryrz)r}r/r0r~Ps        zCTestSensorsTemperatures.test_emulate_class_hwmon..open_mockz builtins.openz__builtin__.open)r€z glob.globz/sys/class/hwmon/hwmon0/temp1)rõrxrr¼g>@gD@gI@) r:rrrrˆÚsensors_temperaturesr«r¼rÚhighÚcritical)r‹r~r‚Útempr/)r}r0Ú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¿Útyperx)r­rurwrvr)rxryrz)r}r/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)rr€rxrrNg>@gI@) r:rrrrˆr½r«r¼rr¾r¿)r‹r~rÃr‚rÀr/)r}r0Ú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/namerxz /fan1_labelr¼z /fan1_inputÚ2000)r­rurvr)rxryrz)r}r/r0r~’s   z4TestSensorsFans.test_emulate_data..open_mockz builtins.openz__builtin__.open)r€z glob.globz/sys/class/hwmon/hwmon2/fan1)rõrxrr¼iÐ) r:rrrrˆZ sensors_fansr«r¼r)r‹r~r‚Zfanr/)r}r0r‘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)Nro)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)rOrLr/r/r0rQ½sz5TestProcess.test_memory_full_info..i)r‘cSsg|] }|j‘qSr/)Úpss)rOrLr/r/r0rQÀscSsg|] }|j‘qSr/)rÓ)rOrLr/r/r0rQÂs)r‚r£r¤Zpyrunrrˆr”rœÚtimeÚsleepÚmemory_full_infoÚ memory_mapsrŠÚussr‡rÈrÓ)r‹ÚtestfnÚsrcZsprocrŸrÄÚmapsr/r/r0Útest_memory_full_info®s      z!TestProcess.test_memory_full_infoc Csptdt ¡t d¡ ¡ƒJ}t ¡}| ¡}|j s8t ‚|  |j d¡|  |j d¡|  |jd¡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<)r„rár£r£r¤r¥rˆr”rËr©rª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ˆr”rÉr Ú open_filesrýráÚabspathr2)ÚfnamerŸZ giveup_atÚfiler/r/r0Ú get_test_fileés   z7TestProcess.test_open_files_mode..get_test_filer´r!r»zr+zw+za+rLzx+)r‚r:r«Úmoderr)r‹r×rÎr/r/r0Útest_open_files_modeçs*         z TestProcess.test_open_files_modec Csºt ¡}| ¡}t| ¡dƒ’t|jdt|ƒƒtjdt t j dƒd }| ¡}|r\t ‚|j sft ‚WdQRXtjdt t jdƒd }| | ¡g¡|j s¢t ‚WdQRXWdQRXdS)Nr´zlen(ret) != %izpsutil._pslinux.os.readlinkrN)r€)rˆr”rÓr:r‚rr?rrÚOSErrorrÁrÂrªr©ÚEINVALr«)r‹rŸÚfilesrƒr/r/r0Útest_open_files_file_gone sz%TestProcess.test_open_files_file_gonec CsŠt ¡}| ¡}t| ¡dƒbt|jdt|ƒƒtr.open_mockz builtins.openz__builtin__.open)r€cs4| dt ¡¡r ttjdƒ‚nˆ|f|ž|ŽSdS)Nz /proc/%s/taskrN)r[rár£rÀrÁÚEPERM)rxryrz)r}r/r0r~€s) r:rrrrˆr”ršr©rªr«rbÚ AccessDenied)r‹r~r‚rƒr³r/)r}r0Útest_threads_mockedls     zTestProcess.test_threads_mockedc Cs¢tjdttjdƒd‚}tjdt dd¡d`}t ¡ ¡}|j sFt ‚|j sPt ‚|  |d¡tjddd|  tj t ¡j¡WdQRXWdQRXWdQRXdS) Nzpsutil._pslinux.readlinkrN)r€zpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsF)rõ)rrrÚrÁrÂrˆrêr”rær©rªr«rbÚ ZombieProcess)r‹rrr³r/r/r0Útest_exe_mocked‰s     zTestProcess.test_exe_mockedc CsZtdt ¡ttjdƒƒ6}t ¡}| t ¡|  ¡WdQRX|j sLt ‚WdQRXdS)Nz/proc/%s/smapsrN) r†rár£rÀrÁrÂrˆr”rbrrÌr©rª)r‹rƒrŸr/r/r0Útest_issue_1014žs  zTestProcess.test_issue_1014z not supportedc CsŠtjdttjdƒdD}t ¡}| ¡| tj ¡}|  tj ¡WdQRX|j sVt ‚WdQRX| |jj|j¡| |jj| ¡¡dS)Nzpsutil._pslinux.prlimitrN)r€)rrrÚrÁZENOSYSrˆr”rxrbrìZrlimitZ RLIMIT_NOFILEr©rªr«Ú exceptionrœ)r‹rƒrŸr…r/r/r0Útest_rlimit_zombie©szTestProcess.test_rlimit_zombiec Cs†tjdttjdƒd@}t ¡}| ¡| tj ¡}|  ¡WdQRX|j sRt ‚WdQRX|  |jj|j¡|  |jj| ¡¡dS)Nzpsutil._pslinux.os.readlinkrN)r€)rrrÚrÁrÂrˆr”rxrbrìrçr©rªr«rïrœ)r‹rƒrŸr…r/r/r0Útest_cwd_zombie¸szTestProcess.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Ú7rjz /proc/%s/statÚcatrfrÚrÙrr8rgrg)r¹ròrAr¥r„rár£rˆr”r«rxÚstatusÚ STATUS_ZOMBIEÚppidZ create_timer€rÝrŒÚsystemÚ children_userÚchildren_systemZiowaitZcpu_num)r‹ròryr{rŸ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îrrh)r„rár£r£r¤r¥rˆr”r«Únum_ctx_switchesÚ voluntaryÚ involuntaryÚ num_threadsÚuidsÚrealÚ effectiveÚsavedÚ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ñrrr/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ˆr”Ú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ˆÚ _psplatformÚ open_textrrœrkr[Ú partitionr^r=)r‹Z linestartrErFrèr/r/r0Úread_status_file)s   z)TestProcessAgainstStatus.read_status_filecCs | d¡}| |j ¡|¡dS)NzName:)rr«rrx)r‹rèr/r/r0Ú test_name6s z"TestProcessAgainstStatus.test_namecCsH| d¡}|| d¡d| d¡…}| dd¡}| |j ¡|¡dS)NzState:ú(rfú)rjræ)rÚfindÚrfindr¦r«rrü)r‹rèr/r/r0Ú test_status:s  z$TestProcessAgainstStatus.test_statuscCs | d¡}| |j ¡|¡dS)NzPPid:)rr«rrþ)r‹rèr/r/r0Ú test_ppid@s z"TestProcessAgainstStatus.test_ppidcCs | d¡}| |j ¡|¡dS)NzThreads:)rr«rr)r‹rèr/r/r0Útest_num_threadsDs z)TestProcessAgainstStatus.test_num_threadscCs:| d¡}ttt| ¡dd…ƒƒ}| |j ¡|¡dS)NzUid:rfr8)rrqrrr^r<r«rr )r‹rèr/r/r0Ú test_uidsHs z"TestProcessAgainstStatus.test_uidscCs:| d¡}ttt| ¡dd…ƒƒ}| |j ¡|¡dS)NzGid:rfr8)rrqrrr^r<r«rr )r‹rèr/r/r0Ú test_gidsMs z"TestProcessAgainstStatus.test_gidscCs@| d¡}| |j ¡j|¡| d¡}| |j ¡j|¡dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)rr«rrrr)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ærf) rr¯rrr^r<r«rZ cpu_affinityrr>)r‹rèZmin_Zmax_r/r/r0Útest_cpu_affinityYs   z*TestProcessAgainstStatus.test_cpu_affinityc CsR| d¡}t d¡}|jj ¡WdQRXdt|ƒkrD|jrNt‚n |jsNt‚dS)NzCpus_allowed_list:zpsutil._pslinux.per_cpu_timesræ) rrrrrrr¯r©rª)r‹rèrƒr/r/r0Útest_cpu_affinity_eligible_cpus`s     z8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)rÆrÇrÈÚ__doc__Ú classmethodrrrr r!r"r#r$rr%r&r'r/r/r/r0rs  rc@seZdZdd„Zdd„ZdS)Ú TestUtilsc Cs<tjddd$}| tj d¡d¡|js.t‚WdQRXdS)Nz os.readlinkz foo (deleted))rõrár)rrr«rˆrÚreadlinkr©rª)r‹rƒr/r/r0Ú test_readlinkrszTestUtils.test_readlinkc Csx| ¡}t|dƒ}| d¡WdQRX| tjj|ddd¡| tjj|ddd¡| tjj|dd d d ¡dS) NÚwtzfoo F)ÚbinaryrTsfooz??rá)Úfallback)r‚r:r„r«rˆrrû)r‹rÎrEr/r/r0Útest_catws zTestUtils.test_catN)rÆrÇrÈr,r0r/r/r/r0r*osr*Ú__main__)Ú run_from_name)]r(Ú __future__rr\r%rÁÚglobrurárßr‰r"r+r£rÉr¦rˆrZpsutil._compatrrrrZ psutil.testsrr r r r r rrrrrrrrrrrrrrýrÔÚdirnameÚ__file__ÚHEREr*Z SIOCGIFCONFrSr2r4rmZEMPTY_TEMPERATURESr1r3r5rKrVrerirmrsÚcontextmanagerr„r†rür‡rÉrØrårÿrrr r%r/r8rErQrfrr¥r¸r»rÅrÇrr*rÆZpsutil.tests.runnerr2r/r/r/r0Úsä                              .]? )- ? ?  }ArR