o
    ˆ¶¹a×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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 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)Úunittest)Úwhich)ÚgetpagesizeÚmuseTFc                 C   sh   t d|  ƒ}tr|| d¡d d… }ntstr#|| d¡d d… }zt|ƒW S  ty3   | Y S w )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   ú7/usr/lib/python3/dist-packages/psutil/tests/test_bsd.pyÚsysctl-   s   
ÿr   c                 C   s>   t dƒ}| d¡D ]	}| | ¡r n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   ó   t ƒ j| _d S ©N©r   Úpid©Úclsr   r   r   Ú
setUpClassP   ó   zBSDTestCase.setUpClassc                 C   ó   t | jƒ d S r$   ©r   r&   r'   r   r   r   ÚtearDownClassT   r*   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 %sÚSTARTEDÚ z%a %b %e %H:%M:%S %Y)r
   r&   ÚreplaceÚstripÚpsutilÚProcessÚcreate_timeÚtimeÚstrftimeÚ	localtimeÚassertEqual)ÚselfÚoutputÚstart_psÚstart_psutilr   r   r   Útest_process_create_timeX   s   ÿz$BSDTestCase.test_process_create_timec                 C   s¤   dd„ }t jdd�D ]E}t  |j¡}||jƒ\}}}}|  |j|¡ |  |j|¡ t|j| ƒdkr<|  	d|j|f ¡ t|j
| ƒdkrO|  	d|j
|f ¡ q
d S )Nc                 S   s‚   t d|  ƒ ¡ }| d¡}| d¡ | d¡}| ¡ d d… \}}}}|dkr)d}t|ƒd }t|ƒd }t|ƒd }||||fS )Nz
df -k "%s"r   r   é   Únoner/   é   )r
   r1   r   Úpopr   )Úpathr    Úlinesr!   ÚdevÚtotalÚusedÚfreer   r   r   Údfd   s   


z"BSDTestCase.test_disks.<locals>.dfF)Úalli    zpsutil=%s, df=%s)r2   Údisk_partitionsÚ
disk_usageÚ
mountpointr8   ÚdevicerE   ÚabsrG   ÚfailrF   )r9   rH   ÚpartÚusagerD   rE   rF   rG   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)Úlogical)r   r8   r2   Ú	cpu_count©r9   Ú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   r8   r2   Úvirtual_memoryrE   ©r9   Únumr   r   r   Útest_virtual_memory_total�   ó   z%BSDTestCase.test_virtual_memory_totalc              	   C   sz   t  ¡  ¡ D ]4\}}ztd| ƒ}W n	 ty   Y qw | 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   )r2   Únet_if_statsÚitemsr
   ÚRuntimeErrorr8   Úisupr_   r   ÚreÚfindall)r9   ÚnameÚstatsr    r   r   r   Útest_net_if_stats†   s   ÿÿ€øzBSDTestCase.test_net_if_statsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr)   r-   r   ÚskipIfr   r=   rR   r   rW   r[   rh   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   r#   r$   r%   r'   r   r   r   r)   ›   r*   z FreeBSDPsutilTestCase.setUpClassc                 C   r+   r$   r,   r'   r   r   r   r-   Ÿ   r*   z#FreeBSDPsutilTestCase.tearDownClassc                 C   s¸   t d| j ƒ}t | j¡jdd�}| d¡dd … }|rZ| ¡ }| ¡ }|d d… \}}}}	}
| ¡ }|  d||f |j¡ |  t	|
ƒ|j
¡ |j d¡sV|  |d	 |j¡ |sd S d S )
Nzprocstat -v %sF)Úgroupedr   r   é   z%s-%sú[é
   )r
   r&   r2   r3   Úmemory_mapsr   rA   r8   Úaddrr   ÚrssrB   r   )r9   r    ÚmapsrC   r!   ÚfieldsÚ_ÚstartÚstopÚ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&   r8   r2   r3   Úexer   ©r9   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&   r8   Újoinr2   r3   r   r   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   r2   r3   ÚuidsÚgidsr8   Úrealr   Ú	effectiveÚsaved)r9   r    ÚeuidÚruidÚsuidÚegidÚrgidÚsgidÚprˆ   r‰   r   r   r   Útest_uids_gids¼   s   &z$FreeBSDPsutilTestCase.test_uids_gidsc                 C   sÄ   g }t d| j ƒ}t | j¡}| d¡D ]A}| ¡  ¡ }d|v r9t| ¡ d ƒ}| ¡ j	}|  
