<!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
    =_P                 @   s  d Z ddl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 ddl
mZ erddlmZ e Ze dkredrdndZndZ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e dG dd deZee	 dG d d! d!eZee d"G d#d$ d$eZ e!d%krdd&l"m#Z# e#e$ dS )'z$Tests specific to all BSD platforms.    N)BSD)FREEBSD)NETBSD)OPENBSD)spawn_testproc)HAS_BATTERY)PsutilTestCase)retry_on_failure)sh)TOLERANCE_SYS_MEM)	terminate)unittest)which)getpagesizemuseTFc             C   sh   t d|  }tr(||dd d }nts0trF||dd d }yt|S  tk
rb   |S X dS )zmExpects a sysctl command with an argument and parse the result
    returning only the value of interest.
    zsysctl z:    N=   )r
   r   findr   r   int
ValueError)cmdlineresult r   H/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_bsd.pysysctl-   s    r   c             C   s@   t d}x&|dD ]}|| rP qW tdt| d S )z+Thin wrapper around 'muse' cmdline utility.r   
zline not foundr   )r
   split
startswithr   r   )fieldoutliner   r   r   r   <   s    
zBSD onlyc               @   s   e Zd ZdZedd Zedd Zee	ddd Z
d	d
 Zeed ddd Zeed ddd Zdd ZdS )BSDTestCasez)Generic tests common to all BSD variants.c             C   s   t  j| _d S )N)r   pid)clsr   r   r   
setUpClassP   s    zBSDTestCase.setUpClassc             C   s   t | j d S )N)r   r#   )r$   r   r   r   tearDownClassT   s    zBSDTestCase.tearDownClassz -o lstart doesn't work on NETBSDc             C   sP   t d| j }|dd }t| j }tdt	|}| 
|| d S )Nzps -o lstart -p %sZSTARTED z%a %b %e %H:%M:%S %Y)r
   r#   replacestrippsutilProcessZcreate_timetimestrftime	localtimeassertEqual)selfoutputZstart_psZstart_psutilr   r   r   test_process_create_timeX   s    z$BSDTestCase.test_process_create_timec             C   s   dd }xt jddD ]}t |j}||j\}}}}| |j| | |j| t|j| dkrz| 	d|j|f  t|j
| dkr| 	d|j
|f  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   dfd   s    


z"BSDTestCase.test_disks.<locals>.dfF)alli   zpsutil=%s, df=%s)r*   Zdisk_partitions
disk_usage
mountpointr/   devicer8   absr:   Zfailr9   )r0   r;   partusager7   r8   r9   r:   r   r   r   
test_disksa   s    zBSDTestCase.test_disksr   zsysctl cmd not availablec             C   s    t d}| tjdd| d S )Nzhw.ncpuT)Zlogical)r   r/   r*   	cpu_count)r0   systr   r   r   test_cpu_count_logical|   s    z"BSDTestCase.test_cpu_count_logicalc             C   s   t d}| |t j d S )Nz
hw.physmem)r   r/   r*   virtual_memoryr8   )r0   numr   r   r   test_virtual_memory_total   s    z%BSDTestCase.test_virtual_memory_totalc          	   C   s   xzt   D ]j\}}ytd| }W n tk
r:   Y qX | j|jd|k|d d|kr| |jtt	
d|d  qW d S )Nzifconfig %sRUNNING)msgmtuz	mtu (\d+)r   )r*   Znet_if_statsitemsr
   RuntimeErrorr/   isuprL   r   refindall)r0   nameZstatsr    r   r   r   test_net_if_stats   s    zBSDTestCase.test_net_if_statsN)__name__
__module____qualname____doc__classmethodr%   r&   r   skipIfr   r2   rC   r   rF   rI   rS   r   r   r   r   r"   L   s   	r"   zFREEBSD onlyc               @   sf   e Zd Zedd Zedd Ze dd Zdd Zd	d
 Z	dd Z
