
    ɧd@l                    4
   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& ddlm'Z' ddlm(Z( ddlm)Z) ddlm*Z* ddlm+Z+ erddl,m-Z- ddl,m.Z. ddl,m/Z/ dd l,m0Z0 ej1        2                    ej1        3                    e4                    Z5d!Z6d"Z7d#Z8d$Z9d%Z:erd&Z; ej        d'           Z<d( Z=d) Z>d* Z?d+ Z@d, ZAd- ZBd. ZCd/ ZDd0 ZEejF        d1             ZGejF        d2             ZH e*jI        e d3           G d4 d5e!                      ZJ e*jI        e d3           G d6 d7e!                      ZK e*jI        e d3           G d8 d9e!                      ZL e*jI        e d3           G d: d;e!                      ZM e*jI        e d3           G d< d=e!                      ZN e*jI        e d3           G d> d?e!                      ZO e*jI        e d3           G d@ dAe!                      ZP e*jI        e d3           G dB dCe!                      ZQ e*jI        e d3           G dD dEe!                      ZR e*jI        e d3           G dF dGe!                      ZS e*jI        e d3           G dH dIe!                      ZT e*jI        e d3           G dJ dKe!                      ZU e*jI        e d3           G dL dMe!                      ZV e*jI        e d3           G dN dOe!                      ZW e*jI        e d3           G dP dQe!                      ZX e*jI        e d3           G dR dSe!                      ZY e*jI        e d3           e*jI        e dT           G dU dVe!                                  ZZ e*jI        e d3           G dW dXe!                      Z[ e*jI        e d3           G dY dZe!                      Z\ e*jI        e d3           G d[ d\e!                      Z] e*jI        e d3           G d] d^e!                      Z^ e*jI        e d3           G d_ d`e!                      Z_ e*jI        e d3           G da dbe!                      Z`eadck    rdddlbmcZc  ece4           dS dS )ezLinux 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)unittest)which)CLOCK_TICKS)RootFsDeviceFinder)calculate_avail_vmem)open_binaryi  i  i'  i  i  i   z/sys/class/hwmon/hwmon*c                    dd l }| d d         } t          rt          | d          } t          j        t          j        t          j                  }t          j        |          5  t          j        |	                    |
                                t          t          j        d|                     dd                   cd d d            S # 1 swxY w Y   d S Nr      ascii256s      )fcntlr   bytessocketAF_INET
SOCK_DGRAM
contextlibclosing	inet_ntoaioctlfilenoSIOCGIFADDRstructpackifnamer(   ss      7lib/python3.11/site-packages/psutil/tests/test_linux.pyget_ipv4_addressr9   L   s   LLLCRC[F
 (vw''fnf&788A		A		 = =KK

#FF335 557U<= == = = = = = = = = = = = = = = = = =   #ACCCc                    dd l }| d d         } t          rt          | d          } t          j        t          j        t          j                  }t          j        |          5  t          j        |	                    |
                                t          t          j        d|                     dd                   cd d d            S # 1 swxY w Y   d S r"   )r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   SIOCGIFNETMASKr3   r4   r5   s      r8   get_ipv4_netmaskr=   Y      LLLCRC[F
 (vw''fnf&788A		A		 = =KK

&FF335 557U<= == = = = = = = = = = = = = = = = = =r:   c                    dd l }| d d         } t          rt          | d          } t          j        t          j        t          j                  }t          j        |          5  t          j        |	                    |
                                t          t          j        d|                     dd                   cd d d            S # 1 swxY w Y   d S r"   )r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   SIOCGIFBRDADDRr3   r4   r5   s      r8   get_ipv4_broadcastrA   f   r>   r:   c                 &   t          dd          5 }|                                D ]$}|                                }|d         | k    r n%t          d| z            	 d d d            n# 1 swxY w Y   |d         }g }t	          dt          |          d          D ]"}|                    |||dz                       #d                    |          }t          j	        t          j
        |          }t          j        t          j
        |          S )Nz/proc/net/if_inet6rtzcould not find interface %rr      :)open	readlinessplit
ValueErrorrangelenappendjoinr*   	inet_ptonAF_INET6	inet_ntop)	r6   flinefieldsunformattedgroupsi	formattedpackeds	            r8   get_ipv6_addressrZ   s   s`   	"D	)	) EQKKMM 	E 	EDZZ\\FbzV#  :VCDDD 	E E E E E E E E E E E E E E E )KF1c+&&** , ,k!AE'*++++  Ifoy99FFOV444s   AA**A.1A.c           	         dd l }| d d         } t          rt          | d          } t          j        t          j        t          j                  }t          j        |          5  |                    |	                                t          t          j        d|                     }t          rd ndd l}|j        d                    fd|dd	         D                       d d
         cd d d            S # 1 swxY w Y   d S )Nr   r#   r$   r%   c                     | S N xs    r8   ordzget_mac_address.<locals>.ord   s         c                 ,    g | ]}d  |          z  S )z%02x:r^   ).0charra   s     r8   
<listcomp>z#get_mac_address.<locals>.<listcomp>   s&    DDD##d))+DDDrb      r'   rD   )r(   r   r)   r*   r+   r,   r-   r.   r0   r1   SIOCGIFHWADDRr3   r4   __builtin__ra   rN   )r6   r(   r7   inforj   ra   s        @r8   get_mac_addressrl      se   LLLCRC[F
 (vw''fnf&788A		A		 	K 	K{{HHJJv{66'B'BD D 	"    /CwwDDDDRUDDDEEcrcJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   $BC99C= C=c                     t          ddgddi          } |                     d          }|D ]{}|                    d          rd|                                \  }}}}t          j        dd          } |t          |          t          |          t          |                    c S |t          d	d                    |          z            )
zQParse 'free' cmd and return swap memory's s total, used and free
    values.
    free-bLANGC.UTF-8env
Swapztotal used freez&can't find 'Swap' in 'free' output:
%s)r   rI   
startswithcollections
namedtupleintrJ   rN   )outlinesrS   _totalusedrn   nts           r8   	free_swapr      s     fd^&)!4
5
5
5CIIdOOE 8 8??6"" 	8#'::<< AudD'0ABBB2c%jj#d))SYY77777	8 1DIIe4D4DDF F Frb   c                  v   t          ddgddi          } |                     d          }|D ]h}|                    d          rQd |                                d	d
         D             \  }}}}t          j        dd          } ||||||           c S it          dd                    |          z            )zSParse 'free' cmd and return physical memory's total, used
    and free values.
    rn   ro   rp   rq   rr   rt   Memc                 ,    g | ]}t          |          S r^   )ry   re   r`   s     r8   rg   z free_physmem.<locals>.<listcomp>   s    333AQ333rb         ztotal used free shared outputz%can't find 'Mem' in 'free' output:
%s)r   rI   rv   rw   rx   rJ   rN   )rz   r{   rS   r}   r~   rn   sharedr   s           r8   free_physmemr      s     fd^&)!4
5
5
5CIIdOOE 6 6??5!! 	633ac!2333 &E4v'79 9B2eT455555	6 0499U3C3CCE E Erb   c                    t          ddgddi          }|                    d          D ]D}|                                }| |v r*t          |                    d          d                   c S Et	          d	| z            )
Nvmstatz-srp   rq   rr   rt    r   z can't find %r in 'vmstat' output)r   rI   stripry   rJ   )statrz   rS   s      r8   r   r      s    
hFI#6
7
7
7C		$ + +zz||4< 	+tzz#q)*****	+
7$>
?
??rb   c                     t          ddg                                          } d| v rt          j        d          t	          t          t          |                                 d                             d                              S )Nrn   z-VUNKNOWNzcan't determine free versionrD   .)r   r   r   SkipTesttuplemapry   rI   )rz   s    r8   get_free_version_infor      sq    
fd^


"
"
$
$CC @ >???S#))++b///4455666rb   c              #       K    fd}t           t          rdnd}t          j        |d|          5 }|V  ddd           dS # 1 swxY w Y   dS )zMock open() builtin and forces it to return a certain `content`
    on read() if the path being opened matches `for_path`.
    c                     | k    rXt           r=t          t                    rt          j                  S t          j                  S t          j                  S  | g|R i |S r]   )r   
isinstancer   ioStringIOBytesIO)nameargskwargscontentfor_path	orig_opens      r8   	open_mockz$mock_open_content.<locals>.open_mock   sz    8 		4 +gz22 /;w///:g...z'***9T3D333F333rb   builtins.open__builtin__.openTcreateside_effectNrG   r   r   patch)r   r   r   patch_pointmr   s   ``   @r8   mock_open_contentr      s      

4 
4 
4 
4 
4 
4 
4 I%(@//.@K	K)	D	D	D                     AAAc              #       K    fd}t           t          rdnd}t          j        |d|          5 }|V  ddd           dS # 1 swxY w Y   dS )zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    c                 ,    | k    r | g|R i |S r]   r^   )r   r   r   excr   r   s      r8   r   z&mock_open_exception.<locals>.open_mock   s5    8 	4I9T3D333F333rb   r   r   Tr   Nr   )r   r   r   r   r   r   s   ``   @r8   mock_open_exceptionr      s      
4 4 4 4 4 4 4 I%(@//.@K	K)	D	D	D                  r   z
LINUX onlyc                   b   e Zd Zd Z e            d             Z e            d             Z e            d             Z e            d             Z e            d             Z	 e            d             Z
 e            d             Zd	 Z e            d
             Zd Zd Zd Zd ZdS )TestSystemVirtualMemoryc                     t          d          dz  }t          j                    j        }|                     ||t
                     d S )Nztotal memory   delta)r   psutilvirtual_memoryr}   assertAlmostEqualr   selfvmstat_valuepsutil_values      r8   
test_totalz"TestSystemVirtualMemory.test_total   s[     n--4,..4,.? 	 	A 	A 	A 	A 	Arb   c           
         t                      dk     r|                     d          t                      }|j        }t	          j                    j        }|                     ||t          |d|d|j                   d S )N)   r      zold free versionr    
r   msg)	r   skipTestr   r~   r   r   r   r   outputr   rn   
free_valuer   s       r8   	test_usedz!TestSystemVirtualMemory.test_used  s     !""Z/ 	4-- 2333~~Y
,..3,= *

LLL$++F 	 	H 	H 	H 	H 	Hrb   c                     t          d          dz  }t          j                    j        }|                     ||t
                     d S )Nzfree memoryr   r   )r   r   r   rn   r   r   r   s      r8   	test_freez!TestSystemVirtualMemory.test_free  sY    m,,t3,..3,.? 	 	A 	A 	A 	A 	Arb   c                     t          d          dz  }t          j                    j        }|                     ||t
                     d S )Nzbuffer memoryr   r   )r   r   r   buffersr   r   r   s      r8   test_buffersz$TestSystemVirtualMemory.test_buffers  sY    o..5,..6,.? 	 	A 	A 	A 	A 	Arb   c                     t          d          dz  }t          j                    j        }|                     ||t
                     d S )Nzactive memoryr   r   )r   r   r   activer   r   r   s      r8   test_activez#TestSystemVirtualMemory.test_active   sY    o..5,..5,.? 	 	A 	A 	A 	A 	Arb   c                     t          d          dz  }t          j                    j        }|                     ||t
                     d S )Nzinactive memoryr   r   )r   r   r   inactiver   r   r   s      r8   test_inactivez%TestSystemVirtualMemory.test_inactive'  sZ    /0047,..7,.? 	 	A 	A 	A 	A 	Arb   c           
          t                      }|j        }|dk    rt          j        d          t	          j                    j        }|                     ||t          |d|d|j                   d S )Nr   z%free does not support 'shared' columnr   r   r   )	r   r   r   r   r   r   r   r   r   r   s       r8   test_sharedz#TestSystemVirtualMemory.test_shared.  s    ~~[
? 	M#$KLLL,..5,= *

LLL$++F 	 	H 	H 	H 	H 	Hrb   c           
      d   t          ddg          }|                    d          }d|d         vrt          j        d          t	          |d                                         d                   }t          j                    j        }|                     ||t          |d	|d
