
    ztf                        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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, dd lm-Z- dd!lm.Z. dd"lm/Z/ dd#lm0Z0 dd$lm1Z1 dd%lm2Z2  G d& d'e.      Z3 G d( d)e.      Z4 G d* d+e.      Z5 G d, d-e.      Z6 G d. d/e.      Z7 G d0 d1e.      Z8 G d2 d3e.      Z9 G d4 d5e.      Z:e;d6k(  rdd7l<m=Z=  e=e>       yy)8zTests for system APIS.    N)AIX)BSD)FREEBSD)LINUX)MACOS)NETBSD)OPENBSD)POSIX)SUNOS)WINDOWS)PY3)FileNotFoundError)long)ASCII_FS)
CI_TESTING)DEVNULL)GITHUB_ACTIONS)GLOBAL_TIMEOUT)HAS_BATTERY)HAS_CPU_FREQ)HAS_GETLOADAVG)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)IS_64BIT)MACOS_12PLUS)PYPY)	QEMU_USER)UNICODE_SUFFIX)PsutilTestCase)check_net_address)enum)mock)retry_on_failurec                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestProcessIterc                 t   | j                  t        j                         t        j                         D cg c]  }|j
                   c}       | j                         }| j                  |j
                  t        j                         D cg c]  }|j
                   c}       t        j                  |j
                        }|j                          |j                          | j                  |j
                  t        j                         D cg c]  }|j
                   c}       y c c}w c c}w c c}w N)assertInosgetpidpsutilprocess_iterpidspawn_testprocProcesskillwaitassertNotIn)selfxsprocps       b/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/psutil/tests/test_system.pytest_pid_presencez!TestProcessIter.test_pid_presenceB   s    biik63F3F3H#IaAEE#IJ##%eii1D1D1F!GA!%%!GHNN599%		F4G4G4I$JqQUU$JK $J!G %Ks   D+
D0
D5
c                     t        j                         D cg c]  }| }}| j                  t        |d       t        t	        |      d              y c c}w )Nc                     | j                   S r)   r/   r6   s    r9   <lambda>z4TestProcessIter.test_no_duplicates.<locals>.<lambda>N   s
    QUU     )keyc                     | j                   S r)   r=   r>   s    r9   r?   z4TestProcessIter.test_no_duplicates.<locals>.<lambda>O   s
    !%% r@   )r-   r.   assertEqualsortedset)r5   r6   lss      r9   test_no_duplicatesz"TestProcessIter.test_no_duplicatesK   sI    ,,./Aa//2?+3r70	
 0s   	Ac           	         t        t        j                                t        d      D ]  }t	        j
                  dt        j                  t        j                                     5  | j                  t        t        j                  dg            g        d d d        t        j                  j                           y # 1 sw Y   *xY wN   zpsutil.Process.as_dictside_effect	cpu_timesattrs)listr-   r.   ranger$   patchNoSuchProcessr+   r,   rC   cache_clearr5   r6   s     r9   test_emulate_nspz TestProcessIter.test_emulate_nspR   s    V  "#q 	.A("00=    ,,K=ABB	 ++-	. s   (1CC	c                    t        t        j                                t        d      D ]  }t	        j
                  dt        j                  t        j                                     5  | j                  t        j                        5  t        t        j                  dg             d d d        d d d        t        j                  j                           y # 1 sw Y   2xY w# 1 sw Y   6xY wrI   )rP   r-   r.   rQ   r$   rR   AccessDeniedr+   r,   assertRaisesrT   rU   s     r9   test_emulate_access_deniedz*TestProcessIter.test_emulate_access_denied^   s    V  "#q 	.A("//		< C &&v':':; C,,K=ABC	C ++-	.
C C	C Cs$   ( C&!C)C&C#C&&C/	c                    t        j                  dg      D ]6  }| j                  t        |j                  j                               dg       8 t        j                  dg      D ]6  }| j                  t        |j                  j                               dg       8 | j                  t              5  t        t        j                  dg             d d d        t        j                  dt        j                  dd            5 }t        j                  ddg      D ]?  }| j                  |j                  d          | j                  |j                  d   d       A |j                  sJ 	 d d d        t        j                  dt        j                  dd            5 }t               }t        j                  ddg|	      D ]@  }| j                  |j                  d   |       | j                  |j                  d   d       B |j                  sJ 	 d d d        y # 1 sw Y   QxY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nr/   rN   fooz$psutil._psplatform.Process.cpu_timesr    rK   rM   )rO   ad_value)r-   r.   rC   rP   infokeysrY   
ValueErrorr$   rR   rX   assertIsNoneassertGreaterEqualcalledobjectassertIs)r5   r8   mflags       r9   
test_attrszTestProcessIter.test_attrsi   s   $$E73 	;AT!&&++-05':	; $$E73 	;AT!&&++-05':	;z* 	5$$E734	5ZZ2++Ar2
 	 (({/CD :!!!&&"56''uq9: 88O8	 ZZ2++Ar2
 
	 8D((k*T : aff[148''uq9	:
 88O8
	 
		5 	5	 	
	 
	s&   6!H&
A)H3'A5H?&H03H<?Ic                     t        t        j                                t        j                  sJ t        j                  j	                          t        j                  rJ y r)   )rP   r-   r.   _pmaprT   r5   s    r9   test_cache_clearz TestProcessIter.test_cache_clear   s@    V  "#|||'')<<<r@   N)	__name__
__module____qualname__r:   rG   rV   rZ   ri   rm    r@   r9   r'   r'   A   s!    L

.	.8 r@   r'   c                       e Zd Z ej                  exr ed      d        Z ej                  exr ed      d        Zd Z	d Z
y)TestProcessAPIsz-spawn_testproc() unreliable on PYPY + WINDOWSc                 V    fd}g  j                         } j                         } j                         }|||fD cg c]!  }t        j                  |j                        # }} j	                  t
        t        j                  |d        j	                  t        t        j                  |d       t        j                         }t        j                  |d|      \  }}	 j                  t        j                         |z
  d        j                  |g         j                  t        |	      d	        j                  g        |	D ]  }
 j                  t        |
