
    ztfl                    :
   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& ddlm'Z' ddlm(Z( ddlm)Z) ddlm*Z* ddlm+Z+ ddlm,Z, erddl-m.Z. ddl-m/Z/ ddl-m0Z0 dd l-m1Z1 ejd                  jg                  ejd                  ji                  e5            Z6d!Z7d"Z8d#Z9d$Z:d%Z;erd&Z< ej                  d'       Z=d( Z>d) Z?d* Z@d+ ZAd, ZBd- ZCd. ZDd/ ZEd0 ZFej                  d1        ZHej                  d2        ZI ej                  e d3       G d4 d5e#             ZK ej                  e d3       G d6 d7e#             ZL ej                  e d3       G d8 d9e#             ZM ej                  e d3       G d: d;e#             ZN ej                  e d3       G d< d=e#             ZO ej                  e d3       G d> d?e#             ZP ej                  e d3       G d@ dAe#             ZQ ej                  e d3       G dB dCe#             ZR ej                  e d3       G dD dEe#             ZS ej                  e d3       G dF dGe#             ZT ej                  e d3       G dH dIe#             ZU ej                  e d3       ej                  e dJ       G dK dLe#                    ZV ej                  e d3       G dM dNe#             ZW ej                  e d3       G dO dPe#             ZX ej                  e d3       G dQ dRe#             ZY ej                  e d3       G dS dTe#             ZZ ej                  e d3       G dU dVe#             Z[ ej                  e d3       G dW dXe#             Z\ ej                  e d3       ej                  e dY       G dZ d[e#                    Z] ej                  e d3       G d\ d]e#             Z^ ej                  e d3       G d^ d_e#             Z_ ej                  e d3       G d` dae#             Z` ej                  e d3       G db dce#             Za ej                  e d3       G dd dee#             Zb ej                  e d3       G df dge#             Zceddhk(  rddilemfZf  efe5       yy)jzLinux specific tests.    )divisionN)LINUX)PY3)FileNotFoundError)
basestring)AARCH64)GITHUB_ACTIONS)GLOBAL_TIMEOUT)HAS_BATTERY)HAS_CPU_FREQ)HAS_GETLOADAVG)
HAS_RLIMIT)PYPY)	QEMU_USER)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)
ThreadTask)
call_until)mock)reload_module)retry_on_failure)safe_rmpath)sh)skip_on_not_implemented)which)CLOCK_TICKS)RootFsDeviceFinder)calculate_avail_vmem)open_binaryi  i  i'  i  i  i   z/sys/class/hwmon/hwmon*c                    dd l }| d d } t        rt        | d      } t        j                  t        j                  t        j
                        }t        j                  |      5  t        j                  |j                  |j                         t        t        j                  d|             dd       cd d d        S # 1 sw Y   y xY wNr      ascii256s      )fcntlr   bytessocketAF_INET
SOCK_DGRAM
contextlibclosing	inet_ntoaioctlfilenoSIOCGIFADDRstructpackifnamer(   ss      a/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/psutil/tests/test_linux.pyget_ipv4_addressr9   M   s    CR[F
vw'fnnf&7&78A			A	 
KK
KVV1LM2

 
 
   #AB<<Cc                    dd l }| d d } t        rt        | d      } t        j                  t        j                  t        j
                        }t        j                  |      5  t        j                  |j                  |j                         t        t        j                  d|             dd       cd d d        S # 1 sw Y   y xY wr"   )r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   SIOCGIFNETMASKr3   r4   r5   s      r8   get_ipv4_netmaskr=   \       CR[F
vw'fnnf&7&78A			A	 
KK
NFKK,G

 
 
r:   c                    dd l }| d d } t        rt        | d      } t        j                  t        j                  t        j
                        }t        j                  |      5  t        j                  |j                  |j                         t        t        j                  d|             dd       cd d d        S # 1 sw Y   y xY wr"   )r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   SIOCGIFBRDADDRr3   r4   r5   s      r8   get_ipv4_broadcastrA   k   r>   r:   c                 H   t        d      5 }g }|D ],  }|j                         }|d   | k(  s|j                  |       . t        |      dk(  rt	        d| z        	 d d d        t        t                    D ]  }||   d   }g }t        dt        |      d      D ]  }|j                  |||dz            dj                  |      }	t        j                  t        j                  |	      }
t        j                  t        j                  |
      ||<    |S # 1 sw Y   xY w)Nz/proc/net/if_inet6r   zcould not find interface %r   :)opensplitappendlen
ValueErrorrangejoinr*   	inet_ptonAF_INET6	inet_ntop)r6   f
all_fieldslinefieldsiunformattedgroupsj	formattedpackeds              r8   get_ipv6_addressesrZ   z   s,   	"	# Eq
 	*DZZ\FbzV#!!&)	*
 z?a:VCDD  E 3z?# B mA&q#k*A. 	2AMM+a!a%01	2HHV$	!!&//9=((&A
1B %E Es    D/DD!c           
         dd l }| d d } t        rt        | d      } t        j                  t        j                  t        j
                        }t        j                  |      5  |j                  |j                         t        t        j                  d|             }t        rd }ndd l}|j                  }dj                  |dd D cg c]  }d	 ||      z   c}      d d
 cd d d        S c c}w # 1 sw Y   y xY w)Nr   r#   r$   r%   c                     | S N xs    r8   ordzget_mac_address.<locals>.ord   s            r'   z%02x:rC   )r(   r   r)   r*   r+   r,   r-   r.   r0   r1   SIOCGIFHWADDRr3   r4   __builtin__ra   rL   )r6   r(   r7   infora   rf   chars          r8   get_mac_addressri      s    CR[F
vw'fnnf&7&78A			A	 K{{HHJv{{66'B
  //CwwRD#d)+DEcrJK K EK Ks   #A&C3	C.
	C3.C33C<c                  T   t        ddgddi      } | j                  d      }|D ]e  }|j                  d      s|j                         \  }}}}t        j                  dd      } |t        |      t        |      t        |            c S  t        d	dj                  |      z        )
zQParse 'free' cmd and return swap memory's s total, used and free
    values.
    free-bLANGC.UTF-8env
Swapztotal used freez&can't find 'Swap' in 'free' output:
%s)r   rG   
startswithcollections
namedtupleintrJ   rL   )outlinesrR   _totalusedrk   nts           r8   	free_swapr}      s     fd^&)!4
5CIIdOE 8??6"#'::< AudD''0ABBc%j#d)SY77	8
 1DIIe4DD rb   c                  6   t        ddgddi      } | j                  d      }|D ]V  }|j                  d      sd |j                         d	d
 D        \  }}}}t        j                  dd      } ||||||       c S  t        ddj                  |      z        )zSParse 'free' cmd and return physical memory's total, used
    and free values.
    rk   rl   rm   rn   ro   rq   Memc              3   2   K   | ]  }t        |        y wr]   )rv   ).0r`   s     r8   	<genexpr>zfree_physmem.<locals>.<genexpr>   s     (KAQ(Ks         ztotal used free shared outputz%can't find 'Mem' in 'free' output:
%s)r   rG   rs   rt   ru   rJ   rL   )rw   rx   rR   rz   r{   rk   sharedr|   s           r8   free_physmemr      s     fd^&)!4
5CIIdOE 6??5!(Ka9J(K%E4v''7B eT4556 0499U3CC rb   c                     t        ddgddi      }|j                  d      D ]5  }|j                         }| |v st        |j                  d      d         c S  t	        d	| z        )
Nvmstatz-srm   rn   ro   rq    r   z can't find %r in 'vmstat' output)r   rG   striprv   rJ   )statrw   rR   s      r8   r   r      sl    
hFI#6
7C		$ +zz|4<tzz#q)**+ 7$>
??rb   c            
          t        ddg      j                         } d| v rt        j                  d      t	        t        t        t        j                  d| j                         d                     S )Nrk   z-VUNKNOWNzcan't determine free versionz\d+rC   )
r   r   unittestSkipTesttuplemaprv   refindallrG   )rw   s    r8   get_free_version_infor      sZ    
fd^

"
"
$CC >??S"**VSYY[_=>??rb   c              #       K    fd}t         t        rdnd}t        j                  |d|      5 }| ddd       y# 1 sw Y   yxY ww)zMock open() builtin and forces it to return a certain content
    for a given path. `pairs` is a {"path": "content", ...} dict.
    c                     | v rZ|    }t         r:t        |t              rt        j                  |      S t        j
                  |      S t        j
                  |      S  | g|i |S r]   )r   
isinstancer   ioStringIOBytesIO)nameargskwargscontent	orig_openpairss       r8   	open_mockz$mock_open_content.<locals>.open_mock   sb    5=DkGgz2;;w//::g..zz'**T3D3F33rb   builtins.open__builtin__.openTcreateside_effectNrF   r   r   patch)r   r   patch_pointmr   s   `   @r8   mock_open_contentr      sH     4 I%(/.@K	K)	D   s   /AA	AA
Ac              #       K    fd}t         t        rdnd}t        j                  |d|      5 }| ddd       y# 1 sw Y   yxY ww)zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    c                 *    | k(  r | g|i |S r]   r^   )r   r   r   excfor_pathr   s      r8   r   z&mock_open_exception.<locals>.open_mock   s%    8IT3D3F33rb   r   r   Tr   Nr   )r   r   r   r   r   r   s   ``   @r8   mock_open_exceptionr      sH     4 I%(/.@K	K)	D   s   0AA	AAAz
LINUX onlyc                   z    e Zd Zd Z e       d        Z e       d        Z e       d        Z e       d        Zy)"TestSystemVirtualMemoryAgainstFreec                     t               j                  }t        j                         j                  }| j	                  ||       y r]   )r   rz   psutilvirtual_memoryassertEqualself	cli_valuepsutil_values      r8   
test_totalz-TestSystemVirtualMemoryAgainstFree.test_total  s3     N((	,,.44L1rb   c                     t               dk  rt        j                  d      t               dk\  rt        j                  d      t               j                  }t        j                         j                  }| j                  ||t               y )N   r      free version too oldrD   r   r   free version too recentdelta)	r   r   r   r   r{   r   r   assertAlmostEqualr   r   s      r8   	test_usedz,TestSystemVirtualMemoryAgainstFree.test_used  sz     !"Z/##$:;; "i/##$=>> N''	,,.33|+< 	 	
rb   c                     t               j                  }t        j                         j                  }| j	                  ||t
               y Nr   )r   rk   r   r   r   r   r   s      r8   	test_freez,TestSystemVirtualMemoryAgainstFree.test_free(  s>     N''	,,.33|+< 	 	
rb   c           
          t               }|j                  }|dk(  rt        j                  d      t	        j
                         j                  }| j                  ||t        |d|d|j                         y )Nr   z%free does not support 'shared' columnr    
r   msg)	r   r   r   r   r   r   r   r   output)r   rk   
free_valuer   s       r8   test_sharedz.TestSystemVirtualMemoryAgainstFree.test_shared0  si    ~[[
?##$KLL,,.55# *L$++F	 	 	
rb   c           
      4   t        ddg      }|j                  d      }d|d   vrt        j                  d      t	        |d   j                         d         }t        j                         j                  }| j                  ||t        |d	|d
