<!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>
3
JZ/                 @   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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 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( 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- G d"d# d#e-j.Z/e0d$kre(e1 dS )%zTests for system APIS.    N)AIX)BSD)FREEBSD)LINUX)NETBSD)OPENBSD)OSX)POSIX)SUNOS)WINDOWS)long)APPVEYOR)ASCII_FS)check_net_address)DEVNULL)enum)get_test_subprocess)HAS_BATTERY)HAS_CPU_FREQ)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)mock)reap_children)retry_before_failing)run_test_module_by_name)safe_rmpath)TESTFN)TESTFN_UNICODE)TRAVIS)unittestc               @   sB  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
eje d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%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'dEdF Z(dGdH Z)eje*dIdJdK Z+eje,o\e-j.j/dL dMeje0ote1j2 dNkdOdPdQ Z3dRdS Z4eje0pe*oe1j5  dTdUdV Z6dWdX Z7eje8 dYdZd[ Z9d\d] Z:eje; d^d_d` Z<eje; d^dadb Z=eje> d^eje? dcddde Z@ejeA d^dfdg ZBdNS )hTestSystemAPIszTests for system-related APIs.c             C   s   t t d S )N)r   r   )self r#   #/usr/lib64/python3.6/test_system.pysetUp>   s    zTestSystemAPIs.setUpc             C   s
   t   d S )N)r   )r"   r#   r#   r$   tearDownA   s    zTestSystemAPIs.tearDownc             C   s   | j tj dd tj D  t }| j |jdd tj D  tj|j}|j  |j	  | j
|jdd tj D  tjdtjtj d | jttj g  W d Q R X tjdtjtj d* | jtj ttj  W d Q R X W d Q R X d S )Nc             S   s   g | ]
}|j qS r#   )pid).0xr#   r#   r$   
<listcomp>E   s    z4TestSystemAPIs.test_process_iter.<locals>.<listcomp>c             S   s   g | ]
}|j qS r#   )r'   )r(   r)   r#   r#   r$   r*   G   s    c             S   s   g | ]
}|j qS r#   )r'   )r(   r)   r#   r#   r$   r*   K   s    zpsutil.Process)side_effect)assertInosgetpidpsutilprocess_iterr   r'   ProcesskillwaitassertNotInr   patchZNoSuchProcessassertEquallistAccessDeniedassertRaises)r"   sprocpr#   r#   r$   test_process_iterD   s    z TestSystemAPIs.test_process_iterc             C   s"  x.t jdgdD ]}| jt|jj dg qW | jt tt jdgd W d Q R X tj	dt j
dddB}x:t jddgdD ]&}| j|jd  | j|jd d qW W d Q R X tj	dt j
dddL}t }x>t jddg|d	D ](}| j|jd | | j|jd d qW W d Q R X d S )
Nr'   )attrsZfooz$psutil._psplatform.Process.cpu_timesr    )r+   	cpu_times)r=   Zad_value)r/   r0   r6   r7   infokeysr9   
ValueErrorr   r5   r8   assertIsNoneassertGreaterEqualobjectassertIs)r"   r;   mflagr#   r#   r$   test_prcess_iter_w_paramsU   s$    
z(TestSystemAPIs.test_prcess_iter_w_paramsc                s   fdd}g  t  }t  }t  }dd |||fD }jttj|dd jttj|dd tj }tj|d|d	\}}jtj | d
 j|g  jt	|d j g  x|D ]}	j
t|	d qW tdfdd}
|j  |
||\}}j|jdd |D  tr4j|j jtj  nj|j jd j |jg x|D ]}	j
t|	d q\W tdfdd}
|j  |j  |
||\}}jt t|j|j|jg x|D ]}	jt|	d qW d S )Nc                s    j | j d S )N)appendr'   )r;   )pidsr#   r$   callbackj   s    z0TestSystemAPIs.test_wait_procs.<locals>.callbackc             S   s   g | ]}t j|jqS r#   )r/   r1   r'   )r(   r)   r#   r#   r$   r*   q   s    z2TestSystemAPIs.test_wait_procs.<locals>.<listcomp>   )timeout)rL   g{Gz?)rN   rL   g      ?   
returncode   c                s<   t j| d|d\}} jt|d  jt|d ||fS )NgQ?)rN   rL   rM      )r/   
wait_procsr6   len)procsrL   gonealive)r"   r#   r$   test~   s
    z,TestSystemAPIs.test_wait_procs.<locals>.testc             S   s   g | ]
}|j qS r#   )r'   )r(   r)   r#   r#   r$   r*      s    c                s<   t j| d|d\}} jt|d  jt|d ||fS )NgQ?)rN   rL   rO   r   )r/   rS   r6   rT   )rU   rL   rV   rW   )r"   r#   r$   rX      s
    )r   r9   rB   r/   rS   	TypeErrortime
