o
    h                     @   s   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 erdddlmZ dd Zdd Zejje ddG dd deZejje ddG dd deZdS )zmacOS specific tests.    N)MACOS)POSIX)AARCH64)
CI_TESTING)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh)spawn_subproc)	terminate)getpagesizec                 C   s6   t | }| d }zt|W S  ty   | Y S w )zmExpects a sysctl command with an argument and parse the result
    returning only the value of interest.
       )r   splitint
ValueError)cmdlineoutresult r   K/var/www/html/ai/venv/lib/python3.10/site-packages/psutil/tests/test_osx.pysysctl   s   
r   c                 C   sH   t d}|dD ]}| |v r nq	tdttd|dt  S )z)Wrapper around 'vm_stat' cmdline utility.vm_stat
zline not foundz\d+r   )r   r   r   r   researchgroupr   )fieldr   liner   r   r   r   +   s   r   z
MACOS onlyreasonc                   @   s,   e Zd Zedd Zedd Zdd ZdS )TestProcessc                 C   s   t  j| _d S N)r   pidclsr   r   r   
setUpClass8      zTestProcess.setUpClassc                 C   s   t | j d S r$   )r   r%   r&   r   r   r   tearDownClass<   r)   zTestProcess.tearDownClassc                 C   s   t d| j }|dd }|dd }|dd }t| j }|t	dt
|ks3J |t	dt
|ks@J d S )	Nzps -o lstart -p STARTED  z%H:%M:%Sz%Y)r   r%   replacestripr   psutilProcesscreate_timetimestrftime	localtime)selfoutputstart_pshhmmssyearstart_psutilr   r   r   test_process_create_time@   s   

z$TestProcess.test_process_create_timeN)__name__
__module____qualname__classmethodr(   r*   r>   r   r   r   r   r#   6   s    

r#   c                   @   s   e Zd Ze dd Zdd Zdd Zejj	e
oeddd	d
 Zdd Zejj	eo-e
o-edde dd Zejj	eo@e
o@edde dd Ze dd Ze dd Ze dd Ze dd Zdd Zejj	e dddd Zdd  Zd!S )"TestSystemAPIsc                 C   s   dd }t jddD ]5}t |j}||j\}}}}|j|ks"J |j|ks)J t|j| tk s4J t|j	| tk s?J q
d S )Nc                 S   s   t d|  d }|d}|d |d}| d d \}}}}|dkr+d}t|d }t|d }t|d }||||fS )	Nzdf -k ""r   r      noner,   i   )r   r1   r   popr   )pathr   linesr    devtotalusedfreer   r   r   dfU   s   


z%TestSystemAPIs.test_disks.<locals>.dfF)all)
r2   disk_partitions
disk_usage
mountpointdevicerK   absrM   r   rL   )r8   rN   partusagerJ   rK   rL   rM   r   r   r   
test_disksQ   s   zTestSystemAPIs.test_disksc                 C       t d}|tjddksJ d S )Nzsysctl hw.logicalcpuTlogicalr   r2   	cpu_countr8   numr   r   r   test_cpu_count_logicall      z%TestSystemAPIs.test_cpu_count_logicalc                 C   rX   )Nzsysctl hw.physicalcpuFrY   r[   r]   r   r   r   test_cpu_count_coresp   r`   z#TestSystemAPIs.test_cpu_count_coreszskipped due to #1892r!   c                 C   sZ   t  }|jd d tdksJ |jd d tdksJ |jd d tdks+J d S )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r2   cpu_freqcurrentr   minmax)r8   freqr   r   r   test_cpu_frequ   s   zTestSystemAPIs.test_cpu_freqc                 C   s   t d}|t jksJ d S )Nzsysctl hw.memsize)r   r2   virtual_memoryrK   )r8   sysctl_hwphymemr   r   r   test_vmem_total~   s   zTestSystemAPIs.test_vmem_totalz%skipped on MACOS + ARM64 + CI_TESTINGc                 C   *   t d}t j}t|| tk sJ d S )NrM   )r   r2   rh   rM   rT   r   r8   
vmstat_val
psutil_valr   r   r   test_vmem_free      
zTestSystemAPIs.test_vmem_freec                 C   rk   )Nactive)r   r2   rh   rq   rT   r   rl   r   r   r   test_vmem_active   rp   zTestSystemAPIs.test_vmem_activec                 C   rk   )Ninactive)r   r2   rh   rs   rT   r   rl   r   r   r   test_vmem_inactive      
z!TestSystemAPIs.test_vmem_inactivec                 C   rk   )Nwired)r   r2   rh   rv   rT   r   rl   r   r   r   test_vmem_wired   ru   zTestSystemAPIs.test_vmem_wiredc                 C   rk   )NPageins)r   r2   swap_memorysinrT   r   rl   r   r   r   test_swapmem_sin   ru   zTestSystemAPIs.test_swapmem_sinc                 C   rk   )NPageout)r   r2   ry   soutrT   r   rl   r   r   r   test_swapmem_sout   ru   z TestSystemAPIs.test_swapmem_soutc              	   C   st   t   D ]1\}}z	td| }W n	 ty   Y qw |jd|v ks(J ||jtt	d|d ks7J qd S )Nz	ifconfig RUNNINGz	mtu (\d+)r   )
r2   net_if_statsitemsr   RuntimeErrorisupmtur   r   findall)r8   namestatsr   r   r   r   test_net_if_stats   s    z TestSystemAPIs.test_net_if_statsz
no batteryc                 C   s`   t d}td|d}td|d}|dk}t }|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   r2   sensors_batterypower_pluggedpercentr   )r8   r   r   drawing_fromr   psutil_resultr   r   r   test_sensors_battery   s   z#TestSystemAPIs.test_sensors_batteryc                 C   s:   t d}ttd|dd }t }||ksJ d S )Nzsysctl kern.boottimezsec\s*=\s*(\d+)r   )r   floatr   r   groupsr2   	boot_time)r8   r   abr   r   r   test_boot_time   s   zTestSystemAPIs.test_boot_timeN)r?   r@   rA   r   rW   r_   ra   r
   markskipifr   r   rg   rj   r   ro   rr   rt   rw   r{   r~   r   r   r   r   r   r   r   r   rC   L   s@    








rC   )__doc__r   r5   r2   r   r   psutil.testsr   r   r   r   r   r	   r
   r   r   r   r   psutil._psutil_posixr   r   r   r   r   r#   rC   r   r   r   r   <module>   s2   