|       y )Nrk   rl   rq   	availabler   z(free does not support 'available' columnr   rC   r   r   r   )
r   rG   r   r   rv   r   r   r   r   r   )r   rw   rx   r   r   s        r8   test_availablez1TestSystemVirtualMemoryAgainstFree.test_available>  s     &$ 		$eAh&##$NOOU1X^^-b12J!002<<L""'$.cB	 # rb   N)	__name__
__module____qualname__r   r   r   r   r   r   r^   rb   r8   r   r     sc    2
 
 
& 
 
 
 
  rb   r   c                       e Zd Zd Z e       d        Z e       d        Z e       d        Z e       d        Z e       d        Z	y)$TestSystemVirtualMemoryAgainstVmstatc                     t        d      dz  }t        j                         j                  }| j	                  ||t
               y )Nztotal memory   r   )r   r   r   rz   r   r   r   vmstat_valuer   s      r8   r   z/TestSystemVirtualMemoryAgainstVmstat.test_totalS  s@    n-4,,.44,.? 	 	
rb   c                    t               dk  rt        j                  d      t               dk\  rt        j                  d      t        d      dz  }t	        j
                         j                  }| j                  ||t               y )Nr   r   r   r   zused memoryr   r   )	r   r   r   r   r   r   r{   r   r   r   s      r8   r   z.TestSystemVirtualMemoryAgainstVmstat.test_usedZ  s|     !"Z/##$:;; "i/##$=>>m,t3,,.33,.? 	 	
rb   c                     t        d      dz  }t        j                         j                  }| j	                  ||t
               y )Nzfree memoryr   r   )r   r   r   rk   r   r   r   s      r8   r   z.TestSystemVirtualMemoryAgainstVmstat.test_freen  s@    m,t3,,.33,.? 	 	
rb   c                     t        d      dz  }t        j                         j                  }| j	                  ||t
               y )Nzbuffer memoryr   r   )r   r   r   buffersr   r   r   s      r8   test_buffersz1TestSystemVirtualMemoryAgainstVmstat.test_buffersv  s@    o.5,,.66,.? 	 	
rb   c                     t        d      dz  }t        j                         j                  }| j	                  ||t
               y )Nzactive memoryr   r   )r   r   r   activer   r   r   s      r8   test_activez0TestSystemVirtualMemoryAgainstVmstat.test_active~  s@    o.5,,.55,.? 	 	
rb   c                     t        d      dz  }t        j                         j                  }| j	                  ||t
               y )Nzinactive memoryr   r   )r   r   r   inactiver   r   r   s      r8   test_inactivez2TestSystemVirtualMemoryAgainstVmstat.test_inactive  sA    /047,,.77,.? 	 	
rb   N)
r   r   r   r   r   r   r   r   r   r   r^   rb   r8   r   r   Q  sz    
 
 
& 
 
 
 
 
 
 
 
rb   r   c                   D    e Zd Zd Z e       d        Zd Zd Zd Zd Z	y)TestSystemVirtualMemoryMocksc                     t        j                  d      j                         }t        d|i      5 }t	        j
                  d      5 }t	        j                  d       t        j                         }|j                  sJ | j                  t        |      d       |d   }| j                  dt        |j                               | j                  d	t        |j                               | j                  d
t        |j                               | j                  dt        |j                               | j                  dt        |j                               | j                  dt        |j                               | j                  dt        |j                               | j                  |j                  d       | j                  |j                   d       | j                  |j"                  d       | j                  |j$                  d       | j                  |j&                  d       | j                  |j(                  d       | j                  |j*                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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   calledr   rI   assertInstrmessager   r   r   r   r   r   slabr   r   r   wsretws         r8   test_warnings_on_missesz4TestSystemVirtualMemoryMocks.test_warnings_on_misses  s    // 	# 	  	 9: 	.a((5 .%%h/++-xxx  R!,qE93qyy> hAII7hAII7hAII7j#aii.9iQYY8k3qyy>:  Q/  Q/  q1  Q/  a0  2  1-+.	. 	.. .	. 	.s$   JHI8'J8J	=JJc                    i }t        d      5 }|D ])  }|j                         }t        |d         dz  ||d   <   + 	 d d d        t        |      }d|v r,|d   }t	        ||z
        |z  dz  }| j                  |d       y y # 1 sw Y   ExY w)Nr   r   r   r   s   MemAvailable:d   r#   )r    rG   rv   r   abs
assertLess)r   memsrP   rR   rS   abdiff_percents           r8   test_avail_old_percentz3TestSystemVirtualMemoryMocks.test_avail_old_percent  s     ) 	8Q 8"%fQi.4"7VAY8	8
 !&t#%&Aq1u:>C/LOOL"- $	8 	8s   /BBc                    t        j                  d      j                         }t        d|i      5 }t	        j
                  d      5 }t        j                         }d d d        |j                  sJ | j                  j                  d       d   }| j                  dt        |j                               d d d        y # 1 sw Y   fxY w# 1 sw Y   y xY w)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   r   r   s         r8    test_avail_old_comes_from_kernelz=TestSystemVirtualMemoryMocks.test_avail_old_comes_from_kernel  s     // #   	 9: 	a((5 .++-.88O8S]]N;1AMM>AII	 	. .	 	$   CCACC	CCc                    t        j                  d      j                         }t        d|i      5 }t	        j
                  d      5 }t        j                         }d d d        |j                  sJ | j                  j                  d       d   }| j                  dt        |j                               d d d        y # 1 sw Y   fxY w# 1 sw Y   y xY w)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         r8   test_avail_old_missing_fieldsz:TestSystemVirtualMemoryMocks.test_avail_old_missing_fields  s     // 
# 
  	 9: 	a((5 .++-.88O8S]],KL1AMM>AII	 	. .	 	r  c           	      
   t        j                  d      j                         }t        d|i      5  t	        dt        t        j                  d            5  t        j                  d      5 }t        j                         }| j                  |j                  d       |d   }| j                  d	t        |j                                d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
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/zoneinfono such file or directoryTr   r  r   r
  )r   r   r   r   r   IOErrorerrnoENOENTr   r   r   r   r   r   r   r   r   )r   r   r   r   r   s        r8   test_avail_old_missing_zoneinfoz<TestSystemVirtualMemoryMocks.test_avail_old_missing_zoneinfo  s     // #   	 9: 	$ &AB  ,,D9 	R //1C$$'F 1AMMFAII			 	
	 		 	 	s<   %C9C--AC!C-C9!C*&C--C6	2C99Dc                    t        j                  d      j                         }t        d|i      5 }t	        j
                         }|j                  sJ | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d	       | j                  |j                  d
       | j                  |j                   d       d d d        y # 1 sw Y   y xY w)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   r   rz   rk   r   r   r   r   r   r   r   )r   r   r   mems       r8   test_virtual_memory_mockedz7TestSystemVirtualMemoryMocks.test_virtual_memory_mocked  s   // 1# 1b c 	d 9: 	6a'')C88O8SYY
3SXXx0S[[(3SZZ9SZZ3SZZ2S\\84SXXy1S]]H5	6 	6 	6s   DEE"N)
r   r   r   r   r   r  r  r  r  r  r^   rb   r8   r   r     s5    $.L . .82B@6rb   r   c                   n    e Zd Zed        Zd Z e       d        Z e       d        Zd Z	d Z
d Zd Zy	)
TestSystemSwapMemoryc                  v    t        d      5 } | j                         }ddd       dv xr d|v S # 1 sw Y   xY w)z3Return True if /proc/meminfo provides swap metrics.r   Nz
SwapTotal:z	SwapFree:)rF   read)rP   datas     r8   meminfo_has_swap_infoz*TestSystemSwapMemory.meminfo_has_swap_infog  sC     /" 	a668D	t#;t(;;	 	s   /8c                     t               j                  }t        j                         j                  }| j	                  ||t
              S r   )r}   rz   r   swap_memoryr   r   r   r   r   s      r8   r   zTestSystemSwapMemory.test_totaln  sC    [&&
))+11%%,= & 
 	
rb   c                     t               j                  }t        j                         j                  }| j	                  ||t
              S r   )r}   r{   r   r#  r   r   r$  s      r8   r   zTestSystemSwapMemory.test_usedu  C    [%%
))+00%%,= & 
 	
rb   c                     t               j                  }t        j                         j                  }| j	                  ||t
              S r   )r}   rk   r   r#  r   r   r$  s      r8   r   zTestSystemSwapMemory.test_free}  r&  rb   c                    t        j                  dd      5 }t        j                  d      5 }t        j                  d       t        j                         }|j                  sJ | j                  t        |      d       |d   }| j                  dt        |j                               | j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	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   r   rI   r   r   r   sinsoutr   r   r   r   r   s        r8   test_missing_sin_soutz*TestSystemSwapMemory.test_missing_sin_sout  s    ZZ-d; 	.q((5 .%%h/((*xxx  R!,qE$		N
   !,  1-.	. 	.. .	. 	.s#   DB5C5$D5C>	:DD
c                 4   t        dt        t        j                  d            5 }t	        j
                  d      5 }t	        j                  d       t        j                         }|j                  sJ | j                  t        |      d       |d   }| j                  dt        |j                               | j                  |j                  d       | j                  |j                   d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nz/proc/vmstatr  Tr   r   r   r   zK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)r   r  r  r  r   r   r   r   r#  r   r   rI   r   r   r   r+  r,  r-  s        r8   test_no_vmstat_mockedz*TestSystemSwapMemory.test_no_vmstat_mocked  s     GELL2MN
 	.((5 .%%h/((*xxx  R!,qE6		N
   !,  1-.	. 	.. .	. 	.s#   DB5D1DD	DDc                    | j                         st        j                  d      S t        j                  d      5 }t        j                         }d d d        j                  rJ dd lm	} |j                         \  }}}}}}}||z  }||z  }| j                  j                  |       | j                  |j                  |t               y # 1 sw Y   ~xY w)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor   r   )r!  r   skipr   r   r   r#  r   psutil._psutil_linux_psutil_linuxlinux_sysinfor   rz   r   rk   r   )r   r   swapcextry   rz   rk   unit_multipliers           r8   test_meminfo_against_sysinfoz1TestSystemSwapMemory.test_meminfo_against_sysinfo  s     ))+==!DEEZZ<= 	(%%'D	(88|+373E3E3G01aE4 U+tyy$6GH	( 	(s   CCc                     t        ddi      5 }t        j                          |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   rb   )r   r   r#  r   r   r   s     r8   #test_emulate_meminfo_has_no_metricsz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metrics  s?     56 	! 88O8	 	 	s	   #;AN)r   r   r   staticmethodr!  r   r   r   r   r.  r0  r9  r<  r^   rb   r8   r  r  e  s\    < <
 
 
 
 
. .&I"rb   r  c                       e Zd Zd Zy)TestSystemCPUTimesc                    t        j                         j                  }t        j                  dt        j                         d         d   }t        t        t        |j                  d                  }|dk\  r| j                  d|       n| j                  d|       |dk\  r| j                  d|       n| j                  d|       |d	k\  r| j                  d
|       y | j                  d
|       y )Nz\d+\.\d+\.\d+   r   .)rA        steal)rA  rC  r'   guest)r   rA  r   
guest_nice)r   	cpu_times_fieldsr   r   osunamer   r   rv   rG   r   assertNotIn)r   rS   
kernel_verkernel_ver_infos       r8   test_fieldszTestSystemCPUTimes.test_fields  s    !!#++ZZ 0"((*Q-@C
C)9)9#)> ?@j(MM'6*Wf-j(MM'6*Wf-i'MM,/\62rb   N)r   r   r   rO  r^   rb   r8   r?  r?    s    3rb   r?  c                   ^   e Zd Z ej                  ej                  j                  d       d      d        Z ej                  ej                  j                  d       d      d        Z	 ej                   e
d       d      d	        Z ej                   e
d
       d      d        Zd Zy)TestSystemCPUCountLogical/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc                 $   t        d      5 }|j                         j                         }d d d        dt              v rEt	        |j                  d      d         dz   }| j                  t        j                         |       y y # 1 sw Y   \xY w)NrR  -r   )	rF   r  r   r   rv   rG   r   r   	cpu_count)r   rP   values      r8   test_against_sysdev_cpu_onlinez8TestSystemCPUCountLogical.test_against_sysdev_cpu_online  s}    
 23 	%qFFHNN$E	%#e*C(+,q0EV--/7 	% 	%s   BB/sys/devices/system/cpuz&/sys/devices/system/cpu does not existc           	          t        j                  d      }t        |D cg c]  }t        j                  d|      | c}      }| j                  t        j                         |       y c c}w )NrX  zcpu\d+$)rJ  listdirrI   r   searchr   r   rU  )r   lsr`   counts       r8   test_against_sysdev_cpu_numz5TestSystemCPUCountLogical.test_against_sysdev_cpu_num  sW    
 ZZ12K1bii
