
    ;^h?[                       S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSKJ!r!  SSKJ"r"  SSKJ#r#  SSKJ$r$  SSKJ%r%  SSKJ&r&  \(       a  SSK'J(r(  SSK'J)r)  SSK'J*r*  SSK'J+r+  \RX                  R[                  \RX                  R]                  \/5      5      r0Sr1Sr2Sr3S r4\(       a  S!r5S" r6S# r7S$ r8S% r9S& r:S' r;S( r<S) r=S* r>\R~                  S+ 5       r@\R~                  S, 5       rA\!R                  R                  \(       + S-S.9 " S/ S0\5      5       rD\!R                  R                  \(       + S-S.9 " S1 S2\5      5       rE\!R                  R                  \(       + S-S.9 " S3 S4\5      5       rF\!R                  R                  \(       + S-S.9 " S5 S6\5      5       rG\!R                  R                  \(       + S-S.9 " S7 S8\5      5       rH\!R                  R                  \(       + S-S.9 " S9 S:\5      5       rI\!R                  R                  \(       + S-S.9 " S; S<\5      5       rJ\!R                  R                  \(       + S-S.9 " S= S>\5      5       rK\!R                  R                  \(       + S-S.9 " S? S@\5      5       rL\!R                  R                  \(       + S-S.9 " SA SB\5      5       rM\!R                  R                  \(       + S-S.9 " SC SD\5      5       rN\!R                  R                  \(       + S-S.9 " SE SF\5      5       rO\!R                  R                  \(       + S-S.9 " SG SH\5      5       rP\!R                  R                  \(       + S-S.9 " SI SJ\5      5       rQ\!R                  R                  \(       + S-S.9 " SK SL\5      5       rR\!R                  R                  \(       + S-S.9 " SM SN\5      5       rS\!R                  R                  \(       + S-S.9 " SO SP\5      5       rT\!R                  R                  \(       + S-S.9 " SQ SR\5      5       rU\!R                  R                  \(       + S-S.9\!R                  R                  \(       + SSS.9 " ST SU\5      5       5       rV\!R                  R                  \(       + S-S.9 " SV SW\5      5       rW\!R                  R                  \(       + S-S.9 " SX SY\5      5       rX\!R                  R                  \(       + S-S.9 " SZ S[\5      5       rY\!R                  R                  \(       + S-S.9 " S\ S]\5      5       rZ\!R                  R                  \(       + S-S.9 " S^ S_\5      5       r[\!R                  R                  \(       + S-S.9 " S` Sa\5      5       r\g)bzLinux specific tests.    N)mock)LINUX)AARCH64)GITHUB_ACTIONS)GLOBAL_TIMEOUT)HAS_BATTERY)HAS_CPU_FREQ)HAS_GETLOADAVG)
HAS_RLIMIT)PYPY)PYTEST_PARALLEL)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)
ThreadTask)
call_until)pytest)reload_module)retry_on_failure)safe_rmpath)sh)skip_on_not_implemented)CLOCK_TICKS)RootFsDeviceFinder)calculate_avail_vmem)open_binaryi  i'  i  i  i   c                 f   SS K n[        U S S S5      n [        R                  " [        R                  [        R                  5       n[        R
                  " UR                  UR                  5       [        [        R                  " SU 5      5      SS 5      sS S S 5        $ ! , (       d  f       g = fNr      ascii256s      )fcntlbytessocketAF_INET
SOCK_DGRAM	inet_ntoaioctlfilenoSIOCGIFADDRstructpackifnamer$   ss      I/var/www/html/env/lib/python3.13/site-packages/psutil/tests/test_linux.pyget_ipv4_addressr3   D   sv    6#2;(F	v~~v'8'8	9QKK
KVV1LM2
 