|           d S )Nrn   ro   rt   	availabler   z(free does not support 'available' columnr   rD   r   r   r   )
r   rI   r   r   ry   r   r   r   r   r   )r   rz   r{   r   r   s        r8   test_availablez&TestSystemVirtualMemory.test_available9  s     &$  		$eAh& 	D#$NOOOU1X^^--b122J!022<L""L0A$.JJccB # D D D D Drb   c                    t          dt          j        d                                                    5 }t	          j        d          5 }t	          j        d           t          j                    }|j	        sJ | 
                    t          |          d           |d         }|j                            d          sJ |                     d	t          |j                             |                     d
t          |j                             |                     dt          |j                             |                     dt          |j                             |                     dt          |j                             |                     dt          |j                             |                     dt          |j                             | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N/proc/meminfoap                  Active(anon):    6145416 kB
                Active(file):    2950064 kB
                Inactive(anon):   574764 kB
                Inactive(file):  1567648 kB
                MemAvailable:         -1 kB
                MemFree:         2057400 kB
                MemTotal:       16325648 kB
                SReclaimable:     346648 kB
                Trecordalwaysr   r   psutil/_pslinux.pyz#memory stats couldn't be determinedcachedr   r   r   r   r   )r   textwrapdedentencodewarningscatch_warningssimplefilterr   r   calledassertEqualrL   filenameendswithassertInstrmessager   r   r   r   r   r   slabr   r   wsretws        r8   test_warnings_on_missesz/TestSystemVirtualMemory.test_warnings_on_missesH  s    O 	 	 	 VXX  !	. #$(555 .%h///+--x  R!,,,qEz**+?@@@@@93qy>>K K KhAI777hAI777hAI777j#ai..999iQY888k3qy>>:::  Q///  Q///  q111  Q///  a000  222  1---+. . . . . . . . . . . . . . .!	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	. !	.s6   J<IJ$J<$J(	(J<+J(	,J<<K K c                 d   i }t          d          5 }|D ]7}|                                }t          |d                   dz  ||d         <   8	 d d d            n# 1 swxY w Y   t          |          }d|v r8|d         }t	          ||z
            |z  dz  }|                     |d           d S d S )Nr   r   r   r   s   MemAvailable:d   r#   )r    rI   ry   r   abs
assertLess)r   memsrR   rS   rT   abdiff_percents           r8   test_avail_old_percentz.TestSystemVirtualMemory.test_avail_old_percento  s    )) 	8Q 8 8"%fQi..4"7VAY8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
 !&&t# 	.%&Aq1u::>C/LOOL"-----	. 	.s   ;AA!Ac                    t          dt          j        d                                                    5 }t	          j        d          5 }t          j                    }d d d            n# 1 swxY w Y   |j        sJ | 	                    |j
        d           |d         }|                     dt          |j                             d d d            d S # 1 swxY w Y   d S )Nr   aL                  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
                Tr   l     " r   ,inactive memory stats couldn't be determinedr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s        r8    test_avail_old_comes_from_kernelz8TestSystemVirtualMemory.test_avail_old_comes_from_kernel  ss    O    VXX!  	P  #$(555 .+--. . . . . . . . . . . . . . .8OOOS]N;;;1AMM>AIP P P-	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P6   CA+C+A/	/C2A/	3ACCCc                    t          dt          j        d                                                    5 }t	          j        d          5 }t          j                    }d d d            n# 1 swxY w Y   |j        sJ | 	                    |j
        d           |d         }|                     dt          |j                             d d d            d S # 1 swxY w Y   d S )Nr   a                      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       `LG r   r   r   r   s        r8   test_avail_old_missing_fieldsz5TestSystemVirtualMemory.test_avail_old_missing_fields  st    O 
 
 
  # # 	P '((555 .+--. . . . . . . . . . . . . . .8OOOS],KLLL1AMM>AIP P P%	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Pr  c           	      6   t          dt          j        d                                                    5  t	          dt          t          j        d                    5  t          j	        d          5 }t          j                    }|                     |j        d           |d         }|                     d	t          |j                             d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   aT                      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/zoneinfono such file or directoryTr   r  r   r   )r   r   r   r   r   IOErrorerrnoENOENTr   r   r   r   r   r   r   r   r   )r   r   r   r   s       r8   test_avail_old_missing_zoneinfoz7TestSystemVirtualMemory.test_avail_old_missing_zoneinfo  s     !    # # 	( 	(  %$EL*EFFH H 
( 
( ,D999 (R /11C$$'FH H H1AMMFAI( ( (( ( ( ( ( ( ( ( ( ( ( ( ( ( (
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
(!	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sZ   )DC64ACC6C##C6&C#'C6*D6C:	:D=C:	>DDDc                    fd}t           t          rdnd}t          j        |d|          5 }t	          j                    }|j        sJ |                     |j        d           |                     |j	        d           |                     |j
        d           |                     |j        d	           |                     |j        d
           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d d d            d S # 1 swxY w Y   d S )Nc                     | dk    r8t          j        t          j        d                                                    S  | g|R i |S )Nr   a=	                      MemTotal:              100 kB
                    MemFree:               2 kB
                    MemAvailable:          3 kB
                    Buffers:               4 kB
                    Cached:                5 kB
                    SwapCached:            6 kB
                    Active:                7 kB
                    Inactive:              8 kB
                    Active(anon):          9 kB
                    Inactive(anon):        10 kB
                    Active(file):          11 kB
                    Inactive(file):        12 kB
                    Unevictable:           13 kB
                    Mlocked:               14 kB
                    SwapTotal:             15 kB
                    SwapFree:              16 kB
                    Dirty:                 17 kB
                    Writeback:             18 kB
                    AnonPages:             19 kB
                    Mapped:                20 kB
                    Shmem:                 21 kB
                    Slab:                  22 kB
                    SReclaimable:          23 kB
                    SUnreclaim:            24 kB
                    KernelStack:           25 kB
                    PageTables:            26 kB
                    NFS_Unstable:          27 kB
                    Bounce:                28 kB
                    WritebackTmp:          29 kB
                    CommitLimit:           30 kB
                    Committed_AS:          31 kB
                    VmallocTotal:          32 kB
                    VmallocUsed:           33 kB
                    VmallocChunk:          34 kB
                    HardwareCorrupted:     35 kB
                    AnonHugePages:         36 kB
                    ShmemHugePages:        37 kB
                    ShmemPmdMapped:        38 kB
                    CmaTotal:              39 kB
                    CmaFree:               40 kB
                    HugePages_Total:       41 kB
                    HugePages_Free:        42 kB
                    HugePages_Rsvd:        43 kB
                    HugePages_Surp:        44 kB
                    Hugepagesize:          45 kB
                    DirectMap46k:          46 kB
                    DirectMap47M:          47 kB
                    DirectMap48G:          48 kB
                    )r   r   r   r   r   r   r   r   r   s      r8   r   zETestSystemVirtualMemory.test_virtual_memory_mocked.<locals>.open_mock  sg    & 48z(/ 13 1# 1#b  c1# 1# 1#f !y7777777rb   r   r   Tr   i  i      i p  i T  i   i    i X     )rG   r   r   r   r   r   r   r   r}   rn   r   r   r   r   r   r   r   )r   r   r   r   memr   s        @r8   test_virtual_memory_mockedz2TestSystemVirtualMemory.test_virtual_memory_mocked  s   5	8 5	8 5	8 5	8 5	8n 	),Doo2DZDiHHH 	6A'))C8OOO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 	6s   DEEEN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r^   rb   r8   r   r      s       A A A H H H A A A A A A A A A A A A H H H D D D%. %. %.N . . .P P P8P P P2( ( (>G6 G6 G6 G6 G6rb   r   c                       e Zd Zed             Zd Z e            d             Z e            d             Zd Z	d Z
d Zd Zd	S )
TestSystemSwapMemoryc                      t          d          5 } |                                 }ddd           n# 1 swxY w Y   d|v od|v S )z3Return True if /proc/meminfo provides swap metrics.r   Nz
SwapTotal:z	SwapFree:)rG   read)rR   datas     r8   meminfo_has_swap_infoz*TestSystemSwapMemory.meminfo_has_swap_info%  s     /"" 	a6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	t#;t(;;s   155c                     t                      j        }t          j                    j        }|                     ||t
                    S Nr   )r   r}   r   swap_memoryr   r   r   r   r   s      r8   r   zTestSystemSwapMemory.test_total,  sD    [[&
)++1%%,= & ? ? 	?rb   c                     t                      j        }t          j                    j        }|                     ||t
                    S r  )r   r~   r   r  r   r   r  s      r8   r   zTestSystemSwapMemory.test_used2  D    [[%
)++0%%,= & ? ? 	?rb   c                     t                      j        }t          j                    j        }|                     ||t
                    S r  )r   rn   r   r  r   r   r  s      r8   r   zTestSystemSwapMemory.test_free9  r   rb   c                 h   t          j        dd          5 }t          j        d          5 }t          j        d           t          j                    }|j        sJ |                     t          |          d           |d         }|j
                            d          sJ |                     d	t          |j                             |                     |j        d           |                     |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Npsutil._common.openTr   r   r   r   r   r   z9'sin' and 'sout' swap memory stats couldn't be determined)r   r   r   r   r   r   r  r   r   rL   r   r   r   r   r   sinsoutr   s        r8   test_missing_sin_soutz*TestSystemSwapMemory.test_missing_sin_sout@  s   Z-d;;; 	.q(555 .%h///(**x  R!,,,qEz**+?@@@@@$%(^^5 5 5   !,,,  1---. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s5   D'CDD'D	D'D	D''D+.D+c                    t          dt          t          j        d                    5 }t	          j        d          5 }t	          j        d           t          j                    }|j	        sJ | 
                    t          |          d           |d         }|j                            d          sJ |                     d	t          |j                             | 
                    |j        d           | 
                    |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nz/proc/vmstatr  Tr   r   r   r   r   zK'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   rL   r   r   r   r   r   r%  r&  r   s        r8   test_no_vmstat_mockedz*TestSystemSwapMemory.test_no_vmstat_mockedO  s    &ABBD D 	.GH(555 .%h///(**x  R!,,,qEz**+?@@@@@6	NN$ $ $   !,,,  1---. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s5   D9CD!D9!D%	%D9(D%	)D99D= D=c                    |                                  st          j        d          S t          j        d          5 }t          j                    }d d d            n# 1 swxY w Y   |j        rJ dd lm	} |
                                \  }}}}}}}||z  }||z  }|                     |j        |           |                     |j        |t                     d S )Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor   r   )r  r   skipr   r   r   r  r   psutil._psutil_linux_psutil_linuxlinux_sysinfor   r}   r   rn   r   )r   r   swapcextr|   r}   rn   unit_multipliers           r8   test_meminfo_against_sysinfoz1TestSystemSwapMemory.test_meminfo_against_sysinfob  s+    ))++ 	F=!DEEEZ<== 	(%''D	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(8++++++373E3E3G3G01aE4 U+++ty$6GHHHHHs   AA!$A!c                     t          dd          5 }t          j                     |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   rb   )r   r   r  r   r   r   s     r8   #test_emulate_meminfo_has_no_metricsz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsr  s     44 	   8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   <A A N)r  r  r  staticmethodr  r   r   r   r   r'  r)  r2  r5  r^   rb   r8   r  r  "  s         < < \<? ? ? ? ? ? ? ? ?. . .. . .&I I I     rb   r  c                       e Zd Zd ZdS )TestSystemCPUTimesc                 8   t          j                    j        }t          j        dt          j                    d                   d         }t          t          t          |
                    d                              }|dk    r|                     d|           n|                     d|           |dk    r|                     d|           n|                     d|           |d	k    r|                     d