A&>&JQKL))+U3 Ls
   A+A+nprocznproc utility not availablec                 x    t        t        d            }| j                  t        j                  d      |       y )Nznproc --allTlogical)rv   r   r   r   rU  )r   nums     r8   test_against_nprocz,TestSystemCPUCountLogical.test_against_nproc  s,    "]#$))$7=rb   lscpulscpu utility not availablec                     t        d      }t        |j                  d      D cg c]  }|j                  d      r| c}      }| j	                  t        j                  d      |       y c c}w )Nlscpu -prq   #Tra  )r   rI   rG   rs   r   r   rU  )r   rw   r`   rc  s       r8   test_against_lscpuz,TestSystemCPUCountLogical.test_against_lscpu  sT    nciioGQ\\#5F1GH))$7= Hs
   A-A-c                 &   dd l }|j                  j                         }t        j                  dt
              5 }| j                  |j                  j                         |       |j                  sJ t        j                  dd      5 }| j                  |j                  j                                | j                  |j                  d       | j                  |j                  d   d   d       d d d        t        d	d
      5 }|j                         }d d d        t        j                        }t        j                  d|d      5 }| j                  |j                  j                         |       d d d        t        d	di      5 }| j                  |j                  j                         |       |j                  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr   zpsutil._pslinux.os.sysconfr   r)  Tr*  rA  
/proc/stat/proc/cpuinforbreturn_valuer   rb   )psutil._pslinux_pslinuxcpu_count_logicalr   r   rJ   r   r   assertIsNone
call_count	call_argsrF   r  r   r   r   )r   r   originalr   rP   cpuinfo_data	fake_files          r8   test_emulate_fallbacksz0TestSystemCPUCountLogical.test_emulate_fallbacks  s   ??446 ZZ(j
 	 V__>>@(K88O8 1$? B1!!&//"C"C"EF  q1  Q!2LA	B ot, ( vvx(

<0I%Id P  !B!B!DhOP #OS#9:  a  !B!B!DhOxxx 5	  	 B B( (P P   5	  	 sm   AH
A(G2HG#5H+G/7H9G;HG 	H#G,	(H/G8	4H;H	 HHN)r   r   r   r   skipIfrJ  pathexistsrW  r^  r   rd  rj  r{  r^   rb   r8   rQ  rQ    s    X__GGNN;<<78	8 X__GGNN45504	4
 X__w')FG> H> X__w')FG> H>
" rb   rQ  c                   X    e Zd Z ej                   ed       d      d        Zd Zd Zy)TestSystemCPUCountCoresre  rf  c                 &   t        d      }t               }|j                  d      D ]9  }|j                  d      r|j                  d      }|j	                  |d          ; | j                  t        j                  d      t        |             y )Nrh  rq   ri  ,r   Fra  )	r   setrG   rs   addr   r   rU  rI   )r   rw   core_idsrR   rS   s        r8   rj  z*TestSystemCPUCountCores.test_against_lscpu#  ss    n5IIdO 	(D??3'CVAY'	( 	))%8#h-Hrb   c                    t         j                  j                         }t        j                  dg       5 }t         j                  j                         }|j
                  sJ 	 d d d        || j                  |       y y # 1 sw Y   xY w)N	glob.globrq  )r   rs  cpu_count_coresr   r   r   r   )r   meth_1r   meth_2s       r8   test_method_2z%TestSystemCPUCountCores.test_method_2-  ss    002ZZ"5 	__446F88O8	 VV, 	 	s   -BBc                 F   t        j                  dg       5 }t        j                  dd      5 }| j                  t        j                  j                                d d d        d d d        j                  sJ j                  sJ y # 1 sw Y   .xY w# 1 sw Y   2xY w)Nr  r  r)  Tr*  )r   r   ru  r   rs  r  r   )r   m1m2s      r8   test_emulate_nonez)TestSystemCPUCountCores.test_emulate_none5  s    ZZ"5 	E1$? E2!!&//"A"A"CDE	E yyyyyyE E	E 	Es"   B.BBB	BB N)	r   r   r   r   r|  r   rj  r  r  r^   rb   r8   r  r  !  s6    X__w')FGI HI-rb   r  c                   <   e Zd Z ej                  e d      d        Z ej                  e d       ej                  ed      d               Z ej                  e d      d        Z	 ej                  e d      d        Z
 ej                  e d      d        Zy)	TestSystemCPUFrequencynot supportedc                     fd}t         j                  j                  t        j                  d|d      5  t        j                         sJ 	 d d d        y # 1 sw Y   y xY w)Nc                 8    | j                  d      ry |       S )N&/sys/devices/system/cpu/cpufreq/policyFrs   )r}  orig_existss    r8   path_exists_mockzMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mockB  s    GH"4((rb   os.path.existsT)r   r   )rJ  r}  r~  r   r   r   cpu_freq)r   r  r  s     @r8   test_emulate_use_second_filez3TestSystemCPUFrequency.test_emulate_use_second_file?  sR    	) ggnnZZ*:4
 	% ??$$$	% 	% 	%s   AA#z,aarch64 does not report mhz in /proc/cpuinfoc                    fd}t         j                  j                  	 t        j                  d|      5  t        t        j                         t        j                         }|sJ |       | j                  |j                  d       | j                  |j                  d       t        j                  d      D ]:  }| j                  |j                  d       | j                  |j                  d       < 	 d d d        t        t        j                         t        t               y # 1 sw Y   2xY w# t        t        j                         t        t               w xY w)Nc                 8    | j                  d      ry |       S )Nz/sys/devices/system/cpu/Fr  )r}  os_path_existss    r8   r  zITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mockS  s    9:%d++rb   r  rl          Tpercpu)rJ  r}  r~  r   r   r   r   rs  r  r   maxmin)r   r  r   freqr  s       @r8   test_emulate_use_cpuinfoz/TestSystemCPUFrequency.test_emulate_use_cpuinfoN  s    
	, 	",:JK 4foo.oo'Cs  #.  #."OO48 4D$$TXXs3$$TXXs344 &//*&!4 4 &//*&!s#   D9 CD-<D9 -D62D9 9*E#c                    fd}t         t        rdnd}t        j                  ||      5  t        j                  dd      5  t	        j
                         }| j                  |j                  d       |j                  d	k7  r| j                  |j                  d
       |j                  d	k7  r| j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                    | j                  d      r&| j                  d      rt        j                  d      S | j                  d      r&| j                  d      rt        j                  d      S | j                  d      r&| j                  d      rt        j                  d      S | dk(  rt        j                  d	      S  | g|i |S )
N/scaling_cur_freqr     500000/scaling_min_freq   600000/scaling_max_freqs   700000rn  s   cpu MHz     : 500endswithrs   r   r   r   r   r   r   s      r8   r   z;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mockj  s    }}01doo87 zz),,2389 zz),,2389 zz),,(zz"677 7777rb   r   r   rl  r  Tr       @@r       @g     @
rF   r   r   r   r   r  r   currentr  r  r   r   r   r  r   s       @r8   test_emulate_dataz(TestSystemCPUFrequency.test_emulate_datah  s    	8$ 	),o2DZZ; 		6,4@ 6(  u5 88s?$$TXXu588s?$$TXXu56		6 		66 6		6 		6s$   C*BCC*C'	#C**C3c                 h   fd}t         t        rdnd}t        j                  ||      5  t        j                  dd      5  t        j                  dd	      5  t	        j
                  d
      }| j                  |d   j                  d       |d   j                  dk7  r| j                  |d   j                  d       |d   j                  dk7  r| j                  |d   j                  d       | j                  |d   j                  d       |d   j                  dk7  r| j                  |d   j                  d       |d   j                  dk7  r| j                  |d   j                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                    | }|j                  d      r&|j                  d      rt        j                  d      S |j                  d      r&|j                  d      rt        j                  d      S |j                  d      r&|j                  d      rt        j                  d      S |j                  d      r&|j                  d      rt        j                  d	      S |j                  d      r&|j                  d      rt        j                  d
      S |j                  d      r&|j                  d      rt        j                  d      S | dk(  rt        j                  d      S  | g|i |S )Nr  z'/sys/devices/system/cpu/cpufreq/policy0s   100000r     200000r  s   300000z'/sys/devices/system/cpu/cpufreq/policy1s   400000r  r  rn  s#   cpu MHz     : 100
