B Œ=Ý_ ‹ã@szdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl m Z ddl mZddl mZddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*dd lm+Z+dd!lm,Z,dd"lm-Z-dd#lm.Z.Gd$d%„d%e)ƒZ/Gd&d'„d'e)ƒZ0Gd(d)„d)e)ƒZ1Gd*d+„d+e)ƒZ2Gd,d-„d-e)ƒZ3Gd.d/„d/e)ƒZ4Gd0d1„d1e)ƒZ5e6d2krvdd3l7m8Z8e8e9ƒdS)4zTests for system APIS.éN)ÚAIX)ÚBSD)ÚFREEBSD)ÚLINUX)ÚMACOS)ÚNETBSD)ÚOPENBSD)ÚPOSIX)ÚSUNOS)ÚWINDOWS)ÚFileNotFoundError)Úlong)ÚASCII_FS)Úcheck_net_address)Ú CI_TESTING)ÚDEVNULL)Úenum)ÚGLOBAL_TIMEOUT)Ú HAS_BATTERY)Ú HAS_CPU_FREQ)ÚHAS_GETLOADAVG)ÚHAS_NET_IO_COUNTERS)ÚHAS_SENSORS_BATTERY)ÚHAS_SENSORS_FANS)ÚHAS_SENSORS_TEMPERATURES)ÚIS_64BIT)Úmock)ÚPsutilTestCase)ÚPYPY)Úretry_on_failure)ÚGITHUB_ACTIONS)ÚUNICODE_SUFFIX)Úunittestc@s\eZdZdd„Zdd„Ze eo"ed¡dd„ƒZ e eo:ed¡dd „ƒZ d d „Z d d „Z dS)ÚTestProcessAPIsc Csþ| t ¡dd„t ¡Dƒ¡| ¡}| |jdd„t ¡Dƒ¡t |j¡}| ¡|  ¡|  |jdd„t ¡Dƒ¡t j dt  t ¡¡d| tt ¡ƒg¡WdQRXt j dt t ¡¡d*| tj¡tt ¡ƒWdQRXWdQRXdS)NcSsg|] }|j‘qS©)Úpid)Ú.0Úxr$r$úK/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_system.pyú @sz5TestProcessAPIs.test_process_iter..cSsg|] }|j‘qSr$)r%)r&r'r$r$r(r)BscSsg|] }|j‘qSr$)r%)r&r'r$r$r(r)Fszpsutil.Process)Ú side_effect)ÚassertInÚosÚgetpidÚpsutilÚ process_iterÚspawn_testprocr%ÚProcessÚkillÚwaitZ assertNotInrÚpatchZ NoSuchProcessÚ assertEqualÚlistÚ AccessDeniedÚ assertRaises)ÚselfÚsprocÚpr$r$r(Útest_process_iter?s z!TestProcessAPIs.test_process_iterc Cs8x.tjdgdD]}| t|j ¡ƒdg¡qW| t¡ttjdgdƒWdQRXtj dt  dd¡dL}x:tjddgdD]&}|  |jd¡|  |jdd¡q‚W|j s¶t‚WdQRXtj dt  dd¡dX}tƒ}x>tjddg|d D](}| |jd|¡|  |jdd¡qòW|j s*t‚WdQRXdS) Nr%)ÚattrsZfooz$psutil._psplatform.Process.cpu_timesrÚ)r*Ú cpu_times)r=Zad_value)r.r/r5r6ÚinfoÚkeysr8Ú ValueErrorrr4r7Ú assertIsNoneÚassertGreaterEqualÚcalledÚAssertionErrorÚobjectÚassertIs)r9r;ÚmÚflagr$r$r(Útest_prcess_iter_w_attrsPs$ z(TestProcessAPIs.test_prcess_iter_w_attrsz-spawn_testproc() unreliable on PYPY + WINDOWSc sò‡fdd„}g‰ˆ ¡}ˆ ¡}ˆ ¡}dd„|||fDƒ}ˆjttj|ddˆjttj|ddt ¡}tj|d |d \}}ˆ t ¡|d ¡ˆ |g¡ˆ t |ƒd ¡ˆ ˆg¡x|D]} ˆ  t | d ƒ¡qÂWt dƒ‡fdd„ƒ} |  ¡| ||ƒ\}}ˆ |jdd„|Dƒ¡tr:ˆ | ¡jtj ¡nˆ | ¡jd¡ˆ ˆ|jg¡x|D]} ˆ  t | d ƒ¡qbWt dƒ‡fdd„ƒ} |  ¡|  ¡| ||ƒ\}}ˆ tˆƒt|j|j|jgƒ¡x|D]} ˆ t | d ƒ¡qÔWdS)Ncsˆ |j¡dS)N)Úappendr%)r;)Úpidsr$r(Úcallbackgsz1TestProcessAPIs.test_wait_procs..callbackcSsg|]}t |j¡‘qSr$)r.r1r%)r&r'r$r$r(r)nsz3TestProcessAPIs.test_wait_procs..éÿÿÿÿ)Útimeouté)rNg{®Gáz„?)rPrNgà?éÚ returncodeécs<tj|d|d\}}ˆ t|ƒd¡ˆ t|ƒd¡||fS)Ng¸…ëQ¸ž?)rPrNrQé)r.Ú wait_procsr5Úlen)ÚprocsrNÚgoneÚalive)r9r$r(Útest{s  z-TestProcessAPIs.test_wait_procs..testcSsg|] }|j‘qSr$)r%)r&r'r$r$r(r)…scs<tj|d|d\}}ˆ t|ƒd¡ˆ t|ƒd¡||fS)Ng¸…ëQ¸ž?)rPrNrRr)r.rVr5rW)rXrNrYrZ)r9r$r(r[Žs  )r0r8rBr.rVÚ TypeErrorÚtimeÚ assertLessr5rWÚ assertFalseÚhasattrrÚ terminater+r%r ÚpoprSÚsignalÚSIGTERMÚsetÚ assertTrue) r9rNÚsproc1Úsproc2Úsproc3rXÚtrYrZr;r[r$)rMr9r(Útest_wait_procsdsB       zTestProcessAPIs.test_wait_procscCsT| ¡}| ¡}| ¡}dd„|||fDƒ}x|D] }| ¡q2Wt |¡\}}dS)NcSsg|]}t |j¡‘qSr$)r.r1r%)r&r'r$r$r(r)£sz>TestProcessAPIs.test_wait_procs_no_timeout..)r0rar.rV)r9rgrhrirXr;rYrZr$r$r(Útest_wait_procs_no_timeouts  z*TestProcessAPIs.test_wait_procs_no_timeoutcCsv| ¡}| t |j¡¡t |j¡}| ¡| ¡| t |j¡¡| t d¡¡|  t d¡dt  ¡k¡dS)NrOr) r0rfr.Ú pid_existsr%r1r2r3r_r5rM)r9r:r;r$r$r(Útest_pid_exists¨s zTestProcessAPIs.test_pid_existsc Csžt ¡}xT|D]L}yt |¡s"t‚Wqtk rXt d¡|t ¡krT| |¡YqXqWtt|ƒdt|ƒdƒ}x |D]}|j t |¡|dq~WdS)Ngš™™™™™¹?iˆip)Úmsg) r.rMrmrFr]ZsleepÚfailÚrangeÚmaxr_)r9rMr%r$r$r(Útest_pid_exists_2²s    z!TestProcessAPIs.test_pid_exists_2N) Ú__name__Ú __module__Ú __qualname__r<rKr"ÚskipIfrr rkrlrnrsr$r$r$r(r#=s 8   r#c@sBeZdZdd„Ze eo e ¡ d¡dd„ƒZ dd„Z dd „Z d S) Ú TestMiscAPIscCs4t ¡}| |t¡| |d¡| |t ¡¡dS)Nr)r.Z boot_timeÚassertIsInstanceÚfloatÚ assertGreaterr^r])r9Zbtr$r$r(Útest_boot_timeÄs  zTestMiscAPIs.test_boot_timezunreliable on CIcCsÆt ¡}| |g¡x¬|D]¤}|js,t|ƒ‚| |jt¡| |jttdƒf¡|j dk rp| |j ttdƒf¡|j|j |j dksŽt|ƒ‚t j   |j ¡t s¤tr²| |j¡qt |j¡qWdS)Ng)r.ÚusersÚassertNotEqualÚnamerFryÚstrZterminalÚtypeZhostZstartedÚdatetimeZ fromtimestampr rrCr%r1)r9r}Úuserr$r$r(Ú test_usersÊs   zTestMiscAPIs.test_userscCs&tj}tt_z t ¡Wd|t_XdS)N)ÚsysÚstdoutrr.r[)r9r†r$r$r(Ú test_testÝs  zTestMiscAPIs.test_testc Cs”ddddddddd g }x"|D]}|jtt|ƒt|d qWtjd krHtjsPt‚tjrZt‚|  d¡d t j   ¡krˆtj s|t‚|  d¡n¾d t j   ¡krètjs t‚| tjtjtjg d¡d¡|  d¡|  d¡|  d¡|  d¡n^dt j   ¡ksdt j   ¡kr tjst‚|  d ¡n&dt j   ¡krjtjs                       zTestMiscAPIs.test_os_constantsN) rtrurvr|r"rwrr.r}r„r‡r‘r$r$r$r(rxÂs rxc@seZdZdd„Zdd„ZdS)ÚTestMemoryAPIscCsêt ¡}|jdkst|ƒ‚|jdks,t|ƒ‚d|jkrBdksLnt|ƒ‚|jdks^t|ƒ‚|jdkspt|ƒ‚xt|jD]j}t ||ƒ}|dkrž|  |t t f¡|dkrx|dksÀ|  d||f¡||jkrx|  d||j||f¡qxWdS)NrédÚpercentÚtotalz %r < 0 (%s)z%r > total (total=%s, %s=%s))r.Zvirtual_memoryr•rFZ availabler”ÚusedÚfreeÚ_fieldsrŠryÚintr rp)r9ÚmemrÚvaluer$r$r(Útest_virtual_memorys     z"TestMemoryAPIs.test_virtual_memorycCs²t ¡}| |jd¡|jdks(t|ƒ‚|jdks:t|ƒ‚|jdkrX|jdksjt|ƒ‚n|jdksjt|ƒ‚d|jkr€dksŠnt|ƒ‚|j dksœt|ƒ‚|j dks®t|ƒ‚dS)N)r•r–r—r”ÚsinÚsoutrr“) r.Z swap_memoryr5r˜r•rFr–r—r”rrž)r9ršr$r$r(Útest_swap_memory s   zTestMemoryAPIs.test_swap_memoryN)rtrurvrœrŸr$r$r$r(r’ sr’c@s°eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Ze e d¡d d!„ƒZe e d"¡d#d$„ƒZd%S)&Ú TestCpuAPIsc Cstt ¡}| |¡| |ttjddƒ¡| |d¡tj  d¡rpt dƒ}|  ¡}WdQRXd|krpt   d¡‚dS)NT)ÚpercpurQz /proc/cpuinfoz physical idz#cpuinfo doesn't include physical id)r.Ú cpu_countZassertIsNotNoner5rWr?rDr,ÚpathÚexistsÚopenÚreadr"ZSkipTest)r9ÚlogicalÚfdZ cpuinfo_datar$r$r(Útest_cpu_count_logical3s    z"TestCpuAPIs.test_cpu_count_logicalcCsft ¡}tjdd}|dkr&| d¡‚trJt ¡dd…dkrJ| |¡n| |d¡| ||¡dS)NF)r§zphysical cpu_count() is NonerU)érQrQ)r.r¢ÚskipTestr r…ZgetwindowsversionrCrD)r9r§Zphysicalr$r$r(Útest_cpu_count_physical?s    z#TestCpuAPIs.test_cpu_count_physicalc CszxtdD]l}tjd|d}| t ¡¡|js2t‚WdQRXtjd|d"}| tjdd¡|jsht‚WdQRXqWdS)N)rOrNz$psutil._psplatform.cpu_count_logical)Ú return_valuez%psutil._psplatform.cpu_count_physicalF)r§)rr4rCr.r¢rErF)r9ÚvalrIr$r$r(Útest_cpu_count_noneJs   zTestCpuAPIs.test_cpu_count_nonecCs^d}t ¡}t|ƒx,|D]$}| |t¡| |d¡||7}qW| |t|ƒ¡t|ƒdS)Nrg)r.r?ÚsumryrzrDr5r€)r9r•ÚtimesÚcp_timer$r$r(Útest_cpu_timesVs    zTestCpuAPIs.test_cpu_timescCsPtt ¡ƒ}t ¡t}x(t ¡|kr@tt ¡ƒ}||krdSqW| d¡dS)Nztime remained the same)r°r.r?r]rrp)r9Út1Zstop_atÚt2r$r$r(Útest_cpu_times_time_increasesss   z)TestCpuAPIs.test_cpu_times_time_increasescCs”xftjddD]V}d}t|ƒx,|D]$}| |t¡| |d¡||7}q$W| |t|ƒ¡t|ƒqW| ttjdddƒttjddƒ¡dS)NT)r¡rgF) r.r?r°ryrzrDr5r€rW)r9r±r•r²r$r$r(Útest_per_cpu_times}s     zTestCpuAPIs.test_per_cpu_timescCs†tjdd}t ¡t}xht ¡|kr0| d¡Stjdd}x@t||ƒD]2\}}t |¡t |¡}}||}|dkrHdSqHWqWdS)NT)r¡rPgš™™™™™©?)r.r?r]rrpÚzipZ_cpu_busy_time)r9Ztot1Z giveup_atZtot2r´rµÚ differencer$r$r(Útest_per_cpu_times_2žs     z TestCpuAPIs.test_per_cpu_times_2cCs\t ¡}tjdd}| dd„t|ŽDƒ¡}x*|jD] }|jt||ƒt||ƒddq4WdS)NT)r¡cSsg|] }t|ƒ‘qSr$)r°)r&Znumr$r$r(r)²sz9TestCpuAPIs.test_cpu_times_comparison..rQ)Údelta)r.r?Ú_maker¸r˜ÚassertAlmostEqualrŠ)r9ÚbaseZper_cpuZ summed_valuesZfieldr$r$r(Útest_cpu_times_comparison­s   z%TestCpuAPIs.test_cpu_times_comparisonc Cs‚y<| |t¡| |d¡| |d¡| |dt ¡¡Wn@tk r|}z"td|t  |¡t  |¡fƒ‚Wdd}~XYnXdS)Ngg€gY@z %s last=%s new=%s) ryrzrDZ assertIsNotÚassertLessEqualr.r¢rFÚpprintZpformat)r9r”Zlast_retZnew_retÚerrr$r$r(Ú_test_cpu_percent·s   zTestCpuAPIs._test_cpu_percentc Csbtjdd}x.tdƒD]"}tjdd}| |||¡|}qW| t¡tjddWdQRXdS)Ngü©ñÒMbP?)Úintervalr“rO)r.Ú cpu_percentrqrÃr8rB)r9Úlastr'Únewr$r$r(Útest_cpu_percentÁs   zTestCpuAPIs.test_cpu_percentc CsŠtjddd}| t|ƒt ¡¡x>tdƒD]2}tjddd}x|D]}| |||¡qDW|}q,W| t¡tjdddWdQRXdS)Ngü©ñÒMbP?T)rÄr¡r“rO) r.rÅr5rWr¢rqrÃr8rB)r9rÆr'rÇr”r$r$r(Útest_per_cpu_percentÊs  z TestCpuAPIs.test_per_cpu_percentc Cs‚tjdd}xNtdƒD]B}tjdd}x|D]}| |||¡q,W| t|ƒ||¡|}qW| t¡tjddWdQRXdS)Ngü©ñÒMbP?)rÄr“rO)r.Úcpu_times_percentrqrÃr°r8rB)r9rÆr'rÇr”r$r$r(Útest_cpu_times_percentÕs    z"TestCpuAPIs.test_cpu_times_percentcCs†tjddd}| t|ƒt ¡¡x^tdƒD]R}tjddd}x:|D]2}x|D]}| |||¡qNW| t|ƒ||¡qDW|}q,WdS)Ngü©ñÒMbP?T)rÄr¡r“)r.rÊr5rWr¢rqrÃr°)r9rÆr'rÇÚcpur”r$r$r(Útest_per_cpu_times_percentàs  z&TestCpuAPIs.test_per_cpu_times_percentc Csrtjdddd„tjddDƒ}tjd|d8x0tjddD] }x|D]}| |dd¡qJWq@WWdQRXdS)NT)r¡cSs*g|]"}| dd„tt|jƒƒDƒ¡‘qS)cSsg|]}d‘qS)rr$)r&r'r$r$r(r)îszNTestCpuAPIs.test_per_cpu_times_percent_negative...)r¼rqrWr˜)r&r'r$r$r(r)îszCTestCpuAPIs.test_per_cpu_times_percent_negative..zpsutil.cpu_times)r­)r.rÊr?rr4rÃ)r9Z zero_timesrÌr”r$r$r(Ú#test_per_cpu_times_percent_negativeës  z/TestCpuAPIs.test_per_cpu_times_percent_negativecCsXt ¡}| |jd¡x<|jD]2}t||ƒ}| |d¡ts|dkr| |d¡qWdS)N)Ú ctx_switchesÚ interruptsZsoft_interruptsZsyscallsr)rÏrÐ)r.Z cpu_statsr5r˜rŠrDrr{)r9Zinfosrr›r$r$r(Útest_cpu_statsõs    zTestCpuAPIs.test_cpu_statsz not suportedcsd‡fdd„}tjdd}tr*|s*ˆ d¡‚|s6t|ƒ‚|tjddgƒtr`ˆ t|ƒt ¡¡dS)Ncsrxl|D]d}ˆ |jd¡|jdkr2ˆ |j|j¡x6|jD],}t||ƒ}ˆ |ttt f¡ˆ  |d¡q:WqWdS)N)ÚcurrentÚminrrgr) r5r˜rrrÀrÒrŠryr™r rzrD)ÚlsÚntrr›)r9r$r(Úcheck_lss    z+TestCpuAPIs.test_cpu_freq..check_lsT)r¡zreturns empty list on FreeBSDF) r.Zcpu_freqrr«rFrr5rWr¢)r9rÖrÔr$)r9r(Ú test_cpu_freqs   zTestCpuAPIs.test_cpu_freqz not supportedcCsBt ¡}| t|ƒd¡x$|D]}| |t¡| |d¡qWdS)NrRg)r.Ú getloadavgr5rWryrzrD)r9ZloadavgÚloadr$r$r(Útest_getloadavgs   zTestCpuAPIs.test_getloadavgN)rtrurvr©r¬r¯r³r¶r·rºr¿rÃrÈrÉrËrÍrÎrÑr"rwrr×rrÚr$r$r$r(r 1s"    !        r c@sŒeZdZe eoe d¡dd„ƒZe e d¡dd„ƒZ dd„Z d d „Z e e o\e j d ¡ d ¡e eope ¡ d ¡dd„ƒƒZdd„ZdS)Ú TestDiskAPIszunreliable on PYPY32 + 32BITc Cst t ¡¡}| |jd¡|jdks.t|ƒ‚|jdks@t|ƒ‚|j dksRt|ƒ‚|j|jksft|ƒ‚|j|j kszt|ƒ‚d|j krdksœnt|j ƒ‚t t dƒrðt  t ¡¡}d}| |j|j¡|j |j |j |d|j |j|j|d| ¡}| t¡t |¡WdQRXdS)N)r•r–r—r”rr“Ú disk_usageiP)r»)r.rÜr,Úgetcwdr5r˜r•rFr–r—r”r`Úshutilr½Z get_testfnr8r )r9ZusageZ shutil_usageZ toleranceZfnamer$r$r(Útest_disk_usage#s&"    zTestDiskAPIs.test_disk_usageznot an ASCII fsc Cs$| t¡t t¡WdQRXdS)N)r8ÚUnicodeEncodeErrorr.rÜr!)r9r$r$r(Útest_disk_usage_unicode>s z$TestDiskAPIs.test_disk_usage_unicodecCst d¡dS)Nó.)r.rÜ)r9r$r$r(Útest_disk_usage_bytesDsz"TestDiskAPIs.test_disk_usage_bytesc sˆ‡fdd„}tjdd}ˆj||dxj|D]b}||ƒtrHd|jkrHq,tsdtj |j ¡sjt |ƒ‚n|j tj |j ¡s€t |ƒ‚|j s,t |ƒ‚q,Wtjdd}ˆj||dx¤tjddD]”}||ƒtsº|j rºyt  |j ¡WnVtk r6}z6trtr|jtjkrwº|jtjtjfkr&‚Wdd}~XYqºXtj |j ¡sºt |ƒ‚qºWdd „}|tƒ}d d „tjddDƒ}ˆ ||¡dS) Ncsœˆ |jt¡ˆ |jt¡ˆ |jt¡ˆ |jt¡ˆ |jttdƒf¡ˆ |j ttdƒf¡|jdk r€t s€ˆ  |jd¡|j dk r˜ˆ  |j d¡dS)Nr) ryÚdevicer€Ú mountpointÚfstypeÚoptsZmaxfiler™rZmaxpathr r{)rÕ)r9r$r(Ú check_ntupleHs z7TestDiskAPIs.test_disk_partitions..check_ntupleF)Úall)roZcdromTcSs2tj |¡}xtj |¡s(tj |¡}qW| ¡S)N)r,r£ÚabspathÚismountÚdirnamerŽ)r£r$r$r(Úfind_mount_pointys z;TestDiskAPIs.test_disk_partitions..find_mount_pointcSsg|]}|jr|j ¡‘qSr$)rårŽ)r&r'r$r$r(r)€sz5TestDiskAPIs.test_disk_partitions..)r.Zdisk_partitionsrfr rçr r,r£r¤rärFråræÚstatÚOSErrorr rÚerrnoZEIOZEPERMZEACCESÚ__file__r+)r9rèrÔZdiskrÂríZmountZmountsr$)r9r(Útest_disk_partitionsGs<    z!TestDiskAPIs.test_disk_partitionsz/proc/diskstatsz3/proc/diskstats not available on this linux versionzunreliable on CIcs~‡fdd„}tjdd}|dk s(tdƒ‚||ƒtjdd}ˆ t|ƒtt|ƒƒ¡x$|D]}|sjt|ƒ‚|||ƒqZWdS)Ncsðˆ |d|j¡ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡tsÆtsƈ |d|j¡ˆ |d|j¡t r°ˆ |d|j ¡ˆ |d|j ¡ˆ |d |j ¡nt rƈ |d|j ¡x$|jD]}t||ƒdksÎt|ƒ‚qÎWdS) NrrQrUrRéérªéé)r5Z read_countZ write_countZ read_bytesZ write_bytesrrZ read_timeZ write_timerZread_merged_countZwrite_merged_countZ busy_timerr˜rŠrF)rÕr)r9r$r(rè‰s z8TestDiskAPIs.test_disk_io_counters..check_ntupleF)Úperdiskzno disks on this system?T)r.Údisk_io_countersrFr5rWre)r9rèÚretÚkeyr$)r9r(Útest_disk_io_counters„s     z"TestDiskAPIs.test_disk_io_countersc CsNtjdid6}| tjdd¡| tjddi¡|js@t‚WdQRXdS)Nz#psutil._psplatform.disk_io_counters)r­F)r÷T)rr4rCr.rør5rErF)r9rIr$r$r(Útest_disk_io_counters_no_disks¤s  z+TestDiskAPIs.test_disk_io_counters_no_disksN)rtrurvr"rwrrrßrrárãròrr,r£r¤rr.rørûrür$r$r$r(rÛ!s=rÛc@sneZdZe e d¡dd„ƒZe e d¡dd„ƒZdd„Zdd „Z d d „Z e e pZe pZe d ¡d d„ƒZdS)Ú TestNetAPIsz not supportedcsl‡fdd„}tjdd}||ƒtjdd}ˆ |g¡x.|D]&}ˆ |¡ˆ |t¡|||ƒq>WdS)Ncs(ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡ˆ |d|j¡|jdks¢t |ƒ‚|jdks´t |ƒ‚|jdksÆt |ƒ‚|jdksØt |ƒ‚|jdksêt |ƒ‚|jdksüt |ƒ‚|jdkst |ƒ‚|jdks$t |ƒ‚dS) NrrQrUrRrórôrªrõ) r5Z bytes_sentZ bytes_recvZ packets_sentZ packets_recvZerrinZerroutZdropinZdropoutrF)rÕ)r9r$r(rè²s z6TestNetAPIs.test_net_io_counters..check_ntupleF)ÚpernicT)r.Únet_io_countersr~rfryr€)r9rèrùrúr$)r9r(Útest_net_io_counters°s       z TestNetAPIs.test_net_io_countersc CsNtjdid6}| tjdd¡| tjddi¡|js@t‚WdQRXdS)Nz"psutil._psplatform.net_io_counters)r­F)rþT)rr4rCr.rÿr5rErF)r9rIr$r$r(Útest_net_io_counters_no_nicsÍs  z(TestNetAPIs.test_net_io_counters_no_nicsc Csxt ¡}|st|ƒ‚t ¡}ttjtjtjgƒ}xä|  ¡D]Ö\}}|  |t ¡|  t t|ƒƒt |ƒ¡x¦|D]œ}|  |jt¡|  |jt ¡|  |jt tdƒf¡|  |jt tdƒf¡| |j|¡tjdkrìtsì|  |jtj¡||jr¤|jtjkr:t |j¡}t |¡| |jdf¡WdQRXnj|jtjkr¤t |jdtjtjdtj ¡d}|\} } } } } t | | | ¡}t |¡| | ¡WdQRXxB|j|j|j|j!fD]*}|dk rº|jtjkrºt"||jƒqºW|jrþ| #|j!¡qr|j!rr| #|j¡qrWq)r*) rr4rïrðZENODEVr.rr5rErF)r9rIrùr$r$r(Útest_net_if_stats_enodev3s  z$TestNetAPIs.test_net_if_stats_enodevN)rtrurvr"rwrrrrrrrrrrr$r$r$r(rý®s <rýc@sreZdZe e d¡dd„ƒZe e d¡dd„ƒZe e d¡e e d¡dd„ƒƒZ e e d¡d d „ƒZ d S) ÚTestSensorsAPIsz not supportedcCs’t ¡}x„| ¡D]x\}}| |t¡xb|D]Z}| |jt¡|jdk rV| |jd¡|jdk rn| |jd¡|j dk r,| |j d¡q,WqWdS)Nr) r.Úsensors_temperaturesrryr€ÚlabelrÒrDÚhighÚcritical)r9ÚtempsrÚentriesÚentryr$r$r(Útest_sensors_temperatures@s     z)TestSensorsAPIs.test_sensors_temperaturesc Cspddgi}tjd|dN}tjdddd}|js8t‚| |jd¡| |jd ¡| |j d ¡WdQRXdS) NZcoretemp)rgI@gN@g€Q@z'psutil._psplatform.sensors_temperatures)r­T)Z fahrenheitrg€^@g€a@gÀc@) rr4r.rrErFr5rÒrr)r9ÚdrIrr$r$r(Ú#test_sensors_temperatures_fahreneitNs   z3TestSensorsAPIs.test_sensors_temperatures_fahreneitz no batterycCspt ¡}| |jd¡| |jd¡|jtjtjfkrF| |jd¡n|jtjkr^| |j ¡|  |j t ¡dS)Nrr“) r.Zsensors_batteryrDr”rÀZsecsleftZPOWER_TIME_UNKNOWNZPOWER_TIME_UNLIMITEDrfZ power_pluggedryr‹)r9rùr$r$r(Útest_sensors_batteryZs   z$TestSensorsAPIs.test_sensors_batterycCsjt ¡}x\| ¡D]P\}}| |t¡x:|D]2}| |jt¡| |jttf¡|  |jd¡q,WqWdS)Nr) r.Z sensors_fansrryr€rrÒr™r rD)r9Zfansrrrr$r$r(Útest_sensors_fanshs  z!TestSensorsAPIs.test_sensors_fansN) rtrurvr"rwrrr rrr!rr"r$r$r$r(r>s   rÚ__main__)Ú run_from_name):Ú__doc__r r‚rðr,rÁrÞrcrr…r]r.rrrrrrrr r r Zpsutil._compatr r Z psutil.testsrrrrrrrrrrrrrrrrrrr r!r"r#rxr’r rÛrýrrtZpsutil.tests.runnerr$rñr$r$r$r(Úst                                 J%q5