|           d S |                     d
|           d S )Nz\d+\.\d+\.\d+   r   r   )r:        steal)r:  r;  r'   guest)r   r:  r   
guest_nice)r   	cpu_times_fieldsrefindallosunamer   r   ry   rI   r   assertNotIn)r   rT   
kernel_verkernel_ver_infos       r8   test_fieldszTestSystemCPUTimes.test_fields  s   !##+Z 0"(**Q-@@C
C)9)9#)>)> ? ?@@j( 	.MM'6****Wf---j( 	.MM'6****Wf---i' 	3MM,/////\622222rb   N)r  r  r  rI  r^   rb   r8   r8  r8    s#        3 3 3 3 3rb   r8  c                   p   e Zd Z ej        ej                            d           d          d             Z ej        ej                            d           d          d             Z	 ej         e
d           d          d	             Z ej         e
d
           d          d             Zd ZdS )TestSystemCPUCountLogical/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc                 j   t          d          5 }|                                                                }d d d            n# 1 swxY w Y   dt          |          v rTt	          |                    d          d                   dz   }|                     t          j                    |           d S d S )NrL  -r   )	rG   r  r   r   ry   rI   r   r   	cpu_count)r   rR   values      r8   test_against_sysdev_cpu_onlinez8TestSystemCPUCountLogical.test_against_sysdev_cpu_online  s     233 	%qFFHHNN$$E	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%#e** 	8C((+,,q0EV-//77777	8 	8s   'AA
A/sys/devices/system/cpuz&/sys/devices/system/cpu does not existc                     t          j        d          }t          d |D                       }|                     t	          j                    |           d S )NrR  c                 <    g | ]}t          j        d |          |S )zcpu\d+$)rB  searchr   s     r8   rg   zITestSystemCPUCountLogical.test_against_sysdev_cpu_num.<locals>.<listcomp>  s)    KKK1bi
A&>&>KQKKKrb   )rD  listdirrL   r   r   rO  )r   lscounts      r8   test_against_sysdev_cpu_numz5TestSystemCPUCountLogical.test_against_sysdev_cpu_num  sU     Z122KKKKKLL)++U33333rb   nprocznproc utility not availablec                     t          t          d                    }|                     t          j        d          |           d S )Nznproc --allTlogical)ry   r   r   r   rO  )r   nums     r8   test_against_nprocz,TestSystemCPUCountLogical.test_against_nproc  sA    "]##$$)$777=====rb   lscpulscpu utility not availablec                     t          d          }t          d |                    d          D                       }|                     t	          j        d          |           d S )Nlscpu -pc                 <    g | ]}|                     d           |S )#rv   r   s     r8   rg   z@TestSystemCPUCountLogical.test_against_lscpu.<locals>.<listcomp>  s)    GGGQ\\#5F5FG1GGGrb   rt   Tr\  )r   rL   rI   r   r   rO  )r   rz   r^  s      r8   test_against_lscpuz,TestSystemCPUCountLogical.test_against_lscpu  s]    nnGGciiooGGGHH)$777=====rb   c                 \   dd l }|j                                        }t          j        dt
                    5 }|                     |j                                        |           |j        sJ t          j        dd          5 }|                     |j                                                   |                     |j	        d           |                     |j
        d         d         d           d d d            n# 1 swxY w Y   t          d	d
          5 }|                                }d d d            n# 1 swxY w Y   t          j        |          }t          j        d|d          5 }|                     |j                                        |           d d d            n# 1 swxY w Y   t          d	d          5 }|                     |j                                        |           |j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   zpsutil._pslinux.os.sysconfr   r#  Tr$  r:  
