a
    QIh                     @   s  d Z ddl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 erd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)
CI_TESTING)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh)spawn_testproc)	terminate)getpagesizec                 C   s:   t | }| d }z
t|W S  ty4   | Y S 0 dS )zmExpects a sysctl command with an argument and parse the result
    returning only the value of interest.
       N)r   splitint
ValueError)Zcmdlineoutresult r   O/var/www/html/venv_bot_3.9/lib/python3.9/site-packages/psutil/tests/test_osx.pysysctl    s    
r   c                 C   sH   t d}|dD ]}| |v r q,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   
setUpClass9   s    zTestProcess.setUpClassc                 C   s   t | j d S r"   )r   r#   r$   r   r   r   tearDownClass=   s    zTestProcess.tearDownClassc                 C   s   t d| j }|dd }|dd }|dd }t| j }|t	dt
|ksfJ |t	dt
|ksJ d S )	Nzps -o lstart -p ZSTARTED  z%H:%M:%Sz%Y)r   r#   replacestripr   psutilProcessZcreate_timetimestrftime	localtime)selfoutputZstart_psZhhmmssyearZstart_psutilr   r   r   test_process_create_timeA   s    

z$TestProcess.test_process_create_timeN)__name__
__module____qualname__classmethodr&   r'   r6   r   r   r   r   r!   7   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kdd	d
d Zdd Zejj	eoje
oje dkdd	e dd Z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 S )!TestSystemAPIsc                 C   s   dd }t jddD ]j}t |j}||j\}}}}|j|ksDJ |j|ksRJ t|j| tk shJ t|j	| tk sJ qd S )Nc                 S   s   t d|  d }|d}|d |d}| d d \}}}}|dkrVd}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   dfV   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_disksR   s    zTestSystemAPIs.test_disksc                 C   s    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_logicalm   s    z%TestSystemAPIs.test_cpu_count_logicalc                 C   s    t d}|tjddksJ d S )Nzsysctl hw.physicalcpuFrM   rN   rP   r   r   r   test_cpu_count_coresq   s    z#TestSystemAPIs.test_cpu_count_coresarm64z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sVJ 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_freqv   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   s*   t d}t j}t|| tk s&J d S )NrE   )r   r.   rZ   rE   rI   r   r3   Z
vmstat_valZ
psutil_valr   r   r   test_vmem_free   s    
zTestSystemAPIs.test_vmem_freec                 C   s*   t d}t j}t|| tk s&J d S )Nactive)r   r.   rZ   r^   rI   r   r\   r   r   r   test_vmem_active   s    
zTestSystemAPIs.test_vmem_activec                 C   s*   t d}t j}t|| tk s&J d S )Ninactive)r   r.   rZ   r`   rI   r   r\   r   r   r   test_vmem_inactive   s    
z!TestSystemAPIs.test_vmem_inactivec                 C   s*   t d}t j}t|| tk s&J d S )Nwired)r   r.   rZ   rb   rI   r   r\   r   r   r   test_vmem_wired   s    
zTestSystemAPIs.test_vmem_wiredc                 C   s*   t d}t j}t|| tk s&J d S )NZPageins)r   r.   swap_memorysinrI   r   r\   r   r   r   test_swapmem_sin   s    
zTestSystemAPIs.test_swapmem_sinc                 C   s*   t d}t j}t|| tk s&J d S )NZPageout)r   r.   rd   ZsoutrI   r   r\   r   r   r   test_swapmem_sout   s    
z TestSystemAPIs.test_swapmem_soutc              	   C   st   t   D ]b\}}ztd| }W n ty8   Y q0 |jd|v ksPJ ||jtt	d|d ksJ 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sJJ |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   rp   Zdrawing_fromro   Zpsutil_resultr   r   r   test_sensors_battery   s    z#TestSystemAPIs.test_sensors_batteryN)r7   r8   r9   r
   rL   rR   rS   r	   markskipifr   platformmachinerY   r[   r   r]   r_   ra   rc   rf   rg   rn   r   rq   r   r   r   r   r;   M   s8   






r;   )__doc__rt   r   r0   r.   r   r   Zpsutil.testsr   r   r   r   r   r	   r
   r   r   r   Zpsutil._psutil_posixr   r   r   rr   rs   r!   r;   r   r   r   r   <module>   s0   