d
              t        d       fd       }|j                           |||      \  }}	 j!                  |j                  |D cg c]  }|j                   c}       t"        r: j                  |j%                         j&                  t(        j*                          n* j                  |j%                         j&                  d        j                  |j                  g       |	D ]  }
 j                  t        |
d
              t        d       fd       }|j                          |j                           |||      \  }}	 j                  t-              t-        |j                  |j                  |j                  g             |D ]  }
 j/                  t        |
d
              y c c}w c c}w )Nc                 <    j                  | j                         y r)   )appendr/   )r8   pidss    r9   callbackz1TestProcessAPIs.test_wait_procs.<locals>.callback   s    KKr@   )timeout   )rx   g{Gz?rz   rx   g      ?   
returncode   c                     t        j                  | d|      \  }}j                  t        |      d       j                  t        |      d       ||fS )NQ?r|   r{   rJ   r-   
wait_procsrC   lenprocsrx   gonealiver5   s       r9   test_1z/TestProcessAPIs.test_wait_procs.<locals>.test_1   R     ++thKD% SY*SZ+;r@   c                     t        j                  | d|      \  }}j                  t        |      d       j                  t        |      d       ||fS )Nr   r|   r}   r   r   r   s       r9   test_2z/TestProcessAPIs.test_wait_procs.<locals>.test_2   r   r@   )r0   r-   r1   r/   rY   ra   r   	TypeErrortime
assertLessrC   r   assertFalsehasattrr%   	terminater*   r
   popr~   signalSIGTERMrE   
assertTrue)r5   rx   sproc1sproc2sproc3r6   r   tr   r   r8   r   r   rw   s   `            @r9   test_wait_procszTestProcessAPIs.test_wait_procs   s   	 $$&$$&$$&170HI1&II*f&7&7K)V%6%6JIIK''thOe		a-r"UQ'r" 	7AWQ56	7 
"		 
	 	UH-efjj$"7Q155"78TXXZ22V^^ODTXXZ22A6

|, 	7AWQ56	7 
"		 
	 	UH-eTCVZZ(L$MN 	6AOOGA|45	6] J0 #8s   &L!7L&
c                 $   | j                         }| j                         }| j                         }|||fD cg c]!  }t        j                  |j                        # }}|D ]  }|j	                           t        j
                  |       y c c}w r)   )r0   r-   r1   r/   r   r   )r5   r   r   r   r6   r   r8   s          r9   test_wait_procs_no_timeoutz*TestProcessAPIs.test_wait_procs_no_timeout   s     $$&$$&$$&170HI1&II 	AKKM	%  Js   &Bc                    | j                         }| j                  t        j                  |j                               t        j
                  |j                        }|j                          |j                          | j                  t        j                  |j                               | j                  t        j                  d             | j                  t        j                  d      dt        j                         v        y )Nry   r   )r0   r   r-   
pid_existsr/   r1   r2   r3   r   rC   rw   )r5   r7   r8   s      r9   test_pid_existszTestProcessAPIs.test_pid_exists   s    ##%))%))45NN599%		**59956**2./**1-qFKKM/ABr@   c                    t        j                         }|D ]  }	 t        j                  |      sJ  t        t        |      dz   t        |      dz         }|D ](  }| j                  t        j                  |      |       * y # t        $ r< t	        j
                  d       | j                  |t        j                                Y w xY w)Ng?i:  i>  msg)
r-   rw   r   AssertionErrorr   sleepr4   rQ   maxr   )r5   rw   r/   s      r9   test_pid_exists_2z!TestProcessAPIs.test_pid_exists_2   s    {{} 	5C5((---	5 SY&D	E(9: 	>CV..s3=	> " 5 

3  fkkm4	5s   BAC
CN)rn   ro   rp   unittestskipIfr   r   r   r   r   r   rq   r@   r9   rs   rs      s`    X__I7676r X__I!!C>r@   rs   c                   x    e Zd Zd Z ej
                  exr  ej                          d      d        Z	d Z
