
    Xh;                     f   d 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! ejD                  jF                  Z# ejH                         Z%dZ&d Z' G d  d!e      Z( G d" d#e(      Z)ejT                  jW                  e d$%       G d& d'e             Z, G d( d)e      Z-y)*a  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.
    N)LINUX)MACOS)OPENBSD)POSIX)SUNOS)WINDOWS)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)TestMemoryLeak)create_sockets)
get_testfn)process_namespace)pytest)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       f/var/www/html/cjf29f/d23bf782/d32178f2/venv/lib/python3.12/site-packages/psutil/tests/test_memleaks.pywrapperz5fewtimes_if_linux.<locals>.decorator.<locals>.wrapper@   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>.decorator?   s%    				2 
		2      )r/   s    r+   fewtimes_if_linuxr2   :   s    
 r0   c                      e Zd ZdZeZd Z e       d        Z e       d        Z	 e       d        Z
 e       d        Zej                  j                  e d       e       d	               Zej                  j                  e d       e       d
               Z e       d        Zd Zd Zej                  j                  e d      d        Zej                  j                  e d      d        Zej                  j                  e d       e       d               Zej                  j                  ed      d        Z e       d        Z e        ee      d               Zej                  j                  e d      d        Z ej                  j                  e d       e       d               Z! e       d        Z" e        ee      d               Z# e       d        Z$ e       ej                  j                  e% d      d               Z& e       d        Z' e       d        Z(ej                  j                  e d       e       d                Z)d! Z* e       d"        Z+ej                  j                  e, d      d#        Z-ej                  j                  e, d      d$        Z. e       d%        Z/ej                  j                  e0 d       e       d&               Z1ej                  j                  e2 d'      ej                  j                  e3 d      d(               Z4ej                  j                  e2 d'      ej                  j                  e3 d      d)               Z5 e       ej                  j                  ed*      d+               Z6ej                  j                  e7 d      d,        Z8ej                  j                  e d      d-        Z9y.)/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"**%<=r0   c                 N    | j                  | j                  j                         y r"   )executeprocnamer&   s    r+   	test_namez TestProcessObjectLeaks.test_name_       TYY^^$r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   cmdliner@   s    r+   test_cmdlinez#TestProcessObjectLeaks.test_cmdlinec       TYY&&'r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   exer@   s    r+   test_exezTestProcessObjectLeaks.test_exeg       TYY]]#r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   ppidr@   s    r+   	test_ppidz TestProcessObjectLeaks.test_ppidk   rB   r0   z
