
    9iY                       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%  \(       a  SSK&J'r'  SSK&J(r(  SSK&J)r)  SSK&J*r*  \RV                  RY                  \RV                  R[                  \.5      5      r/Sr0Sr1Sr2Sr3\(       a  S r4S! r5S" r6S# r7S$ r8S% r9S& r:S' r;S( r<S) r=\R|                  S* 5       r?\R|                  S+ 5       r@\ R                  R                  \(       + S,S-9 " S. S/\5      5       rC\ R                  R                  \(       + S,S-9 " S0 S1\5      5       rD\ R                  R                  \(       + S,S-9 " S2 S3\5      5       rE\ R                  R                  \(       + S,S-9 " S4 S5\5      5       rF\ R                  R                  \(       + S,S-9 " S6 S7\5      5       rG\ R                  R                  \(       + S,S-9 " S8 S9\5      5       rH\ R                  R                  \(       + S,S-9 " S: 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@ SA\5      5       rL\ R                  R                  \(       + S,S-9 " SB SC\5      5       rM\ R                  R                  \(       + S,S-9 " SD SE\5      5       rN\ R                  R                  \(       + S,S-9 " SF SG\5      5       rO\ R                  R                  \(       + S,S-9 " SH SI\5      5       rP\ R                  R                  \(       + S,S-9 " SJ SK\5      5       rQ\ R                  R                  \(       + S,S-9 " SL SM\5      5       rR\ R                  R                  \(       + S,S-9 " SN SO\5      5       rS\ R                  R                  \(       + S,S-9 " SP SQ\5      5       rT\ R                  R                  \(       + S,S-9\ R                  R                  \(       + SRS-9 " SS ST\5      5       5       rU\ R                  R                  \(       + S,S-9 " SU SV\5      5       rV\ R                  R                  \(       + S,S-9 " SW SX\5      5       rW\ R                  R                  \(       + S,S-9 " SY SZ\5      5       rX\ R                  R                  \(       + S,S-9 " S[ S\\5      5       rY\ R                  R                  \(       + S,S-9 " S] S^\5      5       rZ\ R                  R                  \(       + S,S-9 " S_ S`\5      5       r[g)azLinux specific tests.    N)mock)LINUX)AARCH64)GITHUB_ACTIONS)GLOBAL_TIMEOUT)HAS_BATTERY)HAS_CPU_FREQ)HAS_GETLOADAVG)
HAS_RLIMIT)RISCV64)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      W/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/psutil/tests/test_linux.pyget_ipv4_addressr2   B   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      r1   get_ipv4_netmaskr6   N   y    6#2;(F	v~~v'8'8	9QKK
NFKK,G
 
:	9	9r3   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      r1   get_ipv4_broadcastr:   Z   r7   r3   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)r/   f
all_fieldslinefieldsiunformattedjgroups	formattedpackeds              r1   get_ipv6_addressesrS   f   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-   rE   )r/   r#   r0   infochars        r1   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   r@   
startswithcollections
namedtupleintrC   )outlinesrK   _totalusedr]   nts           r1   	free_swapro      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_   r`   ra   rc   Memc              3   8   #    U  H  n[        U5      v   M     g 7fN)rh   .0xs     r1   	<genexpr>free_physmem.<locals>.<genexpr>   s     (K9JAQ9J         ztotal used free shared outputz#can't find 'Mem' in 'free' output:
)r   r@   re   rf   rg   rC   )ri   rj   rK   rl   rm   r]   sharedrn   s           r1   free_physmemr~      s     fd^&)!4
5CIIdOE??5!!(Ka9J(K%E''7B e455  ;C5A
BBrp   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_   r`   ra   rc    r   can't find z in 'vmstat' output)r   r@   striprh   rC   )statri   rK   s      r1   r   r      si    
hFI#6
7C		$zz|<tzz#q)**   {4(*=>
??rp   c            
          [        SS/5      R                  5       n SU ;   a  [        R                  " S5      $ [	        [        [        [        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maprh   refindallr@   )ri   s    r1   get_free_version_infor      sX    
fd^

"
"
$CC{{9::S"**VSYY[_=>??rp   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$ rt   )
isinstancestrioStringIOBytesIO)nameargskwargscontent	orig_openpairss       r1   	open_mock$mock_open_content.<locals>.open_mock   sS    5=DkG'3''{{7++zz'**T3D3F33rp   builtins.openTcreateside_effectNr?   r   patch)r   r   mr   s   `  @r1   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$ rt    )r   r   r   excfor_pathr   s      r1   r   &mock_open_exception.<locals>.open_mock   s%    8I////rp   r   Tr   Nr   )r   r   r   r   r   s   ``  @r1   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 rt   )r~   rl   psutilvirtual_memoryself	cli_valuepsutil_values      r1   
test_total-TestSystemVirtualMemoryAgainstFree.test_total   s/     N((	,,.44(((rp   c                     [        5       S:  a  [        R                  " S5      $ [        5       R                  n[
        R                  " 5       R                  n[        X-
  5      [        :  d   eg )Nr=   r   r{   free version too old)	r   r   r   r~   rm   r   r   absr   r   s      r1   	test_used,TestSystemVirtualMemoryAgainstFree.test_used   sW     !"Y.;;566 N''	,,.339+,/@@@@rp   c                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg rt   )r~   r]   r   r   r   r   r   s      r1   	test_free,TestSystemVirtualMemoryAgainstFree.test_free   s:     N''	,,.339+,/@@@@rp   c                    [        5       nUR                  nUS:X  a  [        R                  " S5      $ [        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       r1   test_shared.TestSystemVirtualMemoryAgainstFree.test_shared   ss    ~[[
?;;FGG,,.55
)*->>	:\<.DKK=9	:>rp   c                 (   [        SS/5      nUR                  S5      nSUS   ;  a  [        R                  " S5      $ [	        US   R                  5       S   5      n[
        R                  " 5       R                  n[        X4-
  5      [        :  d   eg )	Nr]   r^   rc   	availabler   z(free does not support 'available' columnr{   r<   )
r   r@   r   r   rh   r   r   r   r   r   )r   ri   rj   r   r   s        r1   test_available1TestSystemVirtualMemoryAgainstFree.test_available  s     &$ 		$eAh&;;IJJq)"-.
,,.88:,-0AAAArp   r   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   __static_attributes__r   rp   r1   r   r      si    )
 A A A A
 : : 	B 	Brp   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   rl   r   r   r   vmstat_valuer   s      r1   r   /TestSystemVirtualMemoryAgainstVmstat.test_total  s<    n-4,,.44<./2CCCCrp   c                     [        5       S:  a  [        R                  " S5      $ [        S5      S-  n[        R
                  " 5       R                  n[        X-
  5      [        :  d   eg )Nr   r   zused memoryr   )	r   r   r   r   r   r   rm   r   r   r   s      r1   r   .TestSystemVirtualMemoryAgainstVmstat.test_used  sY     !"Y.;;566m,t3,,.33<./2CCCCrp   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      r1   r   .TestSystemVirtualMemoryAgainstVmstat.test_free/  s<    m,t3,,.33<./2CCCCrp   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzbuffer memoryr   )r   r   r   buffersr   r   r   s      r1   test_buffers1TestSystemVirtualMemoryAgainstVmstat.test_buffers5  s<    o.5,,.66<./2CCCCrp   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzactive memoryr   )r   r   r   activer   r   r   s      r1   test_active0TestSystemVirtualMemoryAgainstVmstat.test_active;  s<    o.5,,.55<./2CCCCrp   c                     [        S5      S-  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg )Nzinactive memoryr   )r   r   r   inactiver   r   r   s      r1   test_inactive2TestSystemVirtualMemoryAgainstVmstat.test_inactiveA  s=    /047,,.77<./2CCCCrp   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   rp   r1   r   r     s    D
 D D D D
 D D
 D D
 D Drp   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	)
TestSystemVirtualMemoryMocksiH  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   calledrB   r   messager   r   r   r}   r   r   slabr   r   r   wsretws         r1   test_warnings_on_misses4TestSystemVirtualMemoryMocks.test_warnings_on_missesJ  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   r@   rh   r   r   )r   memsrI   rK   rL   abdiff_percents           r1   test_avail_old_percent3TestSystemVirtualMemoryMocks.test_avail_old_percentn  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         r1    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         r1   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        r1   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   rl   r]   r   r   r}   r   r   r   r   )r   r   r   mems       r1   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   rp   r1   r   r   H  s4    "%H % %828@-rp   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)rI   datas     r1   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 rt   )ro   rl   r   swap_memoryr   r   r   r   r   s      r1   r   TestSystemSwapMemory.test_total   s:    [&&
))+11:,-0AAAArp   c                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg rt   )ro   rm   r   r"  r   r   r#  s      r1   r   TestSystemSwapMemory.test_used%  :    [%%
))+00:,-0AAAArp   c                     [        5       R                  n[        R                  " 5       R                  n[	        X-
  5      [
        :  d   eg rt   )ro   r]   r   r"  r   r   r#  s      r1   r   TestSystemSwapMemory.test_free+  r'  rp   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   rB   r   r   sinsoutr   r   r   r   r   s        r1   test_missing_sin_sout*TestSystemSwapMemory.test_missing_sin_sout1  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   rB   r   r   r-  r.  r/  s        r1   test_no_vmstat_mocked*TestSystemSwapMemory.test_no_vmstat_mocked@  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      $ [        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_sysinforl   r   r]   r   )r   r   swapcextrk   rl   r]   unit_multipliers           r1   test_meminfo_against_sysinfo1TestSystemSwapMemory.test_meminfo_against_sysinfoQ  s     ))++;;BCC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   rp   )r   r   r"  r   r   r   s     r1   #test_emulate_meminfo_has_no_metrics8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsb  s6     56! 88O8 766s   )A
Ar   N)r   r   r   r   staticmethodr  r   r   r   r   r0  r3  r<  r@  r   r   rp   r1   r  r    s`    < <B
 B B
 B B
%%"9"rp   r  c                       \ rS rSrS rSrg)TestSystemCPUTimesip  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   .)rF        steal)rF  rH  r"   guest)   rF  r   
guest_nice)r   	cpu_times_fieldsr   r   osunamer   r   rh   r@   )r   rL   
kernel_verkernel_ver_infos       r1   test_fieldsTestSystemCPUTimes.test_fieldsr  s    !!#++ZZ 0"((*Q-@C
C)9)9#)> ?@j(f$$$&(((j(f$$$&(((i'6)))v---rp   r   N)r   r   r   r   rT  r   r   rp   r1   rD  rD  p  s    .rp   rD  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)NrX  -r{   )r?   r  r   r   rh   r@   r   	cpu_count)r   rI   values      r1   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 )Nr_  zcpu\d+$)rP  listdirrB   r   searchr   r[  )r   lsrw   counts       r1   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)rh   r   r   r[  )r   nums     r1   test_against_nproc,TestSystemCPUCountLogical.test_against_nproc  s,     "]#$-444rp   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 -prc   #Tri  )r   rB   r@   re   r   r[  )r   ri   rw   rk  s       r1   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   r+  Tr,  rF  
/proc/stat/proc/cpuinforbreturn_valuer   rp   )psutil._pslinux_pslinuxcpu_count_logicalr   r   rC   r   
call_count	call_argsr?   r  r   r   r   )r   r   originalr   rI   cpuinfo_data	fake_files          r1   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skipifrP  pathexistsr]  re  shutilwhichrl  rs  r  r   r   rp   r1   rW  rW    s    [[GGNN;<<>  /	/ [[GGNN4557  +	+
 [[LL!!*G  55 [[LL!!*G  55
" rp   rW  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  rn  ro  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 )Nrq  rc   rr  ,r{   Fri  )r   setr@   re   addr   r[  rB   )r   ri   core_idsrK   rL   s        r1   rs  *TestSystemCPUCountCores.test_against_lscpu  sq     n5IIdOD??3''CVAY' $ .#h-???rp   >   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       r1   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  r+  Tr,  )r   r   r   r}  r  r   )r   m1m2s      r1   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  rs  platformmachiner  r  r   r   rp   r1   r  r    s~    [[LL!!*G  @@ [["44=O  $$rp   r  c                   0   \ 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                  \=(       d    \
\R                  " 5        S3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re   )r  orig_existss    r1   path_exists_mockMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mock  s!    GHH"4((rp   os.path.existsT)r   r   )rP  r  r  r   r   r   cpu_freq)r   r  r  s     @r1   test_emulate_use_second_file3TestSystemCPUFrequency.test_emulate_use_second_file  sP    	) ggnnZZ*:4
 ??$$$$
 
 
s   A
A-z% 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    r1   r  ITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mock  s!    9::%d++rp   r  rv          Tpercpu)rP  r  r  r   r   r   r   r}  r  maxmin)r   r  r   freqr  s       @r1   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   700000rx  s   cpu MHz     : 500endswithre   r   r   r   r   r   r   s      r1   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7rp   r   rv  r  Tr       @@r       @g     @r?   r   r   r   r  currentr  r  r   r   r  r   s      @r1   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  rx  s#   cpu MHz     : 100
cpu MHz     : 400r  )r   r   r   nr   s       r1   r   @TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mockB  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7rp   r   rv  r  Tr  !psutil._pslinux.cpu_count_logicalrF  r  r         Y@r  g      i@g     r@r{   g      y@r  r  r  r  s      @r1   test_emulate_multi_cpu-TestSystemCPUFrequency.test_emulate_multi_cpu@  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  rx  s   cpu MHz     : 200)r  r  r   r   r  s      r1   r   OTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mockv  se    }}011''}}011zz),,(zz"677 7777rp   r   rv  r  Tr  r  r{      )r?   r   r   r   r  r  r  s      @r1   %test_emulate_no_scaling_cur_freq_file<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_files  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  r  r   r   rp   r1   r  r    s8   [[L(A[[B  % B% [[L(A[[7""$%%JK  "	 B
"0 [[L(A- B-> [[L(A04 B04d [[L(A/ B/rp   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      r1   test_interrupts"TestSystemCPUStats.test_interrupts  s6    l+'')44<./#555rp   r   N)r   r   r   r   r  r   r   rp   r1   r  r    s    6rp   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{   rF  )r   
getloadavgr?   r  r@   r   float)r   r   rI   
proc_values       r1   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   rp   r1   r  r    s,    [[N*?C? D?rp   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&   r2   netmaskr6   	broadcastr:   rG   r@   rS   )r   r   addrsaddrr  s        r1   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&>>>>%  9rp   r   N)r   r   r   r   r  r   r   rp   r1   r  r    s    ?rp   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mturh   r   r   RuntimeError)r   r   statsri   s       r1   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  rh   r  r   )r   r   r	  rI   s       r1   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                 v   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  [        R                  " S	5      $ g ! [         a     GM  f = f)
Nr   r  zflags=(\d+)?<(.*?)>rF  r{   r  z(.*)  MTU:(\d+)  Metric:(\d+)rL  zno matches were found)r   r  r  r   r   rb  rB   rP   r  grouplowerr@   flagsr  r   fail)r   matches_foundr   r	  ri   matchifconfig_flagspsutil_flagss           r1   
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, ;;677 '   s   F))
F87F8r   N)r   r   r   r   r   r  r  r  r  r
  r  r  r   r   rp   r1   r  r    sy    [[LL$$-M  

:
 [[LL$$-M  88rp   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   rh   r   r   )nicr   ri   s      r1   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 Jrp   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         r1   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   rp   r1   r  r  
  sI    [[LL$$-M   +E +Erp   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
)TestSystemNetConnectionsi>  z psutil._pslinux.socket.inet_ntoprv  zpsutil._pslinux.supports_ipv6Fr  c                 
   [         R                   " [         R                  [         R                  5       n UR                  S5        [
        R                  " SS9  S S S 5        g ! [         a     N)f = f! , (       d  f       g = f)N)z::1r   inet6kind)r%   rG   SOCK_STREAMbindOSErrorr   net_connections)r   supports_ipv6rH   r0   s       r1   test_emulate_ipv6_unsupported6TestSystemNetConnections.test_emulate_ipv6_unsupported@  sf     ]]6??F,>,>?1z" ""0 @?   @?s.   A4A$A4$
A1.A40A11A44
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unixr3  )r   r   r   r   r8  r   )r   r   r   s      r1   test_emulate_unix*TestSystemNetConnections.test_emulate_unixK  sL    // #   0':;q""/88O8 <;;s   (A
A$r   N)
r   r   r   r   r   r   rC   r:  r>  r   r   rp   r1   r0  r0  >  s;    	ZZ2
K	ZZ/eD1 E L1	rp   r0  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	)
TestSystemDiskPartitionsi\  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 ""rc   r   r=   nonerU   )r   r   r@   poprh   )r  ri   rj   rK   devrl   rm   r]   s           r1   df4TestSystemDiskPartitions.test_against_df.<locals>.dfe  s    |D6+,224CIIdOEIIaL99Q<D%)ZZ\"1%5"Cf} #E
CIs4yEt))rp   F)all)	r   disk_partitions
disk_usage
mountpointrl   r   r]   r   rm   )r   rI  partusagerk   rl   rm   r]   s           r1   test_against_df(TestSystemDiskPartitions.test_against_df^  s    		* **u5D%%doo6E#%doo#6 Ad;;%'''uzzD(),@@@@uzzD(),@@@@ 6rp   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
r+  Trz  $psutil._pslinux.cext.disk_partitions)z	/dev/sdb3/rT  rwr  r   )
r?   r  r   rL  fstyper   r   r   r   r   )r   rI   r  rO  r  r  r  r   s           r1   test_zfs_fs$TestSystemDiskPartitions.test_zfs_fsw  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   rL  r   PROCFS_PATHr?  s     r1   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  hasattrrP  r   rQ  rY  r_  r   r   rp   r1   rA  rA  \  sQ    [[B	""+G   A A*.0
)rp   rA  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{   rF  rL  r=   r|   rH        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      r1   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 11re  rf  Tr  Frg  r{   rF  rL  r=   r|   rH  rh  ri  r*  rj  rv  s      r1   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~~***}}*** =<  =<ry  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)Nre  z   3    1   hda 1 2 3 4rf  Tr  Frg  r{   rF  rL  r=   r   )r   r   r   r   rk  rl  rn  ro  rq  rs  rm  rp  rr  rt  ru  )r   r   s     r1   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
            re  rf  Fr  Tperdiskr)  rF  nvme0n1r{   	nvme0n1p1r|   )