assertLessr6   rT   assertFalsehasattrr   	terminater,   r'   r	   poprP   signalSIGTERMset
assertTrue)r"   rL   sproc1sproc2sproc3rU   trV   rW   r;   rX   r#   )rK   r"   r$   test_wait_procsi   sB    

 
zTestSystemAPIs.test_wait_procsc             C   sN   t  }t  }t  }dd |||fD }x|D ]}|j  q,W tj|\}}d S )Nc             S   s   g | ]}t j|jqS r#   )r/   r1   r'   )r(   r)   r#   r#   r$   r*      s    z=TestSystemAPIs.test_wait_procs_no_timeout.<locals>.<listcomp>)r   r_   r/   rS   )r"   re   rf   rg   rU   r;   rV   rW   r#   r#   r$   test_wait_procs_no_timeout   s    
z)TestSystemAPIs.test_wait_procs_no_timeoutc             C   s4   t j }| j|t | j|d | j|tj  d S )Nr   )r/   Z	boot_timeassertIsInstancefloatassertGreaterr\   r[   )r"   Zbtr#   r#   r$   test_boot_time   s    zTestSystemAPIs.test_boot_timez
POSIX onlyc             C   s"   dd l }| jtjd|j  d S )Nr   SC_PAGE_SIZE)resourcer6   r-   sysconfZgetpagesize)r"   rp   r#   r#   r$   test_PAGESIZE   s    zTestSystemAPIs.test_PAGESIZEc             C   s   t j }xt|jD ]j}t||}|dkr6| j|ttf |dkr|dksX| jd||f  ||jkr| jd||j||f  qW d S )Npercenttotalr   z%r < 0 (%s)z%r > total (total=%s, %s=%s))	r/   Zvirtual_memory_fieldsgetattrrk   intr   failrt   )r"   memnamevaluer#   r#   r$   test_virtual_memory   s    

z"TestSystemAPIs.test_virtual_memoryc             C   s&   t j }| j|jd |jdkr"n d S )	Nrt   usedfreers   sinsoutr   )rt   r}   r~   rs   r   r   )r/   Zswap_memoryr6   ru   rt   )r"   ry   r#   r#   r$   test_swap_memory   s    

zTestSystemAPIs.test_swap_memoryc             C   st   t  }| jtj|j tj|j}|j  |j  | jtj|j | jtjd | j	tjddtj
 k d S )NrM   r   rY   )r   rd   r/   
pid_existsr'   r1   r2   r3   r]   r6   rK   )r"   r:   r;   r#   r#   r$   test_pid_exists   s    zTestSystemAPIs.test_pid_existsc             C   s   t   tj }xF|D ]>}yW q tk
rP   tjd |tj krL| j| Y qX qW tt|d t|d }x |D ]}| j	tj
||d qvW d S )Ng?i  ip  )msg)r   r/   rK   AssertionErrorr[   sleeprx   rangemaxr]   r   )r"   rK   r'   r#   r#   r$   test_pid_exists_2   s    


z TestSystemAPIs.test_pid_exists_2c             C   sJ   dd t j D }t j }| j|j |j  | jt|tt| d S )Nc             S   s   g | ]
}|j qS r#   )r'   )r(   r)   r#   r#   r$   r*      s    z,TestSystemAPIs.test_pids.<locals>.<listcomp>)r/   r0   rK   r6   sortrT   rc   )r"   ZplistZpidlistr#   r#   r$   	test_pids   s    zTestSystemAPIs.test_pidsc             C   s&   t j}tt _ztj  W d |t _X d S )N)sysstdoutr   r/   rX   )r"   r   r#   r#   r$   	test_test   s
    zTestSystemAPIs.test_testc          
   C   s   t j }| j|tt jdd | j|d tjjdrft	d}|j
 }W d Q R X d|krftjdt jdd}| j|d | j|| d S )	NT)percpurM   z/proc/cpuinfozphysical idz#cpuinfo doesn't include physical idF)logical)r/   	cpu_countr6   rT   r?   rD   r-   pathexistsopenreadr    ZSkipTest)r"   r   fdZcpuinfo_dataZphysicalr#   r#   r$   test_cpu_count  s    