cpu MHz     : 400r  )r   r   r   nr   s       r8   r   z@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mock  s=   Azz-.1<<94 zz),,/0Q\\96 zz),,/0Q\\96 zz),,/0Q\\96 zz),,/0Q\\96 zz),,/0Q\\96 zz),,(zz"IJJ 7777rb   r   r   rl  r  Tr  !psutil._pslinux.cpu_count_logicalrA  r  r         Y@r  g      i@g     r@r   g      y@r  r  r  r  s       @r8   test_emulate_multi_cpuz-TestSystemCPUFrequency.test_emulate_multi_cpu  sk   	8> 	),o2DZZ; 	=,4@ =ZZ7a = "??$7D$$T!W__e<Aw{{c)((ae<Aw{{c)((ae<$$T!W__e<Aw{{c)((ae<Aw{{c)((ae<==	= 	== == =	= 	=s<   F(FDF7F?F(FFF%	!F((F1c                    fd}t         t        rdnd}t        j                  ||      5  t        j                  dd      5  t        j                  dd	      5  t	        j
                         }| j                  |j                  d
       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                     | j                  d      rt        t        j                  d      | j                  d      rt	        j
                  d      S | dk(  rt	        j
                  d      S  | g|i |S )Nr  rc   z/cpuinfo_cur_freqr  rn  s   cpu MHz     : 200)r  r  r  r  r   r   r  s      r8   r   zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mock  sj    }}01ellB//23zz),,(zz"677 7777rb   r   r   rl  r  Tr  r  r      )rF   r   r   r   r   r  r   r  r  s       @r8   %test_emulate_no_scaling_cur_freq_filez<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file  s    	8 	),o2DZZ; 	8,4@ 8ZZ7a 8 "??,D$$T\\37	88	8 	88 88 8	8 	8s;   C B41B(B4C (B1-B44B=	9C  C	N)r   r   r   r   r|  r   r  r   r  r  r  r  r^   rb   r8   r  r  =  s    X__%7% 8% X__%7X__WLM" N 8"0 X__%76 86@ X__%71= 81=f X__%78 88rb   r  c                       e Zd Zd Zd Zy)TestSystemCPUStatsc                 ~    t        d      }t        j                         j                  }| j	                  ||d       y )Nzcontext switches  r   )r   r   	cpu_statsctx_switchesr   r   s      r8   test_ctx_switchesz$TestSystemCPUStats.test_ctx_switches  s6    01'')66|\Erb   c                 ~    t        d      }t        j                         j                  }| j	                  ||d       y )N
interruptsr  r   )r   r   r  r  r   r   s      r8   test_interruptsz"TestSystemCPUStats.test_interrupts  s5    l+'')44|\Erb   N)r   r   r   r  r  r^   rb   r8   r  r    s    F
Frb   r  c                   @    e Zd Z ej                  e d      d        Zy)TestLoadAvgr  c                 z   t        j                         }t        d      5 }|j                         j	                         }d d d        | j                  t        d         |d   d       | j                  t        |d         |d   d       | j                  t        |d         |d   d       y # 1 sw Y   sxY w)Nz/proc/loadavgr   r   r   rA  )r   
getloadavgrF   r  rG   r   float)r   r   rP   
proc_values       r8   test_getloadavgzTestLoadAvg.test_getloadavg  s    ((*/" 	*a)J	* 	uZ]3\!_ANuZ]3\!_ANuZ]3\!_AN	* 	*s   B11B:N)r   r   r   r   r|  r   r  r^   rb   r8   r  r    s&    X__'9O :Orb   r  c                       e Zd Zd Zy)TestSystemNetIfAddrsc                    t        j                         j                         D ]_  \  }}|D ]S  }|j                  t         j                  k(  r&| j                  |j                  t        |             G|j                  t        j                  k(  r| j                  |j                  t        |             | j                  |j                  t        |             |j                  &| j                  |j                  t        |             | j                  t        |      d       |j                  t        j                  k(  s|j                  j!                  d      d   }| j#                  |t%        |             V b y )Nz0.0.0.0%r   )r   net_if_addrsitemsfamilyAF_LINKr   addressri   r*   r+   r9   netmaskr=   	broadcastrA   rN   rG   r   rZ   )r   r   addrsaddrr  s        r8   test_ipszTestSystemNetIfAddrs.test_ips  s%   !..0668 	EKD% E;;&..0$$T\\?43HI[[FNN2$$T\\3CD3IJ$$T\\3CD3IJ~~1(( NN,>t,D (();D)A9M[[FOO3 #ll005a8GMM'+=d+CD)E	Erb   N)r   r   r   r  r^   rb   r8   r  r    s    Erb   r  QEMU user not supportedc                       e Zd Z ej                   ed       d      d        Zd Z ej                   ed       d      d        Zy)TestSystemNetIfStatsifconfigifconfig utility not availablec           
      L   t        j                         j                         D ]p  \  }}	 t        d|z        }| j	                  |j
                  d|v |       | j	                  |j                  t        t        j                  d|      d                r y # t        $ r Y w xY w)Nifconfig %sRUNNING)r   z(?i)MTU[: ](\d+)r   )r   net_if_statsr  r   r   isupmturv   r   r   RuntimeError)r   r   statsrw   s       r8   test_against_ifconfigz*TestSystemNetIfStats.test_against_ifconfig!  s    !..0668 		KD%-.   Y#-=3 G  IIs2::.A3#G#JK		   s   B	B#"B#c           	          t        j                         j                         D ]]  \  }}t        d|z        5 }| j	                  |j
                  t        |j                         j                                      d d d        _ y # 1 sw Y   jxY w)Nz/sys/class/net/%s/mtu)	r   r  r  rF   r   r  rv   r  r   )r   r   r  rP   s       r8   test_mtuzTestSystemNetIfStats.test_mtu.  s~    !..0668 	CKD%-45 C  C0@,ABC C	CC Cs   ABB	c                 `   d}t        j                         j                         D ]c  \  }}	 t        d|z        }t	        j
                  d|      }|rt        |j                               dk\  rs|dz  }t        |j                  d      j                         j                  d            }t        |j                  j                  d            }| j                  ||       t	        j
                  d|      }|st        |j                               dk\  s|dz  }t        |j                  d      j                         j                               }t        |j                  j                  d            }| j                  ||       f |s| j                  d	      y # t        $ r Y w xY w)
Nr   r  zflags=(\d+)?<(.*?)>rA  r   r  z(.*)  MTU:(\d+)  Metric:(\d+)r   zno matches were found)r   r  r  r   r   r[  rI   rV   r  grouplowerrG   flagsr   r  fail)r   matches_foundr   r  rw   matchifconfig_flagspsutil_flagss           r8   
test_flagszTestSystemNetIfStats.test_flags3  ss    !..0668 	GKD%G-. 		"8#>S0A5!Q&M%(Q)=)=)?)E)Ec)J%KN#&u{{'8'8'=#>L$$^\B II&FLEU\\^!4!9%*),U[[^-A-A-C-I-I-K)L'*5;;+<+<S+A'B((F)	G, ))344 '   s   F  	F-,F-N)	r   r   r   r   r|  r   r  r  r  r^   rb   r8   r  r    s^     X__z**,LM
 N
C
 X__z**,LM5 N5rb   r  c                   `    e Zd Z ej                   ed       d       e       d               Zy)TestSystemNetIOCountersr  r  c                    d }t        j                  dd      }|j                         D ]  \  }}	  ||      }| j	                  |j
                  |d   d       | j	                  |j                  |d   d       | j	                  |j                  |d	   d
       | j	                  |j                  |d   d
       | j	                  |j                  |d   d       | j	                  |j                  |d   d       | j	                  |j                  |d   d       | j	                  |j                  |d   d        y # t        $ r Y (w xY w)Nc                 v   i }t        d| z        }t        t        j                  d|      d         |d<   t        t        j                  d|      d         |d<   t        t        j                  d|      d         |d<   t        t        j                  d|      d	         |d
<   t        t        j                  d|      d         |d<   t        t        j                  d|      d	         |d<   t        t        j                  d|      d         |d<   t        t        j                  d|      d         |d<   |S )Nr  zRX packets[: ](\d+)r   packets_recvzTX packets[: ](\d+)packets_sentzerrors[: ](\d+)errinr   erroutzdropped[: ](\d+)dropindropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)
bytes_sent)r   rv   r   r   )nicr   rw   s      r8   r  z?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfigW  s+   C]S()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 Jrb   TF)pernicnowrapr  i (  r   r  r  r   r   r  
   r  r  r  )r   net_io_countersr  r  r   r  r  r  r   r  r  r  r  )r   r  nior   r  ifconfig_rets         r8   r  z-TestSystemNetIOCounters.test_against_ifconfigT  s   	* $$D?99; 	KD%'~ ""  ,|"<I #  ""  ,|"<I #  """"L$@ #  """"L$@ #  ""\'2" #  ""l84B #  ""l84B #  ""|I6b # 5	   s   E	EEN)r   r   r   r   r|  r   r   r  r^   rb   r8   r  r  R  s6    X__z**,LM3  N3rb   r  c                   t    e Zd Z ej                  de       ej                  dd      d               Zd Zy)	TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntoprl  zpsutil._pslinux.supports_ipv6Fr  c                     	 t        j                   t         j                  t         j                        }| j                  |j                         |j                  d       t        j                  d       y # t         j                  $ r Y ,w xY w)N)z::1r   inet6kind)	r*   rN   SOCK_STREAM
addCleanupclosebinderrorr   net_connections)r   supports_ipv6rO   r7   s       r8   test_emulate_ipv6_unsupportedz6TestSystemNetConnections.test_emulate_ipv6_unsupported  se    	foov/A/ABAOOAGG$FF: 	G, || 		s   AA7 7BBc                     t        j                  d      }t        d|i      5 }t        j                  d       |j
                  sJ 	 d d d        y # 1 sw Y   y xY w)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unixr  )r   r   r   r   r  r   )r   r   r   s      r8   test_emulate_unixz*TestSystemNetConnections.test_emulate_unix  sU    // #   0':; 	q""/88O8	 	 	s   %AAN)r   r   r   r   r   rJ   r  r  r^   rb   r8   r  r    s?    TZZ2
KTZZ/eD- E L-	rb   r  c                   n    e Zd Z ej                   eed       d       e       d               Zd Z	d Z
y)TestSystemDiskPartitionsstatvfszos.statvfs() not availablec                 l   d }t        j                  d      D ]  }t        j                  |j                        } ||j                        \  }}}}| j	                  |j
                  |       | j                  |j                  |t               | j                  |j                  |t                y )Nc                 ,   t        d| z        j                         }|j                  d      }|j                  d       |j                  d      }|j                         d d \  }}}}|dk(  rd}t	        |      t	        |      t	        |      }}}||||fS )Nzdf -P -B 1 "%s"rq   r   rD   nonerc   )r   r   rG   poprv   )r}  rw   rx   rR   devrz   r{   rk   s           r8   dfz4TestSystemDiskPartitions.test_against_df.<locals>.df  s    &-.446CIIdOEIIaL99Q<D%)ZZ\"1%5"Cdf} #E
CIs4y4EtT))rb   F)allr   )
r   disk_partitions
disk_usage
mountpointr   rz   r   rk   r   r{   )r   r'  partusagery   rz   r{   rk   s           r8   test_against_dfz(TestSystemDiskPartitions.test_against_df  s    
		* **u5 		D%%doo6E#%doo#6 AudDU[[%0""

D(< #  ""

D(< # 		rb   c                 f   t        d      5 }|j                         }d d d        dv r;t        j                         D ]  }|j                  dk(  s y  | j                  d      t        j                  d      }t        j                  d|d      5 }t        j                  dd	g
      5 }t        j                         }|j                  sJ |j                  sJ |sJ | j                  |d   j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz/proc/filesystemszfszcouldn't find any ZFS partitionz
nodev	zfs
r)  Trp  $psutil._pslinux.cext.disk_partitions)z	/dev/sdb3/r0  rwr  r   )rF   r  r   r)  fstyper  r   r   r   r   r   r   )r   rP   r   r,  rz  r  r  r   s           r8   test_zfs_fsz$TestSystemDiskPartitions.test_zfs_fs  s#   %& 	!668D	D=..0 C;;%'C ii ABB O4I%Id ;ZZ:"A!B ;  002C99$999$9J3$$SV]]E:;; ;	 	; ;; ;s0   DD'*AD>D'DD$	 D''D0c                 .   	 t        j                  dd      5 }| j                  t              5  t	        j
                          d d d        |j                  sJ 	 d d d        dt        _        y # 1 sw Y   ,xY w# 1 sw Y   !xY w# dt        _        w xY w)Nzos.path.realpathz/non/existentr  /proc)r   r   assertRaisesr   r   r)  r   PROCFS_PATHr;  s     r8   test_emulate_realpath_failz3TestSystemDiskPartitions.test_emulate_realpath_fail  s    	)"  &&'89 -**,-xxx  ")F	- -    ")Fs9   B A;A/A;B /A8	4A;;B B BN)r   r   r   r   r|  hasattrrJ  r   r.  r5  r:  r^   rb   r8   r   r     sB    X__Y//1MN  O2;4
)rb   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSystemDiskIoCountersc                    d}t        d|i      5  t        j                  dd      5  t        j                  d      }| j                  |j                  d       | j                  |j                  d	       | j                  |j                  d
t        z         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  dt        z         | j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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   rA  r   rD   r   rC        r
  r   r   r   r   disk_io_countersr   
read_countread_merged_count
read_bytesSECTOR_SIZE	read_timewrite_countwrite_merged_countwrite_bytes
write_time	busy_timer   r   r   s      r8   test_emulate_kernel_2_4z0TestSystemDiskIoCounters.test_emulate_kernel_2_4  s*    @ 17;< 	43$ 4 --U;  3  !6!6:  [A  2  !4  !7!7;  !k/B  3  34	4 	44 4	4 	4#   E&D!E	E&E#	E&&E/c                    d}t        d|i      5  t        j                  dd      5  t        j                  d      }| j                  |j                  d       | j                  |j                  d	       | j                  |j                  d
t        z         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  dt        z         | j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11r?  r@  Tr  FrA  r   rA  r   rD   r   rC  rB  rC  r
  rD  rP  s      r8   test_emulate_kernel_2_6_fullz5TestSystemDiskIoCounters.test_emulate_kernel_2_6_full  s)    < 17;< 	43$ 4 --U;  3  !6!6:  [A  2  !4  !7!7;  !k/B  3  34	4 	44 4	4 	4rR  c                    t        ddi      5  t        j                  dd      5  t        j                  d      }| j                  |j                  d       | j                  |j                  d	t        z         | j                  |j                  d
       | j                  |j                  dt        z         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr?  z   3    1   hda 1 2 3 4r@  Tr  FrA  r   rA  r   rD   r   )r   r   r   r   rE  r   rF  rH  rI  rK  rM  rG  rJ  rL  rN  rO  )r   r   s     r8   test_emulate_kernel_2_6_limitedz8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limited  s%     13LMN 	33$ 3 --U;  3  [A  !4  !k/B  !6!6:  2  !7!7;  3  23	3 	33 3	3 	3s#   E$D!EE$E!	E$$E-c                 &   t        j                  d      }t        d|i      5  t        j                  dd      5  t        j                  dd      }| j                  t        |      d       | j                  |d	   j                  d
       | j                  |d   j                  d
       | j                  |d	   j                  d       | j                  |d   j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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
            r?  r@  Fr  Tperdiskr	  rA  nvme0n1r   	nvme0n1p1r   )r   r   r   r   r   r   rE  r   rI   rF  rK  rP  s      r8   test_emulate_include_partitionsz8TestSystemDiskIoCounters.test_emulate_include_partitions.  s    // #   17;< 		B3% B --d5I  S1-  Y!:!:A>  [!1!<!<a@  Y!;!;Q?  [!1!=!=qAB		B 		BB B		B 		Bs#   DB/C;*D;D	 DDc                    t        j                  d      }t        d|i      5  t        j                  dd      5  t        j                  dd      }| j                  |       d d d        d d d        d }t        j                  d      }t        d|i      5  t        j                  dd|	      5  t        j                  dd      }| j                  |j                  d
       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrX  r?  r@  Fr  rY  c                     | dk(  S )Nr[  r^   )r   s    r8   is_storage_devicezSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_deviceP  s    9$$rb   Tr   r   r   )r   r   r   r   r   r   rE  ru  r   rF  rK  )r   r   r   r`  s       r8   test_emulate_exclude_partitionsz8TestSystemDiskIoCounters.test_emulate_exclude_partitionsA  s.    // #   17;< 	'3% ' --eEJ!!#&	'	'	% // #   17;< 	53- 5
 --eEJ  3  !45	5 	5' '	' 	'5 5	5 	5sG   D)D$DD72AD+D7D	DD(+D4	0D77E c                    d }t        j                  d      }t        j                  dd|      5  t        j                  d      }d d d        | j	                  t        |      t                     y # 1 sw Y   .xY w)Nc                     | dk(  S )Nr?  r^   r}  s    r8   r~  z?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.existsb  s    ,,,rb   T)rZ  psutil._pslinux.os.path.existsr   )r   rE  r   r   r   rI   )r   r~  wprocfswsysfss       r8   test_emulate_use_sysfsz/TestSystemDiskIoCounters.test_emulate_use_sysfsa  sm    	- ))$7ZZ,Tv
 	; ,,T:F	; 	Ws6{3		; 	;s   A66A?c                     d }t        j                  dd|      5  | j                  t        t        j
                         d d d        y # 1 sw Y   y xY w)Nc                      y)NFr^   rd  s    r8   r~  z>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.existsm  s    rb   re  Tr   )r   r   r8  NotImplementedErrorr   rE  )r   r~  s     r8   test_emulate_not_implz.TestSystemDiskIoCounters.test_emulate_not_impll  sN    	 ZZ,Tv
 	L 163J3JK	L 	L 	Ls   %A