e dd Ze dd ZdS )FreeBSDPsutilTestCasec             C   s   t  j| _d S )N)r   r#   )r$   r   r   r   r%      s    z FreeBSDPsutilTestCase.setUpClassc             C   s   t | j d S )N)r   r#   )r$   r   r   r   r&      s    z#FreeBSDPsutilTestCase.tearDownClassc             C   s   t d| j }t| jjdd}|ddd  }x||r| }| }|d d \}}}}	}
| }| d||f |j | t	|
|j
 |jds6| |d	 |j q6W d S )
Nzprocstat -v %sF)Zgroupedr   r      z%s-%s[
   )r
   r#   r*   r+   Zmemory_mapsr   r4   r/   addrr   Zrssr5   r   )r0   r    mapsr6   r!   fields_startstopZpermsresmapr   r   r   test_memory_maps   s    z&FreeBSDPsutilTestCase.test_memory_mapsc             C   s<   t d| j }| t| j |dd  d  d S )Nzprocstat -b %sr   r   )r
   r#   r/   r*   r+   Zexer   )r0   r    r   r   r   test_exe   s    zFreeBSDPsutilTestCase.test_exec             C   sL   t d| j }| dt| j d|dd  dd   d S )Nzprocstat -c %s r   r   r   )r
   r#   r/   joinr*   r+   r   r   )r0   r    r   r   r   test_cmdline   s    z"FreeBSDPsutilTestCase.test_cmdlinec             C   s   t d| j }|dd  dd \}}}}}}t| j}| }	| }
| |	jt	| | |	j
t	| | |	jt	| | |
jt	| | |
j
t	| | |
jt	| d S )Nzprocstat -s %sr   r   r      )r
   r#   r   r*   r+   uidsgidsr/   realr   	effectivesaved)r0   r    ZeuidZruidZsuidZegidZrgidZsgidprm   rn   r   r   r   test_uids_gids   s    &z$FreeBSDPsutilTestCase.test_uids_gidsc             C   s   g }t d| j }t| j}x|dD ]}|  }d|krtt| d }| j	}| 
|| |d  q*d|kr*t| d }| j}| 
|| |d  q*W t|dkrtdd S )Nzprocstat -r %sr   z voluntary contextrg   z involuntary contextr   z)couldn't find lines match in procstat out)r
   r#   r*   r+   r   lowerr)   r   Znum_ctx_switches	voluntaryr/   appendinvoluntarylenrN   )r0   testedr    rr   r!   pstat_valuepsutil_valuer   r   r   test_ctx_switches   s"    

z'FreeBSDPsutilTestCase.test_ctx_switchesc             C   s   g }t d| j }t| j}x|dD ]}|  }d|krtd| d dd  }| j	}| 
|| |d  q*d|kr*td| d dd  }| j}| 
|| |d  q*W t|dkrtd	d S )
Nzprocstat -r %sr   z	user timez0.rg   .zsystem timer   z)couldn't find lines match in procstat out)r
   r#   r*   r+   r   rt   r)   floatZ	cpu_timesuserr/   rv   systemrx   rN   )r0   ry   r    rr   r!   rz   r{   r   r   r   test_cpu_times   s"    

z$FreeBSDPsutilTestCase.test_cpu_timesN)rT   rU   rV   rX   r%   r&   r	   rf   rh   rk   rs   r|   r   r   r   r   r   rZ      s   rZ   c               @   s  e Zd Ze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ee ddd Zee de dd Zee de dd Zee de dd Zee de dd Zee de dd Zee de dd Zd d! Zd"d# Zd$d% Ze d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zee d0d1d2 Z ee d0d3d4 Z!eed5d6d7 Z"d8d9 Z#d:S );FreeBSDSystemTestCasec              C   sR   t d d } td| }|s,td|  dd |dd D \}}}|||fS )	Nzswapinfo -krg   z\s+zCan't parse swapinfo: %sc             s   s   | ]}t |d  V  qdS )i   N)r   ).0rr   r   r   r   	<genexpr>   s    z7FreeBSDSystemTestCase.parse_swapinfo.<locals>.<genexpr>r   r3   )r
   