d Zy)TestMiscAPIsc                     t        j                         }| j                  |t               | j	                  |d       | j                  |t        j                                y Nr   )r-   	boot_timeassertIsInstancefloatassertGreaterr   r   )r5   bts     r9   test_boot_timezTestMiscAPIs.test_boot_time   sD    b%(2q!DIIK(r@   unreliable on CIc           	         t        j                         }| j                  |g        |D ]R  }| j                  |      5  |j                  sJ | j                  |j                  t               | j                  |j                  t        t        d       f       |j                  +| j                  |j                  t        t        d       f       |j                   |j                   | j                  |j                  d       t        j                  j                  |j                         t        st        r| j!                  |j"                         nt        j$                  |j"                         d d d        U y # 1 sw Y   axY w)N)user        )r-   usersassertNotEqualsubTestnamer   strterminaltypehostr   starteddatetimefromtimestampr   r	   rb   r/   r1   )r5   r   r   s      r9   
test_userszTestMiscAPIs.test_users   s   E2& 	-D4( -yy y%%dii5%%dmmc4:5FG99())$))c4:5FG		""4<<5!!//=g%%dhh/NN488,- -	-- -s   D5F  F
	c                     t         j                  }t        t         _        	 t        j                          |t         _        y # |t         _        w xY wr)   )sysstdoutr   r-   test)r5   r   s     r9   	test_testzTestMiscAPIs.test_test	  s/    
	 KKMCJCJs   A Ac                    g d}|D ](  }| j                  t        t        |      t        |       * t        j
                  dk(  rt        j                  sJ t        j                  rJ |j                  d       dt        j                  j                         v r%t        j                  sJ |j                  d       ndt        j                  j                         v rt        j                  sJ | j                  t        j                  t        j                   t        j"                  gj%                  d      d	       |j                  d
       |j                  d       |j                  d       |j                  d       ndt        j                  j                         v s dt        j                  j                         v r$t        j&                  sJ |j                  d       nydt        j                  j                         v rYt        j(                  sJ |j                  d       n5t        j                  sJ t        j                  rJ |j                  d       |D ]#  }| j+                  t        t        |      |       % y )N)	r
   r   r   r   r   r	   r   r   r   r   posixr
   linuxr   bsdTr{   r   r   r	   r   sunossolarisr   darwinr   r   )r   getattrr-   boolr+   r   r
   r   remover   platformlowerr   r   rC   r   r	   r   countr   r   r   )r5   namesr   s      r9   test_os_constantszTestMiscAPIs.test_os_constants  s   

  	ID!!'&$"74!H	I 77g<<<~~%%LL!#,,,,..||#|W%#,,,,..zz!z  ^^V^^V]]CII 	 U#Y'Y'X&3<<--// 2 2 44||#|W%S\\//11||#|W%>>!>||##LL#  	>DWVT2=	>r@   N)rn   ro   rp   r   r   r   r   r-   r   r   r   r   rq   r@   r9   r   r      sD    ) X__Z6$68JK- L-& 2>r@   r   c                       e Zd Zd Zd Zy)TestMemoryAPIsc                 P   t        j                         }|j                  dkD  sJ |       |j                  dkD  sJ |       d|j                  cxk  rdk  sJ |        J |       |j
                  dkD  sJ |       |j                  dk\  sJ |       |j                  D ]  }t        ||      }|dk7  r| j                  |t        t        f       |dk7  s6|dk\  s| j                  |d|d      ||j                  kD  sb| j                  |d|j                  d|d	|d       y )
Nr   d   percenttotalz < 0 ()z > total (total=z, =)r-   virtual_memoryr   	availabler   usedfree_fieldsr   r   intr   fail)r5   memr   values       r9   test_virtual_memoryz"TestMemoryAPIs.test_virtual_memoryH  s   ##%yy1}!c!}}}q %#% CKK&3&++&++&xx!| S |xx1}!c!}KK 	DC&Ey %%ec4[9wz))T5$ABB399$))D%9 	r@   c                    t        j                         }| j                  |j                  d       |j                  dk\  sJ |       |j
                  dk\  sJ |       |j                  dkD  r|j                  dkD  sJ |       |j                  dk(  sJ |       d|j                  cxk  rdk  sJ |        J |       |j                  dk\  sJ |       |j                  dk\  sJ |       y )N)r   r   r   r   sinsoutr   r   )
r-   swap_memoryrC   r   r   r   r   r   r   r   )r5   r   s     r9   test_swap_memoryzTestMemoryAPIs.test_swap_memory\  s      "KKL	
 yyA~"s"~xx1}!c!}99q=88a<$$<88q=%#%=CKK&3&++&++&ww!| S |xx1}!c!}r@   N)rn   ro   rp   r   r   rq   r@   r9   r   r   G  s    ("r@   r   c                   Z   e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
j                  exr ed      d	        Zd
 Zd Zd Zd Zd Zd Zd Z e