AN)
r   r   r   rQ  rT  rV  r]  ra  rh  rl  r^   rb   r8   r=  r=    s(    4&4(3,B&5@	4Lrb   r=  c                       e Zd Zd Zd Z ej                  ed      d        Z ej                   e	d       d       ej                  ed      d               Z
d Zy	)
TestRootFsDeviceFinderc                     t        j                  d      j                  }t        j                  |      | _        t        j                  |      | _        y )Nr2  )rJ  r   st_devmajorminor)r   r&  s     r8   setUpzTestRootFsDeviceFinder.setUpx  s3    ggcl!!XXc]
XXc]
rb   c                    t               }t        j                  j                  d      r|j	                          n | j                  t        |j                         t        j                  j                  d| j                  d| j                  d      r|j                          n | j                  t        |j                         |j                          y Nz/proc/partitionsz/sys/dev/block/rE   z/uevent)r   rJ  r}  r~  ask_proc_partitionsr8  r   rq  rr  ask_sys_dev_blockask_sys_class_block)r   finders     r8   test_call_methodsz(TestRootFsDeviceFinder.test_call_methods}  s    #%77>>,-&&(/1K1KL77>>-1ZZD
 $$&/1I1IJ""$rb   zunsupported on GITHUB_ACTIONSc                    t               }| j                  |j                                d x}x}}t        j                  j                  d      r|j                         }t        j                  j                  d| j                  d| j                  d      r|j                         }|j                         }|xs |xs |}|r|r| j                  ||       |r|r| j                  ||       |r|r| j                  ||       y y y ru  )r   assertIsNotNonefindrJ  r}  r~  rv  rq  rr  rx  rw  r   )r   ry  r  r  cbases         r8   test_comparisonsz'TestRootFsDeviceFinder.test_comparisons  s    #%V[[]+A77>>,-**,A77>>-1ZZD
 **,A$$&{A{AT1%AT1%AT1% 4rb   findmntzfindmnt utility not availablec                 n    t               j                         }t        d      }| j                  ||       y )Nzfindmnt -o SOURCE -rn /)r   r}  r   r   )r   r   findmnt_values      r8   test_against_findmntz+TestRootFsDeviceFinder.test_against_findmnt  s0     *+00245}5rb   c                    t        j                  ddg      5 }t        j                         d   }|j                  sJ t
        sO| j                  |j                  d       | j                  |j                  t               j                                n| j                  |j                  d       d d d        y # 1 sw Y   y xY w)Nr1  )	/dev/rootr2  ext4r3  r  r   r  )r   r   r   r)  r   r	   assertNotEqualdevicer   r   r}  )r   r   r,  s      r8   test_disk_partitions_mockedz2TestRootFsDeviceFinder.test_disk_partitions_mocked  s    ZZ2:;
 
	; ))+A.D88O8!##DKK=  .@.B.G.G.IJ  k:
	; 
	; 
	;s   BB99CN)r   r   r   rs  rz  r   r|  r	   r  r   r  r  r^   rb   r8   rn  rn  v  sv    #
% X__^%DE& F&* X__y))+JKX__^%DE6 F L6
;rb   rn  c                   P    e Zd Zd Zd Zd Zd Zd Zd Z e	       d        Z
d Zy	)
TestMiscc                     t        d      }t        j                         }| j                  t	        |      t	        |             y )Nz	boot time)r   r   	boot_timer   rv   r   s      r8   test_boot_timezTestMisc.test_boot_time  s4    k*'')\*C,=>rb   c                 f   | j                         }t        j                  |       t        t        j                  j                  |d      d      5 }|j                  d       |j                  d       |j                  d       d d d        	 t        fd}t        rdnd}t        j                  ||	      5  t        t               | j                  t        t        j                         | j                  t        t        j                  d
       | j                  t        t        j                         | j                  t        t        j                  d
       | j                  t        t        j                          | j                  t        t        j                   d
       |t        _        | j%                  t        j                         d       | j%                  t'        t        j                                d       t        j                  d
      }| j%                  t'        |      d       t        j                   d
      }| j%                  t'        t)        t&        |            d       t        t        j                  j                  |d      d      5 }|j                  d       |j                  d       |j                  d       d d d        | j+                  t        j                         d       | j+                  t'        t        j                  d
            d       | j+                  t'        t        j                                d       | j+                  t'        t)        t&        t        j                   d
                  d       d d d        t-        j.                  |       t        t               | j%                  t        j"                  d       y # 1 sw Y   axY w# 1 sw Y   !xY w# 1 sw Y   hxY w# t-        j.                  |       t        t               w xY w)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                 r    | j                  d      rt        t        j                  d       | g|i |S )Nr7  zrejecting access for test)rs   r  r  r  r  s      r8   r   z4TestMisc.test_no_procfs_on_import.<locals>.open_mock  s6    ??7+!%,,0KLL 7777rb   r   r   rl  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
r7  )
get_testfnrJ  mkdirrF   r}  rL   writer   r   r   r   r   r8  r  rH  cpu_percentcpu_times_percentr9  r   sumr   r  shutilrmtree)r   	my_procfsrP   r   r   per_cpu_percentper_cpu_times_percentr   s          @r8   test_no_procfs_on_importz!TestMisc.test_no_procfs_on_import  s   OO%	
"'',,y&137 	31GG12GG12GG12	3
1	"I8
 .1/6HKKY? %f%!!'6+;+;<!!'6+;+;D!I!!'6+=+=>!!'6+=+=d!K!!'6+C+CD!!V55d "  &/"  !3!3!5q9  V%=%=%?!@!D #)"4"4D"A  _!5q9 )/(@(@(M%  S.C%D!EqI "'',,y&93? ;1GG9:GG9:GG9:;
 ##F$6$6$8!<##C(:(:$(G$H!L##C(@(@(B$CQG##C!9!9!FGH!G%N MM)$&!++W5q	3 	3R; ;7% %N MM)$&!sJ   4O$,P
 :G$O>4O1CO>P
 $O.1O;	6O>>PP
 
