
    ztf;                        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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$ ddlm%Z% ddlm&Z& ddlm'Z' dd lm(Z( ejR                  jT                  Z* ejV                         Z,d!Z-d" Z. G d# d$e!      Z/ G d% d&e/      Z0 ejb                  e d'       G d( d)e!             Z2 G d* d+e!      Z3e4d,k(  r5dd-l5m6Z6 dd.l5m7Z7 e r e6d/e8z  d0        ejr                  d        e7e8       yy)1a  Tests for detecting function memory leaks (typically the ones
implemented in C). It does so by calling a function many times and
checking whether process memory usage keeps increasing between
calls or over time.
Note that this may produce false positives (especially on Windows
for some reason).
PyPy appears to be completely unstable for this framework, probably
because of how its JIT handles memory, so tests are skipped.
    )print_functionN)LINUX)MACOS)OPENBSD)POSIX)SUNOS)WINDOWS)ProcessLookupError)super)HAS_CPU_AFFINITY)HAS_CPU_FREQ)HAS_ENVIRON)
HAS_IONICE)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_PROC_CPU_NUM)HAS_PROC_IO_COUNTERS)
HAS_RLIMIT)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)	QEMU_USER)TestMemoryLeak)create_sockets)
get_testfn)process_namespace)skip_on_access_denied)spawn_testproc)system_namespace)	terminate   c                      d } | S )zsDecorator for those Linux functions which are implemented in pure
    Python, and which we want to run faster.
    c                 B     t        j                          fd       }|S )Nc                     t         rI| j                  j                  }	 t        | j                  _         | g|i ||| j                  _        S  | g|i |S # || j                  _        w xY wN)r   	__class__times	FEW_TIMES)selfargskwargsbeforefuns       d/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/psutil/tests/test_memleaks.pywrapperz5fewtimes_if_linux.<locals>.decorator.<locals>.wrapperE   si    --2+4DNN(t5d5f5+1DNN(41$1&11 ,2DNN(s    A A0)	functoolswraps)r-   r/   s   ` r.   	decoratorz$fewtimes_if_linux.<locals>.decoratorD   s%    				2 
		2      )r2   s    r.   fewtimes_if_linuxr5   ?   s    
 r3   c                   h   e Zd ZdZeZd Z e       d        Z e       d        Z	 e       d        Z
 e       d        Z ej                  e d       e       d               Z ej                  e d       e       d	               Z e       d
        Zd Zd Z ej                  e d      d        Z ej                  e d      d        Z ej                  e d       e       d               Z ej                  ed      d        Z e       d        Z e        ee      d               Z ej                  e d      d        Z ej                  e d       e       d               Z  e       d        Z! e        ee      d               Z" e       d        Z# e        ej                  e$ d      d               Z% e       d        Z& e       d        Z' ej                  e d       e       d               Z(d  Z) e       d!        Z* ej                  e+ d      d"        Z, ej                  e+ d      d#        Z- e       d$        Z. ej                  e/ d       e       d%               Z0 ej                  e1 d&       ej                  e2 d      d'               Z3 ej                  e1 d&       ej                  e2 d      d(               Z4 e        ej                  ed)      d*               Z5 ej                  e6 d      d+        Z7 ej                  e d      d,        Z8y-).TestProcessObjectLeaksz$Test leaks of Process class methods.c                 l    t        d       }|j                  | |j                  |j                  z          y r%   )r   test_class_coveragegetterssettersr)   nss     r.   test_coveragez$TestProcessObjectLeaks.test_coverage`   s)    t$