j                  exr  ej0                         dk(  d       e
j                  e d      d               Z e
j                  e d      d        Zy)TestCpuAPIsc                    t        j                         }| j                  |       | j                  |t	        t        j
                  d                   | j                  |d       t        j                  j                  d      r>t        d      5 }|j                         }d d d        dvrt        j                  d      y y # 1 sw Y   $xY w)NTpercpur{   z/proc/cpuinfozphysical idz#cpuinfo doesn't include physical id)r-   	cpu_countassertIsNotNonerC   r   rM   rc   r+   pathexistsopenreadr   SkipTest)r5   logicalfdcpuinfo_datas       r9   test_cpu_count_logicalz"TestCpuAPIs.test_cpu_count_logicalo  s    ""$W%#f&6&6d&C"DE+77>>/*o& )"!wwy)L0''(MNN 1 +) )s   CCc                 2   t        j                         }t        j                  d      }|t        j                  d      t        r,t        j                         d d dk  r| j                  |       y | j                  |d       | j                  ||       y )NFr   zcpu_count_cores() is NonerJ   )   r{   r{   )	r-   r   r   r   r   r   getwindowsversionrb   rc   )r5   r   coress      r9   test_cpu_count_coresz TestCpuAPIs.test_cpu_count_cores{  s    ""$  /=##$?@@s,,.r2f<e$##E1-##GU3r@   c                    dD ]  }t        j                  d|      5 }| j                  t        j                                |j
                  sJ 	 d d d        t        j                  d|      5 }| j                  t        j                  d             |j
                  sJ 	 d d d         y # 1 sw Y   `xY w# 1 sw Y   xY w)N)ry   r   Nz$psutil._psplatform.cpu_count_logicalreturn_valuez"psutil._psplatform.cpu_count_coresFr   )r$   rR   rb   r-   r   rd   )r5   valrg   s      r9   test_cpu_count_nonezTestCpuAPIs.test_cpu_count_none  s      
	 C6S  !!&"2"2"45xxx	 
 43  !!&"2"25"ABxxx	   
	    
   s   2B//4B;/B8	;C	c                     d}t        j                         }t        |       |D ]/  }| j                  |t               | j                  |d       ||z  }1 | j                  |t        |      d       t        |       y )Nr   r   r  places)r-   rM   sumr   r   rc   assertAlmostEqualr   )r5   r   timescp_times       r9   test_cpu_timeszTestCpuAPIs.test_cpu_times  sw      "E
 	G!!'51##GS1WE	 	uc%j;E
r@   c                 8   t        t        j                               }t        j                         t        z   }t        j                         |k  r;t        t        j                               }||kD  ry t        j                         |k  r;| j                  d      )Nztime remained the same)r  r-   rM   r   r   r   )r5   t1stop_att2s       r9   test_cpu_times_time_increasesz)TestCpuAPIs.test_cpu_times_time_increases  sr    !!#$))+.iikG#V%%'(BBw iikG# ii011r@   c                    t        j                  d      D ]k  }d}t        |       |D ]/  }| j                  |t               | j                  |d       ||z  }1 | j                  |t        |      d       t        |       m | j                  t        t        j                  d      d         t        t        j                  d                   y )NTr   r   r   r  r  F)
r-   rM   r  r   r   rc   r  r   rC   r   )r5   r  r   r  s       r9   test_per_cpu_timeszTestCpuAPIs.test_per_cpu_times  s    %%T2 	EEJ  !%%gu5''5 ! ""5#e*Q"?J	 	  -a01  ./	
r@   c                 x   t        j                  d      }t        j                         t        z   }	 t        j                         |k\  r| j	                  d      S t        j                  d      }t        ||      D ];  \  }}t        j                  |      t        j                  |      }}||z
  }|dk\  s; y  )NTr   rz   g?)r-   rM   r   r   r   zip_cpu_busy_time)r5   tot1	giveup_attot2r  r  
differences          r9   test_per_cpu_times_2z TestCpuAPIs.test_per_cpu_times_2  s     t,IIK.0	yy{i'yy++##40DdD/ B..r2F4I4I"4MB"W
%		 r@   zunreliable on OPENBSD + CIc           	         t        j                         }t        j                  d      }|j                  t        | D cg c]  }t	        |       c}      }|j
                  D ]G  }| j                  |||      5  | j                  t        ||      t        ||      d       d d d        I y c c}w # 1 sw Y   YxY w)NTr   )fieldbaseper_cpur{   delta)	r-   rM   _maker  r  r   r   r  r   )r5   r#  r$  numsummed_valuesr"  s         r9   test_cpu_times_comparisonz%TestCpuAPIs.test_cpu_times_comparison  s    
 !""$/

W#FCH#FG\\ 	EEgF &&D%(M51 '  	 $G s    B0<)B55B>	c                 ^   	 | j                  |t               | j                  |d       | j                  |d       | j	                  |dt        j                         z         y # t        $ r?}t        d|dt        j                  |      dt        j                  |            d }~ww xY w)Nr   g       g      Y@
z
last=z
new=)
r   r   rc   assertIsNotassertLessEqualr-   r   r   pprintpformat)r5   r   last_retnew_reterrs        r9   _test_cpu_percentzTestCpuAPIs._test_cpu_percent  s    		!!'51##GS1Wd+  %&2B2B2D*DE 	 x0&..2IK 	s   A!A$ $	B,-:B''B,c                 &   t        j                  d      }t        d      D ]-  }t        j                  d       }| j                  |||       |}/ | j	                  t
              5  t        j                  d       d d d        y # 1 sw Y   y xY wNMbP?)intervalr   ry   )r-   cpu_percentrQ   r4  rY   ra   )r5   last_news       r9   test_cpu_percentzTestCpuAPIs.test_cpu_percent	  s    !!51s 	A$$d3C""3c2D	 z* 	,+	, 	, 	,s   'BBc                    t        j                  dd      }| j                  t        |      t        j                                t        d      D ]5  }t        j                  d d      }|D ]  }| j                  |||        |}7 | j                  t              5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nr7  Tr8  r   r   ry   )	r-   r9  rC   r   r   rQ   r4  rY   ra   r5   r:  r;  r<  r   s        r9   test_per_cpu_percentz TestCpuAPIs.test_per_cpu_percent  s    !!5>TF$4$4$67s 	A$$d4@C ;&&wc:;D		
 z* 	948	9 	9 	9s   B>>Cc                 l   t        j                  d      }t        d      D ]P  }t        j                  d       }|D ]  }| j                  |||        | j                  t	        |      ||       |}R | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wr6  )r-   cpu_times_percentrQ   r4  r  rY   ra   r@  s        r9   test_cpu_times_percentz"TestCpuAPIs.test_cpu_times_percent  s    ''7s 	A**D9C ;&&wc:;""3s8T37D	 z* 	2$$b1	2 	2 	2s   