&P0c           	      |   t        j                  d      j                         }t        d|i      5 }t	        j
                          |j                  sJ t	        j
                  d       t	        j                          t	        j                  d       d d d        t        j                  d      j                         }t        d|i      5  t	        j
                         }j                  sJ t	        j
                  d      }t	        j                         }t	        j                  d      }| j                  |d       | j                  t        |      d       | j                  t        |      d       | j                  t        |      d       | j                  t        t        t        |            d       | j                  t        t        t        |            d       | j                  |j                  d       | j                  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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
            rm  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  r   r   rE  user)r   r   r   r  cpu_percent_percpur  cpu_times_percent_percpus          r8   test_cpu_steal_decreasez TestMisc.test_cpu_steal_decrease   s    // #  	 	
 g67 	21  88O8d+$$&$$D1	2 // #  	 	
 g67 	; ,,.K88O8!'!3!34!@ & 8 8 :'-'?'?t'L$Q/$6 7;$5 6:$5 6>C-E$F GKC-E$F GO.44a8 1 6 6:	; 	;	2 	2	; 	;s   A#H%EH2%H/2H;c                     t        j                  dd      5 }| j                  t        t        j
                  j                         |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nr)  Tr*  )r   r   r8  r  r   rs  r  r   r;  s     r8   test_boot_time_mockedzTestMisc.test_boot_time_mocked'  sM    ZZ-d; 	qlFOO,E,EF88O8	 	 	s   =AA(c                 n    t        j                         D ]  }| j                  |j                  d         y )N)z:0z:0.0)r   usersrL  host)r   r  s     r8   
test_userszTestMisc.test_users,  s-     LLN 	8DTYY7	8rb   c                 <   | j                         }t        j                  |       	 |t        _        | j                  t        t        j                         | j                  t        t        j                         | j                  t        t        j                  d       | j                  t        t        j                         | j                  t        t        j                         | j                  t        t        j                         | j                  t        t        j                         | j                  t        t        j                         | j                  t        j                  t        j                         dt        _        y # dt        _        w xY w)NTr  r7  )r  rJ  r  r   r9  r8  r  r   rH  r  r  r  r  r)  NoSuchProcessProcess)r   tdirs     r8   test_procfs_pathzTestMisc.test_procfs_path2  s    
	)!%Fgv'<'<=gv'7'78gv'7'7Egv'7'78gv'='=>gv'='=>gv':':;gv'='=>f22FNNC!(FFs   EF Fc                    t               5  t        j                         }|j                         }| j	                  t        |      t        rdnd       t        |d       d   j                  }| j                  |j                  |       t        j                  |      }|j                          | j                  |t        j                                d d d        y # 1 sw Y   y xY w)Nr   rA  c                     | j                   S r]   )idr_   s    r8   <lambda>z)TestMisc.test_issue_687.<locals>.<lambda>P  s
     rb   )keyr   )r   r   r  threadsr   rI   r   sortedr  r  pidas_dictrL  pids)r   pr  tidpts        r8   test_issue_687zTestMisc.test_issue_687E  s     \ 	1 AiikGS\	1qAn5a8;;Cs+$BJJLS&++-0	1 	1 	1s   CCC%c                     t        ddi      5 }t        j                  t        j                               sJ |j
                  sJ 	 d d d        y # 1 sw Y   y xY w)N/proc/%s/statusrc   )r   r   
pid_existsrJ  getpidr   r;  s     r8   test_pid_exists_no_proc_statusz'TestMisc.test_pid_exists_no_proc_statusV  sN      1267 	1$$RYY[11188O8	 	 	s   8AAN)r   r   r   r  r  r  r  r  r  r   r  r  r^   rb   r8   r  r    s>    ?
<6|%;N
8)& 1 1 rb   r  z
no batteryc                   |    e Zd Z ej                   ed       d      d        Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)TestSensorsBatteryacpizacpi utility not availablec                     t        d      }t        |j                  d      d   j                         j	                  dd            }t        j                         j                  }| j                  ||d       y )Nzacpi -br  r   r  rc   r   )	r   rv   rG   r   replacer   sensors_batterypercentr   )r   rw   
acpi_valuer   s       r8   test_percentzTestSensorsBattery.test_percentg  sa    m3*002::3CD
--/77z<qArb   c                 z   fd}t         t        rdnd}t        j                  ||      5 }| j	                  t        j                         j                  d       | j	                  t        j                         j                  t
        j                         |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                 h    | j                  d      rt        j                  d      S  | g|i |S )Nz
AC0/onlinez	AC/online   1r  r   r   r  s      r8   r   z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mockp  4    }}89zz$'' 7777rb   r   r   rl  T)rF   r   r   r   r   r   r  power_pluggedsecsleftPOWER_TIME_UNLIMITEDr   r   r   r   r   r   s       @r8   test_emulate_power_pluggedz-TestSensorsBattery.test_emulate_power_pluggedn  s    	8 	),o2DZZ; 	qV335CCTJ&&(1163N3N 88O8	 	 	s   A9B11B:c                    fd}t         t        rdnd}t        j                  ||      5 }| j	                  t        j                         j                  d       |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                     | j                  d      rt        t        j                  d      | j                  d      rt	        j
                  d      S  | g|i |S )Nr  rc   /statuschargingr  r  r  r  r   r   r  s      r8   r   zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mock  sQ    }}89ellB//y){{;// 7777rb   r   r   rl  T	rF   r   r   r   r   r   r  r  r   r  s       @r8   test_emulate_power_plugged_2z/TestSensorsBattery.test_emulate_power_plugged_2  sh    	8 	),o2DZZ; 	qV335CCTJ88O8	 	 	   =A55A>c                    fd}t         t        rdnd}t        j                  ||      5 }| j	                  t        j                         j                  d       |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                 h    | j                  d      rt        j                  d      S  | g|i |S )Nr     0r  r  s      r8   r   zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mock  r  rb   r   r   rl  Fr  r  s       @r8   test_emulate_power_not_pluggedz1TestSensorsBattery.test_emulate_power_not_plugged  sh    	8 	),o2DZZ; 	qV335CCUK88O8	 	 	r  c                    fd}t         t        rdnd}t        j                  ||      5 }| j	                  t        j                         j                  d       |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                     | j                  d      rt        t        j                  d      | j                  d      rt	        j
                  d      S  | g|i |S )Nr  rc   r  dischargingr  r  s      r8   r   zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mock  sQ    }}89ellB//y){{>22 7777rb   r   r   rl  Fr  r  s       @r8    test_emulate_power_not_plugged_2z3TestSensorsBattery.test_emulate_power_not_plugged_2  sh    	8 	),o2DZZ; 	qV335CCUK88O8	 	 	r  c                     fd}t         t        rdnd}t        j                  ||      5 }| j	                  t        j                         j                         |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                     | j                  d      rt        t        j                  d      | j                  d      rt	        j
                  d      S  | g|i |S )N)"/sys/class/power_supply/AC0/online!/sys/class/power_supply/AC/onlinerc   #/sys/class/power_supply/BAT0/statuss   ???)rs   r  r  r  r   r   r  s      r8   r   zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mock  sX        ellB//!FGzz&)) 7777rb   r   r   rl  )	rF   r   r   r   ru  r   r  r  r   r  s       @r8   test_emulate_power_undeterminedz2TestSensorsBattery.test_emulate_power_undetermined  sf    		8 	),o2DZZ; 	qf446DDE88O8	 	 	s   <A44A=c                     t        ddi      5 }| j                  t        j                         j                  d       |j
                  sJ 	 d d d        y # 1 sw Y   y xY w)N(/sys/class/power_supply/BAT0/energy_fullr  r   )r   r   r   r  r  r   r;  s     r8   test_emulate_energy_full_0z-TestSensorsBattery.test_emulate_energy_full_0  sT    7>
 	V335==qA88O8		 	 	s   =AAc                    t        dt        t        j                  d            5  t        dt        t        j                  d            5  t	        ddi      5  | j                  t        j                         j                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  rc   z(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys   88X   )	r   r  r  r  r   r   r   r  r  r   s    r8   "test_emulate_energy_full_not_availz5TestSensorsBattery.test_emulate_energy_full_not_avail  s     !6ELL"%
 	K %:b) K '<eD K $$V%;%;%=%E%ErJK	K		K 	KK K	K K		K 	Ks;   %B8
B,/B B,B8 B)%B,,B5	1B88Cc           	         t        dt        t        j                  d            5  t        dt        t        j                  d            5  t        dt        t        j                  d            5  | j	                  t        j                         j                         d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  rc   r  r  )r   r  r  r  ru  r   r  r  r  s    r8   test_emulate_no_powerz(TestSensorsBattery.test_emulate_no_power  s     /r1J
 
	N %4gellB6O N )9ELL"- N %%f&<&<&>&L&LM	NN
	N 
	NN NN N
	N 
	Ns;   %C
