
    Xi/                        d 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  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)AARCH64)GITHUB_ACTIONS)HAS_CPU_FREQ)HAS_NET_IO_COUNTERS)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)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    s/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/psutil/tests/test_contracts.pytest_PROCFS_PATHz'TestAvailConstantsAPIs.test_PROCFS_PATH/   s-    v}--%2G52GCHHHHHH    c                    t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ d S )NABOVE_NORMAL_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSIDLE_PRIORITY_CLASSNORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASSr   r   r   r   s    r!   test_win_priorityz(TestAvailConstantsAPIs.test_win_priority2   s    v<==HHHHv<==HHHHv455@@@@v455@@@@v6777BBBBv899WDDDDDDr#   c                    t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ d S )NIOPRIO_CLASS_NONEIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLEr   r   r   r   s    r!   test_linux_ioprio_linuxz.TestAvailConstantsAPIs.test_linux_ioprio_linux:   sx    v233u<<<<v011U::::v011U::::v233u<<<<<<r#   c                    t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ d S )NIOPRIO_HIGHIOPRIO_NORMAL
IOPRIO_LOWIOPRIO_VERYLOWr+   r   s    r!   test_linux_ioprio_windowsz0TestAvailConstantsAPIs.test_linux_ioprio_windows@   su    v}--8888v//7::::v|,,7777v/00G;;;;;;r#   %unsupported on GITHUB_ACTIONS + LINUXreasonc                 b   t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d	          t          k    s	t          sJ t          t          d
          t          k    s	t          sJ t          t          d          t          k    s	t          sJ t          t          d          t          k    sJ t          rt                      dk    r t          t          d          t          k    sJ t                      dk    r t          t          d          t          k    sJ t                      dk    r t          t          d          t          k    sJ t                      dk    r t          t          d          t          k    sJ t                      dk    r t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ t          t          d          t          k    sJ 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)rJ   rK      RLIMIT_NICERLIMIT_RTPRIO)rJ   rK      RLIMIT_RTTIMERLIMIT_SIGPENDINGRLIMIT_SWAPRLIMIT_SBSIZERLIMIT_NPTS)r   r   r   r   r	   r   r   s    r!   test_rlimitz"TestAvailConstantsAPIs.test_rlimitF   s   
 v//588G888v{++u44444v}--66'666v|,,55555v}--66'666v~..%777777v/00E99W999v//588G888v~..%777777v|,,55555v~..%777777v~..%7777 
	E9,,v'899UBBBB:--v}55>>>>:--v775@@@@:--v775@@@@9,,v':;;uDDDDv}--8888v//7::::v}--888888r#   N)__name__
__module____qualname__r"   r,   r3   r9   r   markskipifr   r   rW    r#   r!   r   r   .   s        I I IE E E= = =< < < [ 56   9 9	 9 9 9r#   r   c                   z    e Zd Zd Zd Zej                            eoe	d          d             Z
d Zd Zd Zd	S )
TestAvailSystemAPIsc                 F    t          t          d          t          k    sJ d S )Nwin_service_iterr+   r   s    r!   test_win_service_iterz)TestAvailSystemAPIs.test_win_service_iterj   s$    v122g======r#   c                 F    t          t          d          t          k    sJ d S )Nwin_service_getr+   r   s    r!   test_win_service_getz(TestAvailSystemAPIs.test_win_service_getm   s$    v011W<<<<<<r#   skipped due to #1892r;   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_freqp   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_temperaturesv   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_fansr2   r   s    r!   test_sensors_fansz%TestAvailSystemAPIs.test_sensors_fansy   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)rX   rY   rZ   rb   re   r   r[   r\   r   r   ri   rl   ro   rr   r]   r#   r!   r_   r_   i   s        > > >= = = [)'2HII
 
 JI

