<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    =_~                 @   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 Zdd Zdd Zee dG dd deZee dG dd deZedkrddlmZ ee dS )zmacOS specific tests.    N)MACOS)HAS_BATTERY)PsutilTestCase)retry_on_failure)sh)spawn_testproc)	terminate)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)unittestc             C   s6   t | }| d }yt|S  tk
r0   |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   H/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_osx.pysysctl   s    r   c             C   sV   ddl m} td}x$|dD ]}| |kr P q W tdttd|d|  S )z)Wrapper around 'vm_stat' cmdline utility.r   )getpagesizevm_stat
zline not foundz\d+)	Zpsutil._psutil_posixr   r   r   r   r   researchgroup)fieldr   r   liner   r   r   r   %   s    r   c       	      C   s   ddi}| }d}x@| r&| dd   s6| dd dkrP|| d 7 }| dd  } qW t|}|  }xD| D ]\}}||krlP qlW |dkr|d }| }ntd| |d di}x0t|dd  D ]\}} d|d d	 > || < qW t|||  S )
NZ	customary)	BKMGTPEZY r   r   .kzcan't interpret %r
   )isdigitfloatstripitemsupperr   	enumerater   )	sZSYMBOLSinitnumletternameZssetprefixir   r   r   human2bytes3   s&    &
r7   z
MACOS onlyc               @   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   
setUpClassP   s    zTestProcess.setUpClassc             C   s   t | j d S )N)r   r9   )r:   r   r   r   tearDownClassT   s    zTestProcess.tearDownClassc          	   C   s   t d| j }|dd }|dd }|dd }t| j }| |t	
dt	| | |t	
dt	| d S )	Nzps -o lstart -p %sZSTARTEDr&    z%H:%M:%Sz%Y)r   r9   replacer,   r   psutilZProcessZcreate_timeassertEqualtimestrftime	localtime)selfoutputZstart_psZhhmmssyearZstart_psutilr   r   r   test_process_create_timeX   s    z$TestProcess.test_process_create_timeN)__name__
__module____qualname__classmethodr;   r<   rI   r   r   r   r   r8   M   s   r8   c               @   s   e Zd Ze dd Zdd Zdd Zdd Zd	d
 Z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e ddd ZdS )TestSystemAPIsc             C   s   dd }xrt jddD ]b}t |j}||j\}}}}| |j| | |j| | j|j|t	d | j|j
|t	d qW d S )Nc             S   s   t d|   }|d}|d |d}| d d \}}}}|dkrRd}t|d }t|d }t|d }||||fS )Nz
df -k "%s"r   r      Znoner&   i   )r   r,   r   popr   )pathr   linesr   devtotalusedfreer   r   r   dfo   s    


z%TestSystemAPIs.test_disks.<locals>.dfF)all)delta)rA   Zdisk_partitions
disk_usage
mountpointrB   devicerT   assertAlmostEqualrV   r	   rU   )rF   rW   partusagerS   rT   rU   rV   r   r   r   
test_disksk   s    

zTestSystemAPIs.test_disksc             C   s    t d}| |tjdd d S )Nzsysctl hw.logicalcpuT)logical)r   rB   rA   	cpu_count)rF   r2   r   r   r   test_cpu_count_logical   s    z%TestSystemAPIs.test_cpu_count_logicalc             C   s    t d}| |tjdd d S )Nzsysctl hw.physicalcpuF)ra   )r   rB   rA   rb   )rF   r2   r   r   r   test_cpu_count_physical   s    z&TestSystemAPIs.test_cpu_count_physicalc             C   sZ   t  }| |jd d td | |jd d td | |jd d td d S )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)rA   Zcpu_freqrB   currentr   minmax)rF   Zfreqr   r   r   test_cpu_freq   s    zTestSystemAPIs.test_cpu_freqc             C   s   t d}| |t j d S )Nzsysctl hw.memsize)r   rB   rA   virtual_memoryrT   )rF   Zsysctl_hwphymemr   r   r   test_vmem_total   s    zTestSystemAPIs.test_vmem_totalc             C   s&   t d}t j}| j||td d S )NrV   )rY   )r   rA   ri   rV   r]   r
   )rF   
vmstat_val
psutil_valr   r   r   test_vmem_free   s    
zTestSystemAPIs.test_vmem_freec             C   s&   t d}t j}| j||td d S )Nactive)rY   )r   rA   ri   rn   r]   r
   )rF   rk   rl   r   r   r   test_vmem_active   s    
zTestSystemAPIs.test_vmem_activec             C   s&   t d}t j}| j||td d S )Ninactive)rY   )r   rA   ri   rp   r]   r
   )rF   rk   rl   r   r   r   test_vmem_inactive   s    
z!TestSystemAPIs.test_vmem_inactivec             C   s&   t d}t j}| j||td d S )Nwired)rY   )r   rA   ri   rr   r]   r
   )rF   rk   rl   r   r   r   test_vmem_wired   s    
zTestSystemAPIs.test_vmem_wiredc             C   s"   t d}t j}| || d S )NZPageins)r   rA   swap_memorysinrB   )rF   rk   rl   r   r   r   test_swapmem_sin   s    
zTestSystemAPIs.test_swapmem_sinc             C   s"   t d}t j}| || d S )NZPageout)r   rA   rt   soutrB   )rF   rk   rl   r   r   r   test_swapmem_sout   s    
z TestSystemAPIs.test_swapmem_soutc          	   C   sx   xrt   D ]b\}}ytd| }W n tk
r:   Y qX | j|jd|k|d | |jtt	
d|d  qW d S )Nzifconfig %sRUNNING)msgz	mtu (\d+)r   )rA   Znet_if_statsr-   r   RuntimeErrorrB   isupmtur   r   findall)rF   r4   Z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| | |jt	| d S )Nzpmset -g battz(\d+)%r   zNow drawing from '([^']+)'zAC Power)
r   r   r   r   rA   Zsensors_batteryrB   power_pluggedpercentr   )rF   r   r   Zdrawing_fromr   Zpsutil_resultr   r   r   test_sensors_battery   s    z#TestSystemAPIs.test_sensors_batteryN)rJ   rK   rL   r   r`   rc   rd   rh   rj   rm   ro   rq   rs   rv   rx   r   r   skipIfr   r   r   r   r   r   rN   f   s   rN   __main__)run_from_name)__doc__r   rC   rA   r   Zpsutil.testsr   r   r   r   r   r   r	   r
   r   r   r   r7   r   r8   rN   rJ   Zpsutil.tests.runnerr   __file__r   r   r   r   <module>   s0    
