
    g!1                        d 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  G d de          Z G d de          Z G d d e          Z  G d! d"e          Z! G d# d$e          Z"dS )%zContracts tests. These tests mainly check API sanity in terms of
returned types and APIs availability.
Some of these are duplicates of tests test_system.py and test_process.py.
    N)AIX)FREEBSD)LINUX)MACOS)NETBSD)OPENBSD)POSIX)SUNOS)WINDOWS)long)GITHUB_ACTIONS)HAS_CPU_FREQ)HAS_NET_IO_COUNTERS)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)PYPY)	QEMU_USER)SKIP_SYSCONS)PsutilTestCase)create_sockets)enum)is_namedtuple)kernel_version)pytestc                   t    e Zd Zd Zd Zd Zd Zej        	                    e
oed          d             ZdS )	TestAvailConstantsAPIsc                 b    t          t          d          t          pt          pt          k    sJ d S )NPROCFS_PATH)hasattrpsutilr   r
   r   selfs    W/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/tests/test_contracts.pytest_PROCFS_PATHz'TestAvailConstantsAPIs.test_PROCFS_PATH3   s-    v}--%2G52GCHHHHHH    c                    | j         } |t          t          d          t                      |t          t          d          t                      |t          t          d          t                      |t          t          d          t                      |t          t          d          t                      |t          t          d          t                     d S )NABOVE_NORMAL_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSIDLE_PRIORITY_CLASSNORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASSassertEqualr   r    r   r"   aes     r#   test_win_priorityz(TestAvailConstantsAPIs.test_win_priority6   s    
768997CCC
768997CCC
760117;;;
760117;;;
76233W===
76455w?????r%   c                 4   | j         } |t          t          d          t                      |t          t          d          t                      |t          t          d          t                      |t          t          d          t                     d S )NIOPRIO_CLASS_NONEIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLE)r.   r   r    r   r/   s     r#   test_linux_ioprio_linuxz.TestAvailConstantsAPIs.test_linux_ioprio_linux?   s    
76.//777
76,--u555
76,--u555
76.//77777r%   c                 4   | j         } |t          t          d          t                      |t          t          d          t                      |t          t          d          t                      |t          t          d          t                     d S )NIOPRIO_HIGHIOPRIO_NORMAL
IOPRIO_LOWIOPRIO_VERYLOWr-   r/   s     r#   test_linux_ioprio_windowsz0TestAvailConstantsAPIs.test_linux_ioprio_windowsF   s    
76=))7333
76?++W555
76<(('222
76+,,g66666r%   %unsupported on GITHUB_ACTIONS + LINUXreasonc                    | j         } |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d          t          pt                      |t          t          d	          t          pt                      |t          t          d
          t          pt                      |t          t          d          t          pt                      |t          t          d          t                     t
          rt                      dk    r$ |t          t          d          t                     t                      dk    r$ |t          t          d          t                     t                      dk    r$ |t          t          d          t                     t                      dk    r$ |t          t          d          t                     t                      dk    r$ |t          t          d          t                      |t          t          d          t                      |t          t          d          t                      |t          t          d          t                     d S )NRLIM_INFINITY	RLIMIT_ASRLIMIT_CORE
RLIMIT_CPURLIMIT_DATARLIMIT_FSIZERLIMIT_MEMLOCKRLIMIT_NOFILERLIMIT_NPROC
RLIMIT_RSSRLIMIT_STACKRLIMIT_LOCKS)         RLIMIT_MSGQUEUE)rN   rO      RLIMIT_NICERLIMIT_RTPRIO)rN   rO      RLIMIT_RTTIMERLIMIT_SIGPENDINGRLIMIT_SWAPRLIMIT_SBSIZERLIMIT_NPTS)r.   r   r    r   r   r	   r   r/   s     r#   test_rlimitz"TestAvailConstantsAPIs.test_rlimitM   s   
 
76?++U-=g>>>
76;'')9':::
76=))5+;G<<<
76<((%*:7;;;
76=))5+;G<<<
76>**E,<W===
76+,,e.>w???
76?++U-=g>>>
76>**E,<W===
76<((%*:7;;;
76>**E,<W===
76>**E222 
	@9,,76#455u===:--76=115999:--76?33U;;;:--76?33U;;;9,,76#677???
76=))7333
76?++W555
76=))733333r%   N)__name__
__module____qualname__r$   r1   r7   r=   r   markskipifr   r   r[    r%   r#   r   r   2   s        I I I@ @ @8 8 87 7 7 [ 56   4 4	 4 4 4r%   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestAvailSystemAPIsc                 F    t          t          d          t          k    sJ d S )Nwin_service_iterr   r    r   r!   s    r#   test_win_service_iterz)TestAvailSystemAPIs.test_win_service_iterr   s$    v122g======r%   c                 F    t          t          d          t          k    sJ d S )Nwin_service_getrf   r!   s    r#   test_win_service_getz(TestAvailSystemAPIs.test_win_service_getu   s$    v011W<<<<<<r%   c                 ~    t          t          d          t          pt          pt          pt
          pt          k    sJ d S )Ncpu_freq)r   r    r   r   r   r   r   r!   s    r#   test_cpu_freqz!TestAvailSystemAPIs.test_cpu_freqx   sD    vz**;U;g;;G
 
 
 
 
 