zTestSystemAPIs.test_cpu_countc             C   sf   x`d	D ]X}t jd|d}| jtj  W d Q R X t jd|d}| jtjdd W d Q R X qW d S )
NrM   r   z$psutil._psplatform.cpu_count_logical)return_valuez%psutil._psplatform.cpu_count_physicalF)r   rY   )rY   r   N)r   r5   rC   r/   r   )r"   valrG   r#   r#   r$   test_cpu_count_none  s    



z"TestSystemAPIs.test_cpu_count_nonec             C   s^   d}t j }t| x,|D ]$}| j|t | j|d ||7 }qW | j|t| t| d S )Nr   g        )r/   r?   sumrk   rl   rD   r6   str)r"   rt   timescp_timer#   r#   r$   test_cpu_times  s    
zTestSystemAPIs.test_cpu_timesc             C   sD   t tj }tjd t tj }|| }|dks@| jd|  d S )Ng?g?zdifference %s)r   r/   r?   r[   r   rx   )r"   t1t2
differencer#   r#   r$   test_cpu_times_time_increases:  s    
z,TestSystemAPIs.test_cpu_times_time_increasesc             C   s   xft jddD ]V}d}t| x,|D ]$}| j|t | j|d ||7 }q$W | j|t| t| qW | jtt jddd tt jdd d S )NT)r   r   g        F)	r/   r?   r   rk   rl   rD   r6   r   rT   )r"   r   rt   r   r#   r#   r$   test_per_cpu_timesC  s    
z!TestSystemAPIs.test_per_cpu_timesc             C   s   t jdd}tj d }xtj |krP qW t jdd}x<t||D ].\}}t|t| }}|| }|dkrDd S qDW | j  d S )NT)r   g?g?)r/   r?   r[   zipr   rx   )r"   Ztot1Zstop_atZtot2r   r   r   r#   r#   r$   test_per_cpu_times_2d  s    z#TestSystemAPIs.test_per_cpu_times_2c             C   s\   t j }t jdd}|jdd t| D }x*|jD ] }| jt||t||dd q4W d S )NT)r   c             S   s   g | ]}t |qS r#   )r   )r(   Znumr#   r#   r$   r*   y  s    z<TestSystemAPIs.test_cpu_times_comparison.<locals>.<listcomp>rM   )delta)r/   r?   _maker   ru   assertAlmostEqualrv   )r"   baseZper_cpuZsummed_valuesZfieldr#   r#   r$   test_cpu_times_comparisont  s    z(TestSystemAPIs.test_cpu_times_comparisonc             C   s   y<| j |t | j|d | j|d | j|dtj   W n@ tk
r| } z$td|tj	|tj	|f W Y d d }~X nX d S )Ng        g      Y@z
%s
last=%s
new=%sg       )
rk   rl   rD   ZassertIsNotassertLessEqualr/   r   r   pprintZpformat)r"   rs   Zlast_retZnew_reterrr#   r#   r$   _test_cpu_percent~  s    z TestSystemAPIs._test_cpu_percentc          
   C   sb   t jdd}x.tdD ]"}t jd d}| j||| |}qW | jt t jdd W d Q R X d S )NgMbP?)intervald   rM   rY   )r/   cpu_percentr   r   r9   rB   )r"   lastr)   newr#   r#   r$   test_cpu_percent  s    zTestSystemAPIs.test_cpu_percentc             C   s   t jddd}| jt|t j  x>tdD ]2}t jd dd}x|D ]}| j||| qDW |}q,W | jt t jddd W d Q R X d S )NgMbP?T)r   r   r   rM   rY   )	r/   r   r6   rT   r   r   r   r9   rB   )r"   r   r)   r   rs   r#   r#   r$   test_per_cpu_percent  s    
z#TestSystemAPIs.test_per_cpu_percentc             C   s`   t jdd}xNtdD ]B}t jd d}x|D ]}| j||| q,W | jt||| |}qW d S )NgMbP?)r   r   )r/   cpu_times_percentr   r   r   )r"   r   r)   r   rs   r#   r#   r$   test_cpu_times_percent  s    
z%TestSystemAPIs.test_cpu_times_percentc             C   s   t jddd}| jt|t j  x^tdD ]R}t jd dd}x:|D ]2}x|D ]}| j||| qNW | jt||| qDW |}q,W d S )NgMbP?T)r   r   r   )r/   r   r6   rT   r   r   r   r   )r"   r   r)   r   cpurs   r#   r#   r$   test_per_cpu_times_percent  s    