POSIX onlyreasonc                 N    | j                  | j                  j                         y r"   )r=   r>   uidsr@   s    r+   	test_uidsz TestProcessObjectLeaks.test_uidso        	TYY^^$r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   gidsr@   s    r+   	test_gidsz TestProcessObjectLeaks.test_gidst   rS   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   statusr@   s    r+   test_statusz"TestProcessObjectLeaks.test_statusy       TYY%%&r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   nicer@   s    r+   	test_nicez TestProcessObjectLeaks.test_nice}   s    TYY^^$r0   c                 Z     t         j                          j                   fd       y )Nc                  :    j                   j                         S r"   )r>   r\   )nicenessr&   s   r+   <lambda>z6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>   s    TYY^^H5 r0   )thisprocr\   r=   )r&   r`   s   `@r+   test_nice_setz$TestProcessObjectLeaks.test_nice_set   s    ==?56r0   not supportedc                 N    | j                  | j                  j                         y r"   )r=   r>   ionicer@   s    r+   test_ionicez"TestProcessObjectLeaks.test_ionice   rZ   r0   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"   )r>   rf   )r&   values   r+   ra   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8 r0   c                  V     j                   j                  t        j                        S r"   )r>   rf   psutilIOPRIO_CLASS_NONEr@   s   r+   ra   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1&2J2J!K r0   r   )r   rb   rf   r=   r-   partialcextproc_ioprio_setosgetpidexecute_w_excOSError)r&   r*   rj   s   ` @r+   test_ionice_setz&TestProcessObjectLeaks.test_ionice_set   s^    OO%ELL89LLKL##D$8$8"))+r1MCw,r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   io_countersr@   s    r+   test_io_countersz'TestProcessObjectLeaks.test_io_counters        	TYY**+r0   zworthless on POSIXc                     t        j                         j                          | j                  | j                  j                         y r"   )rl   Processusernamer=   r>   r@   s    r+   test_usernamez$TestProcessObjectLeaks.test_username   s-     	!!#TYY''(r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   create_timer@   s    r+   test_create_timez'TestProcessObjectLeaks.test_create_time       TYY**+r0   )only_ifc                 N    | j                  | j                  j                         y r"   )r=   r>   num_threadsr@   s    r+   test_num_threadsz'TestProcessObjectLeaks.test_num_threads   rz   r0   WINDOWS onlyc                 N    | j                  | j                  j                         y r"   )r=   r>   num_handlesr@   s    r+   test_num_handlesz'TestProcessObjectLeaks.test_num_handles   r   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   num_fdsr@   s    r+   test_num_fdsz#TestProcessObjectLeaks.test_num_fds        	TYY&&'r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   num_ctx_switchesr@   s    r+   test_num_ctx_switchesz,TestProcessObjectLeaks.test_num_ctx_switches       TYY//0r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   threadsr@   s    r+   test_threadsz#TestProcessObjectLeaks.test_threads   r   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   	cpu_timesr@   s    r+   test_cpu_timesz%TestProcessObjectLeaks.test_cpu_times   s    TYY(()r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   cpu_numr@   s    r+   test_cpu_numz#TestProcessObjectLeaks.test_cpu_num   r   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   memory_infor@   s    r+   test_memory_infoz'TestProcessObjectLeaks.test_memory_info   r   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   memory_full_infor@   s    r+   test_memory_full_infoz,TestProcessObjectLeaks.test_memory_full_info   r   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   terminalr@   s    r+   test_terminalz$TestProcessObjectLeaks.test_terminal   s     	TYY''(r0   c                     t         rt        n| j                  }| j                  | j                  j
                  |       y )Nr$   )r   r%   r$   r=   r>   resumer&   r$   s     r+   test_resumez"TestProcessObjectLeaks.test_resume   s)    "	