||¡ | d ¡ qd|v rUt| ¡ d ƒ}| ¡ j}|  
||¡ | d ¡ qt|ƒdkr`tdƒ‚d S )Núprocstat -r %sr   z voluntary contextr€   z involuntary contextr   ú)couldn't find lines match in procstat out)r
   r&   r2   r3   r   Úlowerr1   r   Únum_ctx_switchesÚ	voluntaryr8   ÚappendÚinvoluntaryÚlenrb   ©r9   Útestedr    r“   r!   Úpstat_valueÚpsutil_valuer   r   r   Útest_ctx_switchesÉ   s&   


€ÿz'FreeBSDPsutilTestCase.test_ctx_switchesc                 C   sà   g }t d| j ƒ}t | j¡}| d¡D ]O}| ¡  ¡ }d|v r@td| ¡ d  d¡d  ƒ}| ¡ j	}|  
||¡ | d ¡ qd|v rctd| ¡ d  d¡d  ƒ}| ¡ j}|  
||¡ | d ¡ qt|ƒdkrntd	ƒ‚d S )
Nr•   r   z	user timez0.r€   Ú.zsystem timer   r–   )r
   r&   r2   r3   r   r—   r1   ÚfloatÚ	cpu_timesÚuserr8   rš   Úsystemrœ   rb   r�   r   r   r   Útest_cpu_timesÝ   s&   


€ÿz$FreeBSDPsutilTestCase.test_cpu_timesN)ri   rj   rk   rm   r)   r-   r	   r   rƒ   r†   r”   r¡   r§   r   r   r   r   ro   ˜   s    



ro   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 -kr€   z\s+zCan't parse swapinfo: %sc                 s   s   � | ]	}t |ƒd  V  qdS )r@   N)r   )Ú.0r“   r   r   r   Ú	<genexpr>ÿ   s   € z7FreeBSDSystemTestCase.parse_swapinfo.<locals>.<genexpr>r   r>   )r
   Ú
splitlinesrd   r   r   )r:   ÚpartsrE   rF   rG   r   r   r   Úparse_swapinfoõ   s   
z$FreeBSDSystemTestCase.parse_swapinfoc                 C   s¬   d}zt t|ƒƒ}W n ty   |  d¡ Y nw |  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   ú/r€   )r   r   rb   ÚskipTestr8   r2   Úcpu_freqÚcurrentr   ÚmaxÚmin)r9   ÚsensorÚsysctl_resultÚmax_freqÚmin_freqr   r   r   Ú!test_cpu_frequency_against_sysctl  s   ÿz7FreeBSDSystemTestCase.test_cpu_frequency_against_sysctlc                 C   ó&   t dƒt }| jt ¡ j|td� d S )Nzvm.stats.vm.v_active_count©Údelta)r   ÚPAGESIZEÚassertAlmostEqualr2   rX   Úactiver   rU   r   r   r   Útest_vmem_active  ó   
ÿz&FreeBSDSystemTestCase.test_vmem_activec                 C   r¹   )Nzvm.stats.vm.v_inactive_countrº   )r   r¼   r½   r2   rX   Úinactiver   rU   r   r   r   Útest_vmem_inactive  rÀ   z(FreeBSDSystemTestCase.test_vmem_inactivec                 C   r¹   )Nzvm.stats.vm.v_wire_countrº   )r   r¼   r½   r2   rX   Úwiredr   rU   r   r   r   Útest_vmem_wired$  rÀ   z%FreeBSDSystemTestCase.test_vmem_wiredc                 C   r¹   )Nzvm.stats.vm.v_cache_countrº   )r   r¼   r½   r2   rX   Úcachedr   rU   r   r   r   Útest_vmem_cached*  rÀ   z&FreeBSDSystemTestCase.test_vmem_cachedc                 C   r¹   )Nzvm.stats.vm.v_free_countrº   )r   r¼   r½   r2   rX   rG   r   rU   r   r   r   Útest_vmem_free0  rÀ   z$FreeBSDSystemTestCase.test_vmem_freec                 C   ó"   t dƒ}| jt ¡ j|td� d S )Nzvfs.bufspacerº   )r   r½   r2   rX   Úbuffersr   rU   r   r   r   Útest_vmem_buffers6  s   
ÿz'FreeBSDSystemTestCase.test_vmem_bufferszmuse not installedc                 C   s   t dƒ}|  t ¡ j|¡ d S )NÚTotal)r   r8   r2   rX   rE   rY   r   r   r   Útest_muse_vmem_total>  r\   z*FreeBSDSystemTestCase.test_muse_vmem_totalc                 C   rÈ   )NÚActiverº   )r   r½   r2   rX   r¾   r   rY   r   r   r   Útest_muse_vmem_activeC  ó   
ÿz+FreeBSDSystemTestCase.test_muse_vmem_activec                 C   rÈ   )NÚInactiverº   )r   r½   r2   rX   rÁ   r   rY   r   r   r   Útest_muse_vmem_inactiveJ  rÏ   z-FreeBSDSystemTestCase.test_muse_vmem_inactivec                 C   rÈ   )NÚWiredrº   )r   r½   r2   rX   rÃ   r   rY   r   r   r   Útest_muse_vmem_wiredQ  rÏ   z*FreeBSDSystemTestCase.test_muse_vmem_wiredc                 C   rÈ   )NÚCacherº   )r   r½   r2   rX   rÅ   r   rY   r   r   r   Útest_muse_vmem_cachedX  rÏ   z+FreeBSDSystemTestCase.test_muse_vmem_cachedc                 C   rÈ   )NÚFreerº   )r   r½   r2   rX   rG   r   rY   r   r   r   Útest_muse_vmem_free_  rÏ   z)FreeBSDSystemTestCase.test_muse_vmem_freec                 C   rÈ   )NÚBufferrº   )r   r½   r2   rX   rÉ   r   rY   r   r   r   Útest_muse_vmem_buffersf  rÏ   z,FreeBSDSystemTestCase.test_muse_vmem_buffersc                 C   ó   | j t ¡ jtdƒdd� d S )Nzvm.stats.sys.v_swtchéè  rº   )r½   r2   Ú	cpu_statsÚctx_switchesr   ©r9   r   r   r   Útest_cpu_stats_ctx_switchesm  ó   
ÿz1FreeBSDSystemTestCase.test_cpu_stats_ctx_switchesc                 C   rÚ   )Nzvm.stats.sys.v_intrrÛ   rº   )r½   r2   rÜ   Ú
interruptsr   rÞ   r   r   r   Útest_cpu_stats_interruptsq  rà   z/FreeBSDSystemTestCase.test_cpu_stats_interruptsc                 C   rÚ   )Nzvm.stats.sys.v_softrÛ   rº   )r½   r2   rÜ   Úsoft_interruptsr   rÞ   r   r   r   Útest_cpu_stats_soft_interruptsu  rà   z4FreeBSDSystemTestCase.test_cpu_stats_soft_interruptsc                 C   rÚ   )Nzvm.stats.sys.v_syscalli@ rº   )r½   r2   rÜ   Ú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½   r2   Úswap_memoryrG   r   ©r9   rE   rF   rG   r   r   r   Útest_swapmem_free…  ó   
ÿz'FreeBSDSystemTestCase.test_swapmem_freec                 C   s(   |   ¡ \}}}| jt ¡ j|td� d S rç   )r­   r½   r2   rè   rF   r   ré   r   r   r   Útest_swapmem_usedŠ  rë   z'FreeBSDSystemTestCase.test_swapmem_usedc                 C   s(   |   ¡ \}}}| jt ¡ j|td� d S rç   )r­   r½   r2   rè   rE   r   ré   r   r   r   Útest_swapmem_total�  rë   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   r8   r2   Ú	boot_time)r9   ÚsÚ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r;|  |j	tj
¡ d S |  ||j	ƒ|¡ d S )Nc                 S   s(   t | dƒ\}}t |dƒ\}}d||f S )Né<   z%d:%02d)Údivmod)Ú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   r€   )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   r2   Úsensors_batteryr   r0   r8   ÚpercentÚsecsleftÚPOWER_TIME_UNLIMITED)r9   rù   r    rx   Úmetricsr  Úremaining_timer   r   r   Útest_sensors_batteryŸ  s   ÿz*FreeBSDSystemTestCase.test_sensors_batteryc                 C   sn   |   t ¡ jtdƒ¡ |   t ¡ jtdƒdk¡ t ¡ j}|dk r+|   tdƒd¡ d S |   |tdƒd ¡ d S )Núhw.acpi.battery.lifeúhw.acpi.acliner   r   úhw.acpi.battery.timer€   rô   )r8   r2   r   r  r   Úpower_pluggedr  )r9   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 sw   Y  |  t ¡ ¡ d S )Nr  r	  r  )ÚassertRaisesrb   r   ÚassertIsNoner2   r   rÞ   r   r   r   Útest_sensors_battery_no_battery¾  s   
ýz5FreeBSDSystemTestCase.test_sensors_battery_no_batteryc              	   C   s¶   t  d¡}t|ƒD ]O}d| }zttt|ƒd d… ƒƒ}W n ty+   |  d¡ Y nw | jt  	¡ d | j
|dd� d| }ttt|ƒd d… ƒƒ}|  t  	¡ d | j|¡ q	d S )	NTzdev.cpu.%s.temperaturer€   z$temperatures not supported by kernelÚcoretemprs   rº   zdev.cpu.%s.coretemp.tjmax)r2   rT   Úranger   r£   r   rb   r¯   r½   Úsensors_temperaturesr±   r8   Úhigh)r9   Únum_cpusÚcpur´   rµ   r   r   r   Ú(test_sensors_temperatures_against_sysctlË  s&   
ÿþþóz>FreeBSDSystemTestCase.test_sensors_temperatures_against_sysctlN)$ri   rj   rk   Ústaticmethodr­   r¸   r	   r¿   rÂ   rÄ   rÆ   rÇ   rÊ   r   rn   Ú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¨   ò   sh    








	



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Úfromtimestampr2   rð   r8   )r9   rñ   Úsys_btÚ	psutil_btr   r   r   ró   ç  s   zOpenBSDTestCase.test_boot_timeN)ri   rj   rk   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   sp   t ddƒ�%}|D ]}| | ¡r"t| ¡ d ƒd   W  d   ƒ S qW d   ƒ n1 s-w   Y  td|  ƒ‚)Nz/proc/meminfoÚrtr   r@   zcan't find %s)Úopenr   r   r   r   )Úlook_forÚfr!   r   r   r   Úparse_meminfoö  s   
ýÿÿzNetBSDTestCase.parse_meminfoc                 C   s   |   t ¡ j|  d¡¡ d S )Nz	MemTotal:)r8   r2   rX   rE   r#  rÞ   r   r   r   Útest_vmem_totalþ  s   ÿzNetBSDTestCase.test_vmem_totalc                 C   ó    | j t ¡ j|  d¡td� d S )NzMemFree:rº   )r½   r2   rX   rG   r#  r   rÞ   r   r   r   rÇ     ó   
þzNetBSDTestCase.test_vmem_freec                 C   r%  )NzBuffers:rº   )r½   r2   rX   rÉ   r#  r   rÞ   r   r   r   rÊ     r&  z NetBSDTestCase.test_vmem_buffersc                 C   r%  )Nz
MemShared:rº   )r½   r2   rX   Úsharedr#  r   rÞ   r   r   r   Útest_vmem_shared  r&  zNetBSDTestCase.test_vmem_sharedc                 C   r%  )Nz
SwapTotal:rº   )r½   r2   rè   rE   r#  r   rÞ   r   r   r   rí     r&  z!NetBSDTestCase.test_swapmem_totalc                 C   r%  )Nz	SwapFree:rº   )r½   r2   rè   rG   r#  r   rÞ   r   r   r   rê     r&  z NetBSDTestCase.test_swapmem_freec                 C   s"   t  ¡ }|  |j|j|j ¡ d S r$   )r2   rè   r8   rF   rE   rG   )r9   Úsmemr   r   r   rì     s   z NetBSDTestCase.test_swapmem_usedc                 C   ót   t ddƒ� }|D ]}| d¡rt| ¡ d ƒ} nqtdƒ‚W d   ƒ n1 s(w   Y  | jt ¡ j|dd� d S )Nú
/proc/statÚrbs   intrr   úcouldn't find linerÛ   rº   )	r   r   r   r   r   r½   r2   rÜ   rá   )r9   r"  r!   rá   r   r   r   râ     ó   
þþü
ÿz(NetBSDTestCase.test_cpu_stats_interruptsc                 C   r*  )Nr+  r,  s   ctxtr   r-  rÛ   rº   )	r   r   r   r   r   r½   r2   rÜ   rÝ   )r9   r"  r!   rÝ   r   r   r   rß   *  r.  z*NetBSDTestCase.test_cpu_stats_ctx_switchesN)ri   rj   rk   r  r#  r$  rÇ   rÊ   r(  rí   rê   rì   râ   rß   r   r   r   r   r  ó  s    
r  Ú__main__)Úrun_from_name)%rl   r  Úosrd   r5   r2   r   r   r   r   Úpsutil.testsr   r   r   r	   r
   r   r   r   r   Úpsutil._psutil_posixr   r¼   Úgetuidr  r   r   rn   r"   ro   r¨   r  r  ri   Úpsutil.tests.runnerr0  Ú__file__r   r   r   r   Ú<module>   sT   	KY rBþ