/proc/stat/proc/cpuinforbreturn_valuer   rb   )psutil._pslinux_pslinuxcpu_count_logicalr   r   rJ   r   r   assertIsNone
call_count	call_argsrG   r  r   r   r   )r   r   originalr   rR   cpuinfo_data	fake_files          r8   test_emulate_fallbacksz0TestSystemCPUCountLogical.test_emulate_fallbacks  s`   ?4466 Z,*F F F 	IJV_>>@@(KKK8OOO 1$??? B1!!&/"C"C"E"EFFF  q111  Q!2LAAA	B B B B B B B B B B B B B B B ot,, ( vvxx( ( ( ( ( ( ( ( ( ( ( ( ( ( (
<00I1)24A A A PDE  !B!B!D!DhOOOP P P P P P P P P P P P P P P #?C88 A  !B!B!D!DhOOO              1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AH!A/D5H!D	H!D		H!D=1H!=E	H!E	.H!3.F-!H!-F1	1H!4F1	5H!5H	=H!	H	H!H	H!!H%(H%N)r  r  r  r   skipIfrD  pathexistsrQ  rY  r   r_  rg  rx  r^   rb   r8   rK  rK    s        X_(HIIIDF F8 8F F8 X_(ABBB=? ?4 4? ?4
 X_w')FGG> > HG> X_w')FGG> > HG>
    rb   rK  c                   b    e Zd Z ej         ed           d          d             Zd Zd ZdS )TestSystemCPUCountCoresr`  ra  c                 f   t          d          }t                      }|                    d          D ]G}|                    d          s0|                    d          }|                    |d                    H|                     t          j        d          t          |                     d S )Nrc  rt   re  ,r   Fr\  )	r   setrI   rv   addr   r   rO  rL   )r   rz   core_idsrS   rT   s        r8   rg  z*TestSystemCPUCountCores.test_against_lscpu  s    nn55IIdOO 	( 	(D??3'' (CVAY''')%888#h--HHHHHrb   c                 "   t           j                                        }t          j        dg           5 }t           j                                        }|j        sJ 	 d d d            n# 1 swxY w Y   ||                     ||           d S d S )N	glob.globrn  )r   rp  cpu_count_coresr   r   r   r   )r   meth_1r   meth_2s       r8   test_method_2z%TestSystemCPUCountCores.test_method_2  s    0022Z"555 	_4466F8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	-VV,,,,,	- 	-s   (A**A.1A.c                 D   t          j        dg           5 }t          j        dd          5 }|                     t          j                                                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        sJ |j        sJ d S )Nr  r  r#  Tr$  )r   r   rr  r   rp  r  r   )r   m1m2s      r8   test_emulate_nonez)TestSystemCPUCountCores.test_emulate_none  s7   Z"555 	E1$??? E2!!&/"A"A"C"CDDD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 	E yys4   B2A, B,A0	0B3A0	4BB
BN)	r  r  r  r   ry  r   rg  r  r  r^   rb   r8   r}  r}    sl         X_w')FGGI I HGI- - -    rb   r}  c                      e Zd Z ej        e d          d             Z ej        e d          d             Z ej        e d          d             Z ej        e d          d             Z	 ej        e d          d             Z
dS )TestSystemCPUFrequencynot supportedc                     fd}t           j        j        t          j        d|d          5  t          j                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                 H    |                      d          rdS  |           S )N&/sys/devices/system/cpu/cpufreq/policyFrf  )rz  orig_existss    r8   path_exists_mockzMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mock  s-    GHH )u"{4(((rb   os.path.existsT)r   r   )rD  rz  r{  r   r   r   cpu_freq)r   r  r  s     @r8   test_emulate_use_second_filez3TestSystemCPUFrequency.test_emulate_use_second_file  s    	) 	) 	) 	) 	) gnZ(6F#% % % 	% 	%?$$$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AAAc                    fd}t           j        j        	 t          j        d|          5  t          t          j                   t          j                    }|sJ | 	                    |j
        d           | 	                    |j        d           t          j        d          D ]8}| 	                    |j
        d           | 	                    |j        d           9	 d d d            n# 1 swxY w Y   t          t          j                   t          t                     d S # t          t          j                   t          t                     w xY w)Nc                 H    |                      d          rdS  |           S )Nz/sys/devices/system/cpu/Frf  )rz  os_path_existss    r8   r  zITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mock  s-    9:: ,u%~d+++rb   r  ri          Tpercpu)rD  rz  r{  r   r   r   r   rp  r  r   maxmin)r   r  r   freqr  s       @r8   test_emulate_use_cpuinfoz/TestSystemCPUFrequency.test_emulate_use_cpuinfo  s   	, 	, 	, 	, 	, 	",:JKKK 3 3fo...o''


  #...  #..."O4888 3 3D$$SWc222$$SWc222233 3 3 3 3 3 3 3 3 3 3 3 3 3 3 &/***&!!!!! &/***&!!!!s/   D+ B5C1%D+ 1C55D+ 8C59D+ +/Ec                    fd}t           t          rdnd}t          j        ||          5  t          j        dd          5  t	          j                    }|                     |j        d           |j        d	k    r|                     |j        d
           |j	        d	k    r|                     |j	        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                    |                      d          r)|                     d          rt          j        d          S |                      d          r)|                     d          rt          j        d          S |                      d          r)|                     d          rt          j        d          S | dk    rt          j        d	          S  | g|R i |S )
N/scaling_cur_freqr     500000/scaling_min_freq   600000/scaling_max_freqs   700000rk  s   cpu MHz		: 500r   rv   r   r   r  s      r8   r   z;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mock  s    122 8OO$LMM8z),,,-- 344 	8OO$LMM	8z),,,-- 344 8OO$LMM8z),,,( 8z"3444 y7777777rb   r   r   ri  r  Tr       @@r       @g     @
rG   r   r   r   r   r  r   currentr  r  r   r   r   r  r   s       @r8   test_emulate_dataz(TestSystemCPUFrequency.test_emulate_data  s   	8 	8 	8 	8 	8 	),Doo2DZ;;; 
	6 
	6$49 9 9 	6 	6((  u555 8s? 6$$TXu5558s? 6$$TXu555	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 
	6s6   C%A;CC%C	C%C	C%%C),C)c                    fd}t           t          rdnd}t          j        ||          5  t          j        dd          5  t          j        dd	          5  t	          j        d
          }|                     |d         j        d           |d         j        dk    r!|                     |d         j        d           |d         j	        dk    r!|                     |d         j	        d           |                     |d         j        d           |d         j        dk    r!|                     |d         j        d           |d         j	        dk    r!|                     |d         j	        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                 <   | }|                     d          r)|                    d          rt          j        d          S |                     d          r)|                    d          rt          j        d          S |                     d          r)|                    d          rt          j        d          S |                     d          r)|                    d          rt          j        d	          S |                     d          r)|                    d          rt          j        d
          S |                     d          r)|                    d          rt          j        d          S | dk    rt          j        d          S  | g|R i |S )Nr  z'/sys/devices/system/cpu/cpufreq/policy0s   100000r     200000r  s   300000z'/sys/devices/system/cpu/cpufreq/policy1s   400000r  r  rk  s   cpu MHz		: 100
cpu MHz		: 400r  )r   r   r   nr   s       r8   r   z@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mock=  s   A

.// 8LL!JKK8z),,,**011 8LL!JKK8z),,,**011 8LL!JKK8z),,,**011 8LL!JKK8z),,,**011 
8LL!JKK
8z),,,**011 8LL!JKK8z),,,( 8z #4 5 5 5 !y7777777rb   r   r   ri  r  Tr  !psutil._pslinux.cpu_count_logicalr:  r  r         Y@r  g      i@g     r@r   g      y@r  r  r  r  s       @r8   test_emulate_multi_cpuz-TestSystemCPUFrequency.test_emulate_multi_cpu;  s   	8 	8 	8 	8 	84 	),Doo2DZ;;; 	= 	=,4@@@ = =Z C-.0 0 0 = =!?$777D$$T!W_e<<<Aw{c) =((ae<<<Aw{c) =((ae<<<$$T!W_e<<<Aw{c) =((ae<<<Aw{c) =((ae<<<= = = = = = = = = = = = = = == = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=sZ   F8F D F	=F 	FF FF F8 F$	$F8'F$	(F88F<?F<c                    fd}t           t          rdnd}t          j        ||          5  t          j        dd          5  t          j        dd	          5  t	          j                    }|                     |j        d
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                     |                      d          rt          t          j        d          |                      d          rt	          j        d          S | dk    rt	          j        d          S  | g|R i |S )Nr  rc   z/cpuinfo_cur_freqr  rk  s   cpu MHz		: 200)r   r  r  r	  r   r   r  s      r8   r   zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mockl  s    }}011 8elB///233 8z),,,( 8z"3444 y7777777rb   r   r   ri  r  Tr  r  r      )rG   r   r   r   r   r  r   r  r  s       @r8   %test_emulate_no_scaling_cur_freq_filez<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_filei  s   	8 	8 	8 	8 	8 	),Doo2DZ;;; 	8 	8,4@@@ 8 8Z C-.0 0 0 8 8!?,,D$$T\37778 8 8 8 8 8 8 8 8 8 8 8 8 8 88 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8sY   CB//BB/BB/B B/#C/B3	3C6B3	7CCCN)r  r  r  r   ry  r   r  r  r  r  r  r^   rb   r8   r  r    s         X_%77% % 87% X_%77" " 87"0 X_%776 6 876< X_%77+= += 87+=Z X_%778 8 878 8 8rb   r  c                       e Zd Zd Zd ZdS )TestSystemCPUStatsc                     t          d          }t          j                    j        }|                     ||d           d S )Nzcontext switches  r   )r   r   	cpu_statsctx_switchesr   r   s      r8   test_ctx_switchesz$TestSystemCPUStats.test_ctx_switches  sB    011'))6|\EEEEErb   c                     t          d          }t          j                    j        }|                     ||d           d S )N
interruptsr  r   )r   r   r  r  r   r   s      r8   test_interruptsz"TestSystemCPUStats.test_interrupts  sA    l++'))4|\EEEEErb   N)r  r  r  r  r  r^   rb   r8   r  r    s:        F F F
F F F F Frb   r  c                   D    e Zd Z ej        e d          d             ZdS )TestLoadAvgr  c                    t          j                    }t          dd          5 }|                                                                }d d d            n# 1 swxY w Y   |                     t          |d                   |d         d           |                     t          |d                   |d         d           |                     t          |d                   |d         d           d S )Nz/proc/loadavgrr   r   r   r:  )r   
getloadavgrG   r  rI   r   float)r   r   rR   
proc_values       r8   test_getloadavgzTestLoadAvg.test_getloadavg  s   (**/3'' 	*1))J	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	uZ]33\!_ANNNuZ]33\!_ANNNuZ]33\!_ANNNNNs   'AAAN)r  r  r  r   ry  r   r  r^   rb   r8   r  r    sF         X_'99O O :9O O Orb   r  c                       e Zd Zd ZdS )TestSystemNetIfAddrsc                    t          j                                                    D ]\\  }}|D ]R}|j        t           j        k    r)|                     |j        t          |                     A|j        t          j	        k    r|                     |j        t          |                     |                     |j        t          |                     |j        )|                     |j        t          |                     |                     t          |          d           |j        t          j        k    rC|j                            d          d         }|                     |t#          |                     T^d S )Nz0.0.0.0%r   )r   net_if_addrsitemsfamilyAF_LINKr   addressrl   r*   r+   r9   netmaskr=   	broadcastrA   rP   rI   rZ   )r   r   addrsaddrr  s        r8   test_ipszTestSystemNetIfAddrs.test_ips  s   !.006688 	F 	FKD% F F;&.0 F$$T\?43H3HIIII[FN2 F$$T\3CD3I3IJJJ$$T\3CD3I3IJJJ~ N(();D)A)AC C C C (();D)A)A9MMMM[FO3 F #l0055a8G$$W.>t.D.DEEE'F	F 	Frb   N)r  r  r  r  r^   rb   r8   r  r    s(        F F F F Frb   r  c                       e Zd Zd Zd ZdS )TestSystemNetIfStatsc           
      b   t          j                                                    D ]\  }}	 t          d|z            }|                     |j        d|v |           |                     |j        t          t          j	        d|          d                              y# t          $ r Y w xY wd S )Nifconfig %sRUNNING)r   z(?i)MTU[: ](\d+)r   )r   net_if_statsr  r   r   isupmtury   rB  rC  RuntimeError)r   r   statsrz   s       r8   test_against_ifconfigz*TestSystemNetIfStats.test_against_ifconfig  s    !.006688 	O 	OKD%O-..   Y#-=3 GGG  !$RZ0CS%I%I!%L!M!MO O O O	     	O 	Os   B
B,+B,c           	      J   t          j                                                    D ]|\  }}t          d|z  d          5 }|                     |j        t          |                                                                                     d d d            n# 1 swxY w Y   }d S )Nz/sys/class/net/%s/mturC   )	r   r  r  rG   r   r  ry   r  r   )r   r   r  rR   s       r8   test_mtuzTestSystemNetIfStats.test_mtu  s    !.006688 	C 	CKD%-4d;; Cq  C0@0@,A,ABBBC C C C C C C C C C C C C C C	C 	Cs   ABB	B	N)r  r  r  r  r  r^   rb   r8   r  r    s:        	O 	O 	OC C C C Crb   r  c                   4    e Zd Z e            d             ZdS )TestSystemNetIOCountersc                    fd}t          j        dd          }|                                D ];\  }	  |          }n# t          $ r Y w xY w|                     |j        |d         d           |                     |j        |d         d           |                     |j        |d	         d
           |                     |j        |d         d
           |                     |j	        |d         d           |                     |j
        |d         d           |                     |j        |d         d           |                     |j        |d         d           =d S )Nc                    i }t          dz            }t          t          j        d|          d                   |d<   t          t          j        d|          d                   |d<   t          t          j        d|          d                   |d<   t          t          j        d|          d	                   |d
<   t          t          j        d|          d                   |d<   t          t          j        d|          d	                   |d<   t          t          j        d|          d                   |d<   t          t          j        d|          d                   |d<   |S )Nr  zRX packets[: ](\d+)r   packets_recvzTX packets[: ](\d+)packets_sentzerrors[: ](\d+)errinr   erroutzdropped[: ](\d+)dropindropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)
bytes_sent)r   ry   rB  rC  )nicr   rz   r   s      r8   ifconfigz?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfig  sS   C]T)**C"%
1377:#< #<C"%
1377:#< #<Crz*<cBB1EFFCL
+=s C CA FGGCM
+> D DQ GHHCM ,?!E!Ea!HIIC	N #
A3GGJ!L !LC #
A3GGJ!L !LCJrb   TF)pernicnowrapr  i   r   r  r  r   r  r  
   r  r  r  )r   net_io_countersr  r  r   r  r  r  r  r  r  r  r  )r   r  nior  ifconfig_retr   s        @r8   r  z-TestSystemNetIOCounters.test_against_ifconfig  s   	 	 	 	 	" $D???99;; 	B 	BKD%'x~~   "" ,|"<H # N N N"" ,|"<H # N N N"""L$@ # N N N"""L$@ # N N N""\'2" # > > >""l84B # @ @ @""l84B # @ @ @""|I6b # B B B B'	B 	Bs   A
AAN)r  r  r  r   r  r^   rb   r8   r  r    s>         'B 'B 'B 'B 'Brb   r  c                   z    e Zd Z ej        de           ej        dd          d                         Zd ZdS )	TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntopri  zpsutil._pslinux.supports_ipv6Fr  c                    	 t          j         t           j        t           j                  }|                     |j                   |                    d           n# t           j        $ r Y nw xY wt          j        d           d S )N)z::1r   inet6kind)	r*   rP   SOCK_STREAM
addCleanupclosebinderrorr   net_connections)r   supports_ipv6rQ   r7   s       r8   test_emulate_ipv6_unsupportedz6TestSystemNetConnections.test_emulate_ipv6_unsupported  s    	fov/ABBAOOAG$$$FF:| 	 	 	D	G,,,,,,s   AA A-,A-c                     t          dt          j        d                    5 }t          j        d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )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  )r   r   r   r   r  r   r4  s     r8   test_emulate_unixz*TestSystemNetConnections.test_emulate_unix  s    O     		 "////8OOOO		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   AAAN)r  r  r  r   r   rJ   r
  r  r^   rb   r8   r  r    sp         TZ2
KKKTZ/eDDD- - ED LK-
 
 
 
 
rb   r  c                       e Zd Z ej         eed           d           e            d                         Zd Z	d Z
dS )TestSystemDiskPartitionsstatvfszos.statvfs() not availablec                 V   d }t          j        d          D ]}t          j        |j                  } ||j                  \  }}}}|                     |j        |           |                     |j        |t                     |                     |j	        |t                     d S )Nc                    t          d| z                                            }|                    d          }|                    d           |                    d          }|                                d d         \  }}}}|dk    rd}t	          |          t	          |          t	          |          }}}||||fS )Nzdf -P -B 1 "%s"rt   r   rE   nonerc   )r   r   rI   popry   )rz  rz   r{   rS   devr}   r~   rn   s           r8   dfz4TestSystemDiskPartitions.test_against_df.<locals>.df6  s    &-..4466CIIdOOEIIaLLL99Q<<D%)ZZ\\"1"%5"Cdf}  #E

CIIs4yy4EtT))rb   F)allr   )
r   disk_partitions
disk_usage
mountpointr   r}   r   rn   r   r~   )r   r  partusager  r}   r~   rn   s           r8   test_against_dfz(TestSystemDiskPartitions.test_against_df1  s    
		* 		* 		* *u555 	? 	?D%do66E%'R%8%8"CdU[%000""5:t)= # ? ? ?""5:t)= # ? ? ? ?	? 	?rb   c                    t          dd          5 }|                                }d d d            n# 1 swxY w Y   d|v r;t          j                    D ]}|j        dk    r d S |                     d           d S t          j        t          d                    }t          j
        d|d          5 }t          j
        d	d
g          5 }t          j                    }|j        sJ |j        sJ |sJ |                     |d         j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz/proc/filesystemsr  zfszcouldn't find any ZFS partitionz
nodev	zfs
r#  Trm  $psutil._pslinux.cext.disk_partitions)z	/dev/sdb3/r  rwr  r   )rG   r  r   r  fstypefailr   r   r   r   r   r   r   )r   rR   r  r  rw  r  r  r   s           r8   test_zfs_fsz$TestSystemDiskPartitions.test_zfs_fsJ  s.   %s++ 	q6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	D= 	;.00 = =;%' EE 		;<<<<< An$5$566I1)24A A A 	;DFZ>&E%FH H H ;KM 022C9$$$9$$$JJJ$$SV]E:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sC   2664D;AD#D;#D'	'D;*D'	+D;;D?D?c                 <   	 t          j        dd          5 }|                     t                    5  t	          j                     d d d            n# 1 swxY w Y   |j        sJ 	 d d d            n# 1 swxY w Y   dt          _        d S # dt          _        w xY w)Nzos.path.realpathz/non/existentr  /proc)r   r   assertRaisesr   r   r  r   PROCFS_PATHr4  s     r8   test_emulate_realpath_failz3TestSystemDiskPartitions.test_emulate_realpath_failb  s!   	).)8: : :  =>&&'899 - -*,,,- - - - - - - - - - - - - - -x	                              ")FF((((sQ   B A4AA4A	A4A	A4(B 4A88B ;A8<B BN)r  r  r  r   ry  hasattrrD  r   r  r%  r*  r^   rb   r8   r  r  .  s         X_Y///1MNN? ?  ON?.; ; ;0	) 	) 	) 	) 	)rb   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestSystemDiskIoCountersc                    t          dd          5  t          j        dd          5  t          j        d          }|                     |j        d           |                     |j        d	           |                     |j        d
t          z             |                     |j
        d           |                     |j        d           |                     |j        d           |                     |j        dt          z             |                     |j        d           |                     |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N/proc/diskstatsz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12!psutil._pslinux.is_storage_deviceTr  Fr  r   r:  r   rE   r   r;        r  r   r   r   r   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   s     r8   test_emulate_kernel_2_4z0TestSystemDiskIoCounters.test_emulate_kernel_2_4q  s    !=? ? 	4 	4 ?)-/ / / 4 4-U;;;  333  !6:::  [AAA  222  !444  !7;;;  !k/BBB  333  333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 	45   E%DEE%E	E%E	E%%E),E)c                    t          dd          5  t          j        dd          5  t          j        d          }|                     |j        d           |                     |j        d	           |                     |j        d
t          z             |                     |j
        d           |                     |j        d           |                     |j        d           |                     |j        dt          z             |                     |j        d           |                     |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr/  z'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11r0  Tr  Fr1  r   r:  r   rE   r   r;  r2  r3  r  r4  r@  s     r8   test_emulate_kernel_2_6_fullz5TestSystemDiskIoCounters.test_emulate_kernel_2_6_full  s    !9; ; 	4 	4 ?)-/ / / 4 4-U;;;  333  !6:::  [AAA  222  !444  !7;;;  !k/BBB  333  333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 	4rB  c                    t          dd          5  t          j        dd          5  t          j        d          }|                     |j        d           |                     |j        d	t          z             |                     |j	        d
           |                     |j
        dt          z             |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr/  z   3    1   hda 1 2 3 4r0  Tr  Fr1  r   r:  r   rE   r   )r   r   r   r   r5  r   r6  r8  r9  r;  r=  r7  r:  r<  r>  r?  r@  s     r8   test_emulate_kernel_2_6_limitedz8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limited  s    !)+ + 	3 	3 ?)-/ / / 3 3-U;;;  333  [AAA  !444  !k/BBB  !6:::  222  !7;;;  333  222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 	3rB  c                 R   t          dt          j        d                    5  t          j        dd          5  t          j        dd          }|                     t          |          d           |                     |d	         j	        d
           |                     |d         j	        d
           |                     |d	         j
        d           |                     |d         j
        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr/                      3    0   nvme0n1 1 2 3 4 5 6 7 8 9 10 11
                    3    0   nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
                    r0  Fr  Tperdiskr  r:  nvme0n1r   	nvme0n1p1r   )r   r   r   r   r   r   r5  r   rL   r6  r;  r@  s     r8   test_emulate_include_partitionsz8TestSystemDiskIoCounters.test_emulate_include_partitions  s    ! !    	B 	B ?).0 0 0 B B-d5III  S1---  Y!:A>>>  [!1!<a@@@  Y!;Q???  [!1!=qAAAB B B B B B B B B B B B B B B	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs5   DB>D8DD	DD	DD #D c                    t          dt          j        d                    5  t          j        dd          5  t          j        dd          }|                     |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d }t          dt          j        d                    5  t          j        dd|	          5  t          j        dd          }|                     |j	        d
           |                     |j
        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr/  rH  r0  Fr  rI  c                     | dk    S )NrK  r^   )r   s    r8   is_storage_devicezSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_device  s    9$$rb   Tr   r   r   )r   r   r   r   r   r   r5  rr  r   r6  r;  )r   r   rP  s      r8   test_emulate_exclude_partitionsz8TestSystemDiskIoCounters.test_emulate_exclude_partitions  sx    ! !    		' 		' ?).0 0 0 ' '-eEJJJ!!#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '		' 		' 		' 		' 		' 		' 		' 		' 		' 		' 		' 		' 		' 		' 		'	% 	% 	% ! !    
	5 
	5 ?#'5FH H H 5 5-eEJJJ  333  !444	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 
	5sk   B	,A2&B	2A6	6B	9A6	:B		BB9EAD*E*D.	.E1D.	2EE	Ec                    d }t          j        d          }t          j        dd|          5  t          j        d          }d d d            n# 1 swxY w Y   |                     t          |          t          |                     d S )Nc                     | dk    rdS dS )Nr/  FTr^   rz  s    r8   r{  z?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.exists  s    (( u4rb   T)rJ  psutil._pslinux.os.path.existsr   )r   r5  r   r   r   rL   )r   r{  wprocfswsysfss       r8   test_emulate_use_sysfsz/TestSystemDiskIoCounters.test_emulate_use_sysfs  s    	 	 	
 )$777Z8#9 9 9 	; 	;,T:::F	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	Ws6{{33333s   AAAc                     d }t          j        dd|          5  |                     t          t          j                   d d d            d S # 1 swxY w Y   d S )Nc                     dS )NFr^   rT  s    r8   r{  z>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.exists  s    5rb   rU  Tr   )r   r   r(  NotImplementedErrorr   r5  )r   r{  s     r8   test_emulate_not_implz.TestSystemDiskIoCounters.test_emulate_not_impl  s    	 	 	 Z8#9 9 9 	L 	L163JKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   &AAAN)
r  r  r  rA  rD  rF  rM  rQ  rX  r\  r^   rb   r8   r-  r-  n  s        4 4 4&4 4 4(3 3 3.B B B&5 5 5>
4 
4 
4L L L L Lrb   r-  c                       e Zd Zd Zd Z ej        ed          d             Z ej         e	d           d           ej        ed          d                         Z
d Zd	S )
TestRootFsDeviceFinderc                     t          j        d          j        }t          j        |          | _        t          j        |          | _        d S )Nr!  )rD  r   st_devmajorminor)r   r  s     r8   setUpzTestRootFsDeviceFinder.setUp  s4    gcll!Xc]]
Xc]]


rb   c                    t                      }t          j                            d          r|                                 n |                     t          |j                   t          j                            d| j        d| j        d          r|	                                 n |                     t          |j	                   |
                                 d S Nz/proc/partitionsz/sys/dev/block/rF   z/uevent)r   rD  rz  r{  ask_proc_partitionsr(  r   ra  rb  ask_sys_dev_blockask_sys_class_block)r   finders     r8   test_call_methodsz(TestRootFsDeviceFinder.test_call_methods  s    #%%7>>,-- 	M&&((((/1KLLL7>>>


DJJJ( ) ) 	K$$&&&&/1IJJJ""$$$$$rb   zunsupported on GITHUB_ACTIONSc                 B   t                      }|                     |                                           d x}x}}t          j                            d          r|                                }t          j                            d| j        d| j        d          r|	                                }|
                                }|p|p|}|r|r|                     ||           |r|r|                     ||           |r|r|                     ||           d S d S d S re  )r   assertIsNotNonefindrD  rz  r{  rf  ra  rb  rh  rg  r   )r   ri  r   r   cbases         r8   test_comparisonsz'TestRootFsDeviceFinder.test_comparisons  sH   #%%V[[]]+++A7>>,-- 	-**,,A7>>>


DJJJ( ) ) 	-**,,A$$&&{A{ 	&A 	&T1%%% 	&A 	&T1%%% 	&A 	&T1%%%%%	& 	& 	& 	&rb   findmntzfindmnt utility not availablec                     t                                                      }t          d          }|                     ||           d S )Nzfindmnt -o SOURCE -rn /)r   rm  r   r   )r   r   findmnt_values      r8   test_against_findmntz+TestRootFsDeviceFinder.test_against_findmnt   sE     *++0022455}55555rb   c                    t          j        ddg          5 }t          j                    d         }|j        sJ t
          sU|                     |j        d           |                     |j        t                      
                                           n|                     |j        d           d d d            d S # 1 swxY w Y   d S )Nr   )	/dev/rootr!  ext4r"  r  r   rv  )r   r   r   r  r   r	   assertNotEqualdevicer   r   rm  )r   r   r  s      r8   test_disk_partitions_mockedz2TestRootFsDeviceFinder.test_disk_partitions_mocked'  s   Z6>?A A A 		;DE)++A.D8OOO! ;##DK===  .@.B.B.G.G.I.IJJJJ  k:::		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		;s   BB??CCN)r  r  r  rc  rj  r   ry  r	   rp  r   rt  rz  r^   rb   r8   r^  r^    s        # # #
% % % X_^%DEE& & FE&( X_y)))+JKKX_^%DEE6 6 FE LK6

; 
; 
; 
; 
;rb   r^  c                   ^    e Zd Zd Zd Zd Zd Zd Zd Z e	            d             Z
d Zd	S )
TestMiscc                     t          d          }t          j                    }|                     t	          |          t	          |                     d S )Nz	boot time)r   r   	boot_timer   ry   r   s      r8   test_boot_timezTestMisc.test_boot_time<  sI    k**'))\**C,=,=>>>>>rb   c                 \	   |                                  }t          j        |           t          t          j                            |d          d          5 }|                    d           |                    d           |                    d           d d d            n# 1 swxY w Y   	 t          fd}t          rdnd}t          j	        ||	          5  t          t                     |                     t          t          j                   |                     t          t          j        d
           |                     t          t          j                   |                     t          t          j        d
           |                     t          t          j                   |                     t          t          j        d
           |t          _        |                     t          j                    d           |                     t'          t          j                              d           t          j        d
          }|                     t'          |          d           t          j        d
          }|                     t'          t)          t&          |                    d           t          t          j                            |d          d          5 }|                    d           |                    d           |                    d           d d d            n# 1 swxY w Y   |                     t          j                    d           |                     t'          t          j        d
                    d           |                     t'          t          j                              d           |                     t'          t)          t&          t          j        d
                              d           d d d            n# 1 swxY w Y   t-          j        |           t          t                     n-# t-          j        |           t          t                     w xY w|                     t          j        d           d S )Nr   r   zcpu   0 0 0 0 0 0 0 0 0 0
zcpu0  0 0 0 0 0 0 0 0 0 0
zcpu1  0 0 0 0 0 0 0 0 0 0
c                 z    |                      d          rt          t          j        d           | g|R i |S )Nr'  zrejecting access for test)rv   r  r  r	  r  s      r8   r   z4TestMisc.test_no_procfs_on_import.<locals>.open_mockM  sK    ??7++ M!%,0KLLL y7777777rb   r   r   ri  Tr  r   zcpu   1 0 0 0 0 0 0 0 0 0
zcpu0  1 0 0 0 0 0 0 0 0 0
zcpu1  1 0 0 0 0 0 0 0 0 0
r'  )
get_testfnrD  mkdirrG   rz  rN   writer   r   r   r   r   r(  r  r@  cpu_percentcpu_times_percentr)  r   sumr   rx  shutilrmtree)r   	my_procfsrR   r   r   per_cpu_percentper_cpu_times_percentr   s          @r8   test_no_procfs_on_importz!TestMisc.test_no_procfs_on_importA  s   OO%%	
"',,y&11377 	31GG1222GG1222GG1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
 .1H//6HKKY??? $M $Mf%%%!!'6+;<<<!!'6+;D!III!!'6+=>>>!!'6+=d!KKK!!'6+CDDD!!V5d " D D D &/"  !3!5!5q999  V%=%?%?!@!@!DDD #)"4D"A"A"A  _!5!5q999 )/(@(M(M(M%  S.C%D%D!E!EqIII "',,y&993?? ;1GG9:::GG9:::GG9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 ##F$6$8$8!<<<##*$77788!= = =##C(@(B(B$C$CQGGG##C!9!F!F!FGGHH!M M MG$M $M $M $M $M $M $M $M $M $M $M $M $M $M $ML M)$$$&!!!! M)$$$&!!!!+W55555sj   A B$$B(+B(0-Q HP+.A L:.P+:L>	>P+L>	CP+Q +P//Q 2P/3Q *R	c           	         t          dt          j        d                                                    5 }t	          j                     |j        sJ t	          j        d           t	          j                     t	          j        d           d d d            n# 1 swxY w Y   t          dt          j        d                                                    5 }t	          j                    }|j        sJ t	          j        d          }t	          j                    }t	          j        d          }|                     |d           |                     t          |          d           |                     t          |          d           |                     t          |          d           |                     t          t          t          |                    d           |                     t          t          t          |                    d           |                     |j        d           |                     |j        d           d d d            d S # 1 swxY w Y   d S )Nrj  z                cpu   0 0 0 0 0 0 0 1 0 0
                cpu0  0 0 0 0 0 0 0 1 0 0
                cpu1  0 0 0 0 0 0 0 1 0 0
                Tr  z                cpu   1 0 0 0 0 0 0 0 0 0
                cpu0  1 0 0 0 0 0 0 0 0 0
                cpu1  1 0 0 0 0 0 0 0 0 0
                r   r  )r   r   r   r   r   r  r   r  rx  r  r   r   r=  user)r   r   r  cpu_percent_percpur  cpu_times_percent_percpus         r8   test_cpu_steal_decreasez TestMisc.test_cpu_steal_decrease~  s    O    VXX  	2 #$    8OOOd++++$&&&$D1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2  O    VXX  	; #$ ,..K8OOO!'!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%   ABB"BE;I""I&)I&c                     t          j        dd          5 }|                     t          t          j        j                   |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nr#  Tr$  )r   r   r(  r  r   rp  r~  r   r4  s     r8   test_boot_time_mockedzTestMisc.test_boot_time_mocked  s    Z-d;;; 	q)+ + + 8OOOO		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   4AA Ac                    t          j        ddg          5 }|                     t          j                    d         j        d           |j        sJ 	 d d d            n# 1 swxY w Y   t          j        ddg          5 }|                     t          j                    d         j        d           |j        sJ 	 d d d            n# 1 swxY w Y   t          j        ddg          5 }|                     t          j                    d         j        d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )	Nzpsutil._pslinux.cext.users)	giampaolopts/2z:0   hATr:  r  r   	localhost)r  r  z:0.0r  Tr:  )r  r  foor  Tr:  r  )r   r   r   r   usershostr   r4  s     r8   test_users_mockedzTestMisc.test_users_mocked  s    Z4'> &?@ @ @ 	CDV\^^A.3[AAA8OOOO		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 Z4'> &?@ @ @ 	CDV\^^A.3[AAA8OOOO		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Z4'> &?@ @ @ 	CDV\^^A.3U;;;8OOOO		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   <A!!A%(A%<CCC.<D88D<?D<c                 R   |                                  }t          j        |           	 |t          _        |                     t          t          j                   |                     t          t          j                   |                     t          t          j        d           |                     t          t          j	                   |                     t          t          j
                   |                     t          t          j                   |                     t          t          j                   |                     t          t          j                   |                     t          j        t          j                   dt          _        d S # dt          _        w xY w)NTr  r'  )r  rD  r  r   r)  r(  r  r   r@  r~  r  r  r  r  NoSuchProcessProcess)r   tdirs     r8   test_procfs_pathzTestMisc.test_procfs_path  s5     
	)!%Fgv'<===gv'7888gv'7EEEgv'7888gv'=>>>gv'=>>>gv':;;;gv'=>>>f2FNCCC!(FF((((s   E F F&c                    t                      5  t          j                    }|                                }|                     t          |          d           t          |d           d         j        }|                     |j	        |           t          j        |          }|
                                 |                     |t          j                               d d d            d S # 1 swxY w Y   d S )Nr:  c                     | j         S r]   )idr_   s    r8   <lambda>z)TestMisc.test_issue_687.<locals>.<lambda>  s     rb   )keyr   )r   r   r  threadsr   rL   sortedr  rx  pidas_dictrF  pids)r   pr  tidpts        r8   test_issue_687zTestMisc.test_issue_687  s    \\ 	1 	1  AiikkGS\\1---nn555a8;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 	1s   CC..C25C2c                     t          dd          5 }t          j        t          j                              sJ |j        sJ 	 d d d            d S # 1 swxY w Y   d S )N/proc/%s/statusrc   )r   r   
pid_existsrD  getpidr   r4  s     r8   test_pid_exists_no_proc_statusz'TestMisc.test_pid_exists_no_proc_status  s     0"55 	$RY[[111118OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1AAAN)r  r  r  r  r  r  r  r  r  r   r  r  r^   rb   r8   r|  r|  9  s        ? ? ?
;6 ;6 ;6z'; '; ';R    () ) )& 1 1 1     rb   r|  z
no batteryc                       e Zd Z ej         ed           d          d             Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd ZdS )TestSensorsBatteryacpizacpi utility not availablec                     t          d          }t          |                    d          d                                                             dd                    }t          j                    j        }|                     ||d           d S )Nzacpi -br  r   r  rc   r   )	r   ry   rI   r   replacer   sensors_batterypercentr   )r   rz   
acpi_valuer   s       r8   test_percentzTestSensorsBattery.test_percent  sw    mm3*0022::3CCDD
-//7z<qAAAAArb   c                 l   fd}t           t          rdnd}t          j        ||          5 }|                     t          j                    j        d           |                     t          j                    j        t
          j	                   |j
        sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                     |                      d          s|                      d          rt          j        d          S  | g|R i |S )N
AC0/online	AC/online   1r   r   r   r  s      r8   r   z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mock  Z    }}\** 8dmmK.H.H 8z$''' y7777777rb   r   r   ri  T)rG   r   r   r   r   r   r  power_pluggedsecsleftPOWER_TIME_UNLIMITEDr   r   r   r   r   r   s       @r8   test_emulate_power_pluggedz-TestSensorsBattery.test_emulate_power_plugged  s   	8 	8 	8 	8 	8 	),Doo2DZ;;; 	qV355CTJJJ&((163NP P P8OOOO		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A,B))B-0B-c                     fd}t           t          rdnd}t          j        ||          5 }|                     t          j                    j        d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                    |                      d          s|                      d          rt          t          j        d          |                      d          r!t	          j        t          d                    S  | g|R i |S )Nr  r  rc   /statuschargingr   r  r  r	  r   r   r   r  s      r8   r   zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mock  s    }}\** 8dmmK.H.H 8elB///y)) 8{1Z==111 y7777777rb   r   r   ri  T	rG   r   r   r   r   r   r  r  r   r  s       @r8   test_emulate_power_plugged_2z/TestSensorsBattery.test_emulate_power_plugged_2  s    	8 	8 	8 	8 	8 	),Doo2DZ;;; 	qV355CTJJJ8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   6A33A7:A7c                     fd}t           t          rdnd}t          j        ||          5 }|                     t          j                    j        d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                     |                      d          s|                      d          rt          j        d          S  | g|R i |S )Nr  r     0r  r  s      r8   r   zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mock"  r  rb   r   r   ri  Fr  r  s       @r8   test_emulate_power_not_pluggedz1TestSensorsBattery.test_emulate_power_not_plugged   s    	8 	8 	8 	8 	8 	),Doo2DZ;;; 	qV355CUKKK8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     fd}t           t          rdnd}t          j        ||          5 }|                     t          j                    j        d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                    |                      d          s|                      d          rt          t          j        d          |                      d          r!t	          j        t          d                    S  | g|R i |S )Nr  r  rc   r  dischargingr  r  s      r8   r   zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mock1  s    }}\** 8dmmK.H.H 8elB///y)) 8{1]#3#3444 y7777777rb   r   r   ri  Fr  r  s       @r8    test_emulate_power_not_plugged_2z3TestSensorsBattery.test_emulate_power_not_plugged_2.  s    	8 	8 	8 	8 	8 	),Doo2DZ;;; 	qV355CUKKK8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     fd}t           t          rdnd}t          j        ||          5 }|                     t          j                    j                   |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                     |                      d          s|                      d          rt          t          j        d          |                      d          rt	          j        d          S  | g|R i |S )N"/sys/class/power_supply/AC0/online!/sys/class/power_supply/AC/onlinerc   #/sys/class/power_supply/BAT0/statuss   ???)rv   r  r  r	  r   r   r  s      r8   r   zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockB  s    CDD 8OO$GHH8elB///!FGG 8z&))) y7777777rb   r   r   ri  )	rG   r   r   r   rr  r   r  r  r   r  s       @r8   test_emulate_power_undeterminedz2TestSensorsBattery.test_emulate_power_undetermined?  s    	8 	8 	8 	8 	8 	),Doo2DZ;;; 	qf466DEEE8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   5A22A69A6c                     t          dd          5 }|                     t          j                    j        d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )N(/sys/class/power_supply/BAT0/energy_fullr  r   )r   r   r   r  r  r   r4  s     r8   test_emulate_energy_full_0z-TestSensorsBattery.test_emulate_energy_full_0Q  s    :DB B 	EFV355=qAAA8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6AAAc                    t          dt          t          j        d                    5  t          dt          t          j        d                    5  t	          dd          5  |                     t          j                    j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  rc   z(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys   88X   )	r   r  r  r	  r   r   r   r  r  r   s    r8   "test_emulate_energy_full_not_availz5TestSensorsBattery.test_emulate_energy_full_not_availX  s    !:b))+ + 	K 	K %>EL"--/ / K K '?H H K K$$V%;%=%=%ErJJJ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 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	KsY   )CB3#-BB3B  B3#B $B3'C3B7	7C:B7	;CCCc           	         t          dt          t          j        d                    5  t          dt          t          j        d                    5  t          dt          t          j        d                    5  |                     t          j                    j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  rc   r  r  )r   r  r  r	  rr  r   r  r  r  s    r8   test_emulate_no_powerz(TestSensorsBattery.test_emulate_no_powere  s    3b))+ + 		N 		N %8EL"--/ / N N )=b113 3 N N %%f&<&>&>&LMMM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 		N 		N 		N 		N 		N 		N 		N 		N 		N 		N 		N 		N 		N 		N 		N 		NsY   )C")C
;,B3'C
3B77C
:B7;C
>C"
C	C"C	C""C&)C&N)r  r  r  r   ry  r   r  r  r  r  r  r  r  r  r  r^   rb   r8   r  r    s         X_v&(DEEB B FEB     "    "  $  K K KN N N N Nrb   r  c                       e Zd Zd ZdS )TestSensorsBatteryEmulatedc                 `   fd}t           t          rdnd}t          j        ddg          5 }t          j        ||          5 }|                     t          j                               d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        sJ |j        sJ d S )Nc                 `   |                      d          r!t          j        t          d                    S |                      d          r!t          j        t          d                    S |                      d          r!t          j        t          d                    S  | g|R i |S )Nz/energy_now60000000z
/power_now0z/energy_full60000001r   r   r   r   r  s      r8   r   z5TestSensorsBatteryEmulated.test_it.<locals>.open_mockw  s    }}]++ 8{1Z==111|,, 8{1S66***~.. 8{1Z==111 y7777777rb   r   r   z
os.listdirBAT0r  ri  )rG   r   r   r   rl  r   r  r   )r   r   r   mlistdirmopenr   s        @r8   test_itz"TestSensorsBatteryEmulated.test_itv  sC   	8 	8 	8 	8 	8 	),Doo2DZF8<<< 	?KY??? ?5$$V%;%=%=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? |s5   B'A:.B:A>	>BA>	BBBN)r  r  r  r  r^   rb   r8   r  r  s  s#            rb   r  c                       e Zd Zd Zd ZdS )TestSensorsTemperaturesc                    fd}t           t          rdnd}t          j        ||          5  t          j        ddg          5  t	          j                    d         d	         }|                     |j        d
           |                     |j        d           |                     |j	        d           |                     |j
        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                    |                      d          r!t          j        t          d                    S |                      d          r!t          j        t          d                    S |                      d          rt          j        d          S |                      d          rt          j        d          S |                      d	          rt          j        d
          S  | g|R i |S )N/namer   z/temp1_labellabelz/temp1_input   30000z