splitlinesrP   r   r   )r1   partsr8   r9   r:   r   r   r   parse_swapinfo   s    z$FreeBSDSystemTestCase.parse_swapinfoc             C   s   d}yt t|}W n tk
r2   | d Y nX | t j| d}t|}t | d dd }t | d dd }| t j	| | t j
| d S )Nzdev.cpu.0.freqz#frequencies not supported by kernelzdev.cpu.0.freq_levelsr   /rg   )r   r   rN   skipTestr/   r*   Zcpu_freqcurrentr   maxmin)r0   sensorsysctl_resultZmax_freqZmin_freqr   r   r   !test_cpu_frequency_against_sysctl  s    z7FreeBSDSystemTestCase.test_cpu_frequency_against_sysctlc             C   s&   t dt }| jt j|td d S )Nzvm.stats.vm.v_active_count)delta)r   PAGESIZEassertAlmostEqualr*   rG   activer   )r0   rE   r   r   r   test_vmem_active  s    z&FreeBSDSystemTestCase.test_vmem_activec             C   s&   t dt }| jt j|td d S )Nzvm.stats.vm.v_inactive_count)r   )r   r   r   r*   rG   inactiver   )r0   rE   r   r   r   test_vmem_inactive  s    z(FreeBSDSystemTestCase.test_vmem_inactivec             C   s&   t dt }| jt j|td d S )Nzvm.stats.vm.v_wire_count)r   )r   r   r   r*   rG   wiredr   )r0   rE   r   r   r   test_vmem_wired$  s    z%FreeBSDSystemTestCase.test_vmem_wiredc             C   s&   t dt }| jt j|td d S )Nzvm.stats.vm.v_cache_count)r   )r   r   r   r*   rG   cachedr   )r0   rE   r   r   r   test_vmem_cached*  s    z&FreeBSDSystemTestCase.test_vmem_cachedc             C   s&   t dt }| jt j|td d S )Nzvm.stats.vm.v_free_count)r   )r   r   r   r*   rG   r:   r   )r0   rE   r   r   r   test_vmem_free0  s    z$FreeBSDSystemTestCase.test_vmem_freec             C   s"   t d}| jt j|td d S )Nzvfs.bufspace)r   )r   r   r*   rG   buffersr   )r0   rE   r   r   r   test_vmem_buffers6  s    z'FreeBSDSystemTestCase.test_vmem_bufferszmuse not installedc             C   s   t d}| t j| d S )NZTotal)r   r/   r*   rG   r8   )r0   rH   r   r   r   test_muse_vmem_total>  s    z*FreeBSDSystemTestCase.test_muse_vmem_totalc             C   s"   t d}| jt j|td d S )NZActive)r   )r   r   r*   rG   r   r   )r0   rH   r   r   r   test_muse_vmem_activeC  s    z+FreeBSDSystemTestCase.test_muse_vmem_activec             C   s"   t d}| jt j|td d S )NZInactive)r   )r   r   r*   rG   r   r   )r0   rH   r   r   r   test_muse_vmem_inactiveJ  s    z-FreeBSDSystemTestCase.test_muse_vmem_inactivec             C   s"   t d}| jt j|td d S )NZWired)r   )r   r   r*   rG   r   r   )r0   rH   r   r   r   test_muse_vmem_wiredQ  s    z*FreeBSDSystemTestCase.test_muse_vmem_wiredc             C   s"   t d}| jt j|td d S )NCache)r   )r   r   r*   rG   r   r   )r0   rH   r   r   r   test_muse_vmem_cachedX  s    z+FreeBSDSystemTestCase.test_muse_vmem_cachedc             C   s"   t d}| jt j|td d S )NZFree)r   )r   r   r*   rG   r:   r   )r0   rH   r   r   r   test_muse_vmem_free_  s    z)FreeBSDSystemTestCase.test_muse_vmem_freec             C   s"   t d}| jt j|td d S )NZBuffer)r   )r   r   r*   rG   r   r   )r0   rH   r   r   r   test_muse_vmem_buffersf  s    z,FreeBSDSystemTestCase.test_muse_vmem_buffersc             C   s   | j t jtddd d S )Nzvm.stats.sys.v_swtchi  )r   )r   r*   	cpu_statsctx_switchesr   )r0   r   r   r   test_cpu_stats_ctx_switchesm  s    z1FreeBSDSystemTestCase.test_cpu_stats_ctx_switchesc             C   s   | j t jtddd d S )Nzvm.stats.sys.v_intri  )r   )r   r*   r   
interruptsr   )r0   r   r   r   test_cpu_stats_interruptsq  s    z/FreeBSDSystemTestCase.test_cpu_stats_interruptsc             C   s   | j t jtddd d S )Nzvm.stats.sys.v_softi  )r   )r   r*   r   soft_interruptsr   )r0   r   r   r   test_cpu_stats_soft_interruptsu  s    z4FreeBSDSystemTestCase.test_cpu_stats_soft_interruptsc             C   s   | j t jtddd d S )Nzvm.stats.sys.v_syscalli@ )r   )r   r*   r   syscallsr   )r0   r   r   r   test_cpu_stats_syscallsy  s    z-FreeBSDSystemTestCase.test_cpu_stats_syscallsc             C   s(   |   \}}}| jt j|td d S )N)r   )r   r   r*   swap_memoryr:   r   )r0   r8   r9   r:   r   r   r   test_swapmem_free  s    z'FreeBSDSystemTestCase.test_swapmem_freec             C   s(   |   \}}}| jt j|td d S )N)r   )r   r   r*   r   r9   r   )r0   r8   r9   r:   r   r   r   test_swapmem_used  s    z'FreeBSDSystemTestCase.test_swapmem_usedc             C   s(   |   \}}}| jt j|td d S )N)r   )r   r   r*   r   r8   r   )r0   r8   r9   r:   r   r   r   test_swapmem_total  s    z(FreeBSDSystemTestCase.test_swapmem_totalc             C   sL   t d}||dd d  }|d |d }t|}| |t  d S )Nzsysctl kern.boottimez sec =    ,)r   r   r   r/   r*   	boot_time)r0   sZbtimer   r   r   test_boot_time  s
    z$FreeBSDSystemTestCase.test_boot_timez