B**B3c                 X   t        j                  dd      }| j                  t        |      t        j                                t        d      D ]X  }t        j                  d d      }|D ]8  }|D ]  }| j                  |||        | j                  t        |      ||       : |}Z y )Nr7  Tr?  r   )r-   rC  rC   r   r   rQ   r4  r  )r5   r:  r;  r<  cpur   s         r9   test_per_cpu_times_percentz&TestCpuAPIs.test_per_cpu_times_percent(  s    ''tDTF$4$4$67s 	A**DFC <" ?G**7D#>?&&s3xs;< D	r@   c           
         t        j                  d       t        j                  d      D cg c]=  }|j                  t	        t        |j                              D cg c]  }d c}      ? }}t        j                  d|      5  t        j                  d      D ]  }|D ]  }| j                  |d d          	 d d d        y c c}w c c}w # 1 sw Y   y xY w)NTr   r   zpsutil.cpu_timesr  )
r-   rC  rM   r'  rQ   r   r   r$   rR   r4  )r5   r6   
zero_timesrF  r   s        r9   #test_per_cpu_times_percent_negativez/TestCpuAPIs.test_per_cpu_times_percent_negative3  s      - %%T2
 GGc!))n 561Q67

 
 ZZ*D 	@//t< @" @G**7D$?@@	@ 	@ 7
	@ 	@s#   0C	C
(	C
6C
CCc                     t        j                         }| j                  |j                  d       |j                  D ]>  }t	        ||      }| j                  |d       t        r(|dv s-| j                  |d       @ y )N)ctx_switches
interruptssoft_interruptssyscallsr   )rL  rM  )r-   	cpu_statsrC   r   r   rc   r   r   )r5   infosr   r   s       r9   test_cpu_statszTestCpuAPIs.test_cpu_stats?  st      "MMI	
 MM 	-DE4(E##E1-4#AA""5!,	-r@   arm64zskipped due to #1892not supportedc                 *     fd}t        j                  d      }t        r|st        j                  d      |sJ |        |t        j                  d      g       t
        r. j                  t        |      t        j                                y y )Nc                 V   | D ]  }j                  |j                  d       |j                  dk7  r&j                  |j                  |j                         |j                  D ]A  }t        ||      }j                  |t        t        t        f       j                  |d       C  y )N)currentminr   r   r   )rC   r   r   r.  rW  r   r   r   r   r   rc   )rF   ntr   r   r5   s       r9   check_lsz+TestCpuAPIs.test_cpu_freq.<locals>.check_lsS  s     6  -FG66S=((RVV<JJ 6D#B-E))%#tU1CD++E156	6r@   Tr   zreturns empty list on FreeBSDF)	r-   cpu_freqr   r   r   r   rC   r   r   )r5   rZ  rF   s   `  r9   test_cpu_freqzTestCpuAPIs.test_cpu_freqN  ss    
	6 __D)2##$CDD2r&///01SWf&6&6&89 r@   c                     t        j                         }| j                  t        |      d       |D ]*  }| j	                  |t
               | j                  |d       , y )Nr}   r   )r-   
getloadavgrC   r   r   r   rc   )r5   loadavgloads      r9   test_getloadavgzTestCpuAPIs.test_getloadavgg  sS    ##%Wq) 	/D!!$.##D#.	/r@   N)rn   ro   rp   r   r  r	  r  r  r  r   r   r   r   r	   r*  r4  r=  rA  rD  rG  rJ  rR  r   r   machiner   r\  r   ra  rq   r@   r9   r   r   n  s    
O	4 
:2
F X__Z+G-IJ K
,	9	2	
@- X__/"(""$/1G X__%7: 8:* X__'9/ :/r@   r   c                   P   e Zd Z ej                  exr e d      d        Z ej                  e d      d        Z	d Z
d Z ej                  exr ej                  j                  d       d       ej                  exr  ej$                          d	      d
               Zd Zy)TestDiskAPIszunreliable on PYPY32 + 32BITc                    t        j                  t        j                               }| j	                  |j
                  d       |j                  dkD  sJ |       |j                  dkD  sJ |       |j                  dkD  sJ |       |j                  |j                  kD  sJ |       |j                  |j                  kD  sJ |       d|j                  cxk  rdk  sn J |j                         t        t        d      rt        j                  t        j                               }d}| j	                  |j                  |j                         | j                  |j                  |j                  |       t        s(| j                  |j                  |j                  |       | j                         }| j                  t               5  t        j                  |       d d d        y # 1 sw Y   y xY w)N)r   r   r   r   r   r   