z)TestSystemAPIs.test_per_cpu_times_percentc             C   sr   t jdd dd t jddD }tjd|d8 x0t jddD ] }x|D ]}| j|d d  qJW q@W W d Q R X d S )NT)r   c             S   s*   g | ]"}|j d d tt|jD qS )c             S   s   g | ]}d qS )r   r#   )r(   r)   r#   r#   r$   r*     s    zQTestSystemAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>.<listcomp>)r   r   rT   ru   )r(   r)   r#   r#   r$   r*     s   zFTestSystemAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>zpsutil.cpu_times)r   )r/   r   r?   r   r5   r   )r"   Z
zero_timesr   rs   r#   r#   r$   #test_per_cpu_times_percent_negative  s    
z2TestSystemAPIs.test_per_cpu_times_percent_negativec          
   C   s   t jtj }| j|jd	 ttdrptjtj }d}| j|j|j | j	|j
|j
|d | j	|j|j|d tj }| jt}t j| W d Q R X | j|jjtj d S )Nrt   r}   r~   rs   
disk_usage   i   )r   )rt   r}   r~   rs   i   i  P )r/   r   r-   getcwdr6   ru   r^   shutilrt   r   r~   r}   tempfileZmktempr9   OSErrorZ	exceptionerrnoENOENT)r"   ZusageZshutil_usageZ	toleranceZfnameexcr#   r#   r$   test_disk_usage  s    
zTestSystemAPIs.test_disk_usagec          	   C   s(   t r$| jt tjt W d Q R X d S )N)r   r9   UnicodeEncodeErrorr/   r   r   )r"   r#   r#   r$   test_disk_usage_unicode  s    z&TestSystemAPIs.test_disk_usage_unicodec             C   s   t jd d S )N   .)r/   r   )r"   r#   r#   r$   test_disk_usage_bytes  s    z$TestSystemAPIs.test_disk_usage_bytesc             C   s  t jdd}| j||d xj|D ]b}| j|jt | j|jt | j|jt | j|jt t	rld|jkrlq t
srn|j tstr q q W t jdd}| j||d xt jddD ]}t	s(ytj|j W nP tk
r } z2trtr|jtjkrw|jtjtjfkr W Y d d }~X nX ts(tr(n | j|jt | j|jt qW dd }|t}dd	 t jddD }| j|| t j| d S )
NF)all)r   ZcdromTc             S   s2   t jj| } xt jj| s(t jj| } qW | j S )N)r-   r   abspathismountdirnamelower)r   r#   r#   r$   find_mount_point  s    z=TestSystemAPIs.test_disk_partitions.<locals>.find_mount_pointc             S   s   g | ]}|j j qS r#   )
mountpointr   )r(   r)   r#   r#   r$   r*     s    z7TestSystemAPIs.test_disk_partitions.<locals>.<listcomp>)r/   Zdisk_partitionsrd   rk   Zdevicer   r   ZfstypeZoptsr   r	   r
   r   r-   statr   r   r   ZEIOZEPERMZEACCES__file__r,   r   )r"   lsZdiskr   r   ZmountZmountsr#   r#   r$   test_disk_partitions  sH    
z#TestSystemAPIs.test_disk_partitionsc                sl    fdd}t jdd}|| t jdd} j|g  x.|D ]&} j|  j|t |||  q>W d S )Nc                s    j | d | j  j | d | j  j | d | j  j | d | j  j | d | j  j | d | j  j | d | j  j | d | j d S )	Nr   rM   rR   rO      r         )	r6   Z
bytes_sentZ
bytes_recvZpackets_sentZpackets_recvZerrinZerroutZdropinZdropout)nt)r"   r#   r$   check_ntuple  s    z9TestSystemAPIs.test_net_io_counters.<locals>.check_ntupleF)pernicT)r/   net_io_countersassertNotEqualrd   rk   r   )r"   r   retkeyr#   )r"   r$   test_net_io_counters  s    

z#TestSystemAPIs.test_net_io_countersc             C   sD   t jdi d,}| jtjdd | jtjddi  W d Q R X d S )Nz"psutil._psplatform.net_io_counters)r   F)r   T)r   r5   rC   r/   r   r6   )r"   rG   r#   r#   r$   test_net_io_counters_no_nics8  s
    