r   r   r   r   r   r   rk  rB   rl  rq  rv  s      r1   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  re  rf  Fr  r  c                     U S:H  $ )Nr  r   r   s    r1   is_storage_deviceSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_device  s    9$$rp   Tr   r{   r|   )	r   r   r   r   r   r   rk  rl  rq  )r   r   r   r  s       r1   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  $ )Nre  r   r  s    r1   r  ?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.exists  s    ,,,rp   T)r  psutil._pslinux.os.path.existsr   )r   rk  r   r   rB   )r   r  wprocfswsysfss       r1   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    r1   r  >TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.exists  s    rp   r  Tr   )r   r   r   r]  NotImplementedErrorr   rk  )r   r  s     r1   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   rw  r{  r~  r  r  r  r  r   r   rp   r1   rc  rc    s&    +&+(*,9&,@	+*rp   rc  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 )NrV  )rP  r   st_devmajorminor)r   rH  s     r1   setUpTestRootFsDeviceFinder.setUp&  s3    ggcl!!XXc]
XXc]
rp   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   rP  r  r  ask_proc_partitionsr   r]  r  r  r  ask_sys_dev_blockask_sys_class_block)r   finders     r1   test_call_methods(TestRootFsDeviceFinder.test_call_methods+  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   findrP  r  r  r  r  r  r  r  )r   r  r  r  cbases         r1   test_comparisons'TestRootFsDeviceFinder.test_comparisons9  s    #%{{}(((A77>>,--**,A77>>ODJJ<qGLMM**,A$$&{A{A99A99A99 4rp   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      r1   test_against_findmnt+TestRootFsDeviceFinder.test_against_findmntM  s,    
 *+00245,,,rp   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)NrU  )	/dev/rootrV  ext4rW  r  r   r  )	r   r   r   rL  r   r   devicer   r  )r   r   rO  s      r1   test_disk_partitions_mocked2TestRootFsDeviceFinder.test_disk_partitions_mockedV  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   rp   r1   r  r  $  s    #