disk_usagei  P r%  )r-   rf  r+   getcwdrC   r   r   r   r   r   r   shutilr  r   
get_testfnrY   r   )r5   usageshutil_usage	tolerancefnames        r9   test_disk_usagezTestDiskAPIs.test_disk_usageq  s   !!"))+.(LM{{Q%%zzA~$u$~zzA~$u$~{{UZZ'..'{{UZZ'..'EMM(S(7%--7(6<(!,,RYY[9L'IU[[,*<*<=""

L--Y #   &&JJ 1 1 '  !01 	%e$	% 	% 	%s   G''G0znot an ASCII fsc                     | j                  t              5  t        j                  t               d d d        y # 1 sw Y   y xY wr)   )rY   UnicodeEncodeErrorr-   rf  r    rl   s    r9   test_disk_usage_unicodez$TestDiskAPIs.test_disk_usage_unicode  s6     12 	.n-	. 	. 	.s	   9Ac                 .    t        j                  d       y )N   .)r-   rf  rl   s    r9   test_disk_usage_bytesz"TestDiskAPIs.test_disk_usage_bytes  s    $r@   c                      fd}t        j                  d      } j                  ||       |D ]  } ||       t        rd|j                  v r t
        s0t        j                  j                  |j                        sJ |       |j                   t        j                  j                  |j                        sJ |       |j                  rJ |        t        j                  d      } j                  ||       t        j                  d      D ]n  } ||       t        r|j                  s	 t        j                  |j                         t        j                  j                  |j                        riJ |        d } |t(              }t        j                  d      D cg c](  }|j                  r|j                  j+                         * }} j-                  ||       y # t        $ rg}t        r)t        r#|j                   t         j"                  k(  rY d }~|j                   t         j$                  t         j&                  fvr Y d }~Ed }~ww xY wc c}w )Nc                    j                  | j                  t               j                  | j                  t               j                  | j                  t               j                  | j
                  t               y r)   )r   devicer   
mountpointfstypeoptsrY  r5   s    r9   check_ntuplez7TestDiskAPIs.test_disk_partitions.<locals>.check_ntuple  sS    !!"))S1!!"--5!!"))S1!!"''3/r@   F)allr   cdromTc                    t         j                  j                  |       } t         j                  j                  |       s?t         j                  j	                  |       } t         j                  j                  |       s?| j                         S r)   )r+   r   abspathismountdirnamer   )r   s    r9   find_mount_pointz;TestDiskAPIs.test_disk_partitions.<locals>.find_mount_point  sT    77??4(Dggood+wwt, ggood+::<r@   )r-   disk_partitionsr   r   rz  r
   r+   r   r   rw  rx  ry  statOSErrorr   r   errnoEIOEPERMEACCES__file__r   r*   )	r5   r|  rF   diskr3  r  mountr6   mountss	   `        r9   test_disk_partitionsz!TestDiskAPIs.test_disk_partitions  s   	0 ##.# 	%D7dii/ww~~dkk28D82 77>>$//28D82;;$$;	% ##-#**t4 	ADt
AGGDOO, 77>>$//:@D@:	A"	  !* ++5
|| LL 
 

 	eV$1  %%CII4J  yyell(CC D&
s$   8G20-I%2	I";)I*-II"z/proc/diskstatsz3/proc/diskstats not available on this linux versionr   c                      fd}t        j                  d      }|J d        ||       t        j                  d      } j                  t        |      t        t	        |                   |D ]  }|sJ |        |||           y )Nc                    j                  | d   | j                         j                  | d   | j                         j                  | d   | j                         j                  | d   | j                         t
        st        sǉj                  | d   | j                         j                  | d   | j                         t        r^j                  | d   | j                         j                  | d   | j                         j                  | d	   | j                         n%t        rj                  | d   | j                         | j                  D ]  }t        | |      dk\  rJ |         y )
Nr   r{   rJ   r}         r        )rC   
read_countwrite_count
read_byteswrite_bytesr	   r   	read_time
write_timer   read_merged_countwrite_merged_count	busy_timer   r   r   )rY  r   r5   s     r9   r|  z8TestDiskAPIs.test_disk_io_counters.<locals>.check_ntuple  s/   RUBMM2RUBNN3RUBMM2RUBNN3v  A5  A6$$RUB,@,@A$$RUB,A,AB$$RUBLL9$$RUBLL9

 2r4(A-1r1-2r@   Fperdiskzno disks on this system?T)r-   disk_io_countersrC   r   rE   r5   r|  retrA   s   `   r9   test_disk_io_countersz"TestDiskAPIs.test_disk_io_counters  s    	2" %%e4: ::S%%d3S3s3x=1 	#COO3S"	#r@   c                    t        j                  di       5 }| j                  t        j                  d             | j                  t        j                  d      i        |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nz#psutil._psplatform.disk_io_countersr  Fr  T)r$   rR   rb   r-   r  rC   rd   r5   rg   s     r9   test_disk_io_counters_no_disksz+TestDiskAPIs.test_disk_io_counters_no_disks  sl     ZZ1
 	f55eDEV44TBBG88O8	 	 	   AA<<BN)rn   ro   rp   r   r   r   r   rn  r   rq  rt  r  r   r+   r   r   r   r-   r  r  r  rq   r@   r9   rd  rd  p  s    X__T*(l,JK% L%< X__\#45. 6.
 8%t X__7bggnn%677= X__42622446H#	#8r@   rd  c                   "   e Zd Z ej                  e d      d        Z ej                  e d      d        Z ej                  ed      d        Z	d Z
 ej                  ed      d        Z ej                  exs exs e d      d	        Zy
)TestNetAPIsrT  c                      fd}t        j                  d      } ||       t        j                  d      } j                  |g        |D ]4  } j                  |        j	                  |t
                |||          6 y )Nc                 V   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k\  sJ |        | j                  dk\  sJ |        | j                  dk\  sJ |        | j                  dk\  sJ |        | j
                  dk\  sJ |        | j                  dk\  sJ |        | j                  dk\  sJ |        | j                  dk\  sJ |        y )	Nr   r{   rJ   r}   r  r  r  r  )	rC   
