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 assertNotInZ terminatewaitrpatchobject ZombieProcessosgetpid NoSuchProcess AccessDenied)selffuncprr4I/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_misc.pytest_process__repr__=sB          zTestMisc.test_process__repr__cCs|jtddS)N)r1)r6r%)r0r4r4r5test_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.)r0r1r4r4r5test_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)r8)rzQpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo'))rZppidzYpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo', ppid=1))r9zpsutil.ZombieProcess foo)r:r;r!r+)r0r1r4r4r5test_zombie_process__repr__ps z$TestMisc.test_zombie_process__repr__cCsN|ttdd|ttjdddd|ttjdddddS)NiAzpsutil.AccessDenied (pid=321)r8)rz)psutil.AccessDenied (pid=321, name='foo'))r9zpsutil.AccessDenied foo)r:r;r!r/)r0r1r4r4r5test_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)r8)r#rzEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r:r;r!ZTimeoutExpired)r0r1r4r4r5test_timeout_expired__repr__s z%TestMisc.test_timeout_expired__repr__cCs>t}t}|||d|_|||||ddS)N)rrr8)r!r"r:Z_identZassertNotEqual)r0Zp1Zp2r4r4r5test_process__eq__s   zTestMisc.test_process__eq__cCs(tttg}|t|ddS)Nr=)setr!r"r:len)r0sr4r4r5test_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)ZlongZtestsZtestPermissionErrorProcessLookupError_Z deprecatedz%r not in psutil.__all__) dirr! startswith __import__ ImportError__all__getattr__doc__lowerfailr$)r0Z dir_psutilrZfunr4r4r5 test__all__s"       zTestMisc.test__all__cCs$|dddtjDtjdS)N.cSsg|] }t|qSr4)r%).0xr4r4r5 sz)TestMisc.test_version..)r:joinr! version_info __version__)r0r4r4r5 test_versionszTestMisc.test_versioncCs"t}d|_|d|dS)N1r8)r!r"r8r'as_dict)r0r2r4r4r5!test_process_as_dict_no_new_namessz*TestMisc.test_process_as_dict_no_new_namescstfdd}gx:tdD].}|}dif}||||tdqWx.foorr4r=)r=)barrcrz foo docstring)rranger:rD cache_clearrP)r0r8rVretZexpectedr4)rbr5 test_memoizes.      zTestMisc.test_memoizecsGfddd}|}g|||tdg|j||||tdg|j||||tddS)NcseZdZefddZdS)z1TestMisc.test_memoize_when_activated..FoocsddS)N)r_)r0)rbr4r5r8sz5TestMisc.test_memoize_when_activated..Foo.fooN)__name__ __module__ __qualname__rr8r4)rbr4r5Foosrlrr=)r8r:rDZcache_activateZcache_deactivate)r0rlfr4)rbr5test_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)rEr4r4r5ksz,TestMisc.test_parse_environ_block..kza=1ar\z a=1b=2b2za=1b=z a=1b=2c=3zxxxa=1z a=1=b=2za=1b=2)psutil._commonror:)r0rorqr4r4r5test_parse_environ_blocks     z!TestMisc.test_parse_environ_blockc Cs|tjtrtd}d|_tWdQRXttjdtjd}WdQRXttjdtjd}tWdQRXttjdtjd}tWdQRXn@| t 0ttj tj }z| dWd|XWdQRXdS)Nzpsutil._common.socketFzpsutil._common.socket.socket)r z!psutil._common.socket.socket.bind)z::1r)Z addCleanuprrfrr)Zhas_ipv6socketerrorZgaierror assertRaises ExceptionZAF_INET6Z SOCK_STREAMZbindclose)r0rEZsockr4r4r5test_supports_ipv6s2          zTestMisc.test_supports_ipv6c Csddlm}tjt}tjdtt j dd| t||WdQRXtjdtt j dd| t||WdQRXtjdtt j ddWdQRXtjdddWdQRXdS) Nr) isfile_strictzpsutil._common.os.statr8)r zpsutil._common.stat.S_ISREGF) return_value)rvr~r,pathabspath__file__rr)OSErrorerrnoZEPERMrzZEACCESZENOENT)r0r~Z this_filer4r4r5test_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:)rgrrrs)r0r4r5checkOs   z*TestMisc.test_serialization..checkr)Zintervalz/proc/diskstats)r!r"r]Zvirtual_memoryZ swap_memoryZ cpu_timesZcpu_times_percentnet_io_countersrr,rexistsr disk_io_countersZdisk_partitionsZ disk_usagegetcwdusers)r0rr4)r0r5test_serializationNs       zTestMisc.test_serializationcCsTtjtd}tr(tj|s(|dSt|}|t |j | | t jdS)Nzsetup.pyzcan't find setup.py)r,rrXrr rskipTestrrz SystemExitZsetupr:Z get_versionr!rZ)r0Zsetup_pymoduler4r4r5test_setup_scriptes  zTestMisc.test_setup_scriptc Cstjjtjdtjd}tWdQRXtjjtjdtdd}tWdQRXtjjtjdtd$}|ttWdQRXWdQRXdS)NZ create_time)r r=) rr)r*r!r"r/r+ ValueErrorrz)r0Zmethr4r4r5test_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)rzrMrr!r$r%Z exceptionrQ)r0cmr4r4r5test_sanity_version_check~s   z"TestMisc.test_sanity_version_checkN)rirjrkr;r6r7r<r>r?rArBrFrSr[r^rhrnrwr}rrrrrr4r4r4r5r;s( $  ##rr8za b cc@seZdZddZeZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZee dddZdS)TestWrapNumberscCs tdS)N)rrf)r0r4r4r5setUpszTestWrapNumbers.setUpcCs&dtdddi}|t|d|dS)Ndisk1disk_io)ntr:r)r0inputr4r4r5test_first_callszTestWrapNumbers.test_first_callcCs8dtdddi}|t|d||t|d|dS)Nrrr)rr:r)r0rr4r4r5test_input_hasnt_changedsz(TestWrapNumbers.test_input_hasnt_changedcCsdtdddi}|t|d|dtdddi}|t|d|dtdddi}|t|d|dtdddi}|t|d|dS) Nrrr )rr:r)r0rr4r4r5test_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)r0rr4r4r5 test_wraps4        zTestWrapNumbers.test_wrapcCstdtdddi}|t|d|tdddtdddd}|t|d|dtdddi}|t|d|dS)Nrrr)rdisk2)rr:r)r0rr4r4r5test_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)r0rr4r4r5test_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$iNrdri) iU ii"rii4iii\)nvme0n1Z nvme0n1p1Z nvme0n1p2Z nvme0n1p3r) riii#iRiiiiȷrri)r:r)r0doutr4r4r5test_real_datas zTestWrapNumbers.test_real_datacCsbdtdddi}t|dt}||dd|i||ddii||ddiidS)Nrrrrr=r)rr cache_infor:)r0rcacher4r4r5test_cache_first_call s  z%TestWrapNumbers.test_cache_first_callcCsdtdddi}t|ddtdddi}t|dt}||dd|i||ddddddi||ddiidS) Nrrrrrr=))rr)rr=)rrr)rrrr:)r0rrr4r4r5test_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:rC)r)r0r4r5assert_,s  z0TestWrapNumbers.test_cache_wrap..assert_rrr)rrrr:rC)r0rrrr4)r0r5test_cache_wraps:      zTestWrapNumbers.test_cache_wrapcCsdtdddi}t|dtdddtdddd}t|dt}||dd|i||ddddddi||d diidS) Nrrrr)rrrr=))rr)rr=)rrr)rrrr:)r0rrr4r4r5test_cache_changing_keysMs   z(TestWrapNumbers.test_cache_changing_keyscCs\dtdddi}t|dt|dtd|tiiiftdtddS)Nrrrz?!?)rrrfr:r)r0rr4r4r5test_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$rfr'r:)r0Zcachesrr4r4r5test_cache_clear_public_apiscs        z,TestWrapNumbers.test_cache_clear_public_apisN)rirjrkrZtearDownrrrrrrrrrrrrrskipIfrrr4r4r4r5rs %  0  rzcan't locate scripts directoryc@s~eZdZdZeddZed}|drdtj|d|kr|dtjt|qWdS)Nz.pyZtest_rzno test defined for %r script) rJr,listdirrendswithrsplitextrRrX)r0Zmethsrr4r4r5 test_coverages  zTestScripts.test_coveragez POSIX onlycCsTxNttD]@}|dr tjt|}tjt|tj@s | d|q WdS)Nz.pyz%r is not executable) r,rrrrrXstatS_IXUSRST_MODErR)r0rrr4r4r5test_executables  zTestScripts.test_executablecCs|ddS)Nz disk_usage.py)r)r0r4r4r5test_disk_usageszTestScripts.test_disk_usagecCs|ddS)Nzfree.py)r)r0r4r4r5 test_freeszTestScripts.test_freecCs|ddS)Nz meminfo.py)r)r0r4r4r5 test_meminfoszTestScripts.test_meminfocCs|dttdS)Nz procinfo.py)rr%r,r-)r0r4r4r5 test_procinfoszTestScripts.test_procinfozno userscCs|ddS)Nzwho.py)r)r0r4r4r5test_whoszTestScripts.test_whocCs|ddS)Nzps.py)r)r0r4r4r5test_psszTestScripts.test_pscCs|ddS)Nz pstree.py)r)r0r4r4r5 test_pstreeszTestScripts.test_pstreecCs|ddS)Nz netstat.py)r)r0r4r4r5 test_netstatszTestScripts.test_netstatcCs|ddS)Nz ifconfig.py)r)r0r4r4r5 test_ifconfigszTestScripts.test_ifconfigz not supportedcCs|dttdS)Nzpmap.py)rr%r,r-)r0r4r4r5 test_pmapszTestScripts.test_pmapcCs*dtjkr|d|ddS)NZussz not supportedz procsmem.py)r!r"Zmemory_full_info_fieldsrr)r0r4r4r5 test_procsmems zTestScripts.test_procsmemcCs|ddS)Nz killall.py)r)r0r4r4r5 test_killallszTestScripts.test_killallcCs|ddS)Nz nettop.py)r)r0r4r4r5 test_nettopszTestScripts.test_nettopcCs|ddS)Nztop.py)r)r0r4r4r5test_topszTestScripts.test_topcCs|ddS)Nziotop.py)r)r0r4r4r5 test_iotopszTestScripts.test_iotopcCs,|dt}|tt|dS)Nzpidof.py)rr!r"rr$r%r,r-)r0outputr4r4r5 test_pidofszTestScripts.test_pidofz WINDOWS onlycCs|ddS)Nzwinservices.py)r)r0r4r4r5test_winservicesszTestScripts.test_winservicescCs|ddS)Nzcpu_distribution.py)r)r0r4r4r5test_cpu_distributionsz!TestScripts.test_cpu_distributioncCs ts|d|ddS)Nzno temperaturesztemperatures.py)r!Zsensors_temperaturesrr)r0r4r4r5test_temperaturess zTestScripts.test_temperaturescCs ts|d|ddS)Nzno fanszfans.py)r!Z sensors_fansrr)r0r4r4r5 test_fanss zTestScripts.test_fansz no batterycCs|ddS)Nz battery.py)r)r0r4r4r5 test_batteryszTestScripts.test_batterycCs|ddS)Nz sensors.py)r)r0r4r4r5 test_sensorsszTestScripts.test_sensors)N)+rirjrkrP staticmethodrrrrrrrrrrrr r!rrrrrrr rrrrrrrrrrrrrrrr rrr4r4r4r5r~s<     r__main__) run_from_name)5rPr collectionsrrr,rrxrsysr!rrrrvrrrrZpsutil._compatr Z psutil.testsr r r r rrrrrrrrrrrrrrYZ PYTHON_39r namedtuplerrrrrrriZpsutil.tests.runnerrrr4r4r4r5 sd                         S p