no batteryc             C   s   dd }t d}tdd |dD }t }t|d dd	}|d
 }| |j| |dkrt| |j	tj
 n| ||j	| d S )Nc             S   s(   t | d\}}t |d\}}d||f S )N<   z%d:%02d)divmod)Zsecsmr   hr   r   r   
secs2hours  s    z>FreeBSDSystemTestCase.test_sensors_battery.<locals>.secs2hourszacpiconf -i 0c             S   s(   g | ] }| d d | d d fqS )	r   rg   )r   )r   xr   r   r   
<listcomp>  s   z>FreeBSDSystemTestCase.test_sensors_battery.<locals>.<listcomp>r   zRemaining capacity:%r'   zRemaining time:unknown)r
   dictr   r*   sensors_batteryr   r(   r/   percentsecsleftPOWER_TIME_UNLIMITED)r0   r   r    r`   metricsr   Zremaining_timer   r   r   test_sensors_battery  s    z*FreeBSDSystemTestCase.test_sensors_batteryc             C   sl   |  t jtd |  t jtddk t j}|dk rT|  tdd n|  |tdd  d S )Nzhw.acpi.battery.lifezhw.acpi.acliner   r   zhw.acpi.battery.timerg   r   )r/   r*   r   r   r   power_pluggedr   )r0   r   r   r   r   #test_sensors_battery_against_sysctl  s    

z9FreeBSDSystemTestCase.test_sensors_battery_against_sysctlzhas batteryc          	   C   s@   |  t td td td W d Q R X | t  d S )Nzhw.acpi.battery.lifezhw.acpi.battery.timezhw.acpi.acline)ZassertRaisesrN   r   ZassertIsNoner*   r   )r0   r   r   r   test_sensors_battery_no_battery  s
    z5FreeBSDSystemTestCase.test_sensors_battery_no_batteryc          	   C   s   t d}xt|D ]}d| }yttt|d d }W n tk
rZ   | d Y nX | jt 	 d | j
|dd d| }ttt|d d }| t 	 d | j| qW d S )	NTzdev.cpu.%s.temperaturerg   z$temperatures not supported by kernelZcoretempr]   )r   zdev.cpu.%s.coretemp.tjmax)r*   rD   ranger   r~   r   rN   r   r   Zsensors_temperaturesr   r/   high)r0   Znum_cpusZcpur   r   r   r   r   (test_sensors_temperatures_against_sysctl  s    

z>FreeBSDSystemTestCase.test_sensors_temperatures_against_sysctlN)$rT   rU   rV   staticmethodr   r   r	   r   r   r   r   r   r   r   rY   MUSE_AVAILABLEr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sB   	r   zOPENBSD onlyc               @   s   e Zd Zdd ZdS )OpenBSDTestCasec             C   s6   t d}tj|d}tjt }| || d S )Nzkern.boottimez%a %b %d %H:%M:%S %Y)r   datetimestrptimefromtimestampr*   r   r/   )r0   r   Zsys_btZ	psutil_btr   r   r   r     s    zOpenBSDTestCase.test_boot_timeN)rT   rU   rV   r   r   r   r   r   r     s   r   zNETBSD onlyc               @   s`   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd ZdS )NetBSDTestCasec          	   C   sR   t dd2}x*|D ]"}|| rt| d d S qW W d Q R X td|  d S )Nz/proc/meminfortr   i   zcan't find %s)openr   r   r   r   )Zlook_forfr!   r   r   r   parse_meminfo  s
    

