B =_o@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddl m Z ddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddl Z ddlZ e j'dddkZ(Gddde Z)e*d d!Z+Gd"d#d#e Z,e&-ej./e$ d$Gd%d&d&e Z0e1d'kr dd(l2m3Z3e3e4dS))z Miscellaneous tests. N)LINUX)POSIX)WINDOWS)memoize)memoize_when_activated) supports_ipv6) wrap_numbers)PY3)APPVEYOR) CI_TESTING) HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)import_module_by_path)mock)PsutilTestCase) PYTHON_EXE) reload_module)ROOT_DIR) SCRIPTS_DIR)sh)unittest) c@seZdZefddZddZefddZefddZefd d Zefd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)S)*TestMiscc Cst|j}||}|d||d|j||dt||dd|d||d|| | ||}|d||d|t j j tjd ttd @t}||}|d|j||d ||d |WdQRXt j j tjd ttd @t}||}|d|j||d ||d |WdQRXt j j tjd ttd 4t}||}|d|j||d |WdQRXdS)Nzpsutil.Processzpid=%sz name='%s'zname=u'zname='zstatus=z exitcode=zstatus='terminated'name) side_effectzstatus='zombie'zname=Z terminated)psutilProcessZspawn_testprocpidassertInstrrreplace assertNotIn terminatewaitrpatchobject ZombieProcessosgetpid NoSuchProcess AccessDenied)selffuncprr5I/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_misc.pytest_process__repr__=sB          zTestMisc.test_process__repr__cCs|jtddS)N)r2)r7r%)r1r5r5r6test_process__str__aszTestMisc.test_process__str__cCsN|ttdd|ttjdddd|ttjdddddS)NiAz7psutil.NoSuchProcess process no longer exists (pid=321)foo)rzCpsutil.NoSuchProcess process no longer exists (pid=321, name='foo'))msgzpsutil.NoSuchProcess foo) assertEqualreprr!r/)r1r2r5r5r6test_no_such_process__repr__ds z%TestMisc.test_no_such_process__repr__cCsj|ttdd|ttjdddd|ttjddddd|ttjddd d dS) NiAzEpsutil.ZombieProcess process still exists but it's a zombie (pid=321)r9)rzQpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo'))rppidzYpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo', ppid=1))r:zpsutil.ZombieProcess foo)r;r<r!r,)r1r2r5r5r6test_zombie_process__repr__ps z$TestMisc.test_zombie_process__repr__cCsN|ttdd|ttjdddd|ttjdddddS)NiAzpsutil.AccessDenied (pid=321)r9)rz)psutil.AccessDenied (pid=321, name='foo'))r:zpsutil.AccessDenied foo)r;r<r!r0)r1r2r5r5r6test_access_denied__repr__s z#TestMisc.test_access_denied__repr__cCsP|ttdd|ttjdddd|ttjddddddS) NiAz/psutil.TimeoutExpired timeout after 321 secondso)r#z9psutil.TimeoutExpired timeout after 321 seconds (pid=111)r9)r#rzEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r;r<r!TimeoutExpired)r1r2r5r5r6test_timeout_expired__repr__s z%TestMisc.test_timeout_expired__repr__cCs>t}t}|||d|_|||||ddS)N)rrr9)r!r"r;_identZassertNotEqual)r1p1p2r5r5r6test_process__eq__s   zTestMisc.test_process__eq__cCs(tttg}|t|ddS)Nr>)setr!r"r;len)r1sr5r5r6test_process__hash__szTestMisc.test_process__hash__c Cstt}x|D]~}|dkrq|dsy t|Wqtk r|tjkrtt|}|dkr`w|jdk rd|jkr| d|YqXqWxtjD]}| ||qWdS)N)longteststestPermissionErrorProcessLookupError_Z deprecatedz%r not in psutil.__all__) dirr! startswith __import__ ImportError__all__getattr__doc__lowerfailr$)r1Z dir_psutilrfunr5r5r6 test__all__s"       zTestMisc.test__all__cCs$|dddtjDtjdS)N.cSsg|] }t|qSr5)r%).0xr5r5r6 sz)TestMisc.test_version..)r;joinr! version_info __version__)r1r5r5r6 test_versionszTestMisc.test_versioncCs"t}d|_|d|dS)N1r9)r!r"r9r'as_dict)r1r3r5r5r6!test_process_as_dict_no_new_namessz*TestMisc.test_process_as_dict_no_new_namescstfdd}gx:tdD].}|}dif}||||tdqWx.foorr5r>)r>)barrmrz foo docstring)rranger;rJ cache_clearrY)r1r9r`retZexpectedr5)rlr6 test_memoizes.      zTestMisc.test_memoizecsGfddd}|}g|||tdg|j||||tdg|j||||tddS)NcseZdZefddZdS)z1TestMisc.test_memoize_when_activated..FoocsddS)N)ri)r1)rlr5r6r9sz5TestMisc.test_memoize_when_activated..Foo.fooN)__name__ __module__ __qualname__rr9r5)rlr5r6Foosrvrr>)r9r;rJcache_activatecache_deactivate)r1rvfr5)rlr6test_memoize_when_activateds   z$TestMisc.test_memoize_when_activatedcCsddlm}dd}||d|ddi||d|dd|d d i||d |dd|d d i||d |dd|d d i||d|ddi||d|ddi||d|ddidS)Nr)parse_environ_blockcSstr |S|S)N)rupper)rKr5r5r6ksz,TestMisc.test_parse_environ_block..kza=1arfz a=1b=2b2za=1b=z a=1b=2c=3zxxxa=1z a=1=b=2za=1b=2)psutil._commonr{r;)r1r{r}r5r5r6test_parse_environ_blocks     z!TestMisc.test_parse_environ_blockc Cs>|tjtrtd}d|_ttr6tWdQRXttjdtjd}trdt|j sntWdQRXttjdtj d"}trtt|j stWdQRXttjdtj d"}trtt|j stWdQRXn@| t 0ttj tj}z|dWd|XWdQRXdS)Nzpsutil._common.socketFzpsutil._common.socket.socket)r z!psutil._common.socket.socket.bind)z::1r)Z addCleanuprrprr*has_ipv6AssertionErrorsocketerrorcalledgaierror assertRaises ExceptionAF_INET6 SOCK_STREAMbindclose)r1rKsockr5r5r6test_supports_ipv6s8         zTestMisc.test_supports_ipv6c Csddlm}tjt}||s$t|tj|r8ttj dt t j dd| t ||WdQRXtj dt t jdd| t ||WdQRXtj dt t jdd||rtWdQRXtj ddd||rtWdQRXdS) Nr) isfile_strictzpsutil._common.os.statr9)r zpsutil._common.stat.S_ISREGF) return_value)rrr-pathabspath__file__rdirnamerr*OSErrorerrnoEPERMrEACCESENOENT)r1rZ this_filer5r5r6test_isfile_strict=s   zTestMisc.test_isfile_strictcsfdd}|t|t|t|t|tjdd|ttrnt j dsnnt s~|t |t|tt |tdS)Ncs<tdk rtt|t|}t|}||dS)N)jsonloadsdumpspickler;)rqr~r)r1r5r6checkOs   z*TestMisc.test_serialization..checkr)intervalz/proc/diskstats)r!r"rgZvirtual_memoryZ swap_memoryZ cpu_timesZcpu_times_percentnet_io_countersrr-rexistsr disk_io_countersZdisk_partitions disk_usagegetcwdusers)r1rr5)r1r6test_serializationNs       zTestMisc.test_serializationcCsTtjtd}tr(tj|s(|dSt|}|t |j | | t jdS)Nzsetup.pyzcan't find setup.py)r-rrbrr rskipTestrr SystemExitsetupr; get_versionr!rd)r1Zsetup_pymoduler5r5r6test_setup_scriptes  zTestMisc.test_setup_scriptc Cstjjtjdtjd}t|js*tWdQRXtjjtjdtdd}t|jsbtWdQRXtjjtjdt d.}| t tWdQRX|jstWdQRXdS)NZ create_time)r r>) rr*r+r!r"r0rrr, ValueErrorr)r1methr5r5r6test_ad_on_process_creationms      z$TestMisc.test_ad_on_process_creationc CsRtjddd:|t}ttWdQRX|dt|j WdQRXdS)Nzpsutil._psplatform.cext.versionz0.0.0)rzversion conflict) rr*rrVrr!r$r% exceptionrZ)r1cmr5r5r6test_sanity_version_check~s   z"TestMisc.test_sanity_version_checkN)rsrtrur<r7r8r=r@rArDrHrLr]rerhrrrzrrrrrrrr5r5r5r6r;s( $  ##rr9za b cc@seZdZddZeZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZee dddZdS)TestWrapNumberscCs tdS)N)rrp)r1r5r5r6setUpszTestWrapNumbers.setUpcCs&dtdddi}|t|d|dS)Ndisk1disk_io)ntr;r)r1inputr5r5r6test_first_callszTestWrapNumbers.test_first_callcCs8dtdddi}|t|d||t|d|dS)Nrrr)rr;r)r1rr5r5r6test_input_hasnt_changedsz(TestWrapNumbers.test_input_hasnt_changedcCsdtdddi}|t|d|dtdddi}|t|d|dtdddi}|t|d|dtdddi}|t|d|dS) Nrrr )rr;r)r1rr5r5r6test_increase_but_no_wrapsz)TestWrapNumbers.test_increase_but_no_wrapcCsdtdddi}|t|d|dtdddi}|t|ddtdddidtdddi}|t|ddtdddidtdddi}|t|ddtdddidtdddi}|t|ddtddd idtdddi}|t|ddtddd idtd ddi}|t|ddtd dd idtd ddi}|t|ddtddd idtd ddi}|t|ddtddd idS) NrdrrnZr2()rr;r)r1rr5r5r6 test_wraps4        zTestWrapNumbers.test_wrapcCstdtdddi}|t|d|tdddtdddd}|t|d|dtdddi}|t|d|dS)Nrrr)rdisk2)rr;r)r1rr5r5r6test_changing_keyss z"TestWrapNumbers.test_changing_keyscCs.tdddtdddd}|t|d|tdddtdddd}|t|dtdddtdddddtdddi}|t|d|tdddtdddd}|t|d|tdddtdddd}|t|d|tdddtdddd}|t|dtdddtdddddS)Nrr)rrrrrr)rr;r)r1rr5r5r6test_changing_keys_w_wraps*         z)TestWrapNumbers.test_changing_keys_w_wrapcCsbddddd}|t|d||t|d|ddddd}t|d}||dd d dS) N) i,iii#iRiiiiȷ) iritUiirrrr) 6ri$iNrnri) iU ii"rii4iii\)nvme0n1Z nvme0n1p1Z nvme0n1p2Z nvme0n1p3r) riii#iRiiiiȷrri)r;r)r1doutr5r5r6test_real_datas zTestWrapNumbers.test_real_datacCsbdtdddi}t|dt}||dd|i||ddii||ddiidS)Nrrrrr>r)rr cache_infor;)r1rcacher5r5r6test_cache_first_call s  z%TestWrapNumbers.test_cache_first_callcCsdtdddi}t|ddtdddi}t|dt}||dd|i||ddddddi||ddiidS) Nrrrrrr>))rr)rr>)rrr)rrrr;)r1rrr5r5r6test_cache_call_twices  z%TestWrapNumbers.test_cache_call_twicecsdtdddi}t|ddtdddi}t|dt}|dd|i|ddddddi|dddtd giifd d }dtdddi}t|dt}|dd|i|dtddd i}t|dt}|dd|i|dtddd i}t|dt}|dd|i|ddddddi|dddtd giidS)Nrrrrrr>))rr)rr>)rrr)rrcsFt}|ddddddi|dddtdgiidS) Nr>rrr))rr)rr>)rrrr)rr)rrr;rI)r)r1r5r6assert_,s  z0TestWrapNumbers.test_cache_wrap..assert_rrr)rrrr;rI)r1rrrr5)r1r6test_cache_wraps:      zTestWrapNumbers.test_cache_wrapcCsdtdddi}t|dtdddtdddd}t|dt}||dd|i||ddddddi||d diidS) Nrrrr)rrrr>))rr)rr>)rrr)rrrr;)r1rrr5r5r6test_cache_changing_keysMs   z(TestWrapNumbers.test_cache_changing_keyscCs\dtdddi}t|dt|dtd|tiiiftdtddS)Nrrrz?!?)rrrpr;r)r1rr5r5r6test_cache_clearZs    z TestWrapNumbers.test_cache_clearz not supportedcCstrts|dSttt}x$|D]}|d||d|q8Wtjt}x$|D]}|d||d|qpWtjt}| |iiifdS)Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters) r!rrrrrr$rpr'r;)r1Zcachesrr5r5r6test_cache_clear_public_apiscs        z,TestWrapNumbers.test_cache_clear_public_apisN)rsrtrurZtearDownrrrrrrrrrrrrrskipIfrrr5r5r5r6rs %  0  rzcan't locate scripts directoryc@s~eZdZdZeddZed}|drdtj|d|kr|dtjt|qWdS)Nz.pyZtest_rzno test defined for %r script) rSr-listdirrendswithrsplitextr[rb)r1Zmethsrr5r5r6 test_coverages  zTestScripts.test_coveragez POSIX onlycCsTxNttD]@}|dr tjt|}tjt|tj@s | d|q WdS)Nz.pyz%r is not executable) r-rrrrrbstatS_IXUSRST_MODEr[)r1rrr5r5r6test_executables  zTestScripts.test_executablecCs|ddS)Nz disk_usage.py)r)r1r5r5r6test_disk_usageszTestScripts.test_disk_usagecCs|ddS)Nzfree.py)r)r1r5r5r6 test_freeszTestScripts.test_freecCs|ddS)Nz meminfo.py)r)r1r5r5r6 test_meminfoszTestScripts.test_meminfocCs|dttdS)Nz procinfo.py)rr%r-r.)r1r5r5r6 test_procinfoszTestScripts.test_procinfozno userscCs|ddS)Nzwho.py)r)r1r5r5r6test_whoszTestScripts.test_whocCs|ddS)Nzps.py)r)r1r5r5r6test_psszTestScripts.test_pscCs|ddS)Nz pstree.py)r)r1r5r5r6 test_pstreeszTestScripts.test_pstreecCs|ddS)Nz netstat.py)r)r1r5r5r6 test_netstatszTestScripts.test_netstatcCs|ddS)Nz ifconfig.py)r)r1r5r5r6 test_ifconfigszTestScripts.test_ifconfigz not supportedcCs|dttdS)Nzpmap.py)rr%r-r.)r1r5r5r6 test_pmapszTestScripts.test_pmapcCs*dtjkr|d|ddS)NZussz not supportedz procsmem.py)r!r"Zmemory_full_info_fieldsrr)r1r5r5r6 test_procsmems zTestScripts.test_procsmemcCs|ddS)Nz killall.py)r)r1r5r5r6 test_killallszTestScripts.test_killallcCs|ddS)Nz nettop.py)r)r1r5r5r6 test_nettopszTestScripts.test_nettopcCs|ddS)Nztop.py)r)r1r5r5r6test_topszTestScripts.test_topcCs|ddS)Nziotop.py)r)r1r5r5r6 test_iotopszTestScripts.test_iotopcCs,|dt}|tt|dS)Nzpidof.py)rr!r"rr$r%r-r.)r1outputr5r5r6 test_pidofszTestScripts.test_pidofz WINDOWS onlycCs|ddS)Nzwinservices.py)r)r1r5r5r6test_winservicesszTestScripts.test_winservicescCs|ddS)Nzcpu_distribution.py)r)r1r5r5r6test_cpu_distributionsz!TestScripts.test_cpu_distributioncCs ts|d|ddS)Nzno temperaturesztemperatures.py)r!Zsensors_temperaturesrr)r1r5r5r6test_temperaturess zTestScripts.test_temperaturescCs ts|d|ddS)Nzno fanszfans.py)r!Z sensors_fansrr)r1r5r5r6 test_fanss zTestScripts.test_fansz no batterycCs|ddS)Nz battery.py)r)r1r5r5r6 test_batteryszTestScripts.test_batterycCs|ddS)Nz sensors.py)r)r1r5r5r6 test_sensorsszTestScripts.test_sensors)N)+rsrtrurY staticmethodrrrrrrrrrrrr r!rrrrrrr rr r r r r rrrrrrrrrr rrr5r5r5r6r~s<     r__main__) run_from_name)5rYr collectionsrrr-rrrsysr!rrrrrrrrZpsutil._compatr Z psutil.testsr r r r rrrrrrrrrrrrrrcZ PYTHON_39r namedtuplerrrrrrrsZpsutil.tests.runnerrrr5r5r5r6 sd                         S p