r%   c                 T    t          t          d          t          pt          k    sJ d S )Nsensors_temperatures)r   r    r   r   r!   s    r#   test_sensors_temperaturesz-TestAvailSystemAPIs.test_sensors_temperatures}   s)    v5665;KGLLLLLLr%   c                 F    t          t          d          t          k    sJ d S )Nsensors_fans)r   r    r   r!   s    r#   test_sensors_fansz%TestAvailSystemAPIs.test_sensors_fans   s#    v~..%777777r%   c                 p    t          t          d          t          pt          pt          pt
          k    sJ d S )Nsensors_battery)r   r    r   r   r   r   r!   s    r#   test_batteryz TestAvailSystemAPIs.test_battery   s@    v0110W005
 
 
 
 
 
r%   N)	r\   r]   r^   rg   rj   rm   rp   rs   rv   ra   r%   r#   rc   rc   q   sq        > > >= = =
 
 

M M M8 8 8
 
 
 
 
r%   rc   c                       e Zd Zd Zd Zd Zd Zd Zej	        
                    eoed          d             Zd	 Zd
 Zd Zd Zd Zd ZdS )TestAvailProcessAPIsc                     t          t          j        d          t          p0t          p)t
          p"t          pt          pt          pt          pt          k    sJ d S )Nenviron)r   r    Processr   r   r   r   r
   r   r   r   r!   s    r#   test_environz!TestAvailProcessAPIs.test_environ   st    v~y11   	
   	
 	
 	
 	
 	
 	