/temp1_maxs   40000z/temp1_crit   50000)r   r   r   r   r   r  s      r8   r   zCTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock  s    }}W%% 8{1V99---~.. 	8{1W::...~.. 8z(+++|,, 8z(+++}-- 8z(+++ y7777777rb   r   r   ri  r  z/sys/class/hwmon/hwmon0/temp1r  r   r   r        >@g      D@      I@rG   r   r   r   r   sensors_temperaturesr   r  r  highcritical)r   r   r   tempr   s       @r8   test_emulate_class_hwmonz0TestSensorsTemperatures.test_emulate_class_hwmon  s   	8 	8 	8 	8 	8 	),Doo2DZ;;; 	6 	6K*I)JL L L 6 6244V<Q?  W555  t444  D111  555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 	6s6   C7BCC7C#	#C7&C#	'C77C;>C;c                    fd}d }t           t          rdnd}t          j        ||          5  t          j        dd|          5  t	          j                    d	         d
         }|                     |j        d           |                     |j        d           |                     |j	        d           |                     |j
        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                    |                      d          rt          j        d          S |                      d          rt          j        d          S |                      d          r!t          j        t	          d                    S |                      d          r!t          j        t	          d                    S  | g|R i |S )	N0_tempr  r  r  0_typer  typer   )r   r   r   r   r   r  s      r8   r   zETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mock  s    }}X&& 	8z(+++v&& 8z(+++x(( 8{1Z==111v&& 8{1V99--- y7777777rb   c                 L    | dk    rg S | dk    rg S | dk    rdgS | dk    rddgS g S )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^   rT  s    r8   	glob_mockzETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mock  sh    88 N	AA N	;; N:;;GG NLLN NIrb   r   r   ri  r  Tr   r   r   rc   r  r  r   )r   r   r  r   r  r   s        @r8   test_emulate_class_thermalz2TestSensorsTemperatures.test_emulate_class_thermal  s   
	8 
	8 
	8 
	8 
	8
	 
	 
	 	),Doo2DZ;;; 	6 	6K)LLL 6 6244V<Q?  R000  t444  D111  555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 	6s6   C:
BC"C:"C&	&C:)C&	*C::C>C>N)r  r  r  r  r  r^   rb   r8   r  r    s2        6 6 66!6 !6 !6 !6 !6rb   r  c                       e Zd Zd ZdS )TestSensorsFansc                    fd}t           t          rdnd}t          j        ||          5  t          j        ddg          5  t	          j                    d         d	         }|                     |j        d
           |                     |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                 `   |                      d          r!t          j        t          d                    S |                      d          r!t          j        t          d                    S |                      d          r!t          j        t          d                    S  | g|R i |S )Nr  r   z/fan1_labelr  z/fan1_input2000r  r  s      r8   r   z4TestSensorsFans.test_emulate_data.<locals>.open_mock  s    }}W%% 8{1V99---}-- 8{1W::...}-- 8{1V99--- y7777777rb   r   r   ri  r  z/sys/class/hwmon/hwmon2/fan1r  r   r   r  i  )	rG   r   r   r   r   sensors_fansr   r  r  )r   r   r   fanr   s       @r8   r  z!TestSensorsFans.test_emulate_data  sj   	8 	8 	8 	8 	8 	),Doo2DZ;;; 	4 	4K*H)IK K K 4 4)++F3A6  G444  d333	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 	4s6   CAB)C)B-	-C0B-	1CCCN)r  r  r  r  r^   rb   r8   r  r    s#        4 4 4 4 4rb   r  c                       e Zd Z e            d             Zd Z ej        ed          d             Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z ej        e d          d             Zd Zd Zd Zd ZdS )TestProcessc                    |                                  }t          j        d|z            }|                     |          }t	          d d|z             t          j        |j                  }t          j	        d           |
                                }|                    d          }|                     |j        t          d |D                       d	           |                     |j        t          d
 |D                       d	           |                     |j        t          d |D                       d	           d S )Nzk
            import time
            with open("%s", "w") as f:
                time.sleep(10)
            c                  *    t          j        d          S )Nr   )rD  rV  r^   rb   r8   r  z3TestProcess.test_memory_full_info.<locals>.<lambda>  s    2:c?? rb   z'%s' not in retg?F)groupedc                 ,    g | ]}|j         |j        z   S r^   )private_dirtyprivate_cleanr   s     r8   rg   z5TestProcess.test_memory_full_info.<locals>.<listcomp>  s!    JJJ!/AO;JJJrb   r  r   c                     g | ]	}|j         
S r^   )pssr   s     r8   rg   z5TestProcess.test_memory_full_info.<locals>.<listcomp>  s    ...A!%...rb   c                     g | ]	}|j         
S r^   )r/  r   s     r8   rg   z5TestProcess.test_memory_full_info.<locals>.<listcomp>   s    000a16000rb   )r  r   r   pyrunr   r   r  r  timesleepmemory_full_infomemory_mapsr   ussr  r  r/  )r   testfnsrcsprocr  r  mapss          r8   test_memory_full_infoz!TestProcess.test_memory_full_info  sb   ""o  	  
 

3**,=,FGGGN59%%
2  ""}}U}++GSJJTJJJKK 	 	 	 	 	GS.....//t 	 	= 	= 	=Hc00400011 	 	? 	? 	? 	? 	?rb   c                    t          dt          j                    z  t          j        d                                                    5 }t          j                    }|                                }|j	        sJ | 
                    |j        d           | 
                    |j        d           | 
                    |j        d           d d d            d S # 1 swxY w Y   d S )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
                i l  r  i <  )r   rD  r  r   r   r   r   r  r#  r   r   r%  r  r/  )r   r   r  r  s       r8   test_memory_full_info_mockedz(TestProcess.test_memory_full_info_mocked  s   ry{{*O   , VXX1  	20 #$  A$$&&C8OOOSW&9:::SWh///SXy111=	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   	BCCCzunreliable on PYPYc                 D   d }|                                  }t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          rt          |           t          |d          5  |                      ||          j        d           d d d            n# 1 swxY w Y   t          |           t          |d	          5  |                      ||          j        d           d d d            d S # 1 swxY w Y   d S d S )
Nc                    t          j                    }t          j                    t          z   }	 |                                D ]G}|j        t          j                            |           k    r|c S t          j                    |k    r nH]r]   )	r   r  r!  r
   
open_filesrz  rD  abspathr  )fnamer  	giveup_atfiles       r8   get_test_filez7TestProcess.test_open_files_mode.<locals>.get_test_file'  s      A	n4ILLNN  DyBGOOE$:$:: #y0 	rb   r   r  r   zr+zw+za+r`   zx+)r  rG   r   moder   r   )r   r5  r&  s      r8   test_open_files_modez TestProcess.test_open_files_mode%  s   		@ 		@ 		@ ""&# 	> 	>]]6227===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>&# 	> 	>]]6227===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>&# 	> 	>]]6227===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> &$ 	? 	?]]6227>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?&$ 	? 	?]]6227>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?&$ 	? 	?]]6227>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?  	Cfc"" B B  v!6!6!;SAAAB B B B B B B B B B B B B B Bfd## C C  v!6!6!;TBBBC C C C C C C C C C C C C C C C C C	C 	Cs   %AA A4%B%%B),B) %C11C58C5%D==EE%F		FF$%GGG%H77H;>H;!%JJJc                    t          j                    }|                                }t          |                                 d          5  t          |j        dt          |          z             t          j        dt          t          j        d                    5 }|                                }|rJ |j        sJ 	 d d d            n# 1 swxY w Y   t          j        dt          t          j        d                    5 }|                     |                                g            |j        sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr   len(ret) != %ipsutil._pslinux.os.readlinkrc   ri  )r   r  r0  rG   r  r   rL   r   r   OSErrorr  r	  r   EINVALr   )r   r  filesr   s       r8   test_open_files_file_gonez%TestProcess.test_open_files_file_goneJ  s    N$//##S)) 	  	 q|%5E