% [[/NO P& [[LL##,K   [[/NO- P-
2rp   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)TestMiscii  c                 x    [        S5      n[        R                  " 5       n[        U5      [        U5      :X  d   eg )Nz	boot time)r   r   	boot_timerh   r   s      r1   test_boot_timeTestMisc.test_boot_timek  s2    k*'')< C$5555rp   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$ )Nr\  )re   r  r  s      r1   r   4TestMisc.test_no_procfs_on_import.<locals>.open_mock|  s-    ??7++++ 7777rp   r   rv  Tr  r   zcpu   1 0 0 0 0 0 0 0 0 0
zcpu0  1 0 0 0 0 0 0 0 0 0
zcpu1  1 0 0 0 0 0 0 0 0 0
r\  )
get_testfnrP  mkdirr?   r  rE   writer   r   r   r   r   r]  r7  rN  cpu_percentcpu_times_percentr^  sumr   r  rmtree)r   	my_procfsrI   r   per_cpu_percentper_cpu_times_percentr   s         @r1   test_no_procfs_on_import!TestMisc.test_no_procfs_on_importp  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
            rw  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   rJ  user)r   r   r   r  cpu_percent_percpur  cpu_times_percent_percpus          r1   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)Nr+  Tr,  )	r   r   r   r]  r  r   r}  r  r   r?  s     r1   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     r1   
