B
    çÚ†\wO  ã               @   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ròe d¡Ze ¡ dkrìedƒZqödZndZdd„ Zdd„ Ze e d¡G dd„ dejƒƒZe e d¡G dd„ dejƒƒZe e	 d¡G dd„ dejƒƒZe e d¡G d d!„ d!ejƒƒZe d"kr˜ee!ƒ dS )#z$Tests specific to all BSD platforms.é    N)ÚBSD)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)Úget_test_subprocess)ÚHAS_BATTERY)ÚMEMORY_TOLERANCE)Úreap_children)Úretry_before_failing)Úrun_test_module_by_name)Úsh)Úunittest)ÚwhichÚSC_PAGE_SIZEÚmuseFc             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   ú4lib/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   )Z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 )ÚBSDSpecificTestCasez)Generic tests common to all BSD variants.c             C   s   t ƒ j| _d S )N)r   Úpid)Úclsr   r   r   Ú
setUpClassO   s    zBSDSpecificTestCase.setUpClassc             C   s
   t ƒ  d S )N)r	   )r#   r   r   r   ÚtearDownClassS   s    z!BSDSpecificTestCase.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ÚtimeZstrftimeZ	localtimeÚassertEqual)ÚselfÚoutputZstart_psZstart_psutilr   r   r   Útest_process_create_timeW   s    z,BSDSpecificTestCase.test_process_create_timec             C   s¨   dd„ }xšt 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   Údfc   s    