:	9	9   AB""
B0c                 f   SS K n[        U S S S5      n [        R                  " [        R                  [        R                  5       n[        R
                  " UR                  UR                  5       [        [        R                  " SU 5      5      SS 5      sS S S 5        $ ! , (       d  f       g = fr   )r$   r%   r&   r'   r(   r)   r*   r+   SIOCGIFNETMASKr-   r.   r/   s      r2   get_ipv4_netmaskr7   P   y    6#2;(F	v~~v'8'8	9QKK
NFKK,G
 
:	9	9r4   c                 f   SS K n[        U S S S5      n [        R                  " [        R                  [        R                  5       n[        R
                  " UR                  UR                  5       [        [        R                  " SU 5      5      SS 5      sS S S 5        $ ! , (       d  f       g = fr   )r$   r%   r&   r'   r(   r)   r*   r+   SIOCGIFBRDADDRr-   r.   r/   s      r2   get_ipv4_broadcastr;   \   r8   r4   c                 X   [        S5       n/ nU H/  nUR                  5       nUS   U :X  d  M  UR                  U5        M1     [        U5      S:X  a  [	        SU < 35      e S S S 5        [        [        W5      5       H  nX%   S   n[        S[        U5      S5       Vs/ s H	  ovXwS-    PM     nnSR                  U5      n	[        R                  " [        R                  U	5      n
[        R                  " [        R                  U
5      X%'   M     U$ ! , (       d  f       N= fs  snf )Nz/proc/net/if_inet6r   zcould not find interface    :)opensplitappendlen
ValueErrorrangejoinr&   	inet_ptonAF_INET6	inet_ntop)r0   f
all_fieldslinefieldsiunformattedjgroups	formattedpackeds              r2   get_ipv6_addressesrT   h   s   	"	#q
DZZ\FbzV#!!&) 
 z?a8
CDD   
$ 3z?# mA&,1!S5Eq,I
,IqE",I 	 
 HHV$	!!&//9=((&A
 $ % 
$	#
s   D3D!D'
D$c           	         SS K n[        U S S S5      n [        R                  " [        R                  [        R                  5       nUR                  UR                  5       [        [        R                  " SU 5      5      nSR                  USS  Vs/ s H  oDS S	3PM
     sn5      S S
 sS S S 5        $ s  snf ! , (       d  f       g = f)Nr   r   r    r!       r#   02xr?   r=   )r$   r%   r&   r'   r(   r*   r+   SIOCGIFHWADDRr-   r.   rF   )r0   r$   r1   infochars        r2   get_mac_addressr\   ~   s    6#2;(F	v~~v'8'8	9Q{{HHJv{{66'B
 ww42;?;4*A;?@"E	 
:	9 @	 
:	9s   AB;B6
#	B;6B;;
C	c                  <   [        SS/SS0S9n U R                  S5      nU Hj  nUR                  S5      (       d  M  UR                  5       u  p4pV[        R                  " SS5      nU" [        U5      [        U5      [        U5      5      s  $    [        S	U  35      e)
zIParse '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:
)r   rA   
startswithcollections
namedtupleintrD   )outlinesrL   _totalusedr^   nts           r2   	free_swaprp      s     fd^&)!4
5CIIdOE??6""#'::< Ad''0ABBc%j#d)SY77	 
 <SEB
CC    c                     [        SS/SS0S9n U R                  S5      nU HY  nUR                  S5      (       d  M  S UR                  5       S	S
  5       u  p4pV[        R                  " SS5      nU" X4XVU 5      s  $    [        SU  35      e)zKParse 'free' cmd and return physical memory's total, used
and free values.
r^   r_   r`   ra   rb   rd   Memc              3   8   #    U  H  n[        U5      v   M     g 7fN)ri   .0xs     r2   	<genexpr>free_physmem.<locals>.<genexpr>   s     (K9JAQ9J         ztotal used free shared outputz#can't find 'Mem' in 'free' output:
)r   rA   rf   rg   rh   rD   )rj   rk   rL   rm   rn   r^   sharedro   s           r2   free_physmemr      s     fd^&)!4
5CIIdOE??5!!(Ka9J(K%E''7B e455  ;C5A
BBrq   c                     [        SS/SS0S9nUR                  S5       H7  nUR                  5       nX;   d  M  [        UR                  S5      S   5      s  $    [	        S	U < S
35      e)Nvmstatz-sr`   ra   rb   rd    r   can't find z in 'vmstat' output)r   rA   stripri   rD   )statrj   rL   s      r2   r   r      si    
hFI#6
7C		$zz|<tzz#q)**   {4(*=>
??rq   c            
          [        SS/5      R                  5       n SU ;   a  [        R                  " S5      e[	        [        [        [        R                  " SU R                  5       S   5      5      5      $ )Nr^   z-VUNKNOWNzcan't determine free versionz\d+r=   )
r   r   r   skiptuplemapri   refindallrA   )rj   s    r2   get_free_version_infor      sX    
fd^

"
"
$CCkk899S"**VSYY[_=>??rq   c              #      ^ ^#    UU 4S jn[         m[        R                  " SSUS9 nUv   SSS5        g! , (       d  f       g= f7f)z|Mock open() builtin and forces it to return a certain content
for a given path. `pairs` is a {"path": "content", ...} dict.
c                    > U T;   aF  TU    n[        U[        5      (       a  [        R                  " U5      $ [        R                  " U5      $ T" U /UQ70 UD6$ ru   )
isinstancestrioStringIOBytesIO)nameargskwargscontent	orig_openpairss       r2   	open_mock$mock_open_content.<locals>.open_mock   sS    5=DkG'3''{{7++zz'**T3D3F33rq   builtins.openTcreateside_effectNr@   r   patch)r   r   mr   s   `  @r2   mock_open_contentr      s5     4 I	ODi	HA 
I	H	Hs   $A6	A
A Ac              #      ^ ^^#    UU U4S jn[         m[        R                  " SSUS9 nUv   SSS5        g! , (       d  f       g= f7f)zRMock open() builtin and raises `exc` if the path being opened
matches `for_path`.
c                 ,   > U T:X  a  TeT" U /UQ70 UD6$ ru    )r   r   r   excfor_pathr   s      r2   r   &mock_open_exception.<locals>.open_mock   s%    8I////rq   r   Tr   Nr   )r   r   r   r   r   s   ``  @r2   mock_open_exceptionr      s5     0
 I	ODi	HA 
I	H	Hs   %A	8	A	
AA	z
LINUX onlyreasonc                       \ rS rSrS r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r	Sr
g)	"TestSystemVirtualMemoryAgainstFree   c                 x    [        5       R                  n[        R                  " 5       R                  nX:X  d   eg ru   )r   rm   psutilvirtual_memoryself	cli_valuepsutil_values      r2   
test_total-TestSystemVirtualMemoryAgainstFree.test_total   s/     N((	,,.44(((rq   c                 (   [        5       S:  a  [        R                  " S5      e[        5       S:  a  [        R                  " S5      e[        5       R                  n[
        R                  " 5       R                  n[        X-
  5      [        :  d   eg )N   r      free version too oldr>   r   r   free version too recent)	r   r   r   r   rn   r   r   absr   r   s      r2   	test_used,TestSystemVirtualMemoryAgainstFree.test_used   sr     !"Z/++455 "i/++788 N''	,,.339+,/@@@@rq   c                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg ru   )r   r^   r   r   r   r   r   s      r2   	test_free,TestSystemVirtualMemoryAgainstFree.test_free   s:     N''	,,.339+,/@@@@rq   c                    [        5       nUR                  nUS:X  a  [        R                  " S5      e[        R
                  " 5       R                  n[        X#-
  5      [        :  d   U SU SUR                   35       eg )Nr   z%free does not support 'shared' columnr   z 
)	r   r~   r   r   r   r   r   r   output)r   r^   
free_valuer   s       r2   test_shared.TestSystemVirtualMemoryAgainstFree.test_shared  ss    ~[[
?++EFF,,.55
)*->>	:\<.DKK=9	:>rq   c                 (   [        SS/5      nUR                  S5      nSUS   ;  a  [        R                  " S5      e[	        US   R                  5       S   5      n[
        R                  " 5       R                  n[        X4-
  5      [        :  d   eg )	Nr^   r_   rd   	availabler   z(free does not support 'available' columnr|   r=   )
r   rA   r   r   ri   r   r   r   r   r   )r   rj   rk   r   r   s        r2   test_available1TestSystemVirtualMemoryAgainstFree.test_available  s     &$ 		$eAh&++HIIq)"-.
,,.88:,-0AAAArq   r   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   __static_attributes__r   rq   r2   r   r      si    )
 A A" A A
 : : 	B 	Brq   r   c                       \ rS rSrS r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r	\" 5       S 5       r
Srg	)
$TestSystemVirtualMemoryAgainstVmstati  c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nztotal memory   )r   r   r   rm   r   r   r   vmstat_valuer   s      r2   r   /TestSystemVirtualMemoryAgainstVmstat.test_total  s<    n-4,,.44<./2CCCCrq   c                    [        5       S:  a  [        R                  " S5      e[        5       S:  a  [        R                  " S5      e[        S5      S-  n[        R
                  " 5       R                  n[        X-
  5      [        :  d   eg )Nr   r   r   r   zused memoryr   )	r   r   r   r   r   r   rn   r   r   r   s      r2   r   .TestSystemVirtualMemoryAgainstVmstat.test_used#  st     !"Z/++455 "i/++788m,t3,,.33<./2CCCCrq   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzfree memoryr   )r   r   r   r^   r   r   r   s      r2   r   .TestSystemVirtualMemoryAgainstVmstat.test_free5  s<    m,t3,,.33<./2CCCCrq   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzbuffer memoryr   )r   r   r   buffersr   r   r   s      r2   test_buffers1TestSystemVirtualMemoryAgainstVmstat.test_buffers;  s<    o.5,,.66<./2CCCCrq   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzactive memoryr   )r   r   r   activer   r   r   s      r2   test_active0TestSystemVirtualMemoryAgainstVmstat.test_activeA  s<    o.5,,.55<./2CCCCrq   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzinactive memoryr   )r   r   r   inactiver   r   r   s      r2   test_inactive2TestSystemVirtualMemoryAgainstVmstat.test_inactiveG  s=    /047,,.77<./2CCCCrq   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r2   r   r     s    D
 D D" D D
 D D
 D D
 D Drq   r   c                   L    \ rS rSrS r\" 5       S 5       rS rS rS r	S r
Srg	)
TestSystemVirtualMemoryMocksiN  c                    [         R                  " S5      R                  5       n[        SU05       n[        R
                  " SS9 n[        R                  " S5        [        R                  " 5       nUR                  (       d   e[        U5      S:X  d   eUS   nS[        UR                  5      ;   d   eS	[        UR                  5      ;   d   eS
[        UR                  5      ;   d   eS[        UR                  5      ;   d   eS[        UR                  5      ;   d   eS[        UR                  5      ;   d   eS[        UR                  5      ;   d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                   S:X  d   eUR"                  S:X  d   eUR$                  S:X  d   eUR&                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NaL              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
            /proc/meminfoTrecordalwaysr|   r   z#memory stats couldn't be determinedcachedr~   r   r   r   r   )textwrapdedentencoder   warningscatch_warningssimplefilterr   r   calledrC   r   messager   r   r   r~   r   r   slabr   r   r   wsretws         r2   test_warnings_on_misses4TestSystemVirtualMemoryMocks.test_warnings_on_missesP  s    // 	# 	  	 9:a((5%%h/++-xxx2w!|#|qE<AIINNN3qyy>1113qyy>1113qyy>111!S^333 C		N222"c!))n444zzQ&zzQ&||q(((zzQ&{{a'''}})))xx1}$}' 6 ;:55 ;:s$   G:FG)G:)
G7	3G::
Hc                    0 n[        S5       nU H)  nUR                  5       n[        US   5      S-  XS   '   M+     S S S 5        [        U5      nSU;   a!  US   n[	        XV-
  5      U-  S-  nUS:  d   eg g ! , (       d  f       NA= f)Nr   r|   r   r   s   MemAvailable:d   r   )r   rA   ri   r   r   )r   memsrJ   rL   rM   abdiff_percents           r2   test_avail_old_percent3TestSystemVirtualMemoryMocks.test_avail_old_percentt  s     )Q"%fQi.4"7AY  *
 !&t#%&Aqu:>C/L"$$$ $ *)s   0A99
Bc                    [         R                  " S5      R                  5       n[        SU05       n[        R
                  " SS9 n[        R                  " 5       nS S S 5        UR                  (       d   eWR                  S:X  d   eWS   nS[        UR                  5      ;   d   e S S S 5        g ! , (       d  f       N]= f! , (       d  f       g = f)Na              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
            r   Tr   l     " r   ,inactive memory stats couldn't be determinedr   r   r   r   r   r   r   r   r   r   r   r   r   s         r2    test_avail_old_comes_from_kernel=TestSystemVirtualMemoryMocks.test_avail_old_comes_from_kernel  s     // #   	 9:a((5++- 688O8==N2221AAS		F    ;:55 ;:$   CB4AC4
C	>C
Cc                    [         R                  " S5      R                  5       n[        SU05       n[        R
                  " SS9 n[        R                  " 5       nS S S 5        UR                  (       d   eWR                  S:X  d   eWS   nS[        UR                  5      ;   d   e S S S 5        g ! , (       d  f       N]= f! , (       d  f       g = f)Nat              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
            r   Tr       `LG r   r  r  r   s         r2   test_avail_old_missing_fields:TestSystemVirtualMemoryMocks.test_avail_old_missing_fields  s     // 
# 
  	 9:a((5++- 688O8==$CCCC1AAS		F    ;:55 ;:r  c                    [         R                  " S5      R                  5       n[        SU05         [	        S[
        5         [        R                  " SS9 n[        R                  " 5       nUR                  S:X  d   eUS   nS[        UR                  5      ;   d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)	Na              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
            r   z/proc/zoneinfoTr   r  r   r  )r   r   r   r   r   FileNotFoundErrorr   r   r   r   r   r   r   )r   r   r   r   r   s        r2   test_avail_old_missing_zoneinfo<TestSystemVirtualMemoryMocks.test_avail_old_missing_zoneinfo  s     // #   	 9:$%57HI,,D9R //1C==,KKKK1AFqyy>** : J ;:99 JI ;:s<   CCAB:!C)C:
CC
C	C
C*c                 0   [         R                  " S5      R                  5       n[        SU05       n[        R
                  " 5       nUR                  (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   eUR                  S
:X  d   eUR                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Na              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   i  i      i p  i T  i   i    i X     )r   r   r   r   r   r   r   rm   r^   r   r   r~   r   r   r   r   )r   r   r   mems       r2   test_virtual_memory_mocked7TestSystemVirtualMemoryMocks.test_virtual_memory_mocked  s    // 1# 1b c 	d 9:a'')C88O899
***88x''';;(***::000::***::)))<<8+++88y(((==H,,, ;::s   CD
Dr   N)r   r   r   r   r  r   r	  r  r  r  r  r   r   rq   r2   r   r   N  s4    "%H % %828@-rq   r   c                   v    \ rS rSr\S 5       rS r\" 5       S 5       r\" 5       S 5       r	S r
S rS rS	 rS
rg)TestSystemSwapMemoryi  c                      [        S5       n U R                  5       nSSS5        SW;   =(       a    SU;   $ ! , (       d  f       N= f)z3Return True if /proc/meminfo provides swap metrics.r   Nz
SwapTotal:z	SwapFree:)r@   read)rJ   datas     r2   meminfo_has_swap_info*TestSystemSwapMemory.meminfo_has_swap_info  s<     /"a668D #t#;t(;; #"s	   6
Ac                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg ru   )rp   rm   r   swap_memoryr   r   r   r   r   s      r2   r   TestSystemSwapMemory.test_total&  s:    [&&
))+11:,-0AAAArq   c                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg ru   )rp   rn   r   r'  r   r   r(  s      r2   r   TestSystemSwapMemory.test_used+  :    [%%
))+00:,-0AAAArq   c                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg ru   )rp   r^   r   r'  r   r   r(  s      r2   r   TestSystemSwapMemory.test_free1  r,  rq   c                    [         R                  " SSS9 n[        R                  " SS9 n[        R                  " S5        [
        R                  " 5       nUR                  (       d   e[        U5      S:X  d   eUS   nS[        UR                  5      ;   d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Npsutil._common.openTr   r   r   r|   r   z9'sin' and 'sout' swap memory stats couldn't be determined)r   r   r   r   r   r   r'  r   rC   r   r   sinsoutr   r   r   r   r   s        r2   test_missing_sin_sout*TestSystemSwapMemory.test_missing_sin_sout7  s    ZZ-d;q((5%%h/((*xxx2w!|#|qEO199~&& ww!|#|xx1}$} 6 <;55 <;s#   C"BC C"
C	C""
C0c                    [        S[        5       n[        R                  " SS9 n[        R                  " S5        [
        R                  " 5       nUR                  (       d   e[        U5      S:X  d   eUS   nS[        UR                  5      ;   d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz/proc/vmstatTr   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   rC   r   r   r2  r3  r4  s        r2   test_no_vmstat_mocked*TestSystemSwapMemory.test_no_vmstat_mockedF  s     1BCq((5%%h/((*xxx2w!|#|qE6199~&& ww!|#|xx1}$} 6 DC55 DCs#   CBC;C
C	C
C+c                    U R                  5       (       d  [        R                  " S5      e[        R                  " S5       n[
        R                  " 5       nS S S 5        WR                  (       a   eSS KJ	n  UR                  5       u        pEpgXW-  nXg-  nWR                  U:X  d   e[        UR                  U-
  5      [        :  d   eg ! , (       d  f       Nz= f)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor   )r$  r   r   r   r   r   r'  r   psutil._psutil_linux_psutil_linuxlinux_sysinform   r   r^   r   )r   r   swapcextrl   rm   r^   unit_multipliers           r2   test_meminfo_against_sysinfo1TestSystemSwapMemory.test_meminfo_against_sysinfoW  s     ))++++ABBZZ<=%%'D >88|+373E3E3G01a4 zzU"""499t#$'8888 >=s   C
Cc                     [        SS05       n[        R                  " 5         UR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nr   rq   )r   r   r'  r   r   r   s     r2   #test_emulate_meminfo_has_no_metrics8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsh  s6     56! 88O8 766s   )A
Ar   N)r   r   r   r   staticmethodr$  r   r   r   r   r5  r8  rA  rE  r   r   rq   r2   r   r     s`    < <B
 B B
 B B
%%"9"rq   r   c                       \ rS rSrS rSrg)TestSystemCPUTimesiv  c                 |   [         R                  " 5       R                  n[        R                  " S[
        R                  " 5       S   5      S   n[        [        [        UR                  S5      5      5      nUS:  a	  SU;   d   eOSU;  d   eUS:  a	  SU;   d   eOSU;  d   eUS	:  a	  S
U;   d   eg S
U;  d   eg )Nz\d+\.\d+\.\d+   r   .)rK        steal)rK  rM  r#   guest)r   rK  r   
guest_nice)r   	cpu_times_fieldsr   r   osunamer   r   ri   rA   )r   rM   
kernel_verkernel_ver_infos       r2   test_fieldsTestSystemCPUTimes.test_fieldsx  s    !!#++ZZ 0"((*Q-@C
C)9)9#)> ?@j(f$$$&(((j(f$$$&(((i'6)))v---rq   r   N)r   r   r   r   rX  r   r   rq   r2   rI  rI  v  s    .rq   rI  c                      \ rS rSr\R
                  R                  \R                  R                  S5      (       + SS9S 5       r
\R
                  R                  \R                  R                  S5      (       + SS9S 5       r\R
                  R                  \R                  " S	5      (       + S
S9S 5       r\R
                  R                  \R                  " S5      (       + SS9S 5       rS rSrg)TestSystemCPUCountLogicali  /sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existr   c                     [        S5       nUR                  5       R                  5       nS S S 5        S[        W5      ;   a<  [	        UR                  S5      S   5      S-   n[        R                  " 5       U:X  d   eg g ! , (       d  f       NZ= f)Nr\  -r|   )r@   r"  r   r   ri   rA   r   	cpu_count)r   rJ   values      r2   test_against_sysdev_cpu_online8TestSystemCPUCountLogical.test_against_sysdev_cpu_online  st    
 23qFFHNN$E 4#e*C(+,q0E##%...  43s   A??
B/sys/devices/system/cpuz&/sys/devices/system/cpu does not existc           	          [         R                  " S5      n[        U Vs/ s H  n[        R                  " SU5      c  M  UPM!     sn5      n[
        R                  " 5       U:X  d   eg s  snf )Nrc  zcpu\d+$)rT  listdirrC   r   searchr   r_  )r   lsrx   counts       r2   test_against_sysdev_cpu_num5TestSystemCPUCountLogical.test_against_sysdev_cpu_num  sV    
 ZZ12K1bii
A&>QKL!U*** Ls   A) A)nprocznproc utility not availablec                 `    [        [        S5      5      n[        R                  " SS9U:X  d   eg )Nznproc --allTlogical)ri   r   r   r_  )r   nums     r2   test_against_nproc,TestSystemCPUCountLogical.test_against_nproc  s,     "]#$-444rq   lscpulscpu utility not availablec                     [        S5      n[        UR                  S5       Vs/ s H  o"R                  S5      (       a  M  UPM     sn5      n[        R
                  " SS9U:X  d   eg s  snf )Nlscpu -prd   #Trm  )r   rC   rA   rf   r   r_  )r   rj   rx   ro  s       r2   test_against_lscpu,TestSystemCPUCountLogical.test_against_lscpu  sV     nciioGo\\#5F1oGH-444 Hs   A)A)c                    SS K nUR                  R                  5       n[        R                  " S[
        S9 nUR                  R                  5       U:X  d   eUR                  (       d   e[        R                  " SSS9 nUR                  R                  5       b   eUR                  S:X  d   eUR                  S   S   S:X  d   e S S S 5        [        S	S
5       nUR                  5       nS S S 5        [        R                  " W5      n[        R                  " SUSS9 nUR                  R                  5       U:X  d   e S S S 5        [        S	S05       nUR                  R                  5       U:X  d   eUR                  (       d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr   zpsutil._pslinux.os.sysconfr   r0  Tr1  rK  
/proc/stat/proc/cpuinforbreturn_valuer   rq   )psutil._pslinux_pslinuxcpu_count_logicalr   r   rD   r   
call_count	call_argsr@   r"  r   r   r   )r   r   originalr   rJ   cpuinfo_data	fake_files          r2   test_emulate_fallbacks0TestSystemCPUCountLogical.test_emulate_fallbacks  s   ??446 ZZ(j
??446(BBB88O8 1$?188:BBB||q((({{1~a(L888	 @ ot, vvx -

<0I%Id88:hFFF #OS#9:a88:hFFFxxx ;5
 
 @? -,  ;:5
 
sm   A	G$AF 
G$F1/4G$#!GG$4GG$ 
F.	*G$1
F?	;G$
G	G$
G!	G$$
G2r   N)r   r   r   r   r   markskipifrT  pathexistsra  ri  shutilwhichrp  rw  r  r   r   rq   r2   r[  r[    s    [[GGNN;<<>  /	/ [[GGNN4557  +	+
 [[LL!!*G  55 [[LL!!*G  55
" rq   r[  c                       \ rS rSr\R
                  R                  \R                  " S5      (       + SS9S 5       r	\R
                  R                  \
R                  " 5       S;  SS9S 5       rS	 rS
rg)TestSystemCPUCountCoresi  rr  rs  r   c                    [        S5      n[        5       nUR                  S5       H@  nUR                  S5      (       a  M  UR                  S5      nUR	                  US   5        MB     [
        R                  " SS9[        U5      :X  d   eg )Nru  rd   rv  ,r|   Frm  )r   setrA   rf   addr   r_  rC   )r   rj   core_idsrL   rM   s        r2   rw  *TestSystemCPUCountCores.test_against_lscpu  sq     n5IIdOD??3''CVAY' $ .#h-???rq   >   i686x86_64zx86_64/i686 onlyc                    [         R                  R                  5       n[        R                  " S/ S9 n[         R                  R                  5       nUR
                  (       d   e S S S 5        Ub	  UW:X  d   eg g ! , (       d  f       N= f)N	glob.globr  )r   r  cpu_count_coresr   r   r   )r   meth_1r   meth_2s       r2   test_method_2%TestSystemCPUCountCores.test_method_2  sl     002ZZ"5__446F88O8 6 V###  65s   2A<<
B
c                 P   [         R                  " S/ S9 n[         R                  " SSS9 n[        R                  R	                  5       b   e S S S 5        S S S 5        WR
                  (       d   eWR
                  (       d   eg ! , (       d  f       N== f! , (       d  f       NF= f)Nr  r  r0  Tr1  )r   r   r   r  r  r   )r   m1m2s      r2   test_emulate_none)TestSystemCPUCountCores.test_emulate_none  st    ZZ"51$?2668@@@ @ 6 yyyyyy @? 65s"   B"BB
B	B
B%r   N)r   r   r   r   r   r  r  r  r  rw  platformmachiner  r  r   r   rq   r2   r  r    s~    [[LL!!*G  @@ [["44=O  $$rq   r  c                      \ rS rSr\R
                  R                  \(       + SS9\R
                  R                  \SS9S 5       5       r	\R
                  R                  \(       + SS9\R
                  R                  \SS9S 5       5       r
\R
                  R                  \(       + SS9S 5       r\R
                  R                  \(       + SS9S	 5       r\R
                  R                  \(       + SS9S
 5       rSrg)TestSystemCPUFrequencyi  not supportedr   z(aarch64 does not always expose frequencyc                    ^ U4S jn[         R                  R                  m[        R                  " SUSS9   [
        R                  " 5       (       d   e S S S 5        g ! , (       d  f       g = f)Nc                 B   > U R                  S5      (       a  gT" U 5      $ )N&/sys/devices/system/cpu/cpufreq/policyFrf   )r  orig_existss    r2   path_exists_mockMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mock  s!    GHH"4((rq   os.path.existsT)r   r   )rT  r  r  r   r   r   cpu_freq)r   r  r  s     @r2   test_emulate_use_second_file3TestSystemCPUFrequency.test_emulate_use_second_file  sP    	) ggnnZZ*:4
 ??$$$$
 
 
s   A
A-z,aarch64 does not report mhz in /proc/cpuinfoc                   ^ U4S jn[         R                  R                  m [        R                  " SUS9   [        [        R                  5        [        R                  " 5       nU(       d   U5       eUR                  S:X  d   eUR                  S:X  d   e[        R                  " SS9 H'  nUR                  S:X  d   eUR                  S:X  a  M'   e   S S S 5        [        [        R                  5        [        [        5        g ! , (       d  f       N7= f! [        [        R                  5        [        [        5        f = f)Nc                 B   > U R                  S5      (       a  gT" U 5      $ )Nz/sys/devices/system/cpu/Fr  )r  os_path_existss    r2   r  ITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mock  s!    9::%d++rq   r  rz          Tpercpu)rT  r  r  r   r   r   r   r  r  maxmin)r   r  r   freqr  s       @r2   test_emulate_use_cpuinfo/TestSystemCPUFrequency.test_emulate_use_cpuinfo	  s    	, 	",:JKfoo.oo'Csww#~%~ww#~%~"OO48D88s?*?88s?*? 9 L &//*&! LK &//*&!s)   D BD	D	D 	
DD *Ec                   ^ U4S jn[         m[        R                  " SUS9   [        R                  " SSS9   [        R                  " 5       nUR
                  S:X  d   eUR                  S:w  a  UR                  S	:X  d   eUR                  S:w  a  UR                  S
:X  d   eS S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                   > U R                  S5      (       a,  U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a,  U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a,  U R                  S5      (       a  [        R                  " S5      $ U S:X  a  [        R                  " S	5      $ T" U /UQ70 UD6$ )
N/scaling_cur_freqr     500000/scaling_min_freq   600000/scaling_max_freqs   700000r|  s   cpu MHz     : 500endswithrf   r   r   r   r   r   r   s      r2   r   ;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mock'  s    }}011doo87 7 zz),,23389 9 zz),,23389 9 zz),,(zz"677 7777rq   r   rz  r  Tr       @@r       @g     @r@   r   r   r   r  currentr  r  r   r   r  r   s      @r2   test_emulate_data(TestSystemCPUFrequency.test_emulate_data%  s    	8$ 	ZZY?,4@(||u,,, 88s?88u,,,88s?88u,,, A @?@@ @?s#   CA,B6%C6
C	 C
Cc                   ^ U4S jn[         m[        R                  " SUS9   [        R                  " SSS9   [        R                  " SSS9   [        R                  " SS	9nUS
   R
                  S:X  d   eUS
   R                  S:w  a  US
   R                  S:X  d   eUS
   R                  S:w  a  US
   R                  S:X  d   eUS   R
                  S:X  d   eUS   R                  S:w  a  US   R                  S:X  d   eUS   R                  S:w  a  US   R                  S:X  d   eS S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nc                 p  > U nUR                  S5      (       a,  UR                  S5      (       a  [        R                  " S5      $ UR                  S5      (       a,  UR                  S5      (       a  [        R                  " S5      $ UR                  S5      (       a,  UR                  S5      (       a  [        R                  " S5      $ UR                  S5      (       a,  UR                  S5      (       a  [        R                  " S	5      $ UR                  S5      (       a,  UR                  S5      (       a  [        R                  " S
5      $ UR                  S5      (       a,  UR                  S5      (       a  [        R                  " S5      $ U S:X  a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nr  z'/sys/devices/system/cpu/cpufreq/policy0s   100000r     200000r  s   300000z'/sys/devices/system/cpu/cpufreq/policy1s   400000r  r  r|  s#   cpu MHz     : 100
cpu MHz     : 400r  )r   r   r   nr   s       r2   r   @TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mockG  sm   Azz-..1<<94 4 zz),,/00Q\\96 6 zz),,/00Q\\96 6 zz),,/00Q\\96 6 zz),,/00Q\\96 6 zz),,/00Q\\96 6 zz),,(zz"IJJ 7777rq   r   rz  r  Tr  !psutil._pslinux.cpu_count_logicalrK  r  r         Y@r  g      i@g     r@r|   g      y@r  r  r  r  s      @r2   test_emulate_multi_cpu-TestSystemCPUFrequency.test_emulate_multi_cpuE  sD   	8> 	ZZY?,4@ZZ7a "??$7D7??e333Aw{{c)#Aw{{e333Aw{{c)#Aw{{e3337??e333Aw{{c)#Aw{{e333Aw{{c)#Aw{{e333 A @?  A@ @?s;   E)ECE.E6E)
EE
E&	"E))
E7c                   ^ U4S jn[         m[        R                  " SUS9   [        R                  " SSS9   [        R                  " SSS9   [        R                  " 5       nUR
                  S	:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)
Nc                    > U R                  S5      (       a  [        eU R                  S5      (       a  [        R                  " S5      $ U S:X  a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nr  z/cpuinfo_cur_freqr  r|  s   cpu MHz     : 200)r  r  r   r   r  s      r2   r   OTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mock{  se    }}011''}}011zz),,(zz"677 7777rq   r   rz  r  Tr  r  r|      )r@   r   r   r   r  r  r  s      @r2   %test_emulate_no_scaling_cur_freq_file<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_filex  s    	8 	ZZY?,4@ZZ7a "??,D<<3...	 A @?  A@ @?s:   B3B"(B8B" B3
BB""
B0	,B33
Cr   N)r   r   r   r   r   r  r  r	   r   r  r  r  r  r  r   r   rq   r2   r  r    s!   [[L(A[[B  % B% [[L(A[[F  " B"0 [[L(A- B-> [[L(A04 B04d [[L(A/ B/rq   r  c                       \ rS rSrS rSrg)TestSystemCPUStatsi  c                 ~    [        S5      n[        R                  " 5       R                  n[	        X-
  5      S:  d   eg )N
interruptsi  )r   r   	cpu_statsr  r   r   s      r2   test_interrupts"TestSystemCPUStats.test_interrupts  s6    l+'')44<./#555rq   r   N)r   r   r   r   r  r   r   rq   r2   r  r    s    6rq   r  c                   ^    \ rS rSr\R
                  R                  \(       + SS9S 5       rSr	g)TestLoadAvgi  r  r   c                    [         R                  " 5       n[        S5       nUR                  5       R	                  5       nS S S 5        [        [        WS   5      US   -
  5      S:  d   e[        [        US   5      US   -
  5      S:  d   e[        [        US   5      US   -
  5      S:  d   eg ! , (       d  f       Nx= f)Nz/proc/loadavgr   r|   rK  )r   
getloadavgr@   r"  rA   r   float)r   r   rJ   
proc_values       r2   test_getloadavgTestLoadAvg.test_getloadavg  s    ((*/"a)J # 5A',q/9:Q>>>5A',q/9:Q>>>5A',q/9:Q>>> #"s   B22
C r   N)
r   r   r   r   r   r  r  r
   r  r   r   rq   r2   r  r    s,    [[N*?C? D?rq   r  c                       \ rS rSrS rSrg)TestSystemNetIfAddrsi  c                    [         R                  " 5       R                  5        GH,  u  pU GH  nUR                  [         R                  :X  a  UR
                  [        U5      :X  d   eM?  UR                  [        R                  :X  as  UR
                  [        U5      :X  d   eUR                  [        U5      :X  d   eUR                  b  UR                  [        U5      :X  d   eM  [        U5      S:X  d   eM  UR                  [        R                  :X  d  M  UR
                  R                  S5      S   nU[!        U5      ;   a  GM    e   GM/     g )Nz0.0.0.0%r   )r   net_if_addrsitemsfamilyAF_LINKaddressr\   r&   r'   r3   netmaskr7   	broadcastr;   rH   rA   rT   )r   r   addrsaddrr  s        r2   test_ipsTestSystemNetIfAddrs.test_ips  s   !..0668KD;;&..0<<?4+@@@@[[FNN2<<+;D+AAAA<<+;D+AAAA~~1#~~1CD1IIII1$79DDD[[FOO3 #ll005a8G"&8&>>>>%  9rq   r   N)r   r   r   r   r   r   r   rq   r2   r  r    s    ?rq   r  c                       \ rS rSr\R
                  R                  \R                  " S5      (       + SS9S 5       r	S r
\R
                  R                  \R                  " S5      (       + SS9S 5       rSrg	)
TestSystemNetIfStatsi  ifconfigifconfig utility not availabler   c                 6   [         R                  " 5       R                  5        Ha  u  p [        SU 35      nUR                  SU;   :X  d   U5       eUR
                  [        [        R                  " SU5      S   5      :X  d   eMc     g ! [         a     Ms  f = f)N	ifconfig RUNNINGz(?i)MTU[: ](\d+)r   )
r   net_if_statsr  r   isupmturi   r   r   RuntimeError)r   r   statsrj   s       r2   test_against_ifconfig*TestSystemNetIfStats.test_against_ifconfig  s     "..0668KD9TF+, zzi3&67<<7yyCJJ2C8;%    9   s   B


BBc                     [         R                  " 5       R                  5        HU  u  p[        SU S35       nUR                  [        UR                  5       R                  5       5      :X  d   e S S S 5        MW     g ! , (       d  f       Mi  = f)Nz/sys/class/net/z/mtu)r   r	  r  r@   r  ri   r"  r   )r   r   r  rJ   s       r2   test_mtuTestSystemNetIfStats.test_mtu  sf    !..0668KDvT23qyyC(8$9999 43 933s   8A>>
B	c                 l   Sn[         R                  " 5       R                  5        GH`  u  p# [        SU 35      n[        R
                  " SU5      nU(       a  [        UR                  5       5      S:  ai  US-  n[        UR                  S5      R                  5       R                  S5      5      n[        UR                  R                  S5      5      nXg:X  d   eM  [        R
                  " SU5      nU(       a  [        UR                  5       5      S:  ai  US-  n[        UR                  S5      R                  5       R                  5       5      n[        UR                  R                  S5      5      nXg:X  d   eGM]  GM`  GMc     U(       d  U R                  S	5      eg ! [         a     GM  f = f)
Nr   r  zflags=(\d+)?<(.*?)>rK  r|   r  z(.*)  MTU:(\d+)  Metric:(\d+)r   zno matches were found)r   r	  r  r   r   rf  rC   rQ   r  grouplowerrA   flagsr  fail)r   matches_foundr   r  rj   matchifconfig_flagspsutil_flagss           r2   
test_flagsTestSystemNetIfStats.test_flags  sj    !..0668KD>9TF+, 		"8#>S0A5!Q&M%(Q)=)=)?)E)Ec)J%KN#&u{{'8'8'=#>L)999 II&FLEU\\^!4!9%*),U[[^-A-A-C-I-I-K)L'*5;;+<+<S+A'B-===	 ":u! 9, ))344 '   s   F$$
F32F3r   N)r   r   r   r   r   r  r  r  r  r  r  r  r   r   rq   r2   r  r    sy    [[LL$$-M  

:
 [[LL$$-M  55rq   r  c                       \ rS rSr\R
                  R                  \R                  " S5      (       + SS9\	" 5       S 5       5       r
Srg)TestSystemNetIOCountersi  r  r  r   c                    S n[         R                  " SSS9nUR                  5        GH  u  p4 U" U5      n[	        UR
                  US   -
  5      S:  d   e[	        UR                  US   -
  5      S:  d   e[	        UR                  US   -
  5      S	:  d   e[	        UR                  US
   -
  5      S	:  d   e[	        UR                  US   -
  5      S:  d   e[	        UR                  US   -
  5      S:  d   e[	        UR                  US   -
  5      S:  d   e[	        UR                  US   -
  5      S:  a  GM   e   g ! [         a     GM+  f = f)Nc                    0 n[        SU  35      n[        [        R                  " SU5      S   5      US'   [        [        R                  " SU5      S   5      US'   [        [        R                  " SU5      S   5      US'   [        [        R                  " SU5      S	   5      US
'   [        [        R                  " SU5      S   5      US'   [        [        R                  " SU5      S	   5      US'   [        [        R                  " SU5      S   5      US'   [        [        R                  " SU5      S   5      US'   U$ )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   ri   r   r   )nicr   rj   s      r2   r  ?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfig  s-   Cy&'C"%

137:#C #&

137:#C rzz*<cB1EFCL

+=s CA FGCM

+> DQ GHCM ,?!Ea!HIC	N #

A3GJ!C !$

A3GJ!C Jrq   TF)pernicnowrapr(  i (  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   r  ifconfig_rets         r2   r  -TestSystemNetIOCounters.test_against_ifconfig  so   
	* $$D?99;KD'~ E$$|L'AABYNN E$$|L'AABYNN E&&n)EEFMM E&&n)EEFMMu{{\'%::;b@@@u||l8&<<=BBBu||l8&<<=BBBu}}|I'>>?"DDD) '   s   E
EEr   N)r   r   r   r   r   r  r  r  r  r   r  r   r   rq   r2   r  r    sI    [[LL$$-M   +E +Erq   r  c                   p    \ rS rSr\R
                  " S\S9\R
                  " SSS9S 5       5       rS rS	r	g
)TestSystemNetConnectionsiD  z psutil._pslinux.socket.inet_ntoprz  zpsutil._pslinux.supports_ipv6Fr  c                     [         R                   " [         R                  [         R                  5      nU R                  UR                  5        UR                  S5        [        R                  " SS9  g ! [         a     N!f = f)N)z::1r   inet6kind)	r&   rH   SOCK_STREAM
addCleanupclosebindOSErrorr   net_connections)r   supports_ipv6rI   r1   s       r2   test_emulate_ipv6_unsupported6TestSystemNetConnections.test_emulate_ipv6_unsupportedF  sa    	foov/A/ABAOOAGG$FF: 	G,  		s   AA6 6
BBc                     [         R                  " S5      n[        SU05       n[        R                  " SS9  UR
                  (       d   e S S S 5        g ! , (       d  f       g = f)Na              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
            z/proc/net/unixunixr7  )r   r   r   r   r>  r   )r   r   r   s      r2   test_emulate_unix*TestSystemNetConnections.test_emulate_unixR  sL    // #   0':;q""/88O8 <;;s   (A
A$r   N)
r   r   r   r   r   r   rD   r@  rD  r   r   rq   r2   r4  r4  D  s;    	ZZ2
K	ZZ/eD- E L-	rq   r4  c                       \ rS rSr\R
                  R                  \" \S5      (       + SS9\	" 5       S 5       5       r
S rS rSrg	)
TestSystemDiskPartitionsic  statvfszos.statvfs() not availabler   c                 V   S n[         R                  " SS9 H  n[         R                  " UR                  5      nU" UR                  5      u  pEpgUR                  U:X  d   e[        UR                  U-
  5      [        :  d   e[        UR                  U-
  5      [        :  a  M   e   g )Nc                 &   [        SU  S35      R                  5       nUR                  S5      nUR                  S5        UR                  S5      nUR                  5       S S u  pEpgUS:X  a  Sn[	        U5      [	        U5      [	        U5      pvnXEXg4$ )Nzdf -P -B 1 ""rd   r   r>   nonerV   )r   r   rA   popri   )r  rj   rk   rL   devrm   rn   r^   s           r2   df4TestSystemDiskPartitions.test_against_df.<locals>.dfl  s    |D6+,224CIIdOEIIaL99Q<D%)ZZ\"1%5"Cf} #E
CIs4yEt))rq   F)all)	r   disk_partitions
disk_usage
mountpointrm   r   r^   r   rn   )r   rO  partusagerl   rm   rn   r^   s           r2   test_against_df(TestSystemDiskPartitions.test_against_dfe  s    		* **u5D%%doo6E#%doo#6 Ad;;%'''uzzD(),@@@@uzzD(),@@@@ 6rq   c                 v   [        S5       nUR                  5       nS S S 5        SW;   a.  [        R                  " 5        H  nUR                  S:X  d  M    g    [
        R                  " S5      n[        R                  " SUSS9 n[        R                  " SS/S	9 n[        R                  " 5       nUR                  (       d   eUR                  (       d   eU(       d   eUS
   R                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nz/proc/filesystemszfsz
nodev	zfs
r0  Tr~  $psutil._pslinux.cext.disk_partitions)z	/dev/sdb3/rZ  rwr  r   )
r@   r"  r   rR  fstyper   r   r   r   r   )r   rJ   r#  rU  r  r  r  r   s           r2   test_zfs_fs$TestSystemDiskPartitions.test_zfs_fs~  s    %&!668D 'D=..0;;%' 1
 KK/	ZZ!	$
6=> ,,.yy yyy y
s1v}}---
 
 '& 
 
s0   DD*AD7D*
D
D'	#D**
D8c                 T    [         R                  " SSS9 n[        R                  " [        5         [
        R                  " 5         S S S 5        UR                  (       d   e S S S 5        S[
        l        g ! , (       d  f       N6= f! , (       d  f       N+= f! S[
        l        f = f)Nzos.path.realpathz/non/existentr  /proc)	r   r   r   raisesr  r   rR  r   PROCFS_PATHrD  s     r2   test_emulate_realpath_fail3TestSystemDiskPartitions.test_emulate_realpath_fail  sr    	)"]]#45**, 6xxx ")F	 65  ")Fs9   B B	A8B	$B 8
B	B		
BB B'r   N)r   r   r   r   r   r  r  hasattrrT  r   rW  r_  re  r   r   rq   r2   rG  rG  c  sQ    [[B	""+G   A A*.0
)rq   rG  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSystemDiskIoCountersi  c                 >   Sn[        SU05         [        R                  " SSS9   [        R                  " SS9nUR
                  S:X  d   eUR                  S	:X  d   eUR                  S
[        -  :X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S[        -  :X  d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12/proc/diskstats!psutil._pslinux.is_storage_deviceTr  Fr-  r|   rK  r   r>   r}   rM        r.  r   r   r   r   disk_io_counters
read_countread_merged_count
read_bytesSECTOR_SIZE	read_timewrite_countwrite_merged_countwrite_bytes
write_time	busy_timer   r   r   s      r2   test_emulate_kernel_2_40TestSystemDiskIoCounters.test_emulate_kernel_2_4  s
    @ 17;<3$ --U;~~***,,111~~[888}})))!+++--222!k/999~~***}}*** =<  =<#   DCC=,D=
D	D
Dc                 >   Sn[        SU05         [        R                  " SSS9   [        R                  " SS9nUR
                  S:X  d   eUR                  S	:X  d   eUR                  S
[        -  :X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S[        -  :X  d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11rk  rl  Tr  Frm  r|   rK  r   r>   r}   rM  rn  ro  r.  rp  r|  s      r2   test_emulate_kernel_2_6_full5TestSystemDiskIoCounters.test_emulate_kernel_2_6_full  s	    < 17;<3$ --U;~~***,,111~~[888}})))!+++--222!k/999~~***}}*** =<  =<r  c                 :   [        SS05         [        R                  " SSS9   [        R                  " SS9nUR
                  S:X  d   eUR                  S	[        -  :X  d   eUR                  S
:X  d   eUR                  S[        -  :X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nrk  z   3    1   hda 1 2 3 4rl  Tr  Frm  r|   rK  r   r>   r   )r   r   r   r   rq  rr  rt  ru  rw  ry  rs  rv  rx  rz  r{  )r   r   s     r2   test_emulate_kernel_2_6_limited8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limited  s     13LMN3$ --U;~~***~~[888!+++!k/999,,111}})))--222~~***}}))) ON  ONs#   DCC;*D;
D		D
Dc                    [         R                  " S5      n[        SU05         [        R                  " SSS9   [
        R                  " SSS9n[        U5      S:X  d   eUS	   R                  S
:X  d   eUS   R                  S
:X  d   eUS	   R                  S:X  d   eUS   R                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nx            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
            rk  rl  Fr  Tperdiskr-  rK  nvme0n1r|   	nvme0n1p1r}   )
r   r   r   r   r   r   rq  rC   rr  rw  r|  s      r2   test_emulate_include_partitions8TestSystemDiskIoCounters.test_emulate_include_partitions  s     // #   17;<3% --d5I3x1}$}9~00A555;'22a7779~11Q666;'33q888 =<  =<s#   CA;C6C
C	C
C&c                 f   [         R                  " S5      n[        SU05         [        R                  " SSS9   [
        R                  " SSS9nUb   e S S S 5        S S S 5        S n[         R                  " S5      n[        SU05         [        R                  " SSUS	9   [
        R                  " SSS9nUR                  S
:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr  rk  rl  Fr  r  c                     U S:H  $ )Nr  r   )r   s    r2   is_storage_deviceSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_device  s    9$$rq   Tr   r|   r}   )	r   r   r   r   r   r   rq  rr  rw  )r   r   r   r  s       r2   test_emulate_exclude_partitions8TestSystemDiskIoCounters.test_emulate_exclude_partitions  s    // #   17;<3% --eEJ{"{	 =	% // #   17;<3-
 --eEJ~~***!+++ =<  =<  =<sF   D C/D D"#:DD"/
C=	9D  
D
D	D""
D0c                     S n[         R                  " SS9n[        R                  " SSUS9   [         R                  " SS9nS S S 5        [	        U5      [	        W5      :X  d   eg ! , (       d  f       N)= f)Nc                     U S:H  $ )Nrk  r   r  s    r2   r  ?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.exists  s    ,,,rq   T)r  psutil._pslinux.os.path.existsr   )r   rq  r   r   rC   )r   r  wprocfswsysfss       r2   test_emulate_use_sysfs/TestSystemDiskIoCounters.test_emulate_use_sysfs  sf    	- ))$7ZZ,Tv
 ,,T:F
 7|s6{***	
 
s   A&&
A4c                     S n[         R                  " SSUS9   [        R                  " [        5         [
        R                  " 5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                     g)NFr   r  s    r2   r  >TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.exists!  s    rq   r  Tr   )r   r   r   rc  NotImplementedErrorr   rq  )r   r  s     r2   test_emulate_not_impl.TestSystemDiskIoCounters.test_emulate_not_impl   sZ    	 ZZ,Tv
 23'') 4
 
 43
 
s"   A-AA-
A*	&A--
A;r   N)r   r   r   r   r}  r  r  r  r  r  r  r   r   rq   r2   ri  ri    s&    +&+(*,9&,@	+*rq   ri  c                   
   \ rS rSrS rS r\R                  R                  \	SS9S 5       r
\R                  R                  \R                  " S5      (       + SS9\R                  R                  \	SS9S	 5       5       rS
 rSrg)TestRootFsDeviceFinderi+  c                     [         R                  " S5      R                  n[         R                  " U5      U l        [         R                  " U5      U l        g )Nr\  )rT  r   st_devmajorminor)r   rN  s     r2   setUpTestRootFsDeviceFinder.setUp-  s3    ggcl!!XXc]
XXc]
rq   c                 R   [        5       n[        R                  R                  S5      (       a  UR	                  5         O3[
        R                  " [        5         UR	                  5         S S S 5        [        R                  R                  SU R                   SU R                   S35      (       a  UR                  5         O3[
        R                  " [        5         UR                  5         S S S 5        UR                  5         g ! , (       d  f       N= f! , (       d  f       N0= fNz/proc/partitionsz/sys/dev/block/r?   z/uevent)r   rT  r  r  ask_proc_partitionsr   rc  r  r  r  ask_sys_dev_blockask_sys_class_block)r   finders     r2   test_call_methods(TestRootFsDeviceFinder.test_call_methods2  s    #%77>>,--&&(01**, 277>>ODJJ<qGLMM$$&01((* 2""$ 21
 21s   DD
D
D&zunsupported on GITHUB_ACTIONSr   c                    [        5       nUR                  5       c   eS =n=p4[        R                  R	                  S5      (       a  UR                  5       n[        R                  R	                  SU R                   SU R                   S35      (       a  UR                  5       nUR                  5       nU=(       d    U=(       d    UnU(       a  U(       a  XR:X  d   eU(       a  U(       a  XS:X  d   eU(       a  U(       a  XT:X  d   eg g g r  )
r   findrT  r  r  r  r  r  r  r  )r   r  r  r  cbases         r2   test_comparisons'TestRootFsDeviceFinder.test_comparisons@  s    #%{{}(((A77>>,--**,A77>>ODJJ<qGLMM**,A$$&{A{A99A99A99 4rq   findmntzfindmnt utility not availablec                 X    [        5       R                  5       n[        S5      nX:X  d   eg )Nzfindmnt -o SOURCE -rn /)r   r  r   )r   r   findmnt_values      r2   test_against_findmnt+TestRootFsDeviceFinder.test_against_findmntT  s,    
 *+00245,,,rq   c                 j   [         R                  " SS/S9 n[        R                  " 5       S   nUR                  (       d   e[
        (       d;  UR                  S:w  d   eUR                  [        5       R                  5       :X  d   eOUR                  S:X  d   eS S S 5        g ! , (       d  f       g = f)Nr[  )	/dev/rootr\  ext4r]  r  r   r  )	r   r   r   rR  r   r   devicer   r  )r   r   rU  s      r2   test_disk_partitions_mocked2TestRootFsDeviceFinder.test_disk_partitions_mocked]  s    ZZ2:;
 ))+A.D88O8!>{{k111{{&8&:&?&?&AAAA{{k111
 
 
s   BB$$
B2)r  r  N)r   r   r   r   r  r  r   r  r  r   r  r  r  r  r  r   r   rq   r2   r  r  +  s    #
% [[/NO P& [[LL##,K   [[/NO- P-
2rq   r  c                       \ rS rSrS rS rS rS rS rS r	\
" 5       \R                  R                  \SS	9S
 5       5       rS rSrg)TestMiscip  c                 x    [        S5      n[        R                  " 5       n[        U5      [        U5      :X  d   eg )Nz	boot time)r   r   	boot_timeri   r   s      r2   test_boot_timeTestMisc.test_boot_timer  s2    k*'')< C$5555rq   c           
      p	  ^ U R                  5       n[        R                  " U5        [        [        R                  R                  US5      S5       nUR                  S5        UR                  S5        UR                  S5        S S S 5         [        mU4S jn[        R                  " SUS9   [        [        5        [        R                  " [        5         [        R                  " 5         S S S 5        [        R                  " [        5         [        R                  " S	S
9  S S S 5        [        R                  " [        5         [        R                  " 5         S S S 5        [        R                  " [        5         [        R                  " S	S
9  S S S 5        [        R                  " [        5         [        R                   " 5         S S S 5        [        R                  " [        5         [        R                   " S	S
9  S S S 5        U[        l        [        R                  " 5       S:X  d   e[%        [        R                   " 5       5      S:X  d   e[        R                  " S	S
9n[%        U5      S:X  d   e[        R                   " S	S
9n[%        ['        [$        U5      5      S:X  d   e[        [        R                  R                  US5      S5       nUR                  S5        UR                  S5        UR                  S5        S S S 5        [        R                  " 5       S:w  d   e[%        [        R                  " S	S
95      S:w  d   e[%        [        R                   " 5       5      S:w  d   e[%        ['        [$        [        R                   " S	S
95      5      S:w  d   e S S S 5        [(        R*                  " U5        [        [        5        [        R"                  S:X  d   eg ! , (       d  f       GNn= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN[= f! , (       d  f       GNe= f! , (       d  f       N= f! [(        R*                  " U5        [        [        5        f = f)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                 T   > U R                  S5      (       a  [        eT" U /UQ70 UD6$ )Nrb  )rf   r  r  s      r2   r   4TestMisc.test_no_procfs_on_import.<locals>.open_mock  s-    ??7++++ 7777rq   r   rz  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
rb  )
get_testfnrT  mkdirr@   r  rF   writer   r   r   r   r   rc  r=  rR  cpu_percentcpu_times_percentrd  sumr   r  rmtree)r   	my_procfsrJ   r   per_cpu_percentper_cpu_times_percentr   s         @r2   test_no_procfs_on_import!TestMisc.test_no_procfs_on_importw  s%   OO%	
"'',,y&1371GG12GG12GG12 8
4	"I8
 OCf%]]7+$$& ,]]7+$$D1 ,]]7+&&( ,]]7+&&d3 ,]]7+,,. ,]]7+,,D9 , &/"))+q00063356!;;; #)"4"4D"A?+q000 )/(@(@(M%3s$9:;q@@@ "'',,y&93?1GG9:GG9:GG9: @
 ))+q0006--T:;q@@@63356!;;;C!9!9!FGHAMMQ DV MM)$&!!!W,,,w 87  ,+++++++++++$ @?? DCV MM)$&!s   4O-!R 0*Q=O?0"Q=P'"Q=	P#"Q=P5"Q=8Q"Q=0QCQ=4Q+BQ=)R -
O<?
P		Q=
P 	Q=#
P2	-Q=5
Q	?Q=
Q	Q=
Q(	#Q=+
Q:	5Q==
RR 'R5c                    [         R                  " S5      R                  5       n[        SU05       n[        R
                  " 5         UR                  (       d   e[        R
                  " SS9  [        R                  " 5         [        R                  " SS9  S S S 5        [         R                  " S5      R                  5       n[        SU05         [        R
                  " 5       nWR                  (       d   e[        R
                  " SS9n[        R                  " 5       n[        R                  " SS9nUS:w  d   e[        U5      S:w  d   e[        U5      S:w  d   e[        U5      S:w  d   e[        [        [        U5      5      S:w  d   e[        [        [        U5      5      S:w  d   eUR                  S:X  d   eUR                  S:w  d   e S S S 5        g ! , (       d  f       GNM= f! , (       d  f       g = f)Nz~            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
            r{  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  r  r   rO  user)r   r   r   r  cpu_percent_percpur  cpu_times_percent_percpus          r2   test_cpu_steal_decrease TestMisc.test_cpu_steal_decrease  s    // #  	 	
 g671  88O8d+$$&$$D1 8 // #  	 	
 g67 ,,.K88O8!'!3!34!@ & 8 8 :'-'?'?t'L$!###)*a///()Q...()U222s3 89:a???s3 89:eCCC$**a///$))Q... 87 87 87s   A&GDG0
G-0
G>c                 .   [         R                  " SSS9 n[        R                  " [        5         [
        R                  R                  5         S S S 5        UR                  (       d   e S S S 5        g ! , (       d  f       N+= f! , (       d  f       g = f)Nr0  Tr1  )	r   r   r   rc  r  r   r  r  r   rD  s     r2   test_boot_time_mockedTestMisc.test_boot_time_mocked  sW    ZZ-d;q|,))+ -88O8 <;,, <;s"   BA5B5
B	?B
Bc                 `    [         R                  " 5        H  nUR                  S;  a  M   e   g )N>   :0:0.0)r   usershost)r   r  s     r2   
test_usersTestMisc.test_users  s&     LLND99N222 #rq   c                    U R                  5       n[        R                  " U5         U[        l        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        5         [        R                  " SS9  S S S 5        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        5         [        R                  " 5         S S S 5        [
        R                  " [        R                  5         [        R                   " 5         S S S 5        S[        l        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNs= f! , (       d  f       GNM= f! , (       d  f       GN'= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! S[        l        f = f)NTr  rb  )r  rT  r  r   rd  r   rc  r=  r   rR  r  r>  r/  r	  rR  NoSuchProcessProcess)r   tdirs     r2   test_procfs_pathTestMisc.test_procfs_path  s    
	)!%Fw'%%' (w'  " (w'  - (w'  " ( w'&&( (w'&&( (w'##% ( w'&&( (v334  5 ")F+ (''''''' (''''' ('44 ")Fs   %K  I #"K  I"K  =I$"K  4I6
"K  ,J"K  $J:"K  J,2"K  J>*,K  K,K   
I
K  
I!K  $
I3.K  6
J K  
JK  
J)$K  ,
J;6K  >
KK  
KK   K-zskip if pytest-parallelr   c                    [        5          [        R                  " 5       nUR                  5       n[	        U5      S:X  d   e[        US S9S   R                  nUR                  U:w  d   e[        R                  " U5      nUR                  5         U[        R                  " 5       ;  d   e S S S 5        g ! , (       d  f       g = f)NrK  c                     U R                   $ ru   )id)rx   s    r2   <lambda>)TestMisc.test_issue_687.<locals>.<lambda>  s    rq   )keyr|   )
r   r   r  threadsrC   sortedr  pidas_dictpids)r   pr  tidpts        r2   test_issue_687TestMisc.test_issue_687  s     \ AiikGw<1$$$n5a8;;C55C<<$BJJLfkkm+++ \\s   B"B77
Cc                     [        SS05       n[        R                  " [        R                  " 5       5      (       d   eUR
                  (       d   e S S S 5        g ! , (       d  f       g = f)Nz/proc/%s/statusrV   )r   r   
pid_existsrT  getpidr   rD  s     r2   test_pid_exists_no_proc_status'TestMisc.test_pid_exists_no_proc_status  sH      12671$$RYY[111188O8 877s   AA
A*r   N)r   r   r   r   r  r  r  r  r  r  r   r   r  r  r   r  r  r   r   rq   r2   r  r  p  s\    6
?-B%/N3)8 [[0IJ, K , rq   r  z
no batteryc                       \ rS rSr\R
                  R                  \R                  " S5      (       + SS9S 5       r	S r
S rS rS	 rS
 rS rS rS rSrg)TestSensorsBatteryi'  acpizacpi utility not availabler   c                     [        S5      n[        UR                  S5      S   R                  5       R	                  SS5      5      n[
        R                  " 5       R                  n[        X#-
  5      S:  d   eg )Nzacpi -br  r|   r  rV   )	r   ri   rA   r   replacer   sensors_batterypercentr   )r   rj   
acpi_valuer   s       r2   test_percentTestSensorsBattery.test_percent*  sd     m3*002::3CD
--/77:,-111rq   c                 R  ^ U4S jn[         m[        R                  " SUS9 n[        R                  " 5       R
                  SL d   e[        R                  " 5       R                  [        R                  :X  d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nc                 t   > U R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nz
AC0/onlinez	AC/online   1r  r   r   r  s      r2   r   @TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mock5  7    }}899zz$'' 7777rq   r   rz  T)	r@   r   r   r   r	  power_pluggedsecsleftPOWER_TIME_UNLIMITEDr   r   r   r   r   s      @r2   test_emulate_power_plugged-TestSensorsBattery.test_emulate_power_plugged3  s    	8 	ZZY?1))+99TAAA&&(11..// 88O8 @??s   A+B
B&c                    ^ U4S jn[         m[        R                  " SUS9 n[        R                  " 5       R
                  SL d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nc                    > U R                  S5      (       a  [        eU R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nr  /statuschargingr  r  r   r   r  s      r2   r   BTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mockG  sL    }}899''}}Y''{{:.. 7777rq   r   rz  Tr@   r   r   r   r	  r  r   r  s      @r2   test_emulate_power_plugged_2/TestSensorsBattery.test_emulate_power_plugged_2D  sT    	8 	ZZY?1))+99TAAA88O8 @??   8A%%
A3c                    ^ U4S jn[         m[        R                  " SUS9 n[        R                  " 5       R
                  SL d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nc                 t   > U R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nr     0r  r  s      r2   r   DTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockV  r  rq   r   rz  Fr!  r  s      @r2   test_emulate_power_not_plugged1TestSensorsBattery.test_emulate_power_not_pluggedT  sT    	8 	ZZY?1))+99UBBB88O8 @??r$  c                    ^ U4S jn[         m[        R                  " SUS9 n[        R                  " 5       R
                  SL d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nc                    > U R                  S5      (       a  [        eU R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nr  r  dischargingr  r  s      r2   r   FTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mockd  sL    }}899''}}Y''{{=11 7777rq   r   rz  Fr!  r  s      @r2    test_emulate_power_not_plugged_23TestSensorsBattery.test_emulate_power_not_plugged_2a  sT    	8 	ZZY?1))+99UBBB88O8 @??r$  c                    ^ U4S jn[         m[        R                  " SUS9 n[        R                  " 5       R
                  b   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nc                    > U R                  S5      (       a  [        eU R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )N)"/sys/class/power_supply/AC0/online!/sys/class/power_supply/AC/online#/sys/class/power_supply/BAT0/statuss   ???)rf   r  r   r   r  s      r2   r   ETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockt  sU         ('DEEzz&)) 7777rq   r   rz  r!  r  s      @r2   test_emulate_power_undetermined2TestSensorsBattery.test_emulate_power_undeterminedq  sR    		8 	ZZY?1))+99AAA88O8 @??s   6A##
A1c                     [        SS05       n[        R                  " 5       R                  S:X  d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)N(/sys/class/power_supply/BAT0/energy_fullr'  r   )r   r   r	  r
  r   rD  s     r2   test_emulate_energy_full_0-TestSensorsBattery.test_emulate_energy_full_0  sM    7>
))+33q88888O8	
 
 
s   9A
Ac                 F   [        S[        5         [        S[        5         [        SS05         [        R                  " 5       R
                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr:  z(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys   88X   )r   r  r   r   r	  r
  r   s    r2   "test_emulate_energy_full_not_avail5TestSensorsBattery.test_emulate_energy_full_not_avail  s     !6
 %:! '<eD "113;;rAAA		
 
 	 	
 
s9   BB&A0BB0
A>:B
B	B
B c                 F   [        S[        5         [        S[        5         [        S[        5         [        R                  " 5       R                  b   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr4  r3  r5  )r   r  r   r	  r  r?  s    r2   test_emulate_no_power(TestSensorsBattery.test_emulate_no_power  s     /1B
 %46G )9% "113AAIII	
 
  
 
s9   BB#A0BB0
A>:B
B	B
B r   N)r   r   r   r   r   r  r  r  r  r  r  r"  r)  r/  r7  r;  r@  rC  r   r   rq   r2   r  r  '  sf     [[LL  )E  22"  &B Jrq   r  c                       \ rS rSrS rSrg)TestSensorsBatteryEmulatedi  c                 Z  ^ U4S jn[         m[        R                  " SS/S9 n[        R                  " SUS9 n[        R                  " 5       c   e S S S 5        S S S 5        WR
                  (       d   eWR
                  (       d   eg ! , (       d  f       N== f! , (       d  f       NF= f)Nc                 $  > U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )Nz/energy_now60000000z
/power_now0z/energy_full60000001r  r   r   r  s      r2   r   5TestSensorsBatteryEmulated.test_it.<locals>.open_mock  sr    }}]++{{:..|,,{{3''~..{{:.. 7777rq   z
os.listdirBAT0r  r   rz  )r@   r   r   r   r	  r   )r   r   mlistdirmopenr   s       @r2   test_it"TestSensorsBatteryEmulated.test_it  s~    	8 	ZZF8<OCu--/;;; D = ||| DC =<s"   BBB
B	B
B*r   N)r   r   r   r   rQ  r   r   rq   r2   rF  rF    s    rq   rF  c                        \ rS rSrS rS rSrg)TestSensorsTemperaturesi  c                   ^ U4S jn[         m[        R                  " SUS9   [        R                  " SS/S9   [        R                  " 5       S   S   nUR
                  S	:X  d   eUR                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                   > U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S	5      (       a  [        R                  " S
5      $ T" U /UQ70 UD6$ )N/namer   z/temp1_labellabelz/temp1_input   30000z
/temp1_maxs   40000z/temp1_crit   50000)r  r   r   r   r  s      r2   r   CTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock  s    }}W%%{{6**~..{{7++~..zz(++|,,zz(++}--zz(++ 7777rq   r   rz  r  z/sys/class/hwmon/hwmon0/temp1r  r   r   rX        >@g      D@      I@	r@   r   r   r   sensors_temperaturesrX  r  highcritical)r   r   tempr   s      @r2   test_emulate_class_hwmon0TestSensorsTemperatures.test_emulate_class_hwmon  s    	8 	ZZY?+J*K 224V<Q?zzW,,,||t+++yyD(((}},,, @?  @?s#   CA$B0C0
B>	:C
Cc                   ^ U4S jnS n[         m[        R                  " SUS9   [        R                  " SSUS9   [        R                  " 5       S   S	   nUR
                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                 |  > U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )	N0_temprZ  rb  rY  0_typera  typer   )r  r   r   r   r  s      r2   r   ETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mock  s    }}X&&zz(++v&&zz(++x(({{:..v&&{{6** 7777rq   c                 <    U S;   a  / $ U S:X  a  S/$ U S:X  a  SS/$ / $ )N>   /sys/class/hwmon/hwmon*/temp*_*&/sys/class/hwmon/hwmon*/device/temp*_*z /sys/class/thermal/thermal_zone*z /sys/class/thermal/thermal_zone0z,/sys/class/thermal/thermal_zone0/trip_point*z2/sys/class/thermal/thermal_zone1/trip_point_0_typez2/sys/class/thermal/thermal_zone1/trip_point_0_tempr   r  s    r2   	glob_mockETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mock  sH       	;;:;;GGHH  Irq   r   rz  r  Tr   r   r   rV   r\  r]  r^  )r   r   rn  rb  r   s       @r2   test_emulate_class_thermal2TestSensorsTemperatures.test_emulate_class_thermal  s    
	8	 	ZZY?K)L224V<Q?zzR'''||t+++yyD(((}},,, M @?LL @?s#   CA$B3"C3
C	=C
Cr   N)r   r   r   r   rc  rp  r   r   rq   r2   rT  rT    s    -6#-rq   rT  c                       \ rS rSrS rSrg)TestSensorsFansi  c                 \  ^ U4S jn[         m[        R                  " SUS9   [        R                  " SS/S9   [        R                  " 5       S   S   nUR
                  S	:X  d   eUR                  S
:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                 $  > U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ U R                  S5      (       a  [        R                  " S5      $ T" U /UQ70 UD6$ )NrW  r   z/fan1_labelrX  z/fan1_input2000rL  r  s      r2   r   4TestSensorsFans.test_emulate_data.<locals>.open_mock  sr    }}W%%{{6**}--{{7++}--{{6** 7777rq   r   rz  r  z/sys/class/hwmon/hwmon2/fan1r  r   r   rX  i  )r@   r   r   r   sensors_fansrX  r  )r   r   fanr   s      @r2   r  !TestSensorsFans.test_emulate_data  s    	8 	ZZY?+I*J ))+F3A6yyG+++{{d*** @?  @?s#   BA B;B
B	B
B+r   N)r   r   r   r   r  r   r   rq   r2   rs  rs    s    +rq   rs  c                      \ rS rSr\" 5       S 5       rS r\R                  R                  \
SS9S 5       rS rS rS	 rS
 rS rS rS rS rS rS rS rS r\R                  R                  \(       + SS9S 5       rS rS rS rSrg)TestProcessi  c                    U R                  5       n[        R                  R                  UR                  5      R                  5       u  p#n[        R                  " UR                  5      R                  SS9n[        U[        S U 5       5      -
  5      S:  d   e[        U[        S U 5       5      -
  5      S:  d   e[        U[        S U 5       5      -
  5      S:  d   eg )NF)groupedc              3   R   #    U  H  oR                   UR                  -   v   M     g 7fru   )private_dirtyprivate_cleanrv   s     r2   ry   >TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<genexpr>'  s     JT//AOO;Ts   %'r  c              3   8   #    U  H  oR                   v   M     g 7fru   )pssrv   s     r2   ry   r  *  s     1DqUUDr{   c              3   8   #    U  H  oR                   v   M     g 7fru   )r>  rv   s     r2   ry   r  +  s     3dffdr{   )	spawn_testprocr   r  r  r  _parse_smapsmemory_mapsr   r  )r   sprocussr  r>  mapss         r2   test_parse_smaps_vs_memory_maps+TestProcess.test_parse_smaps_vs_memory_maps!  s    ##%00;HHJ$~~eii(44U4CcJTJJJK	
 31D1112T9994#3d3334t;;;rq   c                    [         R                  " S5      R                  5       n[        S[        R
                  " 5        S3U05       n[        R                  R                  [        R
                  " 5       5      nUR                  5       u  pEnUR                  (       d   eUS:X  d   eUS:X  d   eUS:X  d   e S S S 5        g ! , (       d  f       g = f)Nan              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
            /proc//smapsi l  r  i <  )r   r   r   r   rT  r  r   r  r  r  r   )r   r   r   r  r  r  r>  s          r2   test_parse_smaps_mocked#TestProcess.test_parse_smaps_mocked-  s    // # , - 	. &V <gFG1''		4A^^-NCd88O8----(?"?9$$$ HGGs   	A1C
Czunreliable on PYPYr   c                 L   S nU R                  5       n[        US5         U" U5      R                  S:X  d   e S S S 5        [        U5         U" U5      R                  S:X  d   e S S S 5        [        US5         U" U5      R                  S:X  d   e S S S 5        [        US5         U" U5      R                  S:X  d   e S S S 5        [        US5         U" U5      R                  S:X  d   e S S S 5        [        US5         U" U5      R                  S:X  d   e S S S 5        [        U5        [        US5         U" U5      R                  S:X  d   e S S S 5        [        U5        [        US	5         U" U5      R                  S:X  d   e S S S 5        g ! , (       d  f       GNg= f! , (       d  f       GNL= f! , (       d  f       GN0= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)
Nc                 0   [         R                  " 5       n[        R                  " 5       [        -   n UR	                  5        HO  nUR
                  [        R
                  R                  U 5      :X  a  Us  $ [        R                  " 5       U:  d  MO    O   Me  ru   )	r   r  timer   
open_filesr  rT  abspathr  )fnamer  	giveup_atfiles       r2   get_test_file7TestProcess.test_open_files_mode.<locals>.get_test_fileQ  se     A		n4ILLNDyyBGGOOE$::#y0	 + rq   r   rr  zr+zw+za+rx   zx+)r  r@   moder   )r   r  testfns      r2   test_open_files_mode TestProcess.test_open_files_modeO  s   		@ "&# (--444 &\ (--444 &# (--444 &$ (--555  &$ (--555  &$ (--555   	F&# (--444 F&$ (--555  # \   s_   FF,;F>)GG"G3>H7H
F),
F;>
G
G"
G03
H
H
H#c                 v  ^^ [         R                  " 5       mTR                  5       m[        U R	                  5       S5         [        UU4S j5        [        R                  " S[        S9 nTR                  5       / :X  d   eUR                  (       d   e S S S 5        [        R                  " S[        [        R                  S5      S9 nTR                  5       / :X  d   eUR                  (       d   e S S S 5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   c                  N   > [        TR                  5       5      [        T 5      :g  $ ru   rC   r  filesr  s   r2   r  7TestProcess.test_open_files_file_gone.<locals>.<lambda>x      s1<<>2c%j@rq   psutil._pslinux.os.readlinkrz  rV   )r   r  r  r@   r  r   r   r   r  r   r=  errnoEINVALr   r   r  r  s     @@r2   test_open_files_file_gone%TestProcess.test_open_files_file_goneq  s     NN$//#S)@A-- ||~+++xxx -#ELL"5 ||~+++xxx *)   *)s<   *D*,*D5D**D7D*
D	D*
D'	#D**
D8c                   ^^ [         R                  " 5       mTR                  5       m[        U R	                  5       S5         [        UU4S j5        [        R                  " S[        S9 nTR                  5       / :X  d   eUR                  (       d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   c                  N   > [        TR                  5       5      [        T 5      :g  $ ru   r  r  s   r2   r  5TestProcess.test_open_files_fd_gone.<locals>.<lambda>  r  rq   r   rz  )
r   r  r  r@   r  r   r   r   r  r   r  s     @@r2   test_open_files_fd_gone#TestProcess.test_open_files_fd_gone  s     NN$//#S)@A->||~+++xxx	 *)  *)s$   *B9,*B(B9(
B6	2B99
Cc                    ^^ [         R                  " 5       mTR                  5       m[        U R	                  5       S5         [        UU4S j5        Sn[        R                  " U[        [        R                  S5      S9 n[        R                  " S5         TR                  5       / :X  d   eUR                  (       d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   c                  N   > [        TR                  5       5      [        T 5      :g  $ ru   r  r  s   r2   r  :TestProcess.test_open_files_enametoolong.<locals>.<lambda>  r  rq   r  rV   rz  psutil._pslinux.debug)r   r  r  r@   r  r   r   r   r=  r  ENAMETOOLONGr   )r   patch_pointr   r  r  s      @@r2   test_open_files_enametoolong(TestProcess.test_open_files_enametoolong  s     NN$//#S)@A7K1C1CR)HZZ 78<<>R///88O8 9	 *) 98 	 *)s=   A C?C.*CC.C?
C+'C..
C<	8C??
Dc                    [         R                  " S0 S9 n[        R                  R	                  [
        R                  " 5       5      R                  5       b   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nz)psutil._pslinux._psposix.get_terminal_mapr  )	r   r   r   r  r  rT  r  terminalr   rD  s     r2   test_terminal_mocked TestProcess.test_terminal_mocked  s[    ZZ7b
??**299;7@@BJJJ88O8	
 
 
s   AA77
Bc                    [         R                  " 5       n[        R                  " S5      n[        R
                  " SUSS9 nUR                  5       SS/:X  d   eUR                  (       d   e S S S 5        [        R                  " S5      n[        R
                  " SUSS9 nUR                  5       / SQ:X  d   eUR                  (       d   e S S S 5        g ! , (       d  f       Np= f! , (       d  f       g = f)	Nzfoo bar r0  Tr~  foobarz	foo bar  r  r  rV   r   r  r   r   r   r   cmdliner   r   r  r  r   s       r2   test_cmdline_mockedTestProcess.test_cmdline_mocked  s    NNKK 01	ZZ!	$
99;5%.00088O8	

 KK 45	ZZ!	$
99;"444488O8	
 

 

 
   ,C#,C*
C'*
C8c                    [         R                  " 5       n[        R                  " S5      n[        R
                  " SUSS9 nUR                  5       SS/:X  d   eUR                  (       d   e S S S 5        [        R                  " S5      n[        R
                  " SUSS9 nUR                  5       / SQ:X  d   eUR                  (       d   e S S S 5        g ! , (       d  f       Np= f! , (       d  f       g = f)	Nzfoo bar r0  Tr~  r  r  z	foo bar  r  r  r  s       r2   test_cmdline_spaces_mocked&TestProcess.test_cmdline_spaces_mocked  s    NNKK
+	ZZ!	$
99;5%.00088O8	

 KK,	ZZ!	$
99;"444488O8	
 

 

 
r  c                    [         R                  " 5       n[        R                  " S5      n[        R
                  " SUSS9 nUR                  5       SS/:X  d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nzfoo bar r0  Tr~  r  r  r  r  s       r2   test_cmdline_mixed_separators)TestProcess.test_cmdline_mixed_separators  sh     NNKK 01	ZZ!	$
99;5%.00088O8	
 
 
s   ,A88
Bc                    [         R                  " SSS9   [        R                  " 5       R	                  5       S:X  d   e[        R                  " 5       R                  5       S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr  z/home/foo (deleted)r  z	/home/foo)r   r   r   r  execwdr?  s    r2   !test_readlink_path_deleted_mocked-TestProcess.test_readlink_path_deleted_mocked  sb    ZZ)8M
 >>#'')[888>>#'')[888	
 
 
s   AA33
Bc                 &  ^ U4S jn[         m[        R                  " SUS9 n[        R                  " 5       R                  5       nUR                  (       d   eU/ :X  d   e S S S 5        U4S jn[        R                  " SUS9   [        R                  " [        R                  5         [        R                  " 5       R                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nc                    > U R                  S[        R                  " 5        S35      (       a  [        eT" U /UQ70 UD6$ Nr  z/task)rf   rT  r  r  r  s      r2   open_mock_14TestProcess.test_threads_mocked.<locals>.open_mock_1  s<    		}E:;;''T3D3F33rq   r   rz  c                    > U R                  S[        R                  " 5        S35      (       a  [        eT" U /UQ70 UD6$ r  )rf   rT  r  PermissionErrorr  s      r2   open_mock_24TestProcess.test_threads_mocked.<locals>.open_mock_2  s<    		}E:;;%%T3D3F33rq   )
r@   r   r   r   r  r  r   r   rc  AccessDenied)r   r  r   r   r  r   s        @r2   test_threads_mockedTestProcess.test_threads_mocked  s    
	4
 	ZZ[AQ.."**,C88O8"99 B	4
 ZZ[Av223 ((* 4 BA BA 43 BAs/   ?C %D+$C1D 
C.1
C?	;D
Dc                 F   [         R                  " S[        S9 n[         R                  " S/ S9   [        R                  " 5       R                  5       nUR                  (       d   eUS:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzpsutil._pslinux.readlinkrz  zpsutil._pslinux.Process.cmdliner  rV   )r   r   r  r   r  r  r   )r   r   r   s      r2   test_exe_mockedTestProcess.test_exe_mocked  s{    ZZ&4E
1 nn&**,xxxby y	
 
 	
 
s"   B?B0B
B	B
B c                 `   [        S[        R                  " 5        S3[        5       n[        R
                  " 5       n[        R                  " [        5         UR                  5         S S S 5        UR                  (       d   e S S S 5        g ! , (       d  f       N+= f! , (       d  f       g = f)Nr  r  )
r   rT  r  r  r   r  r   rc  r  r   r   r   r  s      r2   test_issue_1014TestProcess.test_issue_1014  st     !RYY[M(*;
 A01 288O8
 
 21	
 
s#   0BB)B
B	B
B-c                    [         R                  " 5       n[        S[        R                  " 5        S3[
        5         [        R                  " SSS9   [        R                  " [         R                  5         UR                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr  z/statmr  Fr  )r   r  r   rT  r  r  r   r   r   rc  r  memory_info)r   r  s     r2   test_issue_2418TestProcess.test_issue_2418  s    NN RYY[M(*;
 ,5A]]6#7#78MMO 9 B
 
 98 BA
 
s;   C%B38B"	B3C"
B0,B33
C	=C
Cr  c                    [         R                  " S[        [        R                  S5      S9 n[         R                  " SSS9 n[
        R                  " 5       nUR                  5         [        R                  " [
        R                  5       nUR                  [
        R                  5        S S S 5        S S S 5        S S S 5        WR                  (       d   eWR                  (       d   eWR                  R                  WR                  :X  d   eUR                  R                  UR                  5       :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nzresource.prlimitrV   rz  z"psutil._pslinux.Process._is_zombieTr  )r   r   r=  r  ENOSYSr   r  r   r   rc  ZombieProcessrlimitRLIMIT_NOFILEr   r`  r  )r   r  r  r  cms        r2   test_rlimit_zombieTestProcess.test_rlimit_zombie&  s    
 ZZGELL",E
44NN$]]6#7#78BHHV112 9
 yyyyyyxx||quu$$$xx}}((( 98 
 
s<   EA
E D=.E6E=
EE
E	E
E-c                 >   / SQnSR                  U5      R                  5       n[        S[        R                  " 5        S3U05         [
        R                  " 5       nUR                  5       S:X  d   eUR                  5       [
        R                  :X  d   eUR                  5       S:X  d   eUR                  5       S[        -  [
        R                  " 5       -   :X  d   eUR                  5       nUR                  S[        -  :X  d   eUR                   S	[        -  :X  d   eUR"                  S
[        -  :X  d   eUR$                  S[        -  :X  d   eUR&                  S[        -  :X  d   eUR)                  5       S:X  d   e S S S 5        g ! , (       d  f       g = f)N)*rJ  z(cat)Z1rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  2345rJ  rJ  rJ  rJ  6rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  rJ  r  rJ  rJ  7r   r  z/statcatr|   rM  rK  r   r>   r}   rn  )rF   r   r   rT  r  r   r  r   statusSTATUS_ZOMBIEppidcreate_timer   r  rR  r  systemchildren_userchildren_systemiowaitcpu_num)r   r   r   r  cpus        r2   test_stat_file_parsing"TestProcess.test_stat_file_parsing:  sN   +
X ((4.'')&U ;WEF A668u$$$88:!5!5555668q= ===?a+o8H8H8J&JJJJ++-C88q;...::[000$$K777&&!k/999::[00099;!### GFFs   D<F
Fc                    [         R                  " S5      R                  5       n[        S[        R
                  " 5        S3U05         [        R                  " 5       nUR                  5       R                  S:X  d   eUR                  5       R                  S:X  d   eUR                  5       S:X  d   eUR                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   eUR!                  5       nUR                  S
:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR"                  R%                  5       ['        [)        S5      5      :X  d   e S S S 5        g ! , (       d  f       g = f)Nz            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  r  r      B   i  i  i  i  i  i  ro  )r   r   r   r   rT  r  r   r  num_ctx_switches	voluntaryinvoluntarynum_threadsuidsreal	effectivesavedgids_proc_get_eligible_cpuslistrE   )r   r   r  r  r  s        r2   test_status_file_parsing$TestProcess.test_status_file_parsingv  sK   // #/ 0 17 	 &W =wGH A%%'11R777%%'33r999==?b(((668D99$$$>>T)))::%%%668D99$$$>>T)))::%%%77--/4a>AAA IHHs   	D*E==
Fc                 p   [         R                  " S[        [        R                  S5      S9 n[
        R                  " 5       n[         R                  " S5         UR                  5       / :X  d   eUR                  (       d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  rV   rz  r  )	r   r   r=  r  r  r   r  r>  r   r  s      r2   !test_net_connections_enametoolong-TestProcess.test_net_connections_enametoolong  s     ZZ) 2 2B7
  A34((*b000xxx 5
 

 54
 
s#   ,B'*BB'
B$	 B''
B5r   N)r   r   r   r   r   r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r   rq   r2   r|  r|    s    	< 	<%D [[%9:6 ;6B . $&  	9+6
!	$ [[J?) @)&:$xB0 rq   r|  c                   x    \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rS
 r\" 5       S 5       rS rS rSrg)TestProcessAgainstStatusi  z/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                 8    [         R                  " 5       U l        g ru   )r   r  proc)clss    r2   
setUpClass#TestProcessAgainstStatus.setUpClass  s    >>#rq   c                    [         R                  R                  SU R                  R                   S35       nU HT  nUR                  5       nUR                  U5      (       d  M+  UR                  S5      S   n [        U5      s  sS S S 5        $    [        SU< 35      e! [         a    Us s  sS S S 5        $ f = f! , (       d  f       g = f)Nr  r  	rK  r   )
r   _psplatform	open_textr!  r  r   rf   	partitionri   rD   )r   	linestartrJ   rL   r`  s        r2   read_status_file)TestProcessAgainstStatus.read_status_file  s    ))TYY]]O7+
zz|??9-- NN403E%"5z)
 
  {9-899 & %$
 
%
 
s;   *B?&B?;
B"B?B?"B<.B?;B<<B??
Cc                 f    U R                  S5      nU R                  R                  5       U:X  d   eg )NzName:)r+  r!  r   r   r`  s     r2   	test_name"TestProcessAgainstStatus.test_name  +    %%g.yy~~5(((rq   c                     U R                  S5      nXR                  S5      S-   UR                  S5       nUR                  SS5      nU R                  R                  5       U:X  d   eg )NzState:(r|   )r   r^  )r+  r  rfindr  r!  r  r.  s     r2   test_status$TestProcessAgainstStatus.test_status  s]    %%h/jjo)EKK,<=c3'yy!U***rq   c                 f    U R                  S5      nU R                  R                  5       U:X  d   eg )NzPPid:)r+  r!  r   r.  s     r2   	test_ppid"TestProcessAgainstStatus.test_ppid  r1  rq   c                 f    U R                  S5      nU R                  R                  5       U:X  d   eg )NzThreads:)r+  r!  r  r.  s     r2   test_num_threads)TestProcessAgainstStatus.test_num_threads  s-    %%j1yy$$&%///rq   c                     U R                  S5      n[        [        [        UR	                  5       SS 5      5      nU R
                  R                  5       U:X  d   eg )NzUid:r|   r>   )r+  r   r   ri   rA   r!  r  r.  s     r2   	test_uids"TestProcessAgainstStatus.test_uids  I    %%f-c#u{{}Qq123yy~~5(((rq   c                     U R                  S5      n[        [        [        UR	                  5       SS 5      5      nU R
                  R                  5       U:X  d   eg )NzGid:r|   r>   )r+  r   r   ri   rA   r!  r  r.  s     r2   	test_gids"TestProcessAgainstStatus.test_gids  rA  rq   c                     U R                  S5      nU R                  R                  5       R                  U:X  d   eU R                  S5      nU R                  R                  5       R                  U:X  d   eg )Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r+  r!  r  r  r  r.  s     r2   test_num_ctx_switches.TestProcessAgainstStatus.test_num_ctx_switches  sf    %%&@Ayy))+55>>>%%&CDyy))+775@@@rq   c                     U R                  S5      nS[        U5      ;   aW  [        [        UR	                  S5      5      u  p#U R
                  R                  5       [        [        X#S-   5      5      :X  d   eg g )NCpus_allowed_list:r^  r|   )	r+  r   r   ri   rA   r!  cpu_affinityr  rE   )r   r`  min_max_s       r2   test_cpu_affinity*TestProcessAgainstStatus.test_cpu_affinity  sd    %%&:;#e*S%++c"23JD99))+tE$q4I/JJJJ rq   c                 :   U R                  S5      n[        R                  " S5       nU R                  R                  R                  5         S S S 5        S[        U5      ;   a  WR                  (       a   eg WR                  (       d   eg ! , (       d  f       NE= f)NrI  zpsutil._pslinux.per_cpu_timesr^  )r+  r   r   r!  r  r  r   r   )r   r`  r   s      r2   test_cpu_affinity_eligible_cpus8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpus  si    %%&:;ZZ78AIIOO..0 9#e*xx<x88O8 98s   %B
Br   N)r   r   r   r   __doc__classmethodr#  r+  r/  r6  r9  r<  r?  rC  r   rF  rM  rP  r   r   rq   r2   r  r    sb     $ $:)+)0)
)
 A AKrq   r  c                       \ rS rSrS rSrg)	TestUtilsi  c                     [         R                  " SSS9 n[        R                  R	                  S5      S:X  d   eUR
                  (       d   e S S S 5        g ! , (       d  f       g = f)Nzos.readlinkzfoo (deleted)r  r  r  )r   r   r   r'  readlinkr   rD  s     r2   test_readlinkTestUtils.test_readlink  sI    ZZOD%%..u5>>>88O8 EDDs   9A
A'r   N)r   r   r   r   rX  r   r   rq   r2   rU  rU    s    rq   rU  )]rR  rg   
contextlibr  r   rT  r  r   r  r&   r-   r   r  r   unittestr   r   r   psutil.testsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r  dirname__file__HEREr,   rY   r6   r:   ru  r3   r7   r;   rT   r\   rp   r   r   r   contextmanagerr   r   r  r  r   r   r   r   rI  r[  r  r  r  r  r  r  r  r4  rG  ri  r  r  r  rF  rT  rs  r|  r  rU  r   rq   r2   <module>ra     sL       	 	  	            ' ' $ % ' #  ( - * ' # #  & ) $  0 	+24+ 
wwrwwx01K	
	
	
,FDC(@@  (  ( Il33B 3B 43Bl Il3.D> .D 4.Db Il3F-> F- 4F-\ Il3P> P 4Pp Il3. . 4.& Il3F  F  4F R Il3n  4@ Il3V/^ V/ 4V/r Il36 6 46 Il3	?. 	? 4	?" Il3?> ? 4?P Il335> 35 435l Il30En 0E 40Ef Il3~  4< Il3<)~ <) 4<)~ Il3D*~ D* 4D*N Il3<2^ <2 4<2H Il3n~ n 4nl Il3OL9J J : 4JD Il3  4( Il3?-n ?- 4?-D Il3+n + 4+6 Il3y . y  4y x Il3J~ J 4Jd Il3  4rq   