a
    áªlcÐ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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røddlmZ eƒ Ze ¡ dkròedƒròd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rÄdd%l"m#Z# e#e$ƒ dS )&z$Tests specific to all BSD platforms.é    N)ÚBSD)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)ÚHAS_BATTERY)ÚTOLERANCE_SYS_MEM)ÚPsutilTestCase)Úretry_on_failure)Úsh)Úspawn_testproc)Ú	terminate)Úwhich)ÚgetpagesizeÚmuseTFc                 C   sl   t d|  ƒ}tr(|| d¡d d… }nts0trF|| d¡d d… }z
t|ƒW S  tyf   | Y S 0 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   úQ/var/www/html/django/DPS/env/lib/python3.9/site-packages/psutil/tests/test_bsd.pyÚsysctl-   s    
r   c                 C   s>   t dƒ}| d¡D ]}| | ¡r q.q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 r"   ©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„ }t jddD ]Š}t  |j¡}||jƒ\}}}}|  |j|¡ |  |j|¡ t|j| ƒdkrx|  	d|j|f ¡‚t|j
| ƒdkr|  	d|j
|f ¡‚q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   é   Únoner*   é   )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_usageZ
mountpointr2   Zdevicer=   Úabsr?   Zfailr>   )r3   r@   ÚpartÚusager<   r=   r>   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   r2   r-   Ú	cpu_count©r3   Z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   r2   r-   Úvirtual_memoryr=   ©r3   Únumr   r   r   Útest_virtual_memory_total   s    z%BSDTestCase.test_virtual_memory_totalc              	   C   sz   t  ¡  ¡ D ]h\}}ztd| ƒ}W n ty6   Y q0 | j|jd|v |d d|v r|  |jtt	 
d|¡d ƒ¡ qd S )Nzifconfig %sÚRUNNING)ÚmsgÚmtuz	mtu (\d+)r   )r-   Znet_if_statsÚitemsr
   ÚRuntimeErrorr2   ZisuprP   r   ÚreÚfindall)r3   ÚnameÚstatsr   r   r   r   Útest_net_if_stats†   s    ÿzBSDTestCase.test_net_if_statsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr'   r)   ÚunittestÚskipIfr   r5   rF   r   rI   rM   rW   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 r"   r#   r%   r   r   r   r'   ›   s    z FreeBSDPsutilTestCase.setUpClassc                 C   s   t | jƒ d S r"   r(   r%   r   r   r   r)   Ÿ   s    z#FreeBSDPsutilTestCase.tearDownClassc                 C   s²   t d| j ƒ}t | j¡jdd}| d¡dd … }|r®| ¡ }| ¡ }|d d… \}}}}	}
| ¡ }|  d||f |j¡ |  t	|
ƒ|j
¡ |j d¡s4|  |d	 |j¡ q4d S )
Nzprocstat -v %sF)Úgroupedr   r   é   z%s-%sú[é
   )r
   r$   r-   r.   Zmemory_mapsr   r9   r2   Úaddrr   Zrssr:   r   )r3   r   Úmapsr;   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$   r2   r-   r.   Úexer   ©r3   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$   r2   Újoinr-   r.   r   r   ro   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Úgidsr2   Úrealr   Z	effectiveZsaved)r3   r   ZeuidZruidZsuidZegidZrgidZsgidÚpru   rv   r   r   r   Útest_uids_gids¼   s    &z$FreeBSDPsutilTestCase.test_uids_gidsc                 C   sÄ   g }t d| j ƒ}t | j¡}| d¡D ]‚}| ¡  ¡ }d|v rrt| ¡ d ƒ}| ¡ j	}|  
||¡ | d ¡ q(d|v r(t| ¡ d ƒ}| ¡ j}|  
||¡ | d ¡ q(t|ƒdkrÀtdƒ‚d S )Núprocstat -r %sr   z voluntary contextrm   z involuntary contextr   ú)couldn't find lines match in procstat out)r
   r$   r-   r.   r   Úlowerr,   r   Znum_ctx_switchesZ	voluntaryr2   ÚappendZinvoluntaryÚlenrR   ©r3   Ztestedr   rx   r    Zpstat_valueZpsutil_valuer   r   r   Útest_ctx_switchesÉ   s"    

