U |f@s|dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z ddl mZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddl mZddl mZddl mZddl m Z ddl m!Z!ddl m"Z"ddl m#Z#ddl m$Z$ddl m%Z%ddl m&Z&ddl m'Z'ddl m(Z(ddl m)Z)ddl m*Z*ddl m+Z+dd l m,Z,dd!l m-Z-Gd"d#d#e(Z.Gd$d%d%e(Z/Gd&d'd'e(Z0Gd(d)d)e(Z1e2d*d+Z3Gd,d-d-e(Z4e 5ej67e' d.Gd/d0d0e(Z8e9d1krxdd2l:m;Z;e;e<dS)3zMiscellaneous tests.N)POSIX)WINDOWS)bcat)cat)debug) isfile_strict)memoize)memoize_when_activated)parse_environ_block) supports_ipv6) wrap_numbers)PY3)FileNotFoundError)redirect_stderr) CI_TESTING) HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES) PYTHON_EXE)PYTHON_EXE_ENV) QEMU_USER) SCRIPTS_DIR)PsutilTestCase)mock)process_namespace) reload_module)sh)system_namespacec@seZdZddZefddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdS) TestSpecialMethodsc CsR|ttjjddW5QRX|tjtddW5QRXdS)N) assertRaises OverflowErrorpsutilZ _psplatformZcextZcheck_pid_range NoSuchProcessProcessselfr+I/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_misc.pytest_check_pid_range>s z'TestSpecialMethods.test_check_pid_rangec Cst|j}||}|d||d|j||dt||dd|d||d|| | ||}|d||d|t j j tjd ttd @t}||}|d|j||d ||d |W5QRXt j j tjd ttd @t}||}|d|j||d ||d |W5QRXt j j tjd ttd 4t}||}|d|j||d |W5QRXdS)Nzpsutil.Processzpid=%sz name='%s'zname=u'zname='zstatus=z exitcode=zstatus='terminated'nameZ side_effectzstatus='zombie'zname=Z terminated)r&r(Zspawn_testprocpidassertInstrr.replace assertNotIn terminatewaitrpatchobject ZombieProcessosgetpidr' AccessDenied)r*funcprr+r+r,test_process__repr__DsX           z'TestSpecialMethods.test_process__repr__cCs|jtddS)N)r=)r@r2r)r+r+r,test_process__str__rsz&TestSpecialMethods.test_process__str__cCs|ttddS)Nzpsutil.Error()) assertEqualreprr&Errorr)r+r+r,test_error__repr__usz%TestSpecialMethods.test_error__repr__cCs|ttddS)N)rBr2r&rDr)r+r+r,test_error__str__xsz$TestSpecialMethods.test_error__str__cCs6|ttdd|ttjddddddS)NAz=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r.msgr.rIz5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rBrCr&r'r)r+r+r,test_no_such_process__repr__{s z/TestSpecialMethods.test_no_such_process__repr__cCs6|ttdd|ttjddddddS)NrHz"process no longer exists (pid=321)r.rIrJmsg (pid=321, name='name'))rBr2r&r'r)r+r+r,test_no_such_process__str__s z.TestSpecialMethods.test_no_such_process__str__c Cs8|ttdd|ttjdddddddS)NrHzGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r.@foor.ppidrIz?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rBrCr&r9r)r+r+r,test_zombie_process__repr__s z.TestSpecialMethods.test_zombie_process__repr__c Cs8|ttdd|ttjdddddddS)NrHz,PID still exists but it's a zombie (pid=321)r.rNrOrPz$foo (pid=321, ppid=320, name='name'))rBr2r&r9r)r+r+r,test_zombie_process__str__s z-TestSpecialMethods.test_zombie_process__str__cCs6|ttdd|ttjddddddS)NrHzpsutil.AccessDenied(pid=321)r.rIrJz4psutil.AccessDenied(pid=321, name='name', msg='msg'))rBrCr&r<r)r+r+r,test_access_denied__repr__s z-TestSpecialMethods.test_access_denied__repr__cCs6|ttdd|ttjddddddS)NrHz (pid=321)r.rIrJrL)rBr2r&r<r)r+r+r,test_access_denied__str__s z,TestSpecialMethods.test_access_denied__str__cCs6|ttdd|ttjddddddS)Nz?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rHr.r0r.zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rBrCr&TimeoutExpiredr)r+r+r,test_timeout_expired__repr__s z/TestSpecialMethods.test_timeout_expired__repr__cCs6|ttdd|ttjddddddS)NrVztimeout after 5 secondsrHr.rWz.timeout after 5 seconds (pid=321, name='name'))rBr2r&rXr)r+r+r,test_timeout_expired__str__s z.TestSpecialMethods.test_timeout_expired__str__cCs>t}t}|||d|_|||||ddS)N)rrrO)r&r(rB_identassertNotEqual)r*p1p2r+r+r,test_process__eq__s   z%TestSpecialMethods.test_process__eq__cCs(tttg}|t|ddS)N)setr&r(rBlen)r*sr+r+r,test_process__hash__sz'TestSpecialMethods.test_process__hash__N)__name__ __module__ __qualname__r-rCr@rArErGrKrMrRrSrTrUrYrZr_rdr+r+r+r,r!=s .       r!c@s<eZdZddZddZddZddZd d Zd d Zd S)TestMiscc Cstt}|D]}|dkrq |ds z t|Wq tk r|tjkrtt|}|dkr`Yq |jdk rd|jkr| d|Yq Xq tjD]}| ||qdS)N)rlongteststestPermissionErrorProcessLookupError_ deprecatedz%r not in psutil.__all__) dirr& startswith __import__ ImportError__all__getattr__doc__lowerfailr1)r*Z dir_psutilr.funr+r+r, test__all__s&      zTestMisc.test__all__cCs$|dddtjDtjdS)N.cSsg|] }t|qSr+)r2).0xr+r+r, sz)TestMisc.test_version..)rBjoinr& version_info __version__r)r+r+r, test_versionszTestMisc.test_versioncCs"t}d|_|d|dS)N1rO)r&r(rOr4as_dict)r*r>r+r+r,!test_process_as_dict_no_new_namessz*TestMisc.test_process_as_dict_no_new_namesc sdfdd}t}|tt|}|j|jddD]L\}}j||d0z |}Wntjk rtYn X||W5QRXq.checkT) clear_cache)procr.>win_service_getwin_service_iterZ net_if_stats)r.ir.rI)r0r.rI*)r0r.rQrI{!)secondsr0r.)r&r(rritergettersZsubTestrDr rr<rrrr'ZassertIsInstancerBr0r.rIr9rQrXr)r*rrnsryr.rrr+r)r,test_serializationst    zTestMisc.test_serializationc Cstjjtjdtjd}t|js*tW5QRXtjjtjdtdd}t|jsbtW5QRXtjjtjdt d.}| t tW5QRX|jstW5QRXdS)NZ create_timer/r`) rr7r8r&r(r<calledAssertionErrorr9 ValueErrorr$)r*methr+r+r,test_ad_on_process_creationbs2 z$TestMisc.test_ad_on_process_creationc CsRtjddd:|t}ttW5QRX|dt|j W5QRXdS)Nzpsutil._psplatform.cext.versionz0.0.0Z return_valuezversion conflict) rr7r$rsrr&r1r2 exceptionrw)r*cmr+r+r,test_sanity_version_checkvs z"TestMisc.test_sanity_version_checkN) rerfrgrzrrrrrr+r+r+r,rhs ![rhc@sReZdZddZeZdddZddZdd Zd d Zd d Z ddZ ddZ dS)TestMemoizeDecoratorcCs g|_dSrcallsr)r+r+r,setUpszTestMemoizeDecorator.setUpNc Cs,tdD]2}|}||jdifg|dk r|||qtdD]:}|d}||jdifdifg|dk rD|||qDtdD]H}|ddd}||jdifdifdddifg|dk r|||q|t|jd||}|dk r||||t|jd||jd dS) Nr"r+r`r`barr My docstring.)rangerBrrb cache_clearrv)r*objexpected_retvalrnrr+r+r, run_againsts2      z TestMemoizeDecorator.run_againstcs&tfdd}||j|dddS)Ncsj||fdSrrappendargskwargsZ baseclassr+r,rOsz/TestMemoizeDecorator.test_function..foorr)rr)r*rOr+rr, test_functionsz"TestMemoizeDecorator.test_functioncs>tGfddd}||j|dd||ddS)Ncs$eZdZdZfddZddZdS)z,TestMemoizeDecorator.test_class..Foorcsj||fdSrrr*rrrr+r,__init__sz5TestMemoizeDecorator.test_class..Foo.__init__cSsdS)Nrr+r)r+r+r,rsz0TestMemoizeDecorator.test_class..Foo.barN)rerfrgrvrrr+rr+r,Foos rrr)rrrBrr*rr+rr, test_classs  zTestMemoizeDecorator.test_classcCstGddd}||||t|t||t|dt|d|t|dddt|ddd|t|dt|ddS)Nc@seZdZddZdS)z6TestMemoizeDecorator.test_class_singleton..Barc_sdSrr+rr+r+r,rsz?TestMemoizeDecorator.test_class_singleton..Bar.__init__N)rerfrgrr+r+r+r,Barsrr`r)rOr")rZassertIsrBidr\)r*rr+r+r,test_class_singletons$z)TestMemoizeDecorator.test_class_singletoncs,Gfddd}||j|jdddS)Ncs eZdZeefddZdS)z3TestMemoizeDecorator.test_staticmethod..Foocsj||fdSrrrrr+r,rsz7TestMemoizeDecorator.test_staticmethod..Foo.barN)rerfrg staticmethodrrr+rr+r,rsrrrrrrr+rr,test_staticmethodsz&TestMemoizeDecorator.test_staticmethodcs,Gfddd}||j|jdddS)Ncs eZdZeefddZdS)z2TestMemoizeDecorator.test_classmethod..Foocsj||fdSrr)clsrrrr+r,rsz6TestMemoizeDecorator.test_classmethod..Foo.barN)rerfrg classmethodrrr+rr+r,rsrrrrrr+rr,test_classmethodsz%TestMemoizeDecorator.test_classmethodcs tfdd}gtdD].}|}dif}||||tdqtdD]0}|d}dif}||||tdqTtdD]8}|ddd}dddif}||||td q||}dif}||||td ||jd dS) Ncsd||fS)Foo docstring.Nrrrr+r,rOs z/TestMemoizeDecorator.test_original..foor"r+r`rrrrrr)rrrBrbrrv)r*rOrnrexpectedr+rr, test_originals0         z"TestMemoizeDecorator.test_original)N) rerfrgrtearDownrrrrrrrr+r+r+r,rs     rc@s<eZdZddZddZddZddZd d Zd d Zd S)TestCommonModulecsGfddd}|}g|||tdg|j||||tdg|j||||tddS)NcseZdZefddZdS)z9TestCommonModule.test_memoize_when_activated..FoocsddSrrr)rr+r,rOsz=TestCommonModule.test_memoize_when_activated..Foo.fooN)rerfrgr rOr+rr+r,rsrr"r`)rOrBrbZcache_activateZcache_deactivate)r*rfr+rr,test_memoize_when_activateds   z,TestCommonModule.test_memoize_when_activatedcCsdd}|td|ddi|td|dd|ddi|td |dd|dd i|td |dd|ddi|td |ddi|td |ddi|td|ddidS)NcSstr |S|Sr)rupper)rcr+r+r,k*sz4TestCommonModule.test_parse_environ_block..kza=1rrz a=1b=2r2za=1b=rFz a=1b=2c=3zxxxa=1z a=1=b=2za=1b=2)rBr )r*rr+r+r,test_parse_environ_block)s"z)TestCommonModule.test_parse_environ_blockc Cs@|tjtrtd}d|_ttr6tW5QRXttjdtjd}trdt|j sntW5QRXttjdtj d"}trtt|j stW5QRXttjdtj d"}trtt|j stW5QRXnB| tj0ttj tj }z|dW5|XW5QRXdS)Nzpsutil._common.socketFzpsutil._common.socket.socketr/z!psutil._common.socket.socket.bind)z::1r)Z addCleanupr rrr7has_ipv6rsocketerrorrgaierrorr$AF_INET6 SOCK_STREAMclosebind)r*rcsockr+r+r,test_supports_ipv6?sJ     z#TestCommonModule.test_supports_ipv6c Cstjt}t|stttj|r,ttjdt t j dd| t t|W5QRXtjdt t j dd| t t|W5QRXtjdt t jddt|rtW5QRXtjdddt|rtW5QRXdS)Nzpsutil._common.os.statrOr/zpsutil._common.stat.S_ISREGFr)r:pathabspath__file__rrdirnamerr7OSErrorerrnoEPERMr$EACCESENOENT)r*Z this_filer+r+r,test_isfile_strictfs(     z#TestCommonModule.test_isfile_strictc Cstrddlm}n ddlm}t|}tdtjW5QRX|}| ds`t || d|| t dd|t|}ttdW5QRX|}| d|| d |t|}td d }d |_t|W5QRX|}| d || d |dS) Nr)StringIOZhelloz psutil-debugz.pyc.pyzthis is an errorzignoring ValueErrorz'this is an error'r"z no such filez/foo)r iorrrsysstderrflushgetvaluerqrr1rr3rrfilename)r*rrrIexcr+r+r, test_debugys,         zTestCommonModule.test_debugc Cs|}t|d}|dW5QRX|t|d|t|d|tt|d|tt|d|t|dddd|t|dddddS)NwrOsfooz-invalidr)fallback)Z get_testfnopenwriterBrrr$r)r*Ztestfnrr+r+r, test_cat_bcats zTestCommonModule.test_cat_bcatN) rerfrgrrrrrrr+r+r+r,rs 'rrOza b cc@seZdZddZeZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZee dddZdS)TestWrapNumberscCs tdSr)r rr)r+r+r,rszTestWrapNumbers.setUpcCs&dtdddi}|t|d|dSNdisk1rVdisk_iontrBr r*inputr+r+r,test_first_callszTestWrapNumbers.test_first_callcCs8dtdddi}|t|d||t|d|dSrrrr+r+r,test_input_hasnt_changedsz(TestWrapNumbers.test_input_hasnt_changedcCsdtdddi}|t|d|dtdddi}|t|d|dtdddi}|t|d|dtdddi}|t|d|dS) NrrVr rrr+r+r,test_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(rrr+r+r, test_wrapsTzTestWrapNumbers.test_wrapcCstdtdddi}|t|d|tdddtdddd}|t|d|dtdddi}|t|d|dS)NrrVrrZdisk2rrr+r+r,test_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 rrrr rrrr+r+r,test_changing_keys_w_wraps$z)TestWrapNumbers.test_changing_keys_w_wrapcCsbddddd}|t|d||t|d|ddddd}t|d}||dd d dS) N) i,#Rȷ) ir"itUiirrrr) 6r i$iNrri) iU ii"rii4iii\)nvme0n1Z nvme0n1p1Z nvme0n1p2Z nvme0n1p3r) r rrrrrrrrr#ri)rBr )r*doutr+r+r,test_real_datas zTestWrapNumbers.test_real_datacCsbdtdddi}t|dt}||dd|i||ddii||ddiidS)NrrVrrr`r"rr cache_inforBr*rcacher+r+r,test_cache_first_call,s  z%TestWrapNumbers.test_cache_first_callcCsdtdddi}t|ddtdddi}t|dt}||dd|i||ddddddi||ddiidS) NrrVrrrr`)rr)rr`rr"r"r'r)r+r+r,test_cache_call_twice4s  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)Nrr rrrr`r,r"r-csFt}|ddddddi|dddtdgiidS) Nr`rrr r,r"rr-)r r(rBra)r*r)r+r,check_cache_infoQs z9TestWrapNumbers.test_cache_wrap..check_cache_infor rr )rr r(rBra)r*rr*r/r+r)r,test_cache_wrapAs>      zTestWrapNumbers.test_cache_wrapcCsdtdddi}t|dtdddtdddd}t|dt}||dd|i||ddddddi||d diidS) NrrVrrrrr`r,r"r'r)r+r+r,test_cache_changing_keyszs  z(TestWrapNumbers.test_cache_changing_keyscCs\dtdddi}t|dt|dtd|tiiiftdtddS)NrrVrz?!?)rr rrBr(rr+r+r,test_cache_clears    z TestWrapNumbers.test_cache_clear not supportedcCstrtstdttt}|D]}|d||d|q6tjt}|D]}|d|| d|qjtjt}| |iiifdS)Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters) r&Zdisk_io_countersZnet_io_countersunittestSkipTestr r(r1rr4rB)r*cachesr*r+r+r,test_cache_clear_public_apiss      z,TestWrapNumbers.test_cache_clear_public_apisN)rerfrgrrrrr rrrr&r+r.r0r1r2r4skipIfrr7r+r+r+r,rs  -  9  rzcan't locate scripts directoryc@seZdZdZeddZeddZddZe e dd d Z d d Z d dZ ddZddZe eore dddZddZddZddZe edddZe e dd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z e e! d.d/d0Z"d1d2Z#e e$ dd3d4Z%e e& dd5d6Z'e e( de e) d7d8d9Z*e e( de e) d7d:d;Z+drsrcr+r+r, assert_syntaxszTestScripts.assert_syntaxcCsVt|}ttD]>}|drdtj|d|kr|dtjt|qdS)NrZtest_rzno test defined for %r script) rpr:listdirrendswithrsplitextrxr)r*Zmethsr.r+r+r, test_coverages  zTestScripts.test_coveragez POSIX onlycCs`ttD]P\}}}|D]@}|drtj||}tjt|tj@s| d|qq dS)Nrz%r is not executable) r:walkrrKrrstatS_IXUSRST_MODErx)r*rootdirsfilesfilerr+r+r,test_executables  zTestScripts.test_executablecCs|ddS)Nz disk_usage.pyrBr)r+r+r,test_disk_usageszTestScripts.test_disk_usagecCs|ddS)Nzfree.pyrWr)r+r+r, test_freeszTestScripts.test_freecCs|ddS)Nz meminfo.pyrWr)r+r+r, test_meminfoszTestScripts.test_meminfocCs|dttdS)Nz procinfo.pyrBr2r:r;r)r+r+r, test_procinfoszTestScripts.test_procinfozno userscCs|ddS)Nzwho.pyrWr)r+r+r,test_whoszTestScripts.test_whocCs|ddS)Nzps.pyrWr)r+r+r,test_psszTestScripts.test_pscCs|ddS)Nz pstree.pyrWr)r+r+r, test_pstreeszTestScripts.test_pstreecCs|ddS)Nz netstat.pyrWr)r+r+r, test_netstatszTestScripts.test_netstatzQEMU user not supportedcCs|ddS)Nz ifconfig.pyrWr)r+r+r, test_ifconfigszTestScripts.test_ifconfigr3cCs|dttdS)Nzpmap.pyr[r)r+r+r, test_pmapszTestScripts.test_pmapcCs*dtjkrtd|ddS)NZussr3z procsmem.py)r&r(Zmemory_full_info_fieldsr4r5rBr)r+r+r, test_procsmems zTestScripts.test_procsmemcCs|ddS)Nz killall.pyrIr)r+r+r, test_killallszTestScripts.test_killallcCs|ddS)Nz nettop.pyrer)r+r+r, test_nettopszTestScripts.test_nettopcCs|ddS)Nztop.pyrer)r+r+r,test_top szTestScripts.test_topcCs|ddS)Nziotop.pyrer)r+r+r, test_iotop szTestScripts.test_iotopcCs,|dt}|tt|dS)Nzpidof.py)rBr&r(r.r1r2r:r;)r*outputr+r+r, test_pidofszTestScripts.test_pidofz WINDOWS onlycCs|ddS)Nzwinservices.pyrWr)r+r+r,test_winservicesszTestScripts.test_winservicescCs|ddS)Nzcpu_distribution.pyrer)r+r+r,test_cpu_distributionsz!TestScripts.test_cpu_distributioncCs tstd|ddS)Nzno temperaturesztemperatures.py)r&Zsensors_temperaturesr4r5rBr)r+r+r,test_temperaturess zTestScripts.test_temperaturescCs tstd|ddS)Nzno fanszfans.py)r&Z sensors_fansr4r5rBr)r+r+r, test_fans!s zTestScripts.test_fansz no batterycCs|ddS)Nz battery.pyrWr)r+r+r, test_battery'szTestScripts.test_batterycCs|ddS)Nz sensors.pyrWr)r+r+r, test_sensors,szTestScripts.test_sensorsN),rerfrgrvrrBrIrMr4r8rrVrXrYrZr\rr&Zusersr]r^r_r`rrarrbrdrfrgrhrirkrrlrmrrnrrorrrprqr+r+r+r,r9sP                    r9__main__) run_from_name)=rvrF collectionsrrr:rrrOrr4r&Z psutil.testsrrZpsutil._commonrrrrrr r r r Zpsutil._compatr rrrrrrrrrrrrrrrrrrr r!rhrr namedtuplerrr8rexistsr9reZpsutil.tests.runnerrsrr+r+r+r,s                               ,