z+TestSystemAPIs.test_net_io_counters_no_nicsc             C   sh  t j }t j }ttjtjt jg}x|j D ]\}}| j	|t
 | jtt|t| x|D ]}| j	|jt | j	|jt
 | j	|jt
td f | j	|jt
td f | j|j| tjdkr| j	|jtj || jr|jtjkr*tj|j}tj| |j|jdf W d Q R X nj|jtjkrtj|jdtjtjdtjd }|\}	}
}}}tj|	|
|}tj| |j| W d Q R X xB|j|j|j|jfD ]*}|d k	r|jtjkrt ||j qW |jr| j!|j qf|jrf| j!|j qfW q0W t"st#st$r8t%tdrd| jt jtj n,t&rP| jt jtj' nt(rd| jt jd d S )NrO   r   r   AF_LINKrM   )rO   r   rY   ))r/   net_if_addrsnet_if_statsrc   socketZAF_INETZAF_INET6r   itemsrk   r   r6   rT   Zfamilyrw   addressZnetmasktypeZ	broadcastr,   r   version_infor   IntEnumisup
contextlibclosingZbindZgetaddrinfoZSOCK_STREAMZ
AI_PASSIVEZptpr   rC   r   r   r
   r^   r   Z	AF_PACKETr   )r"   nicsZ	nic_statsZfamiliesZnicZaddrsaddrsr@   ZafZsocktypeprotoZ	canonnameZsaZipr#   r#   r$   test_net_if_addrsA  sV    


z TestSystemAPIs.test_net_if_addrsc          
   C   sp   t rdtjdd d d fg}ndg}tjd|d8}tj d d }t rT| j|jd n| j|jd	 W d Q R X d S )Nem1z06:3d:29rM   06-3d-29zpsutil._psplatform.net_if_addrs)r   r   z06:3d:29:00:00:00z06-3d-29-00-00-00rY   )r   rY   r   NNN)r	   r/   r   r   r5   r   r6   r   )r"   r   rG   r   r#   r#   r$    test_net_if_addrs_mac_null_bytes}  s    
z/TestSystemAPIs.test_net_if_addrs_mac_null_byteszunreliable on TRAVISc       	      C   s   t j }t jt jt jf}xh|j D ]\\}}| j|t |\}}}}| j|t | j	|| | j	|| | j
|d | j
|d q"W d S )Nr   )r/   r   ZNIC_DUPLEX_FULLZNIC_DUPLEX_HALFZNIC_DUPLEX_UNKNOWNr   rk   r   boolr,   rD   )	r"   r   Zall_duplexesrz   Zstatsr   ZduplexZspeedZmtur#   r#   r$   test_net_if_stats  s    z TestSystemAPIs.test_net_if_statsz/proc/diskstatsz3/proc/diskstats not available on this linux versionNzunreliable on APPVEYORc                s    fdd}t jdd}|| t jdd} jt|tt| xV|D ]N}|||  trJ|d j rJx|d j r|d d	 }qlW  j||j  qJW d S )
Nc                s    j | d | j  j | d | j  j | d | j  j | d | j tpNtsƈ j | d | j  j | d | j t	r j | d | j
  j | d | j  j | d	 | j ntrƈ j | d | j x| jD ]}qW d S )
Nr   rM   rR   rO   r   r   r   r      )r6   Z
read_countZwrite_countZ
read_bytesZwrite_bytesr   r   Z	read_timeZ
write_timer   Zread_merged_countZwrite_merged_countZ	busy_timer   ru   )r   rz   )r"   r#   r$   r     s    z:TestSystemAPIs.test_disk_io_counters.<locals>.check_ntupleF)perdiskTrM   rY   rY   rY   )	r/   disk_io_countersr6   rT   rc   r   isdigitr4   rA   )r"   r   r   r   r#   )r"   r$   test_disk_io_counters  s    
z$TestSystemAPIs.test_disk_io_countersc             C   sD   t jdi d,}| jtjdd | jtjddi  W d Q R X d S )Nz#psutil._psplatform.disk_io_counters)r   F)r   T)r   r5   rC   r/   r   r6   )r"   rG   r#   r#   r$   test_disk_io_counters_no_disks  s
    
z-TestSystemAPIs.test_disk_io_counters_no_disksz unreliable on APPVEYOR or TRAVISc             C   s   t j }| j|g  x|D ]}| j|jt | j|jttd f |jd k	rb| j|jttd f |j |j t	j	j
|j tstr| j|j qt j|j qW d S )N)r/   usersr   rk   rz   r   Zterminalr   hostdatetimeZfromtimestampZstartedr   r   rC   r'   r1   )r"   r   userr#   r#   r$   
test_users  s    