TYY%%U3r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   cwdr@   s    r+   test_cwdzTestProcessObjectLeaks.test_cwd   rJ   r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   cpu_affinityr@   s    r+   test_cpu_affinityz(TestProcessObjectLeaks.test_cpu_affinity   s    TYY++,r0   c                      t         j                          j                   fd        j                  t         fd       y )Nc                  :    j                   j                         S r"   r>   r   )affinityr&   s   r+   ra   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TYY33H= r0   c                  <     j                   j                  dg      S Nrn   r   r@   s   r+   ra   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    tyy/E/Erd/K r0   )rb   r   r=   rt   
ValueError)r&   r   s   `@r+   test_cpu_affinity_setz,TestProcessObjectLeaks.test_cpu_affinity_set   s/    ((*=>:'KLr0   c                     t        t               d      5  | j                  | j                  j                         d d d        y # 1 sw Y   y xY w)Nw)openr   r=   r>   
open_filesr@   s    r+   test_open_filesz&TestProcessObjectLeaks.test_open_files   s9    *,$ 	/LL--.	/ 	/ 	/s   &AAc                 N    | j                  | j                  j                         y r"   )r=   r>   memory_mapsr@   s    r+   test_memory_mapsz'TestProcessObjectLeaks.test_memory_maps   rz   r0   z
LINUX onlyc                 .      j                   fd       y )Nc                  V     j                   j                  t        j                        S r"   r>   rlimitrl   RLIMIT_NOFILEr@   s   r+   ra   z4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TYY--f.B.BC r0   r=   r@   s   `r+   test_rlimitz"TestProcessObjectLeaks.test_rlimit   s     	CDr0   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+   ra   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TYY--f.B.BEJ r0   c                  :     j                   j                  d      S r   )r>   r   r@   s   r+   ra   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    $)):J:J2:N r0   )rb   r   rl   r   r=   rt   ru   r   )r&   r   s   `@r+   test_rlimit_setz&TestProcessObjectLeaks.test_rlimit_set   s<      4 45JKGZ02NOr0   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"   )r>   net_connections)kindr&   s   r+   ra   z=TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>   s    !:!:4!@ r0   )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=   r>   environr@   s    r+   test_environz#TestProcessObjectLeaks.test_environ  rF   r0   c                 (    | j                  d        y )Nc                  P    t         j                  t        j                               S r"   )rp   	proc_inforr   rs   r1   r0   r+   ra   z7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIIK8 r0   r   r@   s    r+   test_proc_infoz%TestProcessObjectLeaks.test_proc_info  s    89r0   N):__name__
__module____qualname____doc__rb   r>   r;   r2   rA   rE   rI   rM   r   markskipifr   rR   rV   rY   r]   rc   r   rg   rv   r   ry   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   r1   r0   r+   r4   r4   V   s   .D> % % ( ( $ $ % % [[E	,7%  8% [[E	,7%  8% ' '%7 [[J?' @' [[J?- @- [[00I,  J, [[&:;) <)
 , , 7+, , , [[GN;, <, [[E	,7(  8( 1 1 7+( , ( * * [[,,_E( F ( , , 1 1 [[E	,7)  8)4 $ $ [[,,_E- F- [[,,_EM FM
 / / [[O+OD,  E, [[E	,7[[J?E @ 8E [[E	,7[[J?P @ 8P
  [[(>?B @ B [[K@( A( [[GN;: <:r0   r4   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         |           t               | _        t	        j
                  | j                  j                        | _        | j                  j                          | j                  j                          y r"   )
super
setUpClassr   subprl   r|   pidr>   killwaitclsr#   s    r+   r   z%TestTerminatedProcessLeaks.setUpClass  sJ    !#>>#((,,/r0   c                 L    t         |           t        | j                         y r"   )r   tearDownClassr   r   r   s    r+   r   z(TestTerminatedProcessLeaks.tearDownClass  s    #((r0   c                 F    	  |        y # t         j                  $ r Y y w xY wr"   )rl   NoSuchProcess)r&   r*   s     r+   callzTestTerminatedProcessLeaks.call  s$    	E## 		s   
   c                 N    | j                  | j                  j                         y r"   )r=   r>   r   r@   s    r+   	test_killz$TestTerminatedProcessLeaks.test_kill'      LL(r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   r   r@   s    r+   test_terminatez)TestTerminatedProcessLeaks.test_terminate*  s    LL,,-r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   suspendr@   s    r+   test_suspendz'TestTerminatedProcessLeaks.test_suspend-  s    LL**+r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   r   r@   s    r+   r   z&TestTerminatedProcessLeaks.test_resume0  s    LL))*r0   c                 N    | j                  | j                  j                         y r"   )r=   r>   r   r@   s    r+   	test_waitz$TestTerminatedProcessLeaks.test_wait3  r   r0   c                 2      fd} j                  |       y )Nc                  v    	 t         j                   j                  j                        S # t        $ r Y y w xY wr"   )rp   r   r>   r   ProcessLookupErrorr@   s   r+   r   z7TestTerminatedProcessLeaks.test_proc_info.<locals>.call8  s1    >>$))--88) s   (, 	88r   )r&   r   s   ` r+   r   z)TestTerminatedProcessLeaks.test_proc_info6  s     LLr0   )r   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   __classcell__)r#   s   @r+   r   r     s]         	)	.	,	+	)	# r0   r   r   rN   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rp   proc_cmdlinerr   rs   r1   r0   r+   ra   zETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>D  s    T..ryy{D.I r0   r   r@   s    r+   test_cmdline_peb_truez3TestProcessDualImplementation.test_cmdline_peb_trueC  s    IJr0   c                 (    | j                  d        y )Nc                  T    t         j                  t        j                         d      S )NFr  r  r1   r0   r+   ra   zFTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>G  s    T..ryy{E.J r0   r   r@   s    r+   test_cmdline_peb_falsez4TestProcessDualImplementation.test_cmdline_peb_falseF  s    JKr0   N)r   r   r   r  r  r1   r0   r+   r  r  A  s    KLr0   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                  j                  exr  ej                          dk(  d	
      ej                  j                  e d
      d                      Zej                  j                  e d
      d        Zd Zej                  j                  ed
      d        Zd Zd Zd Zej                  j                  exr ej:                  j=                  d       d
       e       d               Z e       d        Z  e       ej                  j                  e! d
      d               Z" e       ej                  j                  exr  ejF                         dk7  d
      d               Z$d Z%d Z& e       ej                  j                  e' d
      d               Z( e       ej                  j                  e) d
      d                Z* e       ej                  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   r6   r   r9   s     r+   r;   z&TestModuleFunctionsLeaks.test_coverageR  s    
tRVV,r0   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NTlogicalrl   	cpu_countr1   r0   r+   ra   z9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>Z  s    V--d; r0   r   r@   s    r+   test_cpu_countz'TestModuleFunctionsLeaks.test_cpu_countX  s    ;<r0   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NFr  r  r1   r0   r+   ra   z?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>^  s    V--e< r0   r   r@   s    r+   test_cpu_count_coresz-TestModuleFunctionsLeaks.test_cpu_count_cores\  s    <=r0   c                 B    | j                  t        j                         y r"   )r=   rl   r   r@   s    r+   r   z'TestModuleFunctionsLeaks.test_cpu_times`      V%%&r0   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NT)percpu)rl   r   r1   r0   r+   ra   z=TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>f  s    V--T: r0   r   r@   s    r+   test_per_cpu_timesz+TestModuleFunctionsLeaks.test_per_cpu_timesd  s    :;r0   c                 B    | j                  t        j                         y r"   )r=   rl   	cpu_statsr@   s    r+   test_cpu_statsz'TestModuleFunctionsLeaks.test_cpu_statsh  r  r0   arm64zskipped due to #1892rN   rd   c                 B    | j                  t        j                         y r"   )r=   rl   cpu_freqr@   s    r+   test_cpu_freqz&TestModuleFunctionsLeaks.test_cpu_freql  s     	V__%r0   r   c                 j    t        j                          | j                  t         j                         y r"   )rl   
getloadavgr=   r@   s    r+   test_getloadavgz(TestModuleFunctionsLeaks.test_getloadavgu  s     V&&'r0   c                 B    | j                  t        j                         y r"   )r=   rl   virtual_memoryr@   s    r+   test_virtual_memoryz,TestModuleFunctionsLeaks.test_virtual_memory|  s    V**+r0   z&worthless on SUNOS (uses a subprocess)c                 B    | j                  t        j                         y r"   )r=   rl   swap_memoryr@   s    r+   test_swap_memoryz)TestModuleFunctionsLeaks.test_swap_memory  s    V''(r0   c                 \    t         rt        n| j                  }| j                  d |       y )Nc                  P    t        j                  t        j                               S r"   )rl   
pid_existsrr   rs   r1   r0   r+   ra   z:TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V..ryy{; r0   r   r   r%   r$   r=   r   s     r+   test_pid_existsz(TestModuleFunctionsLeaks.test_pid_exists  s     "	

;5Ir0   c                 \    t         rt        n| j                  }| j                  d |       y )Nc                  ,    t        j                  d      S )N.)rl   
disk_usager1   r0   r+   ra   z:TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V..s3 r0   r   r2  r   s     r+   test_disk_usagez(TestModuleFunctionsLeaks.test_disk_usage  s     "	

35Ar0   c                 B    | j                  t        j                         y r"   )r=   rl   disk_partitionsr@   s    r+   test_disk_partitionsz-TestModuleFunctionsLeaks.test_disk_partitions  s    V++,r0   z/proc/diskstatsz3/proc/diskstats not available on this Linux versionc                 (    | j                  d        y )Nc                  .    t        j                  d      S NF)nowrap)rl   disk_io_countersr1   r0   r+   ra   z@TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V44EB r0   r   r@   s    r+   test_disk_io_countersz.TestModuleFunctionsLeaks.test_disk_io_counters  s     	BCr0   c                 B    | j                  t        j                         y r"   )r=   rl   pidsr@   s    r+   	test_pidsz"TestModuleFunctionsLeaks.test_pids  s    V[[!r0   c                 (    | j                  d        y )Nc                  .    t        j                  d      S r>  )rl   net_io_countersr1   r0   r+   ra   z?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V335A r0   r   r@   s    r+   test_net_io_countersz-TestModuleFunctionsLeaks.test_net_io_counters  s     	ABr0   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   rJ  )rl   r   r1   r0   r+   ra   z?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7!7U!C r0   )rl   r   r   r=   r@   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   rM  r=   rl   net_if_addrs)r&   rM  s     r+   test_net_if_addrsz*TestModuleFunctionsLeaks.test_net_if_addrs  s%    !(Idnn	V((I>r0   c                 B    | j                  t        j                         y r"   )r=   rl   net_if_statsr@   s    r+   test_net_if_statsz*TestModuleFunctionsLeaks.test_net_if_stats  s    V(()r0   c                 B    | j                  t        j                         y r"   )r=   rl   sensors_batteryr@   s    r+   test_sensors_batteryz-TestModuleFunctionsLeaks.test_sensors_battery  s     	V++,r0   c                 B    | j                  t        j                         y r"   )r=   rl   sensors_temperaturesr@   s    r+   test_sensors_temperaturesz2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V001r0   c                 B    | j                  t        j                         y r"   )r=   rl   sensors_fansr@   s    r+   test_sensors_fansz*TestModuleFunctionsLeaks.test_sensors_fans  s     	V(()r0   c                 B    | j                  t        j                         y r"   )r=   rl   	boot_timer@   s    r+   test_boot_timez'TestModuleFunctionsLeaks.test_boot_time  r  r0   c                 B    | j                  t        j                         y r"   )r=   rl   usersr@   s    r+   
test_usersz#TestModuleFunctionsLeaks.test_users  s    V\\"r0   c                 (    | j                  d        y )Nc                  ,    t        j                  d      S )NF)rl   
_set_debugr1   r0   r+   ra   z9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V..u5 r0   r   r@   s    r+   test_set_debugz'TestModuleFunctionsLeaks.test_set_debug  s    56r0   c                 B    | j                  t        j                         y r"   )r=   rp   winservice_enumerater@   s    r+   test_win_service_iterz.TestModuleFunctionsLeaks.test_win_service_iter  s    LL223r0   c                      y r"   r1   r@   s    r+   test_win_service_getz-TestModuleFunctionsLeaks.test_win_service_get  s    r0   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r"   )rp   winservice_query_configr?   s   r+   ra   zFTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!C r0   nextrl   win_service_iterr?   r=   r&   r?   s    @r+   test_win_service_get_configz4TestModuleFunctionsLeaks.test_win_service_get_config  ,    //12779DLLCDr0   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r"   )rp   winservice_query_statusrn  s   r+   ra   zFTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>  ro  r0   rp  rs  s    @r+   test_win_service_get_statusz4TestModuleFunctionsLeaks.test_win_service_get_status  ru  r0   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r"   )rp   winservice_query_descrrn  s   r+   ra   zKTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!B r0   rp  rs  s    @r+    test_win_service_get_descriptionz9TestModuleFunctionsLeaks.test_win_service_get_description  s,    //12779DLLBCr0   N)5r   r   r   r   r;   r2   r  r  r   r  r!  r   r   r   r   platformmachiner
   r%  r   r(  r+  r   r.  r3  r8  r;  r   rr   pathexistsrA  rD  r   rH  getuidr   rO  rR  r   rU  r   rX  r   r[  r^  ra  re  rh  rj  rt  ry  r}  r1   r0   r+   r  r  O  s>   0- = = > > ' ' < < ' ' [[/"(""$/8N   [[L(A& B & [[GN;( <(, [[&NO) P)JB- [[7bggnn%677D   D 	
D
 " "
 [[//HC I C [[2)"))+"2;MNE O E?
*
 [[//H- I - [[44_M2 N 2 [[,,_E* F *
 ' '#7 	4		E	E	D% r0   r  ).r   r-   rr   r~  rl   psutil._commonr   r   r   r   r   r   psutil.testsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _psplatformrp   r|   rb   r%   r2   r4   r   r   r   r  r  r1   r0   r+   <module>r     s     	          ) % $ # ( , ) - # , ) 1 ' ' # *  . ' ) " 6>>	8r:^ r:j3!7 3l K7LN L 8LXD~ XDr0   