%C/.B6C%C6B?;CC	CCN)r   r   r   r   r|  r   r  r  r  r  r  r  r  r  r  r^   rb   r8   r  r  d  sX     X__v&(DEB FB"""(K Nrb   r  c                       e Zd Zd Zy)TestSensorsBatteryEmulatedc                 `   fd}t         t        rdnd}t        j                  ddg      5 }t        j                  ||      5 }| j	                  t        j                                d d d        d d d        j                  sJ j                  sJ y # 1 sw Y   .xY w# 1 sw Y   2xY w)Nc                     | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S  | g|i |S )Nz/energy_now60000000z
/power_now0z/energy_full60000001r  r   r   r  s      r8   r   z5TestSensorsBatteryEmulated.test_it.<locals>.open_mock  si    }}]+{{;//|,{{4((~.{{;// 7777rb   r   r   z
os.listdirBAT0r  rl  )rF   r   r   r   r|  r   r  r   )r   r   r   mlistdirmopenr   s        @r8   test_itz"TestSensorsBatteryEmulated.test_it  s    	8 	),o2DZZF8< 	?KY? ?5$$V%;%;%=>?	? |||? ?	? 	?s#   B$$B+B$B!	B$$B-N)r   r   r   r  r^   rb   r8   r  r    s    rb   r  c                       e Zd Zd Zd Zy)TestSensorsTemperaturesc                    fd}t         t        rdnd}t        j                  ||      5  t        j                  ddg      5  t	        j
                         d   d	   }| j                  |j                  d
       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                    | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d	      rt        j                  d
      S  | g|i |S )N/namer   z/temp1_labellabelz/temp1_input   30000z
/temp1_maxs   40000z/temp1_crit   50000)r  r   r   r   r  s      r8   r   zCTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock  s    }}W%{{7++~.{{8,,~.zz(++|,zz(++}-zz(++ 7777rb   r   r   rl  r  z/sys/class/hwmon/hwmon0/temp1r  r   r   r        >@g      D@      I@rF   r   r   r   r   sensors_temperaturesr   r  r  highcritical)r   r   r   tempr   s       @r8   test_emulate_class_hwmonz0TestSensorsTemperatures.test_emulate_class_hwmon  s    	8 	),o2DZZ; 		6+J*K 6 224V<Q?  W5  t4  D1  56		6 		66 6		6 		6s$   C/BC#C/#C,	(C//C8c                    fd}d }t         t        rdnd}t        j                  ||      5  t        j                  dd|      5  t	        j
                         d	   d
   }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 L   | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S  | g|i |S )	N0_tempr  r  r  0_typer  typer   )r  r   r   r   r  s      r8   r   zETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mock  s    }}X&zz(++v&zz(++x({{;//v&{{7++ 7777rb   c                 D    | dk(  rg S | dk(  rg S | dk(  rdgS | dk(  rddgS g S )Nz/sys/class/hwmon/hwmon*/temp*_*z&/sys/class/hwmon/hwmon*/device/temp*_*z /sys/class/thermal/thermal_zone*z /sys/class/thermal/thermal_zone0z,/sys/class/thermal/thermal_zone0/trip_point*z2/sys/class/thermal/thermal_zone1/trip_point_0_typez2/sys/class/thermal/thermal_zone1/trip_point_0_tempr^   rd  s    r8   	glob_mockzETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mock+  sP    88	AA	;;:;;GGHH  Irb   r   r   rl  r  Tr   r   r   rc   r  r	  r
  )r   r   r  r   r  r   s        @r8   test_emulate_class_thermalz2TestSensorsTemperatures.test_emulate_class_thermal  s    
	8	 	),o2DZZ; 	6K)L 6224V<Q?  R0  t4  D1  56	6 	66 6	6 	6s$   C2
BC&C2&C/	+C22C;N)r   r   r   r  r  r^   rb   r8   r  r     s    68#6rb   r  c                       e Zd Zd Zy)TestSensorsFansc                    fd}t         t        rdnd}t        j                  ||      5  t        j                  ddg      5  t	        j
                         d   d	   }| j                  |j                  d
       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                     | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S | j                  d      rt        j                  d      S  | g|i |S )Nr  r   z/fan1_labelr  z/fan1_input2000r  r  s      r8   r   z4TestSensorsFans.test_emulate_data.<locals>.open_mockG  si    }}W%{{7++}-{{8,,}-{{7++ 7777rb   r   r   rl  r  z/sys/class/hwmon/hwmon2/fan1r  r   r   r  i  )	rF   r   r   r   r   sensors_fansr   r  r  )r   r   r   fanr   s       @r8   r  z!TestSensorsFans.test_emulate_dataF  s    	8 	),o2DZZ; 	4+I*J 4 ))+F3A6  G4  d34	4 	44 4	4 	4s$   B7AB+B7+B4	0B77C N)r   r   r   r  r^   rb   r8   r  r  D  s    4rb   r  c                       e Zd Z e       d        Zd Z ej                  ed      d        Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z ej                  e d      d        Zd Zd Zd Zy)TestProcessc           
      n   | j                         }t        j                  j                  |j                        j                         \  }}}t        j                  |j                        j                  d      }| j                  |t        |D cg c]  }|j                  |j                  z    c}      d       | j                  |t        |D cg c]  }|j                   c}      d       | j                  |t        |D cg c]  }|j                   c}      d       y c c}w c c}w c c}w )NF)groupedr  r   )spawn_testprocr   rs  r  r  _parse_smapsmemory_mapsr   r  private_dirtyprivate_cleanpssr6  )r   sprocussr(  r6  mapsr`   s          r8   test_parse_smaps_vs_memory_mapsz+TestProcess.test_parse_smaps_vs_memory_mapsc  s    ##%00;HHJS$~~eii(44U4CDAq1??2AB 	 	

 	sC(=1(=$>dKtS$)?Q!&&)?%@M	 B )>)?s    D(D-D2c                    t        j                  d      j                         }t        dt	        j
                         z  |i      5 }t        j                  j                  t	        j
                               }|j                         \  }}}|j                  sJ | j                  |d       | j                  |d       | j                  |d       d d d        y # 1 sw Y   y xY w)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/%s/smapsi l  r  i <  )r   r   r   r   rJ  r  r   rs  r  r$  r   r   )r   r   r   r  r*  r(  r6  s          r8   test_parse_smaps_mockedz#TestProcess.test_parse_smaps_mockedp  s    // # , - 	.  0299; >HI 	.Q''		4A^^-NCd88O8S"56S(+T9-	. 	. 	.s   B
CC"zunreliable on PYPYc                    d }| j                         }t        |d      5  | j                   ||      j                  d       d d d        t        |      5  | j                   ||      j                  d       d d d        t        |d      5  | j                   ||      j                  d       d d d        t        |d      5  | j                   ||      j                  d       d d d        t        |d      5  | j                   ||      j                  d       d d d        t        |d      5  | j                   ||      j                  d       d d d        t        rt        |       t        |d      5  | j                   ||      j                  d       d d d        t        |       t        |d	      5  | j                   ||      j                  d       d d d        y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nc                     t        j                         }t        j                         t        z   }	 |j	                         D ]K  }|j
                  t        j
                  j                  |       k(  r|c S t        j                         |kD  sK n _r]   )	r   r  timer
   
open_filesr}  rJ  abspathr  )fnamer  	giveup_atfiles       r8   get_test_filez7TestProcess.test_open_files_mode.<locals>.get_test_file  sj     A		n4ILLN DyyBGGOOE$::#y0	 rb   r   rr  zr+zw+za+r`   zx+)r  rF   r   moder   r   )r   r8  testfns      r8   test_open_files_modez TestProcess.test_open_files_mode  s   		@ "&# 	>]6277=	>&\ 	>]6277=	>&# 	>]6277=	>&$ 	?]6277>	?&$ 	?]6277>	?&$ 	?]6277>	? fc" B  v!6!;!;SABfd# C  v!6!;!;TBC C 	> 	>	> 	>	> 	>	? 	?	? 	?	? 	?
B BC Cs_   #G)#G6#H#H;#H2#H*:#H6<#I)G36H HHH'*H36H?Ic                    t        j                         }|j                         }t        | j	                         d      5  t        |j                  dt        |      z         t        j                  dt        t        j                  d            5 }| j                  |j                         g        |j                  sJ 	 d d d        t        j                  dt        t        j                  d            5 }| j                  |j                         g        |j                  sJ 	 d d d        d d d        y # 1 sw Y   yxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   len(ret) != %ipsutil._pslinux.os.readlinkrc   rl  )r   r  r3  rF   r  r   rI   r   r   OSErrorr  r  r   r   EINVAL)r   r  filesr   s       r8   test_open_files_file_gonez%TestProcess.test_open_files_file_gone  s    NN$//#S) 	 q||%5E
%BC-#ELL"5     4xxx  -#ELL"5     4xxx 	  	       	  	 s<   AE/D97E8/E(E9E	>EE	
EEc                    t        j                         }|j                         }t        | j	                         d      5  t        |j                  dt        |      z         t        rdnd}t        j                  |t        t        j                  d            5 }| j                  |j                         g        |j                  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r>  r   r   rc   rl  )r   r  r3  rF   r  r   rI   r   r   r   r  r  r  r   r   r   r  rB  r   r   s        r8   test_open_files_fd_gonez#TestProcess.test_open_files_fd_gone  s     NN$//#S) 	 q||%5E
%BC-0/6HKr)B    4xxx	 		  	    		  	 s$   AC(/CC(C%	!C((C1c                 ,   t        j                         }|j                         }t        | j	                         d      5  t        |j                  dt        |      z         d}t        j                  |t        t        j                  d            5 }t        j                  d      5  | j                  |j                         g        |j                  sJ 	 d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r>  r?  rc   rl  psutil._pslinux.debug)r   r  r3  rF   r  r   rI   r   r   r@  r  ENAMETOOLONGr   r   rE  s        r8   test_open_files_enametoolongz(TestProcess.test_open_files_enametoolong  s     NN$//#S) 		$q||%5E
%BC7K1C1CR)H $ZZ 78 $$$Q\\^R888O8$$			$ 		$$ $$ $			$ 		$s<   AD
C>)/C2C>!D
2C;7C>>D	D

Dc                    t        j                  di       5 }| j                  t        j                  j                  t        j                               j                                |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nz)psutil._pslinux._psposix.get_terminal_mapr  )
r   r   ru  r   rs  r  rJ  r  terminalr   r;  s     r8   test_terminal_mockedz TestProcess.test_terminal_mocked  sb    ZZ7b
 	foo55biikBKKMN88O8		 	 	s   AA??Bc                    t        j                         }t        j                  d      }t	        j
                  d|d      5 }| j                  |j                         ddg       |j                  sJ 	 d d d        t        j                  d      }t	        j
                  d|d      5 }| j                  |j                         g d       |j                  sJ 	 d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY w)	Nzfoo bar r)  Trp  foobarz	foo bar  rO  rP  rc   	r   r  r   r   r   r   r   cmdliner   r   r  rz  r   s       r8   test_cmdline_mockedzTestProcess.test_cmdline_mocked  s    NNKK 12	ZZ!	$
 	QYY[5%.988O8		
 KK 56	ZZ!	$
 	QYY[*<=88O8		 		 		 	   1C$)1C0$C-0C9c                    t        j                         }t        j                  d      }t	        j
                  d|d      5 }| j                  |j                         ddg       |j                  sJ 	 d d d        t        j                  d      }t	        j
                  d|d      5 }| j                  |j                         g d       |j                  sJ 	 d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY w)	Nzfoo bar r)  Trp  rO  rP  z	foo bar  rQ  rR  rT  s       r8   test_cmdline_spaces_mockedz&TestProcess.test_cmdline_spaces_mocked  s    NNKK,	ZZ!	$
 	QYY[5%.988O8		
 KK-	ZZ!	$
 	QYY[*<=88O8		 		 		 	rV  c                    t        j                         }t        j                  d      }t	        j
                  d|d      5 }| j                  |j                         ddg       |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nzfoo bar r)  Trp  rO  rP  rR  rT  s       r8   test_cmdline_mixed_separatorsz)TestProcess.test_cmdline_mixed_separators  so     NNKK 12	ZZ!	$
 	QYY[5%.988O8		 	 	s   1A==Bc                 $   t        j                  dd      5  | j                  t        j                         j                         d       | j                  t        j                         j                         d       d d d        y # 1 sw Y   y xY w)Nr?  z/home/foo (deleted)r  z	/home/foo)r   r   r   r   r  execwdr  s    r8   !test_readlink_path_deleted_mockedz-TestProcess.test_readlink_path_deleted_mocked)  so    ZZ)8M
 	B V^^-113[AV^^-113[A		B 	B 	Bs   A%BBc                    fd}t         t        rdnd}t        j                  ||      5 }t	        j
                         j                         }|j                  sJ | j                  |g        d d d        fd}t        j                  ||      5  | j                  t        j                  t	        j
                         j                         d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)Nc                     | j                  dt        j                         z        rt        t        j
                  d       | g|i |S Nz/proc/%s/taskrc   )rs   rJ  r  r  r  r  r  s      r8   open_mock_1z4TestProcess.test_threads_mocked.<locals>.open_mock_15  s@    <=ellB// 7777rb   r   r   rl  c                     | j                  dt        j                         z        rt        t        j
                  d       | g|i |S ra  )rs   rJ  r  r  r  EPERMr  s      r8   open_mock_2z4TestProcess.test_threads_mocked.<locals>.open_mock_2D  s@    <=ekk2.. 7777rb   )rF   r   r   r   r   r  r  r   r   r8  AccessDenied)r   rb  r   r   r   re  r   s         @r8   test_threads_mockedzTestProcess.test_threads_mocked0  s    
	8 	),o2DZZ= 	&.."**,C88O8S"%	&	8 ZZ= 	Mf116>>3C3K3KL	M 	M	& 	&	M 	Ms   AC=C'C$'C0c                    t        j                  dt        t        j                  d            5 }t        j                         j                         }|j                  sJ | j                  |d       d d d        y # 1 sw Y   y xY w)Nzpsutil._pslinux.readlinkrc   rl  )
r   r   r@  r  r  r   r  r\  r   r   )r   r   r   s      r8   test_exe_mockedzTestProcess.test_exe_mockedM  sf    ZZ&GELL"4M
 	&.."&&(C88O8S"%	& 	& 	&s   AA<<Bc                 Z   t        dt        j                         z  t        t        j
                  d            5 }t        j                         }| j                  t              5  |j                          d d d        |j                  sJ 	 d d d        y # 1 sw Y   !xY w# 1 sw Y   y xY w)Nr.  rc   )r   rJ  r  r  r  r  r   r  r8  r   r%  r   r   r   r  s      r8   test_issue_1014zTestProcess.test_issue_1014U  s     !ryy{*GELL",E
 	 A""#45   88O8	 	   		 	s#   *B!$B5B!B	B!!B*r  c                    t        j                  dt        t        j                  d            5 }t        j                  dd      5 }t        j                         }|j                          | j                  t
        j                        5 }|j                  t
        j                         d d d        d d d        d d d        j                  sJ j                  sJ | j                  j                  j                  j                         | j                  |j                  j                  |j                                y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nzpsutil._pslinux.prlimitrc   rl  z"psutil._pslinux.Process._is_zombieTr  )r   r   r@  r  ENOSYSr   r  r   r8  ZombieProcessrlimitRLIMIT_NOFILEr   r   	exceptionr  )r   r  r  r  r   s        r8   test_rlimit_zombiezTestProcess.test_rlimit_zombie`  s   
 ZZ%75<<3L
 		344 3NN$&&v';';< 3HHV11233		3 yyyyyy**AEE2++QVVX63 33 3		3 		3s<   EAE E,E4EE
EE	EE&c                    g d}dj                  |      j                         }t        dt        j                         z  |i      5  t        j                         }| j                  |j                         d       | j                  |j                         t
        j                         | j                  |j                         d       | j                  |j                         dt        z  t        j                         z          |j                         }| j                  |j                   dt        z         | j                  |j"                  dt        z         | j                  |j$                  d	t        z         | j                  |j&                  d
t        z         | j                  |j(                  dt        z         | j                  |j+                         d       d d d        y # 1 sw Y   y xY w)N)*r  z(cat)Z1r  r  r  r  r  r  r  r  r  2345r  r  r  r  6r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r{  r  r  7r   z/proc/%s/statcatr   rC  rA  r   rD   r   rB  )rL   r   r   rJ  r  r   r  r   r   statusSTATUS_ZOMBIEppidcreate_timer   r  rH  r  systemchildren_userchildren_systemiowaitcpu_num)r   r   r   r  cpus        r8   test_stat_file_parsingz"TestProcess.test_stat_file_parsingt  sm   +
X ((4.'')"))+ =wGH 	- AQVVXu-QXXZ)=)=>QVVXq)[63C3C3E!E ++-CSXXq;7SZZ[9S..K@S00!k/BSZZ[9QYY[!,	- 	- 	-s   FG--G6c           	         t        j                  d      j                         }t        dt	        j
                         z  |i      5  t        j                         }| j                  |j                         j                  d       | j                  |j                         j                  d       | j                  |j                         d       |j                         }| j                  |j                  d       | j                  |j                  d       | j                  |j                   d       |j#                         }| j                  |j                  d	       | j                  |j                  d
       | j                  |j                   d       | j                  |j$                  j'                         t)        t+        d                   d d d        y # 1 sw Y   y xY w)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  rC  )r   r   r   r   rJ  r  r   r  r   num_ctx_switches	voluntaryinvoluntarynum_threadsuidsreal	effectivesavedgids_proc_get_eligible_cpuslistrK   )r   r   r  r  r  s        r8   test_status_file_parsingz$TestProcess.test_status_file_parsing  sh   // #/ 0 17 	  1BIIK ?IJ 	K AQ//1;;R@Q//1==rBQ]]_b1668DTYY-T^^T2TZZ.668DTYY-T^^T2TZZ.QWW7794a>J	K 	K 	Ks   FGG%c                 f   t        j                  dt        t        j                  d            5 }t        j                         }t        j                  d      5  | j                  |j                         g        |j                  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr?  rc   rl  rH  )
r   r   r@  r  rI  r   r  r   r  r   rk  s      r8   !test_net_connections_enametoolongz-TestProcess.test_net_connections_enametoolong  s     ZZ) 2 2B7
 	   A34    !2!2!4b9xxx 	  	 
   	  	 s#   *B'/B
B'B$	 B''B0N)r   r   r   r   r,  r/  r   r|  r   r<  rC  rF  rJ  rM  rU  rX  rZ  r^  rg  ri  rl  r   rs  r  r  r  r^   rb   r8   r   r   a  s    
N 
N.D X__T/0 C 1 CD .  $&  	BM:&	 X__^_57 67&<-|K0 rb   r   c                       e Zd ZdZed        Zd Zd Z ej                  e
d      d        Zd Zd Zd	 Zd
 Z e       d        Zd Zd Zy)TestProcessAgainstStatusa  /proc/pid/stat and /proc/pid/status have many values in common.
    Whenever possible, psutil uses /proc/pid/stat (it's faster).
    For all those cases we check that the value found in
    /proc/pid/stat (by psutil) matches the one found in
    /proc/pid/status.
    c                 6    t        j                         | _        y r]   )r   r  proc)clss    r8   
setUpClassz#TestProcessAgainstStatus.setUpClass  s    >>#rb   c                    t         j                  j                  d| j                  j                  z        5 }|D ]N  }|j                         }|j                  |      s%|j                  d      d   }	 t        |      c cd d d        S  t        d|z        # t        $ r |cY c cd d d        S w xY w# 1 sw Y   y xY w)Nr  	rA  zcan't find %r)
r   _psplatform	open_textr  r  r   rs   	partitionrv   rJ   )r   	linestartrP   rR   rV  s        r8   read_status_filez)TestProcessAgainstStatus.read_status_file  s    ))		-
 	: %zz|??9- NN403E%"5z)	: 	:% _y899 & %$	: 	:%	: 	:s;   'B5B54
B>B5
B5B2$B51B22B55B>c                 z    | j                  d      }| j                  | j                  j                         |       y )NzName:)r  r   r  r   r   rV  s     r8   	test_namez"TestProcessAgainstStatus.test_name  -    %%g.)51rb   r  c                     | j                  d      }||j                  d      dz   |j                  d       }|j                  dd      }| j	                  | j
                  j                         |       y )NzState:(r   )r   rT  )r  r}  rfindr  r   r  r~  r  s     r8   test_statusz$TestProcessAgainstStatus.test_status  sa    %%h/ejjo)EKK,<=c3'))+U3rb   c                 z    | j                  d      }| j                  | j                  j                         |       y )NzPPid:)r  r   r  r  r  s     r8   	test_ppidz"TestProcessAgainstStatus.test_ppid  r  rb   c                 z    | j                  d      }| j                  | j                  j                         |       y )NzThreads:)r  r   r  r  r  s     r8   test_num_threadsz)TestProcessAgainstStatus.test_num_threads	  s/    %%j1..0%8rb   c                     | j                  d      }t        t        t        |j	                         dd             }| j                  | j                  j                         |       y )NzUid:r   rD   )r  r   r   rv   rG   r   r  r  r  s     r8   	test_uidsz"TestProcessAgainstStatus.test_uids	  K    %%f-c#u{{}Qq123)51rb   c                     | j                  d      }t        t        t        |j	                         dd             }| j                  | j                  j                         |       y )NzGid:r   rD   )r  r   r   rv   rG   r   r  r  r  s     r8   	test_gidsz"TestProcessAgainstStatus.test_gids	  r  rb   c                    | j                  d      }| j                  | j                  j                         j                  |       | j                  d      }| j                  | j                  j                         j
                  |       y )Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r  r   r  r  r  r  r  s     r8   test_num_ctx_switchesz.TestProcessAgainstStatus.test_num_ctx_switches	  sj    %%&@A335??G%%&CD335AA5Irb   c           
         | j                  d      }dt        |      v rct        t        |j	                  d            \  }}| j                  | j                  j                         t        t        ||dz                      y y )NCpus_allowed_list:rT  r   )
r  r   r   rv   rG   r   r  cpu_affinityr  rK   )r   rV  min_max_s       r8   test_cpu_affinityz*TestProcessAgainstStatus.test_cpu_affinity	  sm    %%&:;#e*S%++c"23JD$		&&($uT4!8/D*E rb   c                    | j                  d      }t        j                  d      5 }| j                  j                  j                          d d d        dt        |      v rj                  rJ y j                  sJ y # 1 sw Y   4xY w)Nr  zpsutil._pslinux.per_cpu_timesrT  )r  r   r   r  r  r  r   r   )r   rV  r   s      r8   test_cpu_affinity_eligible_cpusz8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpus	  sp    %%&:;ZZ78 	1AIIOO..0	1#e*xx<x88O8	1 	1s   %A??BN)r   r   r   __doc__classmethodr  r  r  r   r|  r   r  r  r  r  r  r   r  r  r  r^   rb   r8   r  r    s~     $ $:2 X__Y 9:4 ;4292
2
 J Jrb   r  c                       e Zd Zd Zy)	TestUtilsc                     t        j                  dd      5 }| j                  t        j                  j                  d      d       |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nzos.readlinkzfoo (deleted)r  rP  rO  )r   r   r   r   r  readlinkr   r;  s     r8   test_readlinkzTestUtils.test_readlink0	  sS    ZZOD 	V//88?G88O8	 	 	s   >A  A)N)r   r   r   r  r^   rb   r8   r  r  .	  s    rb   r  __main__)run_from_name)gr  
__future__r   rt   r-   r  globr   rJ  r   r  r*   r3   r   r2  r   r   r   r   psutil._compatr   r   r   psutil.testsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rr  r   r   r   r    r}  r4  dirname__file__HEREr2   SIOCGIFCONFre   r<   r@   rI  EMPTY_TEMPERATURESr9   r=   rA   rZ   ri   r}   r   r   r   contextmanagerr   r   r|  r   r   r   r  r?  rQ  r  r  r  r  r  r  r  r  r   r=  rn  r  r  r  r  r  r   r  r  r   psutil.tests.runnerr  r^   rb   r8   <module>r     s         	 	 	           , %   ' ' $ % ' #  " - * ' # #  & ) $  0  	+24+ 
wwrwwx01K"#<== 


,K. ,@@  0  , UL)@ @ *@F UL):
> :
 *:
z UL)M6> M6 *M6j UL)Y> Y *YB UL)3 3 *3& UL)B  B  *B J UL)n  *6 UL)T8^ T8 *T8n UL)	F 	F *	F UL)	O. 	O *	O" UL)E> E *ER UL)56/5> /5 7 */5d UL)6n 6 *6r UL)~  *< UL)@)~ @) *@)F UL)CL~ CL *CLL UL)<;^ <; *<;H UL)`~ ` *`P UL)[,/AN AN 0 *ANH UL)  ** UL)@6n @6 *@6F UL)4n 4 *48 UL)s . s  *s l UL)M~ M *Mj UL)  * z1( rb   