"zNetBSDTestCase.parse_meminfoc             C   s   |  t j| d d S )Nz	MemTotal:)r/   r*   rG   r8   r   )r0   r   r   r   test_vmem_total  s    zNetBSDTestCase.test_vmem_totalc             C   s    | j t j| dtd d S )NzMemFree:)r   )r   r*   rG   r:   r   r   )r0   r   r   r   r     s    zNetBSDTestCase.test_vmem_freec             C   s    | j t j| dtd d S )NzBuffers:)r   )r   r*   rG   r   r   r   )r0   r   r   r   r     s    z NetBSDTestCase.test_vmem_buffersc             C   s    | j t j| dtd d S )Nz
MemShared:)r   )r   r*   rG   sharedr   r   )r0   r   r   r   test_vmem_shared  s    zNetBSDTestCase.test_vmem_sharedc             C   s    | j t j| dtd d S )Nz
SwapTotal:)r   )r   r*   r   r8   r   r   )r0   r   r   r   r     s    z!NetBSDTestCase.test_swapmem_totalc             C   s    | j t j| dtd d S )Nz	SwapFree:)r   )r   r*   r   r:   r   r   )r0   r   r   r   r     s    z NetBSDTestCase.test_swapmem_freec             C   s"   t  }| |j|j|j  d S )N)r*   r   r/   r9   r8   r:   )r0   smemr   r   r   r     s    z NetBSDTestCase.test_swapmem_usedc          	   C   sb   t dd8}x0|D ] }|drt| d }P qW tdW d Q R X | jt j|dd d S )Nz
/proc/statrbs   intrr   zcouldn't find linei  )r   )	r   r   r   r   r   r   r*   r   r   )r0   r   r!   r   r   r   r   r     s    

z(NetBSDTestCase.test_cpu_stats_interruptsc          	   C   sb   t dd8}x0|D ] }|drt| d }P qW tdW d Q R X | jt j|dd d S )Nz
/proc/statr   s   ctxtr   zcouldn't find linei  )r   )	r   r   r   r   r   r   r*   r   r   )r0   r   r!   r   r   r   r   r   *  s    

z*NetBSDTestCase.test_cpu_stats_ctx_switchesN)rT   rU   rV   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   r   __main__)run_from_name)%rW   r   osrP   r,   r*   r   r   r   r   Zpsutil.testsr   r   r   r	   r
   r   r   r   r   Zpsutil._psutil_posixr   r   getuidr   r   r   rY   r"   rZ   r   r   r   rT   Zpsutil.tests.runnerr   __file__r   r   r   r   <module>
   sP   KY rB
