U
    ;g                     @   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k
r6   | Y S X 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   U/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/psutil/tests/test_osx.pysysctl    s    
r   c                 C   sH   t d}|dD ]}| |k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sft|t	dt
|kst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AssertionError)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'   r7   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sDt|j|ksRtt|j| t	k shtt|j
| t	k st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devicer3   rD   absrF   r   rE   )r4   rG   partusagerC   rD   rE   rF   r   r   r   
test_disksR   s    zTestSystemAPIs.test_disksc                 C   s    t d}|tjddkstd S )Nzsysctl hw.logicalcpuTZlogicalr   r.   	cpu_countr3   r4   numr   r   r   test_cpu_count_logicalm   s    z%TestSystemAPIs.test_cpu_count_logicalc                 C   s    t d}|tjddkstd S )Nzsysctl hw.physicalcpuFrN   rO   rQ   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"t|jd d tdks<t|jd d tdksVtd S )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r.   Zcpu_freqcurrentr   r3   minmax)r4   freqr   r   r   test_cpu_freqv   s    zTestSystemAPIs.test_cpu_freqc                 C   s   t d}|t jkstd S )Nzsysctl hw.memsize)r   r.   virtual_memoryrD   r3   )r4   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&td S )NrF   )r   r.   r[   rF   rJ   r   r3   r4   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&td S )Nactive)r   r.   r[   r_   rJ   r   r3   r]   r   r   r   test_vmem_active   s    
zTestSystemAPIs.test_vmem_activec                 C   s*   t d}t j}t|| tk s&td S )Ninactive)r   r.   r[   ra   rJ   r   r3   r]   r   r   r   test_vmem_inactive   s    
z!TestSystemAPIs.test_vmem_inactivec                 C   s*   t d}t j}t|| tk s&td S )Nwired)r   r.   r[   rc   rJ   r   r3   r]   r   r   r   test_vmem_wired   s    
zTestSystemAPIs.test_vmem_wiredc                 C   s*   t d}t j}t|| tk s&td S )NZPageins)r   r.   swap_memorysinrJ   r   r3   r]   r   r   r   test_swapmem_sin   s    
zTestSystemAPIs.test_swapmem_sinc                 C   s*   t d}t j}t|| tk s&td S )NZPageout)r   r.   re   ZsoutrJ   r   r3   r]   r   r   r   test_swapmem_sout   s    
z TestSystemAPIs.test_swapmem_soutc              	   C   sv   t   D ]d\}}ztd| }W n tk
r:   Y qX |jd|kksRt||jtt	
d|d kstqd S )Nz	ifconfig ZRUNNINGz	mtu (\d+)r   )r.   Znet_if_statsitemsr   RuntimeErrorZisupr3   Zmtur   r   findall)r4   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sJt|jt	|ks\td S )Nzpmset -g battz(\d+)%r   zNow drawing from '([^']+)'zAC Power)
r   r   r   r   r.   Zsensors_batterypower_pluggedr3   percentr   )r4   r   rp   Zdrawing_fromro   Zpsutil_resultr   r   r   test_sensors_battery   s    z#TestSystemAPIs.test_sensors_batteryN)r8   r9   r:   r
   rM   rS   rT   r	   markskipifr   platformmachinerZ   r\   r   r^   r`   rb   rd   rg   rh   rn   r   rq   r   r   r   r   r<   M   s:   
 





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   