test_usersTestMisc.test_users  s&     LLND99N222 #rp   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  r\  )r  rP  r  r   r^  r   r]  r7  r   rN  r  r8  r+  r  rL  NoSuchProcessProcess)r   tdirs     r1   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-serialr  c                    [         R                  " 5       n[        UR                  5       5      n[	        5          UR                  5       n[        U5      U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)Nr{   c                     U R                   $ rt   )id)rw   s    r1   <lambda>)TestMisc.test_issue_687.<locals>.<lambda>  s    rp   )key)
r   r  rB   threadsr   sortedr  pidas_dictpids)r   pnthreadsr  tidpts         r1   test_issue_687TestMisc.test_issue_687  s     NNqyy{#\iikGw<8a<///n5a8;;C55C<<$BJJLfkkm+++ \\s   BC
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/statusrU   )r   r   
pid_existsrP  getpidr   r?  s     r1   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  xdist_groupr  r  r   r   rp   r1   r  r  i  sX    6
?-B%/N3)4 [[(+, , ,$rp   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  rU   )	r   rh   r@   r   replacer   sensors_batterypercentr   )r   ri   
acpi_valuer   s       r1   test_percentTestSensorsBattery.test_percent#  sd     m3*002::3CD
--/77:,-111rp   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      r1   r   @TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mock.  7    }}899zz$'' 7777rp   r   rv  T)	r?   r   r   r   r  power_pluggedsecsleftPOWER_TIME_UNLIMITEDr   r   r   r   r   s      @r1   test_emulate_power_plugged-TestSensorsBattery.test_emulate_power_plugged,  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      r1   r   BTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mock@  sL    }}899''}}Y''{{:.. 7777rp   r   rv  Tr?   r   r   r   r  r  r   r  s      @r1   test_emulate_power_plugged_2/TestSensorsBattery.test_emulate_power_plugged_2=  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      r1   r   DTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockO  r  rp   r   rv  Fr  r  s      @r1   test_emulate_power_not_plugged1TestSensorsBattery.test_emulate_power_not_pluggedM  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      r1   r   FTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mock]  sL    }}899''}}Y''{{=11 7777rp   r   rv  Fr  r  s      @r1    test_emulate_power_not_plugged_23TestSensorsBattery.test_emulate_power_not_plugged_2Z  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   ???)re   r  r   r   r  s      r1   r   ETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockm  sU         ('DEEzz&)) 7777rp   r   rv  r  r  s      @r1   test_emulate_power_undetermined2TestSensorsBattery.test_emulate_power_undeterminedj  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   r?  s     r1   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)Nr8  z(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys   88X   )r   r  r   r   r  r  r   s    r1   "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)Nr2  r1  r3  )r   r  r   r  r  r=  s    r1   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-  r5  r9  r>  rA  r   r   rp   r1   r  r     sf     [[LL  )E  22"  &B Jrp   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      r1   r   5TestSensorsBatteryEmulated.test_it.<locals>.open_mock  sr    }}]++{{:..|,,{{3''~..{{:.. 7777rp   z
os.listdirBAT0r  r   rv  )r?   r   r   r   r  r   )r   r   mlistdirmopenr   s       @r1   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   rO  r   r   rp   r1   rD  rD    s    rp   rD  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      r1   r   CTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock  s    }}W%%{{6**~..{{7++~..zz(++|,,zz(++}--zz(++ 7777rp   r   rv  r  z/sys/class/hwmon/hwmon0/temp1r  r   r   rV        >@g      D@      I@	r?   r   r   r   sensors_temperaturesrV  r  highcritical)r   r   tempr   s      @r1   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_temprX  r`  rW  0_typer_  typer   )r  r   r   r   r  s      r1   r   ETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mock  s    }}X&&zz(++v&&zz(++x(({{:..v&&{{6** 7777rp   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    r1   	glob_mockETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mock  sH       	;;:;;GGHH  Irp   r   rv  r  Tr   r   r   rU   rZ  r[  r\  )r   r   rl  r`  r   s       @r1   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   ra  rn  r   r   rp   r1   rR  rR    s    -6#-rp   rR  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$ )NrU  r   z/fan1_labelrV  z/fan1_input2000rJ  r  s      r1   r   4TestSensorsFans.test_emulate_data.<locals>.open_mock  sr    }}W%%{{6**}--{{7++}--{{6** 7777rp   r   rv  r  z/sys/class/hwmon/hwmon2/fan1r  r   r   rV  i  )r?   r   r   r   sensors_fansrV  r  )r   r   fanr   s      @r1   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   rp   r1   rq  rq    s    +rp   rq  c                       \ rS rSr\" 5       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S rS rS r\R,                  R/                  \(       + SS9S 5       rS 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rt   )private_dirtyprivate_cleanru   s     r1   rx   >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rt   )pssru   s     r1   rx   r  #  s     1DqUUDrz   c              3   8   #    U  H  oR                   v   M     g 7frt   )r9  ru   s     r1   rx   r  $  s     3dffdrz   )	spawn_subprocr   r}  r  r  _parse_smapsmemory_mapsr   r  )r   sprocussr  r9  mapss         r1   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;;;rp   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   rP  r  r   r}  r  r  r   )r   r   r   r  r  r  r9  s          r1   test_parse_smaps_mocked#TestProcess.test_parse_smaps_mocked&  s    // # , - 	. &V <gFG1''		4A^^-NCd88O8----(?"?9$$$ HGGs   	A1C
C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  rt   )	r   r  timer   
open_filesr  rP  abspathr  )fnamer  	giveup_atfiles       r1   get_test_file7TestProcess.test_open_files_mode.<locals>.get_test_fileH  se     A		n4ILLNDyyBGGOOE$::#y0	 + rp   r   rr  zr+zw+za+rw   zx+)r  r?   moder   )r   r  testfns      r1   test_open_files_mode TestProcess.test_open_files_modeG  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  $ rt   rB   r  filesr  s   r1   r  7TestProcess.test_open_files_file_gone.<locals>.<lambda>o      s1<<>2c%j@rp   psutil._pslinux.os.readlinkrv  rU   )r   r  r  r?   r  r   r   r   r  r   r7  errnoEINVALr   r   r  r  s     @@r1   test_open_files_file_gone%TestProcess.test_open_files_file_goneh  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  $ rt   r  r  s   r1   r  5TestProcess.test_open_files_fd_gone.<locals>.<lambda>  r  rp   r   rv  )
r   r  r  r?   r  r   r   r   r  r   r  s     @@r1   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  $ rt   r  r  s   r1   r  :TestProcess.test_open_files_enametoolong.<locals>.<lambda>  r  rp   r  rU   rv  psutil._pslinux.debug)r   r  r  r?   r  r   r   r   r7  r  ENAMETOOLONGr   )r   patch_pointr   r  r  s      @@r1   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  rP  r  terminalr   r?  s     r1   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 r+  Trz  foobarz	foo bar  r  r  rU   r   r  r   r   r   r   cmdliner   r   r  r  r   s       r1   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 r+  Trz  r  r  z	foo bar  r  r  r  s       r1   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 r+  Trz  r  r  r  r  s       r1   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    r1   !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)re   rP  r  r  r  s      r1   open_mock_14TestProcess.test_threads_mocked.<locals>.open_mock_1  s<    		}E:;;''T3D3F33rp   r   rv  c                    > U R                  S[        R                  " 5        S35      (       a  [        eT" U /UQ70 UD6$ r  )re   rP  r  PermissionErrorr  s      r1   open_mock_24TestProcess.test_threads_mocked.<locals>.open_mock_2  s<    		}E:;;%%T3D3F33rp   )
r?   r   r   r   r  r  r   r   r]  AccessDenied)r   r  r   r   r  r   s        @r1   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)Npsutil._pslinux.readlinkrv  zpsutil._pslinux.Process.cmdliner  rU   )r   r   r  r   r  r  r   r   r   r   s      r1   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                     [         R                  " S[        S9 n[        R                  " 5       R                  5       nUR                  (       d   eUS:X  d   e S S S 5        g ! , (       d  f       g = f)Nr  rv  rU   )r   r   r  r   r  r  r   r  s      r1   test_cwd_mockedTestProcess.test_cwd_mocked  sS    ZZ&4E
.."&&(C88O8"99
 
 
s   ?A##
A1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   rP  r  r  r   r  r   r]  r  r   r   r   r  s      r1   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   rP  r  r  r   r   r   r]  r  memory_infor   r  s     r1   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  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.prlimitrU   rv  z"psutil._pslinux.Process._is_zombieTr  )r   r   r7  r  ENOSYSr   r  r   r   r]  ZombieProcessrlimitRLIMIT_NOFILEr   r\  r  )r   r  r  r  cms        r1   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)*rH  z(cat)Z1rH  rH  rH  rH  rH  rH  rH  rH  rH  2345rH  rH  rH  rH  6rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  rH  r  rH  rH  7r   r  z/statcatr{   rH  rF  rL  r=   r|   rh  )rE   r   r   rP  r  r   r  r   statusSTATUS_ZOMBIEppidcreate_timer   r  rN  r  systemchildren_userchildren_systemiowaitcpu_num)r   r   r   r  cpus        r1   test_stat_file_parsing"TestProcess.test_stat_file_parsing2  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        B   i  i  i  i  i  i  ri  )r   r   r   r   rP  r  r   r  num_ctx_switches	voluntaryinvoluntarynum_threadsuidsreal	effectivesavedgids_proc_get_eligible_cpuslistrD   )r   r   r  r  r  s        r1   test_status_file_parsing$TestProcess.test_status_file_parsingn  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  rU   rv  r  )	r   r   r7  r  r  r   r  r8  r   r  s      r1   !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c                     [         R                  " 5       nUR                  R                  5       UR                  R                  SS9:w  d   eUR	                  5       S   UR                  R                  SS9:X  d   eg )NT)	monotonicr{   )r   r  r  r  
_get_identr  s     r1   test_create_time_monotonic&TestProcess.test_create_time_monotonic  sf    NNww""$(;(;d(;(KKKK||~a AGG$7$7$$7$GGGGrp   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   r   rp   r1   rz  rz    s    	< 	<%B6B . $&  	9+6
!	$ [[J?) @)&:$xB0 Hrp   rz  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 rt   )r   r  proc)clss    r1   
setUpClass#TestProcessAgainstStatus.setUpClass  s    >>#rp   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  	rF  r   )
r   _psplatform	open_textr+  r  r   re   	partitionrh   rC   )r   	linestartrI   rK   r\  s        r1   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:)r5  r+  r   r   r\  s     r1   	test_name"TestProcessAgainstStatus.test_name  +    %%g.yy~~5(((rp   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   rZ  )r5  r  rfindr  r+  r  r8  s     r1   test_status$TestProcessAgainstStatus.test_status  s]    %%h/jjo)EKK,<=c3'yy!U***rp   c                 f    U R                  S5      nU R                  R                  5       U:X  d   eg )NzPPid:)r5  r+  r  r8  s     r1   	test_ppid"TestProcessAgainstStatus.test_ppid  r;  rp   c                 f    U R                  S5      nU R                  R                  5       U:X  d   eg )NzThreads:)r5  r+  r  r8  s     r1   test_num_threads)TestProcessAgainstStatus.test_num_threads  s-    %%j1yy$$&%///rp   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=   )r5  r   r   rh   r@   r+  r  r8  s     r1   	test_uids"TestProcessAgainstStatus.test_uids  I    %%f-c#u{{}Qq123yy~~5(((rp   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=   )r5  r   r   rh   r@   r+  r  r8  s     r1   	test_gids"TestProcessAgainstStatus.test_gids  rK  rp   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:)r5  r+  r  r  r  r8  s     r1   test_num_ctx_switches.TestProcessAgainstStatus.test_num_ctx_switches  sf    %%&@Ayy))+55>>>%%&CDyy))+775@@@rp   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:rZ  r{   )	r5  r   r   rh   r@   r+  cpu_affinityr  rD   )r   r\  min_max_s       r1   test_cpu_affinity*TestProcessAgainstStatus.test_cpu_affinity  sd    %%&:;#e*S%++c"23JD99))+tE$q4I/JJJJ rp   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)NrS  zpsutil._pslinux.per_cpu_timesrZ  )r5  r   r   r+  r  r  r   r   )r   r\  r   s      r1   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-  r5  r9  r@  rC  rF  rI  rM  r   rP  rW  rZ  r   r   rp   r1   r)  r)    sb     $ $:)+)0)
)
 A AKrp   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   r1  readlinkr   r?  s     r1   test_readlinkTestUtils.test_readlink  sI    ZZOD%%..u5>>>88O8 EDDs   9A
A'r   N)r   r   r   r   rb  r   r   rp   r1   r_  r_    s    rp   r_  )\r\  rf   
contextlibr  r   rP  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  dirname__file__HEREr+   rX   r5   r9   ro  r2   r6   r:   rS   r[   ro   r~   r   r   contextmanagerr   r   r  r  r   r   r   r  rD  rW  r  r  r  r  r  r  r  r0  rA  rc  r  r  r  rD  rR  rq  rz  r)  r_  r   rp   r1   <module>rk     sJ       	 	  	            ' ' $ % ' #   - * ' # #  & ) $  0+24+ 
wwrwwx01K	
	
	
,FDC(@@  (  ( Il31B 1B 41Bh Il3,D> ,D 4,D^ 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W/^ W/ 4W/t Il36 6 46 Il3	?. 	? 4	?" Il3?> ? 4?N Il338> 38 438l 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}H. }H 4}H@ Il3J~ J 4Jd Il3  4rp   