
    Xi                        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 Zd Zej                            e d           G d de                      Zej                            e d           G d de                      ZdS )zmacOS specific tests.    N)MACOS)AARCH64)
CI_TESTING)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh)spawn_subproc)	terminatec                     t          |           }|                                d         }	 t          |          S # t          $ r |cY S w xY w)zmExpects a sysctl command with an argument and parse the result
    returning only the value of interest.
       )r   splitint
ValueError)cmdlineoutresults      m/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/psutil/tests/test_osx.pysysctlr      sU     W++CYY[[^F6{{   s   : A	A	c                 ,   t          d          }|                    d          D ]}| |v r n	t          d          t          t	          j        d|                              d                    t          j        j	        
                                z  S )z)Wrapper around 'vm_stat' cmdline utility.vm_stat
zline not foundz\d+r   )r   r   r   r   researchgrouppsutil_psplatformcextgetpagesize)fieldr   lines      r   r   r   '   s    
Y--C		$ + +D==E  )***BIfd##))!,,--


!
-
-
/
/	0    z
MACOS onlyreasonc                   @    e Zd Zed             Zed             Zd ZdS )TestProcessc                 6    t                      j        | _        d S N)r   pidclss    r   
setUpClasszTestProcess.setUpClass7   s    //%r%   c                 .    t          | j                   d S r+   )r   r,   r-   s    r   tearDownClasszTestProcess.tearDownClass;   s    #'r%   c                    t          d| j                   }|                    dd                                          }|                    d          d         }|                    d          d         }t          j        | j                                                  }|t          j	        dt          j
        |                    k    sJ |t          j	        dt          j
        |                    k    sJ d S )	Nzps -o lstart -p STARTED  z%H:%M:%Sz%Y)r   r,   replacestripr   r   Processcreate_timetimestrftime	localtime)selfoutputstart_pshhmmssyearstart_psutils         r   test_process_create_timez$TestProcess.test_process_create_time?   s    1tx1122>>)R006688$$R(~~c""2&~dh//;;==|44
 
 
 
 
 
 t}T4>,+G+GHHHHHHHHr%   N)__name__
__module____qualname__classmethodr/   r1   rE    r%   r   r)   r)   5   s\        & & [&   [	I 	I 	I 	I 	Ir%   r)   c                      e Zd Z e            d             Zd Zd Zej        	                    e
oed          d             Zd Zej        	                    eoe
oed           e            d	                         Zej        	                    eoe
oed           e            d
                         Zej        	                    ed           e            d                         Z e            d             Z e            d             Z e            d             Zd Zej        	                    e d          d             Zd ZdS )TestSystemAPIsc                 T   d }t          j        d          D ]}t          j        |j                  } ||j                  \  }}}}|j        |k    sJ |j        |k    sJ t          |j        |z
            t          k     sJ t          |j	        |z
            t          k     sJ d S )Nc                    t          d|  d                                          }|                    d          }|                    d           |                    d          }|                                d d         \  }}}}|dk    rd}t	          |          dz  }t	          |          dz  }t	          |          dz  }||||fS )	Nzdf -k ""r   r      noner4   i   )r   r9   r   popr   )pathr   linesr$   devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfT   s    &t&&&''--//CIIdOOEIIaLLL99Q<<D%)ZZ\\"1"%5"Cdf}}JJ%Et99t#Dt99t#DtT))r%   F)all)