%BCCC9(/b(A(AC C C  FG    x	                              9(/b(A(AC C C  FG  444x                             	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s[   
AE"CEC	EC	1E2E9EE			EE		EE!$E!c                    t          j                    }|                                }t          |                                 d          5  t          |j        dt          |          z             t          rdnd}t          j	        |t          t          j        d                    5 }|                                }|rJ |j        sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r:  r   r   rc   ri  )r   r  r0  rG   r  r   rL   r   r   r   r  r  r	  r   r   r  r>  r   r   s        r8   test_open_files_fd_gonez#TestProcess.test_open_files_fd_gone^  sm    N$//##S)) 	  	 q|%5E

%BCCC-0H//6HKK(/b(A(AC C C  FG    x	                             		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s7   
AC0)"CC0C	C0C	 C00C47C4c                    t          j                    }|                                }t          |                                 d          5  t          |j        dt          |          z             d}t          j        |t          t          j        d                    5 }|                                }|rJ |j        sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r9  )r   r  r0  rG   r  r   rL   r   r   r<  r  ENAMETOOLONGr   rA  s        r8   test_open_files_enametoolongz(TestProcess.test_open_files_enametoolongn  sd    N$//##S)) 	  	 q|%5E

%BCCC7KK(/0BB(G(GI I I  LM    x	                             		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s7   
AC' "CC'C	C'C	C''C+.C+c                 "   t          j        di           5 }|                     t          j                            t          j                                                                         |j	        sJ 	 d d d            d S # 1 swxY w Y   d S )Nz)psutil._pslinux._psposix.get_terminal_mapr  )
r   r   rr  r   rp  r  rD  r  terminalr   r4  s     r8   test_terminal_mockedz TestProcess.test_terminal_mocked  s    ZC%') ) ) 	,-fo55bikkBBKKMMNNN8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBBc                 >   t          j                    }t          j        t	          d                    }t          j        d|d          5 }|                     |                                ddg           |j	        sJ 	 d d d            n# 1 swxY w Y   t          j        t	          d                    }t          j        d|d          5 }|                     |                                g d           |j	        sJ 	 d d d            d S # 1 swxY w Y   d S )	Nzfoo bar r#  Trm  r  barz	foo bar  r  rJ  rc   
r   r  r   r   r   r   r   r   cmdliner   r   r  rw  r   s       r8   test_cmdline_mockedzTestProcess.test_cmdline_mocked  s   NK"2 3 344	Z-%.t= = = 	@AQYY[[5%.9998OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 K"6 7 788	Z-%.t= = = 	@AQYY[[*<*<*<===8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$   4BBB4DDDc                 >   t          j                    }t          j        t	          d                    }t          j        d|d          5 }|                     |                                ddg           |j	        sJ 	 d d d            n# 1 swxY w Y   t          j        t	          d                    }t          j        d|d          5 }|                     |                                g d           |j	        sJ 	 d d d            d S # 1 swxY w Y   d S )	Nzfoo bar r#  Trm  r  rJ  z	foo bar  rK  rL  rN  s       r8   test_cmdline_spaces_mockedz&TestProcess.test_cmdline_spaces_mocked  s   NK*..	Z-%.t= = = 	@AQYY[[5%.9998OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 K+//	Z-%.t= = = 	@AQYY[[*<*<*<===8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rP  c                 6   t          j                    }t          j        t	          d                    }t          j        d|d          5 }|                     |                                ddg           |j	        sJ 	 d d d            d S # 1 swxY w Y   d S )Nzfoo bar r#  Trm  r  rJ  rL  rN  s       r8   test_cmdline_mixed_separatorsz)TestProcess.test_cmdline_mixed_separators  s     NK"2 3 344	Z-%.t= = = 	@AQYY[[5%.9998OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   4BBBc                 H   t          j        dd          5  |                     t          j                                                    d           |                     t          j                                                    d           d d d            d S # 1 swxY w Y   d S )Nr;  z/home/foo (deleted)r  z	/home/foo)r   r   r   r   r  execwdr  s    r8   !test_readlink_path_deleted_mockedz-TestProcess.test_readlink_path_deleted_mocked  s    Z5%:< < < 	B 	BV^--1133[AAAV^--1133[AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   A3BBBc                    fd}t           t          rdnd}t          j        ||          5 }t	          j                                                    }|j        sJ |                     |g            d d d            n# 1 swxY w Y   fd}t          j        ||          5  | 	                    t          j
        t	          j                    j                   d d d            d S # 1 swxY w Y   d S )Nc                     |                      dt          j                    z            rt          t          j        d           | g|R i |S Nz/proc/%s/taskrc   )rv   rD  r  r  r  r	  r  s      r8   r   z2TestProcess.test_threads_mocked.<locals>.open_mock  sT    <== 8elB/// y7777777rb   r   r   ri  c                     |                      dt          j                    z            rt          t          j        d           | g|R i |S r[  )rv   rD  r  r  r  EPERMr  s      r8   r   z2TestProcess.test_threads_mocked.<locals>.open_mock  sT    <== 8ek2... y7777777rb   )rG   r   r   r   r   r  r  r   r   r(  AccessDenied)r   r   r   r   r   r   s        @r8   test_threads_mockedzTestProcess.test_threads_mocked  s   
	8 	8 	8 	8 	8 	),Doo2DZ;;; 	&q.""**,,C8OOOS"%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&	8 	8 	8 	8 	8 Z;;; 	M 	Mf16>3C3C3KLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms$   AB  BB&7C**C.1C.c                 x   t          j        dt          t          j        d                    5 }t          j        dt          j        dd                    5 }t          j                                                    }|j	        sJ |j	        sJ | 
                    |d           t          j        dd          5  |                     t
          j        t          j                    j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nzpsutil._pslinux.readlinkrc   ri  zpsutil.Process.cmdliner   zpsutil._pslinux.os.path.lexistsFr  )r   r   r<  r  r	  r   r^  r  rV  r   r   r(  ZombieProcess)r   r  r  r   s       r8   test_exe_mockedzTestProcess.test_exe_mocked  s0   Z2$+EL"$=$=? ? ? 	DBD4(.(;Ar(B(BD D D DGI
 n&&**,,y   y     b))) Z A-24 4 4 D D%%,fn.>.>.B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 D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DsZ   *D/A$D=7D 4D DDDDD/D	D/D	D//D36D3c                 v   t          dt          j                    z  t          t          j        d                    5 }t          j                    }|                     t                    5  |
                                 d d d            n# 1 swxY w Y   |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nr,  rc   )r   rD  r  r  r  r	  r   r  r(  r   r$  r   r   r   r  s      r8   test_issue_1014zTestProcess.test_issue_1014  s$    ! 29;;.b))+ + 	./  A""#455                                 8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   .B.+B B.B	B.B	B..B25B2r  c                 N   t          j        dt          t          j        d                    5 }t          j                    }|                                 |                     t
          j	                  5 }|
                    t
          j                   d d d            n# 1 swxY w Y   |j        sJ 	 d d d            n# 1 swxY w Y   |                     |j        j        |j                   |                     |j        j        |                                           d S )Nzpsutil._pslinux.prlimitrc   ri  )r   r   r<  r  ENOSYSr   r  r   r(  ra  rlimitRLIMIT_NOFILEr   r   	exceptionr  r   r   r  r   s       r8   test_rlimit_zombiezTestProcess.test_rlimit_zombie  sm   
 Z1$+EL"$=$=? ? ? 	BC  AFFHHH""6#788 /C-.../ / / / / / / / / / / / / / /8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*AE222+QVVXX66666s6   AC6 B"C"B&	&C)B&	*CC
Cc                 8   t          j        dt          t          j        d                    5 }t          j                    }|                                 |                     t
          j	                  5 }|
                                 d d d            n# 1 swxY w Y   |j        sJ 	 d d d            n# 1 swxY w Y   |                     |j        j        |j                   |                     |j        j        |                                           d S Nr;  rc   ri  )r   r   r<  r  r	  r   r  r   r(  ra  rW  r   r   rj  r  rk  s       r8   test_cwd_zombiezTestProcess.test_cwd_zombie  sc   Z5$+EL"$=$=? ? ? 	BC  AFFHHH""6#788 C              8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*AE222+QVVXX66666s6   AB86BB8B	B8B	B88B<?B<c                 ^   g d}d                     |                                          }t          dt          j                    z  |          5  t          j                    }|                     |                                d           |                     |	                                t
          j
                   |                     |                                d           |                     |                                dt          z  t          j                    z              |                                }|                     |j        dt          z             |                     |j        dt          z             |                     |j        d	t          z             |                     |j        d