z'FreeBSDPsutilTestCase.test_ctx_switchesc                 C   sà   g }t d| j ƒ}t | j¡}| d¡D ]ž}| ¡  ¡ }d|v r€td| ¡ d  d¡d  ƒ}| ¡ j	}|  
||¡ | d ¡ q(d|v r(td| ¡ d  d¡d  ƒ}| ¡ j}|  
||¡ | d ¡ q(t|ƒdkrÜtd	ƒ‚d S )
Nrz   r   z	user timez0.rm   Ú.zsystem timer   r{   )r
   r$   r-   r.   r   r|   r,   ÚfloatZ	cpu_timesÚuserr2   r}   Úsystemr~   rR   r   r   r   r   Útest_cpu_timesÝ   s"    

z$FreeBSDPsutilTestCase.test_cpu_timesN)rX   rY   rZ   r\   r'   r)   r	   rl   rp   rs   ry   r€   r…   r   r   r   r   r_   ˜   s   



r_   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 -krm   z\s+zCan't parse swapinfo: %sc                 s   s   | ]}t |ƒd  V  qdS )r8   N)r   )Ú.0rx   r   r   r   Ú	<genexpr>ÿ   ó    z7FreeBSDSystemTestCase.parse_swapinfo.<locals>.<genexpr>r   r6   )r
   Ú
splitlinesrS   r   r   )r4   Úpartsr=   r>   r?   r   r   r   Úparse_swapinfoõ   s    z$FreeBSDSystemTestCase.parse_swapinfoc                 C   s¬   d}zt t|ƒƒ}W n ty0   |  d¡ Y n0 |  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   ú/rm   )r   r   rR   ÚskipTestr2   r-   Zcpu_freqÚcurrentr   ÚmaxÚmin)r3   Ú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-   rJ   Úactiver   rH   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_countr•   )r   r—   r˜   r-   rJ   Úinactiver   rH   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_countr•   )r   r—   r˜   r-   rJ   Úwiredr   rH   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_countr•   )r   r—   r˜   r-   rJ   Úcachedr   rH   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_countr•   )r   r—   r˜   r-   rJ   r?   r   rH   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.bufspacer•   )r   r˜   r-   rJ   Úbuffersr   rH   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   r2   r-   rJ   r=   rK   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Activer•   )r   r˜   r-   rJ   r™   r   rK   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Inactiver•   )r   r˜   r-   rJ   r›   r   rK   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Wiredr•   )r   r˜   r-   rJ   r   r   rK   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ÚCacher•   )r   r˜   r-   rJ   rŸ   r   rK   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Freer•   )r   r˜   r-   rJ   r?   r   rK   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Bufferr•   )r   r˜   r-   rJ   r¢   r   rK   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_swtchéè  r•   )r˜   r-   Ú	cpu_statsÚctx_switchesr   ©r3   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_intrr¬   r•   )r˜   r-   r­   Ú
interruptsr   r¯   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_softr¬   r•   )r˜   r-   r­   Zsoft_interruptsr   r¯   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­   Zsyscallsr   r¯   r   r   r   Útest_cpu_stats_syscallsy  s    ÿz-FreeBSDSystemTestCase.test_cpu_stats_syscallsc                 C   s(   |   ¡ \}}}| jt ¡ j|td d S ©Nr•   )rŒ   r˜   r-   Úswap_memoryr?   r   ©r3   r=   r>   r?   r   r   r   Útest_swapmem_free…  s    ÿz'FreeBSDSystemTestCase.test_swapmem_freec                 C   s(   |   ¡ \}}}| jt ¡ j|td d S rµ   )rŒ   r˜   r-   r¶   r>   r   r·   r   r   r   Útest_swapmem_usedŠ  s    ÿz'FreeBSDSystemTestCase.test_swapmem_usedc                 C   s(   |   ¡ \}}}| jt ¡ j|td d S rµ   )rŒ   r˜   r-   r¶   r=   r   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   r2   r-   Ú	boot_time)r3   Ú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   rm   )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+   r2   ÚpercentÚsecsleftZPOWER_TIME_UNLIMITED)r3   rÄ   r   rf   Z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 )Núhw.acpi.battery.lifeúhw.acpi.acliner   r   úhw.acpi.battery.timerm   rÀ   )r2   r-   rË   rÌ   r   Zpower_pluggedrÍ   )r3   rÍ   r   r   r   Ú#test_sensors_battery_against_sysctl²  s    ÿ
ÿ
z9FreeBSDSystemTestCase.test_sensors_battery_against_sysctlzhas batteryc                 C   sT   |   t¡( tdƒ tdƒ tdƒ W d   ƒ n1 s80    Y  |  t ¡ ¡ d S )NrÏ   rÑ   rÐ   )ÚassertRaisesrR   r   ZassertIsNoner-   rË   r¯   r   r   r   Útest_sensors_battery_no_battery¾  s
    &z5FreeBSDSystemTestCase.test_sensors_battery_no_batteryc              	   C   s¶   t  d¡}t|ƒD ]ž}d| }zttt|ƒd d… ƒƒ}W n tyV   |  d¡ Y n0 | jt  	¡ d | j