r%   c                 P    t          t          j        d          t          k    sJ d S Nuidsr   r    r{   r	   r!   s    r#   	test_uidszTestAvailProcessAPIs.test_uids   %    v~v..%777777r%   c                 P    t          t          j        d          t          k    sJ d S r~   r   r!   s    r#   	test_gidszTestAvailProcessAPIs.test_gids   r   r%   c                 P    t          t          j        d          t          k    sJ d S )Nterminalr   r!   s    r#   test_terminalz"TestAvailProcessAPIs.test_terminal   s%    v~z22e;;;;;;r%   c                 ^    t          t          j        d          t          pt          k    sJ d S )Nionice)r   r    r{   r   r   r!   s    r#   test_ionicez TestAvailProcessAPIs.test_ionice   s*    v~x00U5EgFFFFFFr%   r>   r?   c                 ^    t          t          j        d          t          pt          k    sJ d S )Nrlimit)r   r    r{   r   r   r!   s    r#   r[   z TestAvailProcessAPIs.test_rlimit   s,    
 v~x00U5EgFFFFFFr%   c                 d    t          t          j        d          }|t          pt           k    sJ d S )Nio_counters)r   r    r{   r   r
   r"   hasits     r#   test_io_countersz%TestAvailProcessAPIs.test_io_counters   s1    66enu-......r%   c                 P    t          t          j        d          t          k    sJ d S )Nnum_fdsr   r!   s    r#   test_num_fdsz!TestAvailProcessAPIs.test_num_fds   s%    v~y11U::::::r%   c                 P    t          t          j        d          t          k    sJ d S )Nnum_handles)r   r    r{   r   r!   s    r#   test_num_handlesz%TestAvailProcessAPIs.test_num_handles   s%    v~}55@@@@@@r%   c                 l    t          t          j        d          t          pt          pt
          k    sJ d S )Ncpu_affinity)r   r    r{   r   r   r   r!   s    r#   test_cpu_affinityz&TestAvailProcessAPIs.test_cpu_affinity   s<    v~~66'W'
 
 
 
 
 
r%   c                 l    t          t          j        d          t          pt          pt
          k    sJ d S )Ncpu_num)r   r    r{   r   r   r
   r!   s    r#   test_cpu_numz!TestAvailProcessAPIs.test_cpu_num   s<    v~y11%W%
 
 
 
 
 
r%   c                     t          t          j        d          }|t          pt          pt
          pt           k    sJ d S )Nmemory_maps)r   r    r{   r   r   r   r   r   s     r#   test_memory_mapsz%TestAvailProcessAPIs.test_memory_maps   s<    66g??3?%@AAAAAAr%   N)r\   r]   r^   r|   r   r   r   r   r   r_   r`   r   r   r[   r   r   r   r   r   r   ra   r%   r#   rx   rx      s       

 

 

8 8 88 8 8< < <G G G [ 56   G G	 G/ / /; ; ;A A A
 
 


 
 

B B B B Br%   rx   c                      e Zd ZdZed             ZedfdZd Zd Z	d Z
d Zej                            eo ej                    d	k    d
          ej                            e d          d                         Zd Zd Zej                            ed          d             Zd Zej                            ed          d             Zej                            e d          d             Zej                            e d          d             Zej                            e d          d             Z d Z!d Z"dS )TestSystemAPITypeszCheck the return types of system related APIs.
    Mainly we want to test we never return unicode on Python 2, see:
    https://github.com/giampaolo/psutil/issues/1039.
    c                 6    t          j                    | _        d S N)r    r{   proc)clss    r#   
setUpClasszTestSystemAPITypes.setUpClass   s    >##r%   Tc                 j    t          |          sJ |D ]}t          ||          sJ |r|dk    sJ d S )Nr   )r   
isinstance)r"   nttype_gezerons        r#   assert_ntuple_of_numsz(TestSystemAPITypes.assert_ntuple_of_nums   s[    R      	 	Aa''''' Avvvv	 	r%   c                     |                      t          j                               t          j        d          D ]}|                      |           d S )NT)percpu)r   r    	cpu_times)r"   r   s     r#   test_cpu_timesz!TestSystemAPITypes.test_cpu_times   s]    ""6#3#5#5666"$/// 	+ 	+B&&r****	+ 	+r%   c                     t          t          j        d           t                    sJ t          t          j        d          t                    sJ d S )Nintervalgh㈵>)r   r    cpu_percentfloatr!   s    r#   test_cpu_percentz#TestSystemAPITypes.test_cpu_percent   sP    &,d;;;UCCCCC&,g>>>FFFFFFFr%   c                     |                      t          j        d                      |                      t          j        d                     d S )Nr   g-C6?)r   r    cpu_times_percentr!   s    r#   test_cpu_times_percentz)TestSystemAPITypes.test_cpu_times_percent   sL    ""6#;T#J#J#JKKK""6#;V#L#L#LMMMMMr%   c                 V    t          t          j                    t                    sJ d S r   )r   r    	cpu_countintr!   s    r#   test_cpu_countz!TestSystemAPITypes.test_cpu_count   s'    &*,,c2222222r%   arm64zskipped due to #1892r?   znot supportedc                     t          j                    t          j        d          |                     t          j                    t
          t          t          f           d S )Nzcpu_freq() returns Noner   )r    rl   r   skipr   r   r   r   r!   s    r#   rm   z TestSystemAPITypes.test_cpu_freq   sQ    
 ?$+7888""6?#4#4UC<N"OOOOOr%   c                     t          j        d                                          D ]?\  }}t          |t                    sJ |                     |t          t          f           @d S )NT)perdiskr   )r    disk_io_countersitemsr   strr   r   r   )r"   kvs      r#   test_disk_io_countersz(TestSystemAPITypes.test_disk_io_counters   so    +D999??AA 	= 	=DAqa%%%%%&&qd&<<<<	= 	=r%   c                    t          j                    D ]r}t          |j        t                    sJ t          |j        t                    sJ t          |j        t                    sJ t          |j        t                    sJ sd S r   )r    disk_partitionsr   devicer   
mountpointfstypeopts)r"   disks     r#   test_disk_partitionsz'TestSystemAPITypes.test_disk_partitions   s    *,, 	. 	.Ddk3/////dos33333dk3/////di------		. 	.r%   zrequires rootc                    t                      5  t          j        d          }t          |          t          t	          |                    k    sJ |D ]}t          |          sJ 	 d d d            d S # 1 swxY w Y   d S )Nall)r   r    net_connectionslensetr   )r"   retconns      r#   test_net_connectionsz'TestSystemAPITypes.test_net_connections   s     	+ 	+(//Cs88s3s88}},,,, + +$T******+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AA77A;>A;c           	         t          j                                                    D ]\  }}t          |t                    sJ |D ]}t
          )t          s"t          |j        t
          j                  sJ nt          |j        t                    sJ t          |j
        t                    sJ t          |j        t          t          d           f          sJ t          |j        t          t          d           f          sJ d S r   )r    net_if_addrsr   r   r   r   r   familyIntEnumr   addressnetmasktype	broadcast)r"   ifnameaddrsaddrs       r#   test_net_if_addrsz$TestSystemAPITypes.test_net_if_addrs  s   #02288:: 		E 		EMFEfc***** E E#D#%dk4<@@@@@@%dk377777!$,44444!$,d4jj0ABBBBB!$.3T