t          z             |                     |j        dt          z             |                     |                                d           d d d            d S # 1 swxY w Y   d S )N)*r  z(cat)Z1r  r  r  r  r  r  r  r  r  2345r  r  r  r  6r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rw  r  r  7r   z/proc/%s/statcatr   r;  r:  r   rE   r   r2  )rN   r   r   rD  r  r   r  r   r   statusSTATUS_ZOMBIEppidcreate_timer   r~  r@  r  systemchildren_userchildren_systemiowaitcpu_num)r   r   r   r  cpus        r8   test_stat_file_parsingz"TestProcess.test_stat_file_parsing  s   +
 +
 +
X ((4..''))<gFF 	- 	-  AQVVXXu---QXXZZ)=>>>QVVXXq)))[63C3E3E!EG G G++--CSXq;777SZ[999S.K@@@S0!k/BBBSZ[999QYY[[!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   GH""H&)H&c           
         t          dt          j                    z  t          j        d                                                    5  t          j                    }|                     |	                                j
        d           |                     |	                                j        d           |                     |                                d           |                                }|                     |j        d           |                     |j        d           |                     |j        d           |                                }|                     |j        d	           |                     |j        d
           |                     |j        d           |                     |j                                        t)          t+          dd                               d d d            d S # 1 swxY w Y   d S )Nr  a                  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      B   i  i  i  i  i  i  r   r3  )r   rD  r  r   r   r   r   r  r   num_ctx_switches	voluntaryinvoluntarynum_threadsuidsreal	effectivesavedgids_proc_get_eligible_cpuslistrK   )r   r  r  r  s       r8   test_status_file_parsingz$TestProcess.test_status_file_parsingN  s   	+O 3 4 4 5;FHH	> 	> 	N 	N   AQ//11;R@@@Q//11=rBBBQ]]__b1116688DTY---T^T222TZ...6688DTY---T^T222TZ...QW77994a;L;LMMM-	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   	F(G>>HHc                     t          j        dt          t          j        d                    5 }t          j                    }|                                rJ |j        sJ 	 d d d            d S # 1 swxY w Y   d S rn  )	r   r   r<  r  rD  r   r  connectionsr   rd  s      r8   test_connections_enametoolongz)TestProcess.test_connections_enametoolongg  s     Z5$+E,>$C$CE E E 	HI  A}}&&&8OOOO		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   3A00A47A4N)r  r  r  r   r*  r-  r   ry  r   r7  r?  rB  rE  rH  rO  rR  rT  rX  r_  rb  re  r   rl  ro  r  r  r  r^   rb   r8   r  r    s        ? ? ?* 2  2  2F X_T/00"C "C 10"CH     (           $        B B BM M M:D D D*	 	 	 X_^_557 7 657	7 	7 	7;- ;- ;-zN N N2    rb   r  c                       e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Z e            d
             Zd Zd Zd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.
    c                 6    t          j                    | _        d S r]   )r   r  proc)clss    r8   
