o
    `qi                     @   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 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)AARCH64)
CI_TESTING)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh)spawn_subproc)	terminatec                 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)Zcmdlineoutresult r   \/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/psutil/tests/test_osx.pysysctl   s   
r   c                 C   sN   t d}|dD ]}| |v r nq	tdttd|dtjj	
  S )z)Wrapper around 'vm_stat' cmdline utility.vm_stat
zline not foundz\d+r   )r   r   r   r   researchgrouppsutilZ_psplatformZcextZgetpagesize)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   
setUpClass7      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 ZSTARTED  z%H:%M:%Sz%Y)r   r#   replacestripr   r   ProcessZcreate_timetimestrftime	localtime)selfoutputZstart_psZhhmmssyearZstart_psutilr   r   r   test_process_create_time?   s   

z$TestProcess.test_process_create_timeN)__name__
__module____qualname__classmethodr&   r(   r6   r   r   r   r   r!   5   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jj	edd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   r.   r   popr   )pathr   linesr   devtotalusedfreer   r   r   dfT   s   


z%TestSystemAPIs.test_disks.<locals>.dfF)all)
r   Zdisk_partitions
disk_usageZ
mountpointZdevicerC   absrE   r   rD   )r3   rF   partusagerB   rC   rD   rE   r   r   r   
test_disksP   s   zTestSystemAPIs.test_disksc                 C       t d}|tjddksJ d S )Nzsysctl hw.logicalcpuTZlogicalr   r   	cpu_countr3   numr   r   r   test_cpu_count_logicalk      z%TestSystemAPIs.test_cpu_count_logicalc                 C   rM   )Nzsysctl hw.physicalcpuFrN   rO   rQ   r   r   r   test_cpu_count_coreso   rT   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)r   Zcpu_freqcurrentr   minmax)r3   freqr   r   r   test_cpu_freqt   s   zTestSystemAPIs.test_cpu_freqc                 C   s   t d}|t jksJ d S )Nzsysctl hw.memsize)r   r   virtual_memoryrC   )r3   Z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 )NrE   )r   r   r[   rE   rI   r   r3   Z
vmstat_valZ
psutil_valr   r   r   test_vmem_free      
zTestSystemAPIs.test_vmem_freec                 C   r]   )Nactive)r   r   r[   ra   rI   r   r^   r   r   r   test_vmem_active   r`   zTestSystemAPIs.test_vmem_activezskipped on CI_TESTINGc                 C   r]   )Ninactive)r   r   r[   rc   rI   r   r^   r   r   r   test_vmem_inactive   s   
z!TestSystemAPIs.test_vmem_inactivec                 C   r]   )Nwired)r   r   r[   re   rI   r   r^   r   r   r   test_vmem_wired      
zTestSystemAPIs.test_vmem_wiredc                 C   r]   )NZPageins)r   r   swap_memorysinrI   r   r^   r   r   r   test_swapmem_sin   rg   zTestSystemAPIs.test_swapmem_sinc                 C   r]   )NZPageout)r   r   rh   ZsoutrI   r   r^   r   r   r   test_swapmem_sout   rg   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   )
r   Znet_if_statsitemsr   RuntimeErrorZisupZmtur   r   findall)r3   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   r   Zsensors_batterypower_pluggedpercentr   )r3   r   rt   Zdrawing_fromrs   Z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   groupsr   Z	boot_time)r3   r   abr   r   r   test_boot_time   s   zTestSystemAPIs.test_boot_timeN)r7   r8   r9   r
   rL   rS   rU   r	   markskipifr   r   rZ   r\   r   r_   rb   rd   rf   rj   rk   rr   r   ru   rz   r   r   r   r   r;   K   sB    







r;   )__doc__r   r0   r   r   Zpsutil.testsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r{   r|   r!   r;   r   r   r   r   <module>   s,   