z*BSDSpecificTestCase.test_disks.<locals>.dfF)Úalli    zpsutil=%s, df=%s)r)   Zdisk_partitionsZ
disk_usageZ
mountpointr,   Zdevicer5   Úabsr7   Zfailr6   )r-   r8   ÚpartZusager4   r5   r6   r7   r   r   r   Ú
test_disks`   s    zBSDSpecificTestCase.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)r-   Úsystr   r   r   Útest_cpu_count_logical{   s    z*BSDSpecificTestCase.test_cpu_count_logicalc             C   s   t dƒ}|  |t ¡ j¡ d S )Nz
hw.physmem)r   r,   r)   Úvirtual_memoryr5   )r-   Únumr   r   r   Útest_virtual_memory_total€   s    z-BSDSpecificTestCase.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 %sZRUNNING)ÚmsgÚmtuz	mtu (\d+)r   )r)   Znet_if_statsÚitemsr   ÚRuntimeErrorr,   ZisuprD   r   ÚreÚfindall)r-   ÚnameZstatsr   r   r   r   Útest_net_if_stats…   s    z%BSDSpecificTestCase.test_net_if_statsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr$   r%   r   ÚskipIfr   r/   r<   r   r?   rB   rJ   r   r   r   r   r!   K   s   	r!   zFREEBSD onlyc               @   s  e Zd Zed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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d0d1„ Z d2d3„ Z!d4d5„ Z"d6d7„ Z#d8d9„ Z$d:d;„ Z%d<d=„ Z&d>d?„ Z'e e( d@¡dAdB„ ƒZ)e e( d@¡dCdD„ ƒZ*e e(dE¡dFdG„ ƒZ+dHdI„ Z,dJS )KÚFreeBSDSpecificTestCasec             C   s   t ƒ j| _d S )N)r   r"   )r#   r   r   r   r$   š   s    z"FreeBSDSpecificTestCase.setUpClassc             C   s
   t ƒ  d S )N)r	   )r#   r   r   r   r%   ž   s    z%FreeBSDSpecificTestCase.tearDownClassc              C   sR   t dƒ ¡ d } t d| ¡}|s,td|  ƒ‚dd„ |dd… D ƒ\}}}|||fS )	Nzswapinfo -kéÿÿÿÿz\s+zCan't parse swapinfo: %sc             s   s   | ]}t |ƒd  V  qdS )i   N)r   )Ú.0Úpr   r   r   ú	<genexpr>¬   s    z9FreeBSDSpecificTestCase.parse_swapinfo.<locals>.<genexpr>r   r0   )r   Ú
splitlinesrG   r   r   )r.   Úpartsr5   r6   r7   r   r   r   Úparse_swapinfo¢   s    z&FreeBSDSpecificTestCase.parse_swapinfoc             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   r1   r,   Zaddrr   Zrssr2   r   )r-   r   Úmapsr3   r    ÚfieldsÚ_ÚstartÚstopZpermsZresÚmapr   r   r   Útest_proc_memory_maps¯   s    z-FreeBSDSpecificTestCase.test_proc_memory_mapsc             C   s<   t d| j ƒ}|  t | j¡ ¡ | d¡d  ¡ d ¡ d S )Nzprocstat -b %sr   r   rR   )r   r"   r,   r)   r*   Zexer   )r-   r   r   r   r   Útest_proc_exe¾   s    z%FreeBSDSpecificTestCase.test_proc_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   )r-   r   r   r   r   Útest_proc_cmdlineÃ   s    z)FreeBSDSpecificTestCase.test_proc_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   Z	effectiveZsaved)r-   r   ZeuidZruidZsuidZegidZrgidZsgidrT   rh   ri   r   r   r   Útest_proc_uids_gidsÈ   s    &z+FreeBSDSpecificTestCase.test_proc_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rÄtdƒ‚d S )Nzprocstat -r %sr   z voluntary contextrR   z involuntary contextr   z)couldn't find lines match in procstat out)r   r"   r)   r*   r   Úlowerr(   r   Znum_ctx_switchesZ	voluntaryr,   ÚappendZinvoluntaryÚlenrF   )r-   Útestedr   rT   r    Úpstat_valueÚpsutil_valuer   r   r   Útest_proc_ctx_switchesÕ   s"    

z.FreeBSDSpecificTestCase.test_proc_ctx_switchesc             C   sä   g }t d| j ƒ}t | j¡}x¬| d¡D ]ž}| ¡  ¡ }d|kr‚td| ¡ d  d¡d  ƒ}| ¡ j	}|  
||¡ | d ¡ q*d|kr*td| ¡ d  d¡d  ƒ}| ¡ j}|  
||¡ | d ¡ q*W t|ƒdkràtd	ƒ‚d S )
Nzprocstat -r %sr   z	user timez0.rR   Ú.zsystem timer   z)couldn't find lines match in procstat out)r   r"   r)   r*   r   rl   r(   ÚfloatZ	cpu_timesÚuserr,   rm   Úsystemrn   rF   )r-   ro   r   rT   r    rp   rq   r   r   r   Útest_proc_cpu_timesé   s"    

z+FreeBSDSpecificTestCase.test_proc_cpu_timesc             C   sŠ   d}t t|ƒƒ}|  t ¡ j|¡ d}t|ƒ}t | ¡ d  d¡d ƒ}t | ¡ d  d¡d ƒ}|  t ¡ j|¡ |  t ¡ j|¡ d S )Nzdev.cpu.0.freqzdev.cpu.0.freq_levelsr   ú/rR   )	r   r   r,   r)   Zcpu_freqÚcurrentr   ÚmaxÚmin)r-   ÚsensorÚsysctl_resultZmax_freqZmin_freqr   r   r   Ú!test_cpu_frequency_against_sysctlý   s    z9FreeBSDSpecificTestCase.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)   r@   Úactiver   )r-   r>   r   r   r   Útest_vmem_active  s    z(FreeBSDSpecificTestCase.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)   r@   Úinactiver   )r-   r>   r   r   r   Útest_vmem_inactive  s    z*FreeBSDSpecificTestCase.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)   r@   Úwiredr   )r-   r>   r   r   r   Útest_vmem_wired  s    z'FreeBSDSpecificTestCase.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)   r@   Úcachedr   )r-   r>   r   r   r   Útest_vmem_cached"  s    z(FreeBSDSpecificTestCase.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)   r@   r7   r   )r-   r>   r   r   r   Útest_vmem_free(  s    z&FreeBSDSpecificTestCase.test_vmem_freec             C   s"   t dƒ}| jt ¡ j|td d S )Nzvfs.bufspace)r   )r   r   r)   r@   Úbuffersr   )r-   r>   r   r   r   Útest_vmem_buffers.  s    z)FreeBSDSpecificTestCase.test_vmem_bufferszmuse not installedc             C   s   t dƒ}|  t ¡ j|¡ d S )NZTotal)r   r,   r)   r@   r5   )r-   rA   r   r   r   Útest_muse_vmem_total6  s    z,FreeBSDSpecificTestCase.test_muse_vmem_totalc             C   s"   t dƒ}| jt ¡ j|td d S )NZActive)r   )r   r   r)   r@   r‚   r   )r-   rA   r   r   r   Útest_muse_vmem_active;  s    z-FreeBSDSpecificTestCase.test_muse_vmem_activec             C   s"   t dƒ}| jt ¡ j|td d S )NZInactive)r   )r   r   r)   r@   r„   r   )r-   rA   r   r   r   Útest_muse_vmem_inactiveB  s    z/FreeBSDSpecificTestCase.test_muse_vmem_inactivec             C   s"   t dƒ}| jt ¡ j|td d S )NZWired)r   )r   r   r)   r@   r†   r   )r-   rA   r   r   r   Útest_muse_vmem_wiredI  s    z,FreeBSDSpecificTestCase.test_muse_vmem_wiredc             C   s"   t dƒ}| jt ¡ j|td d S )NZCache)r   )r   r   r)   r@   rˆ   r   )r-   rA   r   r   r   Útest_muse_vmem_cachedP  s    z-FreeBSDSpecificTestCase.test_muse_vmem_cachedc             C   s"   t dƒ}| jt ¡ j|td d S )NZFree)r   )r   r   r)   r@   r7   r   )r-   rA   r   r   r   Útest_muse_vmem_freeW  s    z+FreeBSDSpecificTestCase.test_muse_vmem_freec             C   s"   t dƒ}| jt ¡ j|td d S )NZBuffer)r   )r   r   r)   r@   r‹   r   )r-   rA   r   r   r   Útest_muse_vmem_buffers^  s    z.FreeBSDSpecificTestCase.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   )r-   r   r   r   Útest_cpu_stats_ctx_switchese  s    z3FreeBSDSpecificTestCase.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   )r-   r   r   r   Útest_cpu_stats_interruptsi  s    z1FreeBSDSpecificTestCase.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”   Zsoft_interruptsr   )r-   r   r   r   Útest_cpu_stats_soft_interruptsm  s    z6FreeBSDSpecificTestCase.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_syscallsq  s    z/FreeBSDSpecificTestCase.test_cpu_stats_syscallsc             C   s(   |   ¡ \}}}| jt ¡ j|td d S )N)r   )rX   r   r)   Úswap_memoryr7   r   )r-   r5   r6   r7   r   r   r   Útest_swapmem_free{  s    z)FreeBSDSpecificTestCase.test_swapmem_freec             C   s(   |   ¡ \}}}| jt ¡ j|td d S )N)r   )rX   r   r)   r›   r6   r   )r-   r5   r6   r7   r   r   r   Útest_swapmem_used€  s    z)FreeBSDSpecificTestCase.test_swapmem_usedc             C   s(   |   ¡ \}}}| jt ¡ j|td d S )N)r   )rX   r   r)   r›   r5   r   )r-   r5   r6   r7   r   r   r   Útest_swapmem_total…  s    z*FreeBSDSpecificTestCase.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)r-   ÚsZbtimer   r   r   Útest_boot_timeŒ  s
    z&FreeBSDSpecificTestCase.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@FreeBSDSpecificTestCase.test_sensors_battery.<locals>.secs2hourszacpiconf -i 0c             S   s(   g | ] }|  d ¡d |  d ¡d f‘qS )ú	r   rR   )r   )rS   Úxr   r   r   ú
<listcomp>  s   z@FreeBSDSpecificTestCase.test_sensors_battery.<locals>.<listcomp>r   zRemaining capacity:ú%r&   zRemaining time:Úunknown)r   Údictr   r)   Úsensors_batteryr   r'   r,   ÚpercentÚsecsleftZPOWER_TIME_UNLIMITED)r-   r¨   r   r]   Zmetricsr°   Zremaining_timer   r   r   Útest_sensors_battery•  s    z,FreeBSDSpecificTestCase.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.timerR   r¤   )r,   r)   r¯   r°   r   Zpower_pluggedr±   )r-   r±   r   r   r   Ú#test_sensors_battery_against_sysctl¨  s    

z;FreeBSDSpecificTestCase.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assertRaisesrF   r   ZassertIsNoner)   r¯   )r-   r   r   r   Útest_sensors_battery_no_battery´  s
    z7FreeBSDSpecificTestCase.test_sensors_battery_no_batteryc             C   s˜   t  d¡}xˆt|ƒD ]|}d| }ttt|ƒd d… ƒƒ}| jt  ¡ d | j|dd d| }ttt|ƒd d… ƒƒ}|  	t  ¡ d | j
|¡ qW d S )NTzdev.cpu.%s.temperaturerR   Zcoretempr[   )r   zdev.cpu.%s.coretemp.tjmax)r)   r=   Úranger   rt   r   r   Zsensors_temperaturesry   r,   Zhigh)r-   Znum_cpusZcpur|   r}   r   r   r   Ú(test_sensors_temperatures_against_sysctlÁ  s    

z@FreeBSDSpecificTestCase.test_sensors_temperatures_against_sysctlN)-rK   rL   rM   rO   r$   r%   ÚstaticmethodrX   r
   rb   rc   rf   rk   rr   rw   r~   rƒ   r…   r‡   r‰   rŠ   rŒ   r   rP   Ú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   rQ   —   sR   
	rQ   zOPENBSD onlyc               @   s   e Zd Zdd„ ZdS )ÚOpenBSDSpecificTestCasec             C   s6   t dƒ}tj |d¡}tj t ¡ ¡}|  ||¡ d S )Nzkern.boottimez%a %b %d %H:%M:%S %Y)r   ÚdatetimeZstrptimeZfromtimestampr)   r¡   r,   )r-   r¢   Zsys_btZ	psutil_btr   r   r   r£   Ù  s    z&OpenBSDSpecificTestCase.test_boot_timeN)rK   rL   rM   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 )ÚNetBSDSpecificTestCasec          	   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Úrbr   i   zcan't find %s)Úopenr   r   r   r   )Zlook_forÚfr    r   r   r   Úparse_meminfoè  s
    

"z$NetBSDSpecificTestCase.parse_meminfoc             C   s   |   t ¡ j|  d¡¡ d S )Nz	MemTotal:)r,   r)   r@   r5   r¿   )r-   r   r   r   Útest_vmem_totalð  s    z&NetBSDSpecificTestCase.test_vmem_totalc             C   s    | j t ¡ j|  d¡td d S )NzMemFree:)r   )r   r)   r@   r7   r¿   r   )r-   r   r   r   rŠ   ô  s    z%NetBSDSpecificTestCase.test_vmem_freec             C   s    | j t ¡ j|  d¡td d S )NzBuffers:)r   )r   r)   r@   r‹   r¿   r   )r-   r   r   r   rŒ   ù  s    z(NetBSDSpecificTestCase.test_vmem_buffersc             C   s    | j t ¡ j|  d¡td d S )Nz
MemShared:)r   )r   r)   r@   Zsharedr¿   r   )r-   r   r   r   Útest_vmem_sharedþ  s    z'NetBSDSpecificTestCase.test_vmem_sharedc             C   s    | j t ¡ j|  d¡td d S )Nz
SwapTotal:)r   )r   r)   r›   r5   r¿   r   )r-   r   r   r   rž     s    z)NetBSDSpecificTestCase.test_swapmem_totalc             C   s    | j t ¡ j|  d¡td d S )Nz	SwapFree:)r   )r   r)   r›   r7   r¿   r   )r-   r   r   r   rœ     s    z(NetBSDSpecificTestCase.test_swapmem_freec             C   s"   t  ¡ }|  |j|j|j ¡ d S )N)r)   r›   r,   r6   r5   r7   )r-   Zsmemr   r   r   r     s    z(NetBSDSpecificTestCase.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/statr¼   s   intrr   zcouldn't find lineiè  )r   )	r½   r   r   r   r   r   r)   r”   r—   )r-   r¾   r    r—   r   r   r   r˜     s    

z0NetBSDSpecificTestCase.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•   )r-   r¾   r    r•   r   r   r   r–     s    

z2NetBSDSpecificTestCase.test_cpu_stats_ctx_switchesN)rK   rL   rM   r·   r¿   rÀ   rŠ   rŒ   rÁ   rž   rœ   r   r˜   r–   r   r   r   r   r»   å  s   r»   Ú__main__)"rN   rº   ÚosrG   r+   r)   r   r   r   r   Zpsutil.testsr   r   r   r	   r
   r   r   r   r   Úsysconfr€   Úgetuidr¸   r   r   rP   ZTestCaser!   rQ   r¹   r»   rK   Ú__file__r   r   r   r   Ú<module>
   sL   


K
  @

B