|dd d| }ttt|ƒd d… ƒƒ}|  t  	¡ d | j|¡ qd S )	NTzdev.cpu.%s.temperaturerm   z$temperatures not supported by kernelZcoretemprc   r•   zdev.cpu.%s.coretemp.tjmax)r-   rG   Úranger   r‚   r   rR   rŽ   r˜   Zsensors_temperaturesr   r2   Úhigh)r3   Znum_cpusÚcpur’   r“   r   r   r   Ú(test_sensors_temperatures_against_sysctlË  s"    
þþz>FreeBSDSystemTestCase.test_sensors_temperatures_against_sysctlN)$rX   rY   rZ   ÚstaticmethodrŒ   r”   r	   rš   rœ   rž   r    r¡   r£   r]   r^   Ú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†   ò   sf   








	



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½   r2   )r3   r¾   Zsys_btZ	psutil_btr   r   r   r¿   ç  s    zOpenBSDTestCase.test_boot_timeN)rX   rY   rZ   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   st   t ddƒJ}|D ]4}| | ¡rt| ¡ d ƒd   W  d   ƒ S qW d   ƒ n1 sZ0    Y  td|  ƒ‚d S )Nz/proc/meminfoÚrtr   r8   zcan't find %s)Úopenr   r   r   r   )Zlook_forÚfr    r   r   r   Úparse_meminfoö  s
    
FzNetBSDTestCase.parse_meminfoc                 C   s   |   t ¡ j|  d¡¡ d S )Nz	MemTotal:)r2   r-   rJ   r=   rã   r¯   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-   rJ   r?   rã   r   r¯   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-   rJ   r¢   rã   r   r¯   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-   rJ   Zsharedrã   r   r¯   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¶   r=   rã   r   r¯   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   r¯   r   r   r   r¸     s    þz NetBSDTestCase.test_swapmem_freec                 C   s"   t  ¡ }|  |j|j|j ¡ d S r"   )r-   r¶   r2   r>   r=   r?   )r3   Zsmemr   r   r   r¹     s    z NetBSDTestCase.test_swapmem_usedc                 C   st   t ddƒ@}|D ]"}| d¡rt| ¡ d ƒ} q<qtdƒ‚W d   ƒ n1 sP0    Y  | jt ¡ j|dd d S )Nú
/proc/statÚrbs   intrr   úcouldn't find liner¬   r•   )	rá   r   r   r   r   r˜   r-   r­   r±   )r3   râ   r    r±   r   r   r   r²     s    
&ÿz(NetBSDTestCase.test_cpu_stats_interruptsc                 C   st   t ddƒ@}|D ]"}| d¡rt| ¡ d ƒ} q<qtdƒ‚W d   ƒ n1 sP0    Y  | jt ¡ j|dd d S )Nræ   rç   s   ctxtr   rè   r¬   r•   )	rá   r   r   r   r   r˜   r-   r­   r®   )r3   râ   r    r®   r   r   r   r°   *  s    
&ÿz*NetBSDTestCase.test_cpu_stats_ctx_switchesN)rX   rY   rZ   rÙ   rã   rä   r¡   r£   rå   rº   r¸   r¹   r²   r°   r   r   r   r   rß   ó  s   
rß   Ú__main__)Úrun_from_name)%r[   rÜ   ÚosrS   r/   r]   r-   r   r   r   r   Zpsutil.testsr   r   r   r	   r
   r   r   r   Zpsutil._psutil_posixr   r—   ÚgetuidrÚ   r   r   r^   r!   r_   r†   rÛ   rß   rX   Zpsutil.tests.runnerrê   Ú__file__r   r   r   r   Ú<module>
   sP   KY rB