tRZZ"**%<=r3   c                 N    | j                  | j                  j                         y r%   )executeprocnamer)   s    r.   	test_namez TestProcessObjectLeaks.test_named       TYY^^$r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   cmdlinerC   s    r.   test_cmdlinez#TestProcessObjectLeaks.test_cmdlineh       TYY&&'r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   exerC   s    r.   test_exezTestProcessObjectLeaks.test_exel       TYY]]#r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   ppidrC   s    r.   	test_ppidz TestProcessObjectLeaks.test_ppidp   rE   r3   z
POSIX onlyc                 N    | j                  | j                  j                         y r%   )r@   rA   uidsrC   s    r.   	test_uidsz TestProcessObjectLeaks.test_uidst        	TYY^^$r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   gidsrC   s    r.   	test_gidsz TestProcessObjectLeaks.test_gidsy   rT   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   statusrC   s    r.   test_statusz"TestProcessObjectLeaks.test_status~       TYY%%&r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   nicerC   s    r.   	test_nicez TestProcessObjectLeaks.test_nice   s    TYY^^$r3   c                 Z     t         j                          j                   fd       y )Nc                  :    j                   j                         S r%   )rA   r]   )nicenessr)   s   r.   <lambda>z6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>   s    TYY^^H5 r3   )thisprocr]   r@   )r)   ra   s   `@r.   test_nice_setz$TestProcessObjectLeaks.test_nice_set   s    ==?56r3   not supportedc                 N    | j                  | j                  j                         y r%   )r@   rA   ionicerC   s    r.   test_ionicez"TestProcessObjectLeaks.test_ionice   r[   r3   c                 ,    t         r*t        j                          j                   fd       y  j                   fd       t	        j
                  t        j                  t        j                         dd      } j                  t        |       y )Nc                  :     j                   j                        S r%   )rA   rg   )r)   values   r.   rb   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8 r3   c                  V     j                   j                  t        j                        S r%   )rA   rg   psutilIOPRIO_CLASS_NONErC   s   r.   rb   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1&2J2J!K r3   r   )r	   rc   rg   r@   r0   partialcextproc_ioprio_setosgetpidexecute_w_excOSError)r)   r-   rk   s   ` @r.   test_ionice_setz&TestProcessObjectLeaks.test_ionice_set   s^    OO%ELL89LLKL##D$8$8"))+r1MCw,r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   io_countersrC   s    r.   test_io_countersz'TestProcessObjectLeaks.test_io_counters        	TYY**+r3   zworthless on POSIXc                     t        j                         j                          | j                  | j                  j                         y r%   )rm   Processusernamer@   rA   rC   s    r.   test_usernamez$TestProcessObjectLeaks.test_username   s-     	!!#TYY''(r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   create_timerC   s    r.   test_create_timez'TestProcessObjectLeaks.test_create_time       TYY**+r3   )only_ifc                 N    | j                  | j                  j                         y r%   )r@   rA   num_threadsrC   s    r.   test_num_threadsz'TestProcessObjectLeaks.test_num_threads   r{   r3   WINDOWS onlyc                 N    | j                  | j                  j                         y r%   )r@   rA   num_handlesrC   s    r.   test_num_handlesz'TestProcessObjectLeaks.test_num_handles   r   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   num_fdsrC   s    r.   test_num_fdsz#TestProcessObjectLeaks.test_num_fds        	TYY&&'r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   num_ctx_switchesrC   s    r.   test_num_ctx_switchesz,TestProcessObjectLeaks.test_num_ctx_switches       TYY//0r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   threadsrC   s    r.   test_threadsz#TestProcessObjectLeaks.test_threads   r   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   	cpu_timesrC   s    r.   test_cpu_timesz%TestProcessObjectLeaks.test_cpu_times   s    TYY(()r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   cpu_numrC   s    r.   test_cpu_numz#TestProcessObjectLeaks.test_cpu_num   r   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   memory_inforC   s    r.   test_memory_infoz'TestProcessObjectLeaks.test_memory_info   r   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   memory_full_inforC   s    r.   test_memory_full_infoz,TestProcessObjectLeaks.test_memory_full_info   r   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   terminalrC   s    r.   test_terminalz$TestProcessObjectLeaks.test_terminal   s     	TYY''(r3   c                     t         rt        n| j                  }| j                  | j                  j
                  |       y )Nr'   )r   r(   r'   r@   rA   resumer)   r'   s     r.   test_resumez"TestProcessObjectLeaks.test_resume   s)    "	

TYY%%U3r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   cwdrC   s    r.   test_cwdzTestProcessObjectLeaks.test_cwd   rM   r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   cpu_affinityrC   s    r.   test_cpu_affinityz(TestProcessObjectLeaks.test_cpu_affinity   s    TYY++,r3   c                      t         j                          j                   fd        j                  t         fd       y )Nc                  :    j                   j                         S r%   rA   r   )affinityr)   s   r.   rb   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TYY33H= r3   c                  <     j                   j                  dg      S Nro   r   rC   s   r.   rb   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    tyy/E/Erd/K r3   )rc   r   r@   ru   
ValueError)r)   r   s   `@r.   test_cpu_affinity_setz,TestProcessObjectLeaks.test_cpu_affinity_set   s/    ((*=>:'KLr3   c                     t        t               d      5  | j                  | j                  j                         d d d        y # 1 sw Y   y xY w)Nw)openr   r@   rA   
open_filesrC   s    r.   test_open_filesz&TestProcessObjectLeaks.test_open_files   s9    *,$ 	/LL--.	/ 	/ 	/s   &AAc                 N    | j                  | j                  j                         y r%   )r@   rA   memory_mapsrC   s    r.   test_memory_mapsz'TestProcessObjectLeaks.test_memory_maps   r{   r3   z
LINUX onlyc                 .      j                   fd       y )Nc                  V     j                   j                  t        j                        S r%   rA   rlimitrm   RLIMIT_NOFILErC   s   r.   rb   z4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TYY--f.B.BC r3   r@   rC   s   `r.   test_rlimitz"TestProcessObjectLeaks.test_rlimit   s     	CDr3   c                      t         j                  t        j                         j	                   fd        j                  t        t        f fd       y )Nc                  X    j                   j                  t        j                         S r%   r   )limitr)   s   r.   rb   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TYY--f.B.BEJ r3   c                  :     j                   j                  d      S r   )rA   r   rC   s   r.   rb   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    $)):J:J2:N r3   )rc   r   rm   r   r@   ru   rv   r   )r)   r   s   `@r.   test_rlimit_setz&TestProcessObjectLeaks.test_rlimit_set   s<      4 45JKGZ02NOr3   zworthless on WINDOWSc                      t               5  t        rdnd j                   fd       d d d        y # 1 sw Y   y xY w)Ninetallc                  :    j                   j                         S r%   )rA   net_connections)kindr)   s   r.   rb   z=TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>  s    !:!:4!@ r3   )r   r   r@   )r)   r   s   `@r.   test_net_connectionsz+TestProcessObjectLeaks.test_net_connections   s:      	B"6DLL@A	B 	B 	Bs    6?c                 N    | j                  | j                  j                         y r%   )r@   rA   environrC   s    r.   test_environz#TestProcessObjectLeaks.test_environ  rI   r3   c                 (    | j                  d        y )Nc                  P    t         j                  t        j                               S r%   )rq   	proc_infors   rt   r4   r3   r.   rb   z7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIIK8 r3   r   rC   s    r.   test_proc_infoz%TestProcessObjectLeaks.test_proc_info  s    89r3   N)9__name__
__module____qualname____doc__rc   rA   r>   r5   rD   rH   rL   rP   unittestskipIfr   rS   rW   rZ   r^   rd   r   rh   rw   r   rz   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r3   r.   r7   r7   [   s   .D> % % ( ( $ $ % % X__Y-%  .% X__Y-%  .% ' '%7 X__^_5' 6' X__^_5- 6- X__--?,  @, X__U01) 2)
 , , 7+, , , X__[.1, 2, X__Y-(  .( 1 1 7+( , ( * * X__))?;( < ( , , 1 1 X__Y-)  .)4 $ $ X__))?;- <- X__))?;M <M
 / / X__(/:,  ;, X__Y-X__^_5E 6 .E X__Y-X__^_5P 6 .P
  X__W45B 6 B X___o6( 7( X__[.1: 2:r3   r7   c                   v     e Zd ZdZe fd       Ze fd       Zd Zerd Z	d Z
d Zd Zd	 Zd
 Z xZS  xZS )TestTerminatedProcessLeakszRepeat the tests above looking for leaks occurring when dealing
    with terminated processes raising NoSuchProcess exception.
    The C functions are still invoked but will follow different code
    paths. We'll check those code paths.
    c                    t               j                          t               | _        t	        j
                  | j                  j                        | _        | j                  j                          | j                  j                          y r%   )
r   
setUpClassr   subprm   r}   pidrA   killwaitclsr&   s    r.   r   z%TestTerminatedProcessLeaks.setUpClass  sM    !#>>#((,,/r3   c                 `    t               j                          t        | j                         y r%   )r   tearDownClassr    r   r   s    r.   r   z(TestTerminatedProcessLeaks.tearDownClass  s    #((r3   c                 F    	  |        y # t         j                  $ r Y y w xY wr%   )rm   NoSuchProcess)r)   r-   s     r.   callzTestTerminatedProcessLeaks.call$  s$    	E## 		s   
   c                 N    | j                  | j                  j                         y r%   )r@   rA   r   rC   s    r.   	test_killz$TestTerminatedProcessLeaks.test_kill,      LL(r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   r    rC   s    r.   test_terminatez)TestTerminatedProcessLeaks.test_terminate/  s    LL,,-r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   suspendrC   s    r.   test_suspendz'TestTerminatedProcessLeaks.test_suspend2  s    LL**+r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   r   rC   s    r.   r   z&TestTerminatedProcessLeaks.test_resume5  s    LL))*r3   c                 N    | j                  | j                  j                         y r%   )r@   rA   r   rC   s    r.   	test_waitz$TestTerminatedProcessLeaks.test_wait8  r   r3   c                 2      fd} j                  |       y )Nc                  v    	 t         j                   j                  j                        S # t        $ r Y y w xY wr%   )rq   r   rA   r   r
   rC   s   r.   r   z7TestTerminatedProcessLeaks.test_proc_info.<locals>.call=  s1    >>$))--88) s   (, 	88r   )r)   r   s   ` r.   r   z)TestTerminatedProcessLeaks.test_proc_info;  s     LLr3   )r   r   r   r   classmethodr   r   r   r	   r   r   r   r   r   r   __classcell__)r&   s   @r.   r   r     s]         	)	.	,	+	)	# r3   r   r   c                       e Zd Zd Zd Zy)TestProcessDualImplementationc                 (    | j                  d        y )Nc                  T    t         j                  t        j                         d      S )NTuse_pebrq   proc_cmdliners   rt   r4   r3   r.   rb   zETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>I  s    T..ryy{D.I r3   r   rC   s    r.   test_cmdline_peb_truez3TestProcessDualImplementation.test_cmdline_peb_trueH  s    IJr3   c                 (    | j                  d        y )Nc                  T    t         j                  t        j                         d      S )NFr  r  r4   r3   r.   rb   zFTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>L  s    T..ryy{E.J r3   r   rC   s    r.   test_cmdline_peb_falsez4TestProcessDualImplementation.test_cmdline_peb_falseK  s    JKr3   N)r   r   r   r  r
  r4   r3   r.   r   r   F  s    KLr3   r   c                      e Zd ZdZd Z e       d        Z e       d        Z e       d        Z e       d        Z	 e       d        Z
 e        ej                  exr  ej                         dk(  d	       ej                  e d
      d                      Z ej                  e d      d        Zd Z ej                  ed      d        Zd Zd Z ej                  ed      d        Z ej                  exr ej:                  j=                  d       d       e       d               Z e       d        Z  e        ej                  e! d
      d               Z" e        ej                  exr  ejF                         dk7  d      d               Z$d Z% ej                  ed      d        Z& e        ej                  e' d
      d               Z( e        ej                  e) d
      d                Z* e        ej                  e+ d
      d!               Z, e       d"        Z-d# Z.d$ Z/erd% Z0d& Z1d' Z2d( Z3d) Z4y*y*)+TestModuleFunctionsLeaksz&Test leaks of psutil module functions.c                 P    t               }|j                  | |j                         y r%   )r   r9   r   r<   s     r.   r>   z&TestModuleFunctionsLeaks.test_coverageW  s    
tRVV,r3   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NTlogicalrm   	cpu_countr4   r3   r.   rb   z9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>_  s    V--d; r3   r   rC   s    r.   test_cpu_countz'TestModuleFunctionsLeaks.test_cpu_count]  s    ;<r3   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NFr  r  r4   r3   r.   rb   z?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>c  s    V--e< r3   r   rC   s    r.   test_cpu_count_coresz-TestModuleFunctionsLeaks.test_cpu_count_coresa  s    <=r3   c                 B    | j                  t        j                         y r%   )r@   rm   r   rC   s    r.   r   z'TestModuleFunctionsLeaks.test_cpu_timese      V%%&r3   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NT)percpu)rm   r   r4   r3   r.   rb   z=TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>k  s    V--T: r3   r   rC   s    r.   test_per_cpu_timesz+TestModuleFunctionsLeaks.test_per_cpu_timesi  s    :;r3   c                 B    | j                  t        j                         y r%   )r@   rm   	cpu_statsrC   s    r.   test_cpu_statsz'TestModuleFunctionsLeaks.test_cpu_statsm  r  r3   arm64zskipped due to #1892re   c                 B    | j                  t        j                         y r%   )r@   rm   cpu_freqrC   s    r.   test_cpu_freqz&TestModuleFunctionsLeaks.test_cpu_freqq  s     	V__%r3   r   c                 j    t        j                          | j                  t         j                         y r%   )rm   
getloadavgr@   rC   s    r.   test_getloadavgz(TestModuleFunctionsLeaks.test_getloadavgz  s     V&&'r3   c                 B    | j                  t        j                         y r%   )r@   rm   virtual_memoryrC   s    r.   test_virtual_memoryz,TestModuleFunctionsLeaks.test_virtual_memory  s    V**+r3   z&worthless on SUNOS (uses a subprocess)c                 B    | j                  t        j                         y r%   )r@   rm   swap_memoryrC   s    r.   test_swap_memoryz)TestModuleFunctionsLeaks.test_swap_memory  s    V''(r3   c                 \    t         rt        n| j                  }| j                  d |       y )Nc                  P    t        j                  t        j                               S r%   )rm   
pid_existsrs   rt   r4   r3   r.   rb   z:TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V..ryy{; r3   r   r   r(   r'   r@   r   s     r.   test_pid_existsz(TestModuleFunctionsLeaks.test_pid_exists  s     "	

;5Ir3   c                 \    t         rt        n| j                  }| j                  d |       y )Nc                  ,    t        j                  d      S )N.)rm   
disk_usager4   r3   r.   rb   z:TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V..s3 r3   r   r1  r   s     r.   test_disk_usagez(TestModuleFunctionsLeaks.test_disk_usage  s     "	

35Ar3   zQEMU user not supportedc                 B    | j                  t        j                         y r%   )r@   rm   disk_partitionsrC   s    r.   test_disk_partitionsz-TestModuleFunctionsLeaks.test_disk_partitions  s    V++,r3   z/proc/diskstatsz3/proc/diskstats not available on this Linux versionc                 (    | j                  d        y )Nc                  .    t        j                  d      S NF)nowrap)rm   disk_io_countersr4   r3   r.   rb   z@TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V44EB r3   r   rC   s    r.   test_disk_io_countersz.TestModuleFunctionsLeaks.test_disk_io_counters  s     	BCr3   c                 B    | j                  t        j                         y r%   )r@   rm   pidsrC   s    r.   	test_pidsz"TestModuleFunctionsLeaks.test_pids  s    V[[!r3   c                 (    | j                  d        y )Nc                  .    t        j                  d      S r=  )rm   net_io_countersr4   r3   r.   rb   z?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V335A r3   r   rC   s    r.   test_net_io_countersz-TestModuleFunctionsLeaks.test_net_io_counters  s     	ABr3   r   zneed root accessc                     t        j                  d       t               5  | j                  d        d d d        y # 1 sw Y   y xY w)Nr   r   c                  .    t        j                  d      S )Nr   rI  )rm   r   r4   r3   r.   rb   z?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7!7U!C r3   )rm   r   r   r@   rC   s    r.   r   z-TestModuleFunctionsLeaks.test_net_connections  s>     	E* 	ELLCD	E 	E 	Es	   =Ac                 n    t         rdn| j                  }| j                  t        j                  |       y )Ni @ )	tolerance)r	   rL  r@   rm   net_if_addrs)r)   rL  s     r.   test_net_if_addrsz*TestModuleFunctionsLeaks.test_net_if_addrs  s%    !(Idnn	V((I>r3   c                 B    | j                  t        j                         y r%   )r@   rm   net_if_statsrC   s    r.   test_net_if_statsz*TestModuleFunctionsLeaks.test_net_if_stats  s    V(()r3   c                 B    | j                  t        j                         y r%   )r@   rm   sensors_batteryrC   s    r.   test_sensors_batteryz-TestModuleFunctionsLeaks.test_sensors_battery  s     	V++,r3   c                 B    | j                  t        j                         y r%   )r@   rm   sensors_temperaturesrC   s    r.   test_sensors_temperaturesz2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V001r3   c                 B    | j                  t        j                         y r%   )r@   rm   sensors_fansrC   s    r.   test_sensors_fansz*TestModuleFunctionsLeaks.test_sensors_fans  s     	V(()r3   c                 B    | j                  t        j                         y r%   )r@   rm   	boot_timerC   s    r.   test_boot_timez'TestModuleFunctionsLeaks.test_boot_time  r  r3   c                 B    | j                  t        j                         y r%   )r@   rm   usersrC   s    r.   
test_usersz#TestModuleFunctionsLeaks.test_users  s    V\\"r3   c                 (    | j                  d        y )Nc                  ,    t        j                  d      S )NF)rm   
_set_debugr4   r3   r.   rb   z9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V..u5 r3   r   rC   s    r.   test_set_debugz'TestModuleFunctionsLeaks.test_set_debug  s    56r3   c                 B    | j                  t        j                         y r%   )r@   rq   winservice_enumeraterC   s    r.   test_win_service_iterz.TestModuleFunctionsLeaks.test_win_service_iter  s    LL223r3   c                      y r%   r4   rC   s    r.   test_win_service_getz-TestModuleFunctionsLeaks.test_win_service_get  s    r3   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r%   )rq   winservice_query_configrB   s   r.   rb   zFTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!C r3   nextrm   win_service_iterrB   r@   r)   rB   s    @r.   test_win_service_get_configz4TestModuleFunctionsLeaks.test_win_service_get_config  ,    //12779DLLCDr3   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r%   )rq   winservice_query_statusrm  s   r.   rb   zFTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>  rn  r3   ro  rr  s    @r.   test_win_service_get_statusz4TestModuleFunctionsLeaks.test_win_service_get_status  rt  r3   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r%   )rq   winservice_query_descrrm  s   r.   rb   zKTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!B r3   ro  rr  s    @r.    test_win_service_get_descriptionz9TestModuleFunctionsLeaks.test_win_service_get_description  s,    //12779DLLBCr3   N)5r   r   r   r   r>   r5   r  r  r   r  r   r   r   r   platformmachiner   r$  r	   r'  r*  r   r-  r2  r7  r   r:  r   rs   pathexistsr@  rC  r   rG  getuidr   rN  rQ  r   rT  r   rW  r   rZ  r]  r`  rd  rg  ri  rs  rx  r|  r4   r3   r.   r  r  T  s*   0- = = > > ' ' < < ' ' X__/"(""$/1G X__%7& 8 & X__[.1( 2(, X__UDE) F)JB X__Y 9:- ;- X__7bggnn%677= D 	
D
 " "
 X__,,o>C ? C X__U/yryy{a/1CDE E E?
 X__Y 9:* ;*
 X__,,o>- ? - X__11?C2 D 2 X__))?;* < *
 ' '#7 	4		E	E	D% r3   r  __main__)cprint)run_from_namez!skipping %s tests under QEMU_USERbrown):r   
__future__r   r0   rs   r}  sysr   rm   psutil._commonr   r   r   r   r   r	   psutil._compatr
   r   psutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    _psplatformrq   r}   rc   r(   r5   r7   r   r   r   r  r   psutil.tests.runnerr  r  __file__exitr4   r3   r.   <module>r     s>   &  	  
          -   ) % $ # ( , ) - # , ) 1 " ' ' # * . ' ) " 6>>	8r:^ r:j3!7 3l Wn-LN L .LZD~ ZDz z*12X=wG( r3   