setUpClassz#TestProcessAgainstStatus.setUpClass{  s    >##rb   c                    t           j                            d| j        j        z            5 }|D ]}|                                }|                    |          rY|                    d          d         }	 t          |          c cd d d            S # t          $ r |cY c cd d d            S w xY wt          d|z            # 1 swxY w Y   d S )Nr  	r:  zcan't find %r)
r   _psplatform	open_textr  r  r   rv   	partitionry   rJ   )r   	linestartrR   rS   rP  s        r8   read_status_filez)TestProcessAgainstStatus.read_status_file  sM   ))!DIM13 3 
	:67 % %zz||??9-- % NN4003E%"5zz))
	: 
	: 
	: 
	: 
	: 
	: 
	: 
	: & % % %$
	: 
	: 
	: 
	: 
	: 
	: 
	: 
	:%	% _y8999
	: 
	: 
	: 
	: 
	: 
	: 
	: 
	: 
	: 
	:s6   A	C7BCB1 C0B11CCCc                     |                      d          }|                     | j                                        |           d S )NzName:)r  r   r  r   r   rP  s     r8   	test_namez"TestProcessAgainstStatus.test_name  =    %%g..))511111rb   c                    |                      d          }||                    d          dz   |                    d                   }|                    dd          }|                     | j                                        |           d S )NzState:(r   )r   rN  )r  rm  rfindr  r   r  rz  r  s     r8   test_statusz$TestProcessAgainstStatus.test_status  s|    %%h//ejjoo)%++c*:*::;c3''))++U33333rb   c                     |                      d          }|                     | j                                        |           d S )NzPPid:)r  r   r  r|  r  s     r8   	test_ppidz"TestProcessAgainstStatus.test_ppid  r  rb   c                     |                      d          }|                     | j                                        |           d S )NzThreads:)r  r   r  r  r  s     r8   test_num_threadsz)TestProcessAgainstStatus.test_num_threads  s?    %%j11..00%88888rb   c                    |                      d          }t          t          t          |                                dd                             }|                     | j                                        |           d S )NzUid:r   rE   )r  r   r   ry   rI   r   r  r  r  s     r8   	test_uidsz"TestProcessAgainstStatus.test_uids  e    %%f--c#u{{}}QqS12233))511111rb   c                    |                      d          }t          t          t          |                                dd                             }|                     | j                                        |           d S )NzGid:r   rE   )r  r   r   ry   rI   r   r  r  r  s     r8   	test_gidsz"TestProcessAgainstStatus.test_gids  r  rb   c                 "   |                      d          }|                     | j                                        j        |           |                      d          }|                     | j                                        j        |           d S )Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r  r   r  r  r  r  r  s     r8   test_num_ctx_switchesz.TestProcessAgainstStatus.test_num_ctx_switches  s~    %%&@AA3355?GGG%%&CDD3355A5IIIIIrb   c           
      B   |                      d          }dt          |          v rxt          t          |                    d                    \  }}|                     | j                                        t          t          ||dz                                  d S d S )NCpus_allowed_list:rN  r   )
r  r   r   ry   rI   r   r  cpu_affinityr  rK   )r   rP  min_max_s       r8   test_cpu_affinityz*TestProcessAgainstStatus.test_cpu_affinity  s    %%&:;;#e** 	GS%++c"2"233JD$	&&(($uT4!8/D/D*E*EG G G G G	G 	Grb   c                    |                      d          }t          j        d          5 }| j        j                                         d d d            n# 1 swxY w Y   dt          |          v r|j        rJ d S |j        sJ d S )Nr  zpsutil._pslinux.per_cpu_timesrN  )r  r   r   r  r  r  r   r   )r   rP  r   s      r8   test_cpu_affinity_eligible_cpusz8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpus  s    %%&:;;Z788 	1AIO..000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1#e** 	x8OOOOOs   AAAN)r  r  r  __doc__classmethodr  r  r  r  r  r  r  r  r   r  r  r  r^   rb   r8   r  r  r  s          $ $ [$: : :2 2 24 4 42 2 29 9 92 2 2
2 2 2
 J J JG G G    rb   r  c                       e Zd Zd Zd ZdS )	TestUtilsc                     t          j        dd          5 }|                     t          j                            d          d           |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nzos.readlinkzfoo (deleted)r  rJ  r  )r   r   r   r   r  readlinkr   r4  s     r8   test_readlinkzTestUtils.test_readlink  s    ZODDD 	V/88??GGG8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =A""A&)A&c                    |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   |                     t          j                            |d          d           |                     t          j                            |d          d           |                     t          j                            |dz   d	
          d	           d S )Nwtzfoo F)binaryr  Ts   fooz??rJ  )fallback)r  rG   r  r   r   r  ry  )r   r&  rR   s      r8   test_catzTestUtils.test_cat  s    ""&$ 	1GGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+//u/EEuMMM+//t/DDfMMM""6D=5"AA5	J 	J 	J 	J 	Js   AAAN)r  r  r  r  r  r^   rb   r8   r  r    s7          
J J J J Jrb   r  __main__)run_from_name)dr  
__future__r   rw   r-   r  globr   rD  rB  r  r*   r3   r   r!  r   r   r   psutil._compatr   r   r   r   psutil.testsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro  r   r   r   r    rz  r1  dirname__file__HEREr2   SIOCGIFCONFri   r<   r@   r9  EMPTY_TEMPERATURESr9   r=   rA   rZ   rl   r   r   r   r   contextmanagerr   r   ry  r   r  r8  rK  r}  r  r  r  r  r  r  r  r  r-  r^  r|  r  r  r  r  r  r  r  r  psutil.tests.runnerr  r^   rb   r8   <module>r     s3                     				 				 				                    , , , , , , % % % % % %       ' ' ' ' ' ' ' ' ' ' ' ' $ $ $ $ $ $ % % % % % % ' ' ' ' ' ' # # # # # #       - - - - - - * * * * * * ' ' ' ' ' ' # # # # # # # # # # # #       & & & & & & ) ) ) ) ) ) $ $ $ $ $ $       0 0 0 0 0 0 ! ! ! ! ! !       	 ,++++++222222444444++++++ 
wrwx0011 K"#<=== 
= 
= 
=
= 
= 
=
= 
= 
=5 5 5"K K K$F F FE E E*@ @ @7 7 7   ,   * UL))b6 b6 b6 b6 b6n b6 b6 *)b6T	 UL))U U U U U> U U *)Uz UL))3 3 3 3 3 3 3 *)3( UL))< < < < < < < *)<~ UL))    n   *)8 UL))J8 J8 J8 J8 J8^ J8 J8 *)J8Z UL))
F 
F 
F 
F 
F 
F 
F *)
F UL))
O 
O 
O 
O 
O. 
O 
O *)
O$ UL))F F F F F> F F *)FR UL))C C C C C> C C *)C& UL))*B *B *B *B *Bn *B *B *)*BZ UL))    ~   *)@ UL))<) <) <) <) <)~ <) <) *)<)~ UL))DL DL DL DL DL~ DL DL *)DLN UL)):; :; :; :; :;^ :; :; *):;D UL))r r r r r~ r r *)rt UL))[,//zN zN zN zN zN zN zN 0/ *)zNz UL))       *), UL))>6 >6 >6 >6 >6n >6 >6 *)>6B UL))4 4 4 4 4n 4 4 *)48 UL))E E E E E. E E *)EP UL))J J J J J~ J J *)Jd UL))J J J J J J J *)J" z 111111M( rb   