zTestSystemAPIs.test_usersc             C   sZ   t j }| j|jd x>|jD ]4}t||}| j|d t r|dkr| j|d qW d S )Nctx_switches
interruptssoft_interruptssyscallsr   )r  r  r  r  )r  r  )r/   Z	cpu_statsr6   ru   rv   rD   r   rm   )r"   Zinfosrz   r{   r#   r#   r$   test_cpu_stats  s    
zTestSystemAPIs.test_cpu_statsznot suportedc                sT    fdd}t jdd}tr&| r&d S |t jddg trP jt|t j  d S )Nc                sh   xb| D ]Z} j |jd  j|j|j x6|jD ],}t||} j|ttt	f  j
|d q0W qW d S )Ncurrentminr   r   )r  r  r   )r6   ru   r   r  r   rv   rk   rw   r   rl   rD   )r   r   rz   r{   )r"   r#   r$   check_ls  s    

z.TestSystemAPIs.test_cpu_freq.<locals>.check_lsT)r   F)r/   Zcpu_freqr   r   r6   rT   r   )r"   r	  r   r#   )r"   r$   test_cpu_freq  s    	
zTestSystemAPIs.test_cpu_freqc          	   C   s8  ddddddddd	g	}x"|D ]}| j tt|t|d
 qW tjdkr|jd dtjj	 krj|jd ndtjj	 kr| j
tjtjtjgjdd |jd |jd |jd |jd nBdtjj	 ksdtjj	 kr|jd	 ndtjj	 kr|jd n
|jd x$|D ]}| jtt|d|d
 qW d S )Nr	   r   r   r   r   r   r   r   r
   )r   posixlinuxZbsdTrM   sunossolarisdarwinF)rk   rv   r/   r   r-   rz   remover   platformr   r6   r   r   r   countrF   )r"   namesrz   r#   r#   r$   test_os_constants  s.    







z TestSystemAPIs.test_os_constantsznot supportedc             C   s   t j }x|j D ]x\}}| j|t xb|D ]Z}| j|jt |jd k	rV| j|jd |jd k	rn| j|jd |j	d k	r,| j|j	d q,W qW d S )Nr   )
r/   sensors_temperaturesr   rk   r   labelr  rD   highcritical)r"   tempsrz   entriesentryr#   r#   r$   test_sensors_temperatures)  s    



z(TestSystemAPIs.test_sensors_temperaturesc          
   C   sf   ddgi}t jd|dD}tjdd	d d
 }| j|jd | j|jd | j|jd W d Q R X d S )NZcoretempr        I@      N@     Q@z'psutil._psplatform.sensors_temperatures)r   T)Z
fahrenheitr   g     ^@g     a@g     c@)r  r  r  r  )r   r5   r/   r  r6   r  r  r  )r"   drG   r  r#   r#   r$   #test_sensors_temperatures_fahreneit7  s    

z2TestSystemAPIs.test_sensors_temperatures_fahreneitz
no batteryc             C   sp   t j }| j|jd | j|jd |jt jt jfkrF| j|jd n|jt jkr^| j|j	 | j
|j	t d S )Nr   r   )r/   Zsensors_batteryrD   rs   r   ZsecsleftZPOWER_TIME_UNKNOWNZPOWER_TIME_UNLIMITEDrd   Zpower_pluggedrk   r   )r"   r   r#   r#   r$   test_sensors_batteryC  s    
z#TestSystemAPIs.test_sensors_batteryc             C   sj   t j }x\|j D ]P\}}| j|t x:|D ]2}| j|jt | j|jttf | j	|jd q,W qW d S )Nr   )
r/   Zsensors_fansr   rk   r   r  r  rw   r   rD   )r"   Zfansrz   r  r  r#   r#   r$   test_sensors_fansQ  s    
z TestSystemAPIs.test_sensors_fans)C__name__
__module____qualname____doc__r%   r&   r<   rI   ri   rj   rn   r    ZskipIfr	   rr   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   r   r   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   7	
		!

		
>	<#
%r!   __main__)2r'  r   r   r   r-   r   r   ra   r   r   r   r[   r/   r   r   r   r   r   r   r   r	   r
   r   Zpsutil._compatr   Zpsutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    ZTestCaser!   r$  r   r#   r#   r#   r$   <module>   sh         '