bytes_sent
bytes_recvpackets_sentpackets_recverrinerroutdropindropoutr{  s    r9   r|  z6TestNetAPIs.test_net_io_counters.<locals>.check_ntuple  ss   RUBMM2RUBMM2RUBOO4RUBOO4RUBHH-RUBII.RUBII.RUBJJ/==A%)r)%==A%)r)%??a'++'??a'++'88q=$"$=99>%2%>99>%2%>::?&B&?r@   FpernicT)r-   net_io_countersr   r   r   r   r  s   `   r9   test_net_io_countersz TestNetAPIs.test_net_io_counters  sy    	'$ $$E2S$$D1C$ 	#COOC !!#s+S"	#r@   c                    t        j                  di       5 }| j                  t        j                  d             | j                  t        j                  d      i        |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nz"psutil._psplatform.net_io_countersr  Fr  T)r$   rR   rb   r-   r  rC   rd   r  s     r9   test_net_io_counters_no_nicsz(TestNetAPIs.test_net_io_counters_no_nics  sl     ZZ0r
 	f44EBCV334@"E88O8	 	 	r  zQEMU user not supportedc           
      	   t        j                         }|sJ |       t        j                         }t        t        j
                  t        j                  t         j                  g      }|j                         D ]:  \  }}| j                  |t               | j                  t        t        |            t        |             |D ]  }| j                  |j                  t               | j                  |j                  t               | j                  |j                   t        t#        d       f       | j                  |j$                  t        t#        d       f       | j'                  |j                  |       t(        r0t*        s*| j                  |j                  t,        j.                         ||   j0                  r4|j                  t        j
                  k(  r[t	        j                  |j                        }t3        j4                  |      5  |j7                  |j                  df       d d d        n|j                  t        j                  k(  rt	        j8                  |j                  dt        j                  t        j:                  dt        j<                        d   }|\  }	}
}}}t	        j                  |	|
|      }t3        j4                  |      5  |j7                  |       d d d        |j                  |j                   |j$                  |j>                  fD ]9  }||j                  t        j                  k7  s$tA        ||j                         ; |j$                  r| jC                  |j>                         |j>                  s| jC                  |j$                          = tD        stF        stH        r@tK        t        d      r/| j                  t         j                  t        j                         y y tL        r/| j                  t         j                  t        jN                         y tP        r!| j                  t         j                  d       y y # 1 sw Y   {xY w# 1 sw Y   xY w)Nr   AF_LINKry   ))r-   net_if_addrsnet_if_statsrE   socketAF_INETAF_INET6r  itemsr   r   rC   r   familyr   addressnetmaskr   	broadcastr*   r   r   r#   IntEnumisup
contextlibclosingbindgetaddrinfoSOCK_STREAM
AI_PASSIVEptpr"   rb   r   r   r   r   r   	AF_PACKETr   )r5   nics	nic_statsfamiliesnicaddrsaddrsr_   afsocktypeproto
_canonnamesaips                  r9   test_net_if_addrszTestNetAPIs.test_net_if_addrs*  s6   ""$Tt'')	 HI**, /	6JC!!#s+SU_c%j9 ,6%%dkk37%%dllC8%%dllS$t*4EF%%dnnsDJ6GHdkk84t))$++t||DS>&& {{fnn4"MM$++6'//2 6FFDLL!#456 67%11 LL"OO".."--    ?C;HeZ"MM"h>'//2 'FF2J' LLLLNNHH	 ?B ~  ;;&//9-b$++>? >>%%dhh/XX%%dnn5Y,6/	6b %5vy)  @ *V^^V-=-=>V^^R0 M6 6' 's   Q'Q4'Q14Q>c                 l   t         rdt        j                  dd d d fg}ndg}t        j                  d|      5 }t        j
                         d   d   }|j                  sJ t         r| j                  |j                  d       n| j                  |j                  d       d d d        y # 1 sw Y   y xY w)	Nem1z06:3d:29)r  ry   z06-3d-29NNNzpsutil._psplatform.net_if_addrsr  r   z06:3d:29:00:00:00z06-3d-29-00-00-00)	r
   r-   r  r$   rR   r  rd   rC   r  )r5   r  rg   r  s       r9    test_net_if_addrs_mac_null_bytesz,TestNetAPIs.test_net_if_addrs_mac_null_bytesp  s     6>>:tT4HIC<=CZZ-C
 	D&&(/2D88O8  /BC  /BC	D 	D 	Ds   A(B**B3c                    t        j                         }|sJ |       t         j                  t         j                  t         j                  f}|j                         D ]  \  }}| j                  |t               |\  }}}}}	| j                  |t               | j                  ||       | j                  ||       | j                  |d       | j                  |d       | j                  |	t                y r   )r-   r  NIC_DUPLEX_FULLNIC_DUPLEX_HALFNIC_DUPLEX_UNKNOWNr  r   r   r   r*   rc   )