r   disk_partitions
disk_usage
mountpointdevicerV   absrX   r   rW   )r?   rY   partusagerU   rV   rW   rX   s           r   
test_diskszTestSystemAPIs.test_disksP   s    	* 	* 	* *u555 	A 	AD%do66E%'R%8%8"Cd;#%%%%;%''''uzD()),@@@@@uzD()),@@@@@@	A 	Ar%   c                 Z    t          d          }|t          j        d          k    sJ d S )Nzsysctl hw.logicalcpuTlogicalr   r   	cpu_countr?   nums     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logicalk   s5    +,,f&t444444444r%   c                 Z    t          d          }|t          j        d          k    sJ d S )Nzsysctl hw.physicalcpuFrd   rf   rh   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coreso   s5    ,--f&u555555555r%   zskipped due to #1892r&   c                     t          j                    }|j        dz  dz  t          d          k    sJ |j        dz  dz  t          d          k    sJ |j        dz  dz  t          d          k    sJ d S )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r   cpu_freqcurrentr   minmax)r?   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_freqt   s      |d"T)V4L-M-MMMMMx$%0L)M)MMMMMx$%0L)M)MMMMMMMr%   c                 `    t          d          }|t          j                    j        k    sJ d S )Nzsysctl hw.memsize)r   r   virtual_memoryrV   )r?   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total}   s3     !455&"7"9"9"???????r%   z%skipped on MACOS + ARM64 + CI_TESTINGc                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NrX   )r   r   ru   rX   r_   r   r?   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   sE     V__
*,,1
:
*++.???????r%   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Nactive)r   r   ru   r~   r_   r   ry   s      r   test_vmem_activezTestSystemAPIs.test_vmem_active   sG     X&&
*,,3
:
*++.???????r%   zskipped on CI_TESTINGc                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Ninactive)r   r   ru   r   r_   r   ry   s      r   test_vmem_inactivez!TestSystemAPIs.test_vmem_inactive   sG     Z((
*,,5
:
*++.???????r%   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Nwired)r   r   ru   r   r_   r   ry   s      r   test_vmem_wiredzTestSystemAPIs.test_vmem_wired   sE    W%%
*,,2
:
*++.???????r%   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NPageins)r   r   swap_memorysinr_   r   ry   s      r   test_swapmem_sinzTestSystemAPIs.test_swapmem_sin   sE    Y''
'))-
:
*++.???????r%   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NPageout)r   r   r   soutr_   r   ry   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   sE    Y''
')).
:
*++.???????r%   c                 6   t          j                                                    D ]r\  }}	 t          d|           }|j        d|v k    s
J |            |j        t          t          j        d|          d                   k    sJ c# t          $ r Y ow xY wd S )Nz	ifconfig RUNNINGz	mtu (\d+)r   )
r   net_if_statsitemsr   isupmtur   r   findallRuntimeError)r?   namestatsr   s       r   test_net_if_statsz TestSystemAPIs.test_net_if_stats   s    !.006688 	J 	JKD%J+T++,, zi3&6777777yC
<(E(Ea(H$I$IIIIII	     	J 	Js   B		
BBz
no batteryc                 D   t          d          }t          j        d|                              d          }t          j        d|                              d          }|dk    }t	          j                    }|j        |k    sJ |j        t          |          k    sJ d S )Nzpmset -g battz(\d+)%r   zNow drawing from '([^']+)'zAC Power)	r   r   r   r   r   sensors_batterypower_pluggedpercentr   )r?   r   r   drawing_fromr   psutil_results         r   test_sensors_batteryz#TestSystemAPIs.test_sensors_battery   s    !!)Is++11!44y!>DDJJ1MM$
2.00*m;;;;$G444444r%   c                     t          d          }t          t          j        d|                              d          d                   }t          j                    }||k    sJ d S )Nzsysctl kern.boottimezsec\s*=\s*(\d+)r   )r   floatr   r   groupsr   	boot_time)r?   r   abs       r   test_boot_timezTestSystemAPIs.test_boot_time   s\    '((").44;;A>>qABBAvvvvvvr%   N)rF   rG   rH   r   rb   rj   rl   r
   markskipifr   r   rs   rw   r   r|   r   r   r   r   r   r   r   r   r   rJ   r%   r   rL   rL   K   sy       
 A A A45 5 56 6 6
 [)'2HIIN N JIN@ @ @ [(u(6    @ @ 	 
@
 [(u(6    @ @ 	 
@ [
+BCC@ @  DC@
 @ @ @ @ @ @
 @ @ @J J J [K==5 5 >=5    r%   rL   )__doc__r   r<   r   r   psutil.testsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r)   rL   rJ   r%   r   <module>r      s     				                     # # # # # # $ $ $ $ $ $ - - - - - - * * * * * * ' ' ' ' ' '       ) ) ) ) ) )       & & & & & & " " " " " "	 	 	   Il33I I I I I. I I 43I* Il33C C C C C^ C C 43C C Cr%   