M M M8 8 8
 
 
 
 
r#   r_   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   rw   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 rz   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   rw   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   rw   r   r   r   s    r!   rW   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   rw   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   rw   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   rw   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   rw   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   rw   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)rX   rY   rZ   rx   r}   r   r   r   r   r[   r\   r   r   rW   r   r   r   r   r   r   r]   r#   r!   rt   rt      s       

 

 

8 8 88 8 8< < <G G G [ 56   G G	 G/ / /; ; ;A A A
 
 


 
 

B B B B Br#   rt   c                   2   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d	
          ej                            e d
          d                         Zd Zd Zej                            ed
          d             Zd Z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 )TestSystemAPITypeszhCheck the return types of system related APIs.
    https://github.com/giampaolo/psutil/issues/1039.
    c                 6    t          j                    | _        d S N)r   rw   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#   rf   r;   znot supportedc                     t          j                    t          j        d          S |                     t          j                    t
          t          f           d S )Nzcpu_freq() returns Noner   )r   rh   r   skipr   r   r   r   s    r!   ri   z TestSystemAPITypes.test_cpu_freq   sN     ?$;8999""6?#4#4UCL"IIIIIr#   c                     t          j        d                                          D ]8\  }}t          |t                    sJ |                     |t                     9d S )NT)perdiskr   )r   disk_io_countersitemsr   strr   r   )r    kvs      r!   test_disk_io_countersz(TestSystemAPITypes.test_disk_io_counters   sk    +D999??AA 	5 	5DAqa%%%%%&&q&4444	5 	5r#   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          |j        t          j                  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   familyr   IntEnum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!$+t|<<<<<!$,44444!$,d4jj0ABBBBB!$.3T

2CDDDDDD	E	E 	Er#   c                 t   t          j                                                    D ]\  }}t          |t                    sJ t          |j        t                    sJ t          |j        t          j	                  sJ t          |j
        t                    sJ t          |j        t                    sJ d S r   )r   net_if_statsr   r   r   isupboolduplexr   r   speedr   mtu)r    r   infos      r!   test_net_if_statsz$TestSystemAPITypes.test_net_if_stats  s    "/117799 	- 	-LFDfc*****di.....dk4<88888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   rn   r   r   r   labelcurrentr   r   r   r    nameunitsunits       r!   ro   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   rk   r   r   r   r   r   r   r   r   highcriticalr   s       r!   rl   z,TestSystemAPITypes.test_sensors_temperatures   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                    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 t          |j        t                    r|j        dk    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:::::$(C(( $x!||||	$ 	$r#   N)!rX   rY   rZ   __doc__classmethodr   r   r   r   r   r   r   r   r[   r\   r   r   r   ri   r   r   r   r   r   r   r   r   r   ro   r   rl   r   r  r]   r#   r!   r   r      s+         $ $ [$ /4D    + + +
G G GN N N3 3 3 [)'2HII[L(AAJ J BA JIJ
5 5 5. . . [_==+ + >=+E E E- - - [//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                 
   t          j        |                                 j                  }|                                 |                                }|t          j         k    sJ t          |t          j
                  sJ d S r   )r   rw   spawn_subprocr  	terminatewaitsignalSIGTERMr   r   r   )r    pcodes      r!   test_negative_signalz(TestProcessWaitType.test_negative_signal;  sm    N4--//344	vvxx&&&&$-------r#   N)rX   rY   rZ   r   r[   r\   r	   r  r]   r#   r!   r  r  :  sE        [E	+66. . 76. . .r#   r  )r  r  r   r   r   r   r   r   r   r	   r
   r   psutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r_   rt   r   r  r]   r#   r!   <module>r     s   
                                                                     ' ' ' ' ' ' % % % % % % , , , , , , ) ) ) ) ) ) 1 1 1 1 1 1 % % % % % % ' ' ' ' ' ' ' ' ' ' ' '       & & & & & & ' ' ' ' ' '      89 89 89 89 89^ 89 89 89v
 
 
 
 
. 
 
 
26B 6B 6B 6B 6B> 6B 6B 6B|w$ w$ w$ w$ w$ w$ w$ w$t. . . . .. . . . . .r#   