r5   r  all_duplexesr   statsr  duplexspeedmtuflagss
             r9   test_net_if_statszTestNetAPIs.test_net_if_stats  s    ""$Tt""""%%

  ::< 	.KD%!!$,.3+D&%e!!$-MM&,/MM&,/##E1-##C+!!%-	.r@   zLINUX or BSD or MACOS specificc                     t        j                  dt        t        j                  d            5 }t        j                         }| j                  |i        |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nzpsutil._psutil_posix.net_if_mtur]   rK   )	r$   rR   r  r  ENODEVr-   r  rC   rd   )r5   rg   r  s      r9   test_net_if_stats_enodevz$TestNetAPIs.test_net_if_stats_enodev  sd    
 ZZ-b1
 	 %%'CS"%88O8	 	 	s   5A//A8N)rn   ro   rp   r   r   r   r  r  r   r  r  r  r   r   r   r  rq   r@   r9   r  r    s    X__,,o># ?#8 X__,,o> ? X__Y 9:C1 ;C1JD$ X__Y 9:. ;.$ X__"c"U#%Er@   r  c                   
   e Zd Z ej                  e d      d        Z ej                  e d      d        Z ej                  e d       ej                  e	 d      d               Z
 ej                  e d      d        Zy)TestSensorsAPIsrT  c                    t        j                         }|j                         D ]  \  }}| j                  |t               |D ]  }| j                  |j
                  t               |j                  | j                  |j                  d       |j                  | j                  |j                  d       |j                  | j                  |j                  d         y r   )
r-   sensors_temperaturesr  r   r   labelrW  rc   highcritical)r5   tempsr   entriesentrys        r9   test_sensors_temperaturesz)TestSensorsAPIs.test_sensors_temperatures  s    ++-"[[] 		?MD'!!$,  ?%%ekk37==,++EMM1=::)++EJJ:>>-++ENNA>?		?r@   c                 b   ddgi}t        j                  d|      5 }t        j                  d      d   d   }|j                  sJ | j                  |j                  d       | j                  |j                  d	       | j                  |j                  d
       d d d        y # 1 sw Y   y xY w)Ncoretemp)r  g      I@g      N@g     Q@z'psutil._psplatform.sensors_temperaturesr  T)
fahrenheitr   g     ^@g     a@g     c@)	r$   rR   r-   r  rd   rC   rW  r  r  )r5   drg   r  s       r9   #test_sensors_temperatures_fahreneitz3TestSensorsAPIs.test_sensors_temperatures_fahreneit  s    567ZZ5A
 	4//4@LQOE88O8U]]E2UZZ/U^^U3	4 	4 	4s   A?B%%B.z
no batteryc                    t        j                         }| j                  |j                  d       | j	                  |j                  d       |j
                  t         j                  t         j                  fvr| j                  |j
                  d       n8|j
                  t         j                  k(  r| j                  |j                         | j                  |j                  t               y )Nr   r   )r-   sensors_batteryrc   r   r.  secsleftPOWER_TIME_UNKNOWNPOWER_TIME_UNLIMITEDr   power_pluggedr   r   )r5   r  s     r9   test_sensors_batteryz$TestSensorsAPIs.test_sensors_battery  s     $$&Q/S[[#.<<%%'' 
 
 ##CLL!4||v::: 1 12c//6r@   c                 Z   t        j                         }|j                         D ]  \  }}| j                  |t               |D ]d  }| j                  |j
                  t               | j                  |j                  t        t        f       | j                  |j                  d       f  y r   )
r-   sensors_fansr  r   r   r  rW  r   r   rc   )r5   fansr   r  r  s        r9   test_sensors_fansz!TestSensorsAPIs.test_sensors_fans  s    ""$!ZZ\ 	:MD'!!$,  :%%ekk37%%emmc4[A''q9:	:r@   N)rn   ro   rp   r   r   r   r  r  r   r   r  r   r
  rq   r@   r9   r  r    s    X__11?C? D? X__11?C	4 D	4 X__,,o>X___l37 4 ?7 X__))?;: <:r@   r  __main__)run_from_name)?__doc__r  r   r  r+   r   r/  rh  r   r  r   r   r   r-   r   r   r   r   r   r   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$   r%   r'   rs   r   r   r   rd  r  r  rn   psutil.tests.runnerr  r  rq   r@   r9   <module>r     s(       	      
               ,  ! #   ' ' $ % ' , , ) 1 ! %  " ' ' *   )H n H V_>n _>DV>> V>r$"^ $"N/. /DN> Nb_. _D3:n 3:l z1( r@   