2CDDDDDDE		E 		Er%   zQEMU user not supportedc                    t          j                                                    D ]\  }}t          |t                    sJ t          |j        t                    sJ t          "t          |j        t          j	                  sJ nt          |j        t                    sJ t          |j        t                    sJ t          |j        t                    sJ d S r   )r    net_if_statsr   r   r   isupboolr   duplexr   r   speedmtu)r"   r   infos      r#   test_net_if_statsz$TestSystemAPITypes.test_net_if_stats  s     #/117799 	- 	-LFDfc*****di.....!$+t|<<<<<<!$+s33333dj#.....dh,,,,,,	- 	-r%   c                 d    t          j        d          D ]}t          |t                    sJ d S )NT)pernic)r    net_io_countersr   r   )r"   r   s     r#   test_net_io_countersz'TestSystemAPITypes.test_net_io_counters"  sD     ,D999 	+ 	+Ffc******	+ 	+r%   c           
      .   t          j                                                    D ]n\  }}t          |t                    sJ |D ]O}t          |j        t                    sJ t          |j        t          t          t          d           f          sJ Pod S r   )
r    rr   r   r   r   labelcurrentr   r   r   r"   nameunitsunits       r#   rs   z$TestSystemAPITypes.test_sensors_fans(  s     ".006688 	J 	JKD%dC((((( J J!$*c22222!$,T$ZZ0HIIIIIIJ	J 	Jr%   c           
         t          j                                                    D ]\  }}t          |t                    sJ |D ]}t          |j        t                    sJ t          |j        t          t          t          d           f          sJ t          |j
        t          t          t          d           f          sJ t          |j        t          t          t          d           f          sJ d S r   )r    ro   r   r   r   r   r   r   r   r   highcriticalr   s       r#   rp   z,TestSystemAPITypes.test_sensors_temperatures1  s     "688>>@@ 	K 	KKD%dC((((( K K!$*c22222!$,T$ZZ0HIIIII!$)eS$t**-EFFFFF!$-%d4jj1IJJJJJJ	K	K 	Kr%   c                 V    t          t          j                    t                    sJ d S r   )r   r    	boot_timer   r!   s    r#   test_boot_timez!TestSystemAPITypes.test_boot_time<  s'    &*,,e4444444r%   c                 l   t          j                    D ]}t          |j        t                    sJ t          |j        t          t          d           f          sJ t          |j        t          t          d           f          sJ t          |j        t          t          d           f          sJ d S r   )
r    usersr   r   r   r   r   hostpidr   )r"   users     r#   
test_userszTestSystemAPITypes.test_users@  s    LNN 	; 	;Ddi-----dmc4::->?????di#tDzz):;;;;;dhd4jj(9::::::		; 	;r%   N)#r\   r]   r^   __doc__classmethodr   r   r   r   r   r   r   r   r_   r`   r   platformmachiner   rm   r   r   r   r   r   r   r   r   r   r   rs   r   rp   r  r  ra   r%   r#   r   r      sj        
 $ $ [$ /4D    + + +
G G GN N N3 3 3 [/"("$$/8N    [L(AAP P BA P
= = =. . . [_==+ + >=+E E E [	*CDD
- 
- ED
- [//HH+ + IH+
 [,,_EEJ J FEJ [44_MMK K NMK5 5 5; ; ; ; ;r%   r   c                   Z    e Zd Zej                            e d          d             ZdS )TestProcessWaitTypez	not POSIXr?   c                 J   t          j        |                                 j                  }|                                 |                                }|t          j         k    sJ t          t          |t          j
                  sJ d S t          |t                    sJ d S r   )r    r{   spawn_testprocr  	terminatewaitsignalSIGTERMr   r   r   r   )r"   pcodes      r#   test_negative_signalz(TestProcessWaitType.test_negative_signalJ  s    N4..00455	vvxx&&&&dDL1111111dC(((((((r%   N)r\   r]   r^   r   r_   r`   r	   r  ra   r%   r#   r  r  I  sE        [E	+66) ) 76) ) )r%   r  )#r  r
  r  r    r   r   r   r   r   r   r	   r
   r   psutil._compatr   psutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   rx   r   r  ra   r%   r#   <module>r     s   
                                                                ' ' ' ' ' ' % % % % % % , , , , , , ) ) ) ) ) ) 1 1 1 1 1 1       " " " " " " % % % % % % ' ' ' ' ' ' ' ' ' ' ' '       & & & & & & ' ' ' ' ' '      <4 <4 <4 <4 <4^ <4 <4 <4~
 
 
 
 
. 
 
 
06B 6B 6B 6B 6B> 6B 6B 6B|; ; ; ; ; ; ; ;D
) 
) 
) 
) 
). 
) 
) 
) 
) 
)r%   