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'dd…dkZ(Gdd„de ƒZ)e *d d!¡Z+Gd"d#„d#e ƒZ,e& -ej. /e$¡ d$¡Gd%d&„d&e ƒƒZ0e1d'kr dd(l2m3Z3e3e4ƒdS))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@sÀeZdZefdd„Zdd„Zefdd„Zefdd„Zefd d „Zefd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)S)*ÚTestMiscc CsÂt | ¡j¡}||ƒ}| d|¡| d|j|¡| dt| ¡ƒ| dd¡¡| d|¡| d|¡|  ¡|  ¡||ƒ}| d|¡| d|¡t j j tjd t t ¡¡d @t ¡}||ƒ}| d|j|¡| d |¡| d |¡WdQRXt j j tjd t t ¡¡d @t ¡}||ƒ}| d|j|¡| d |¡| d |¡WdQRXt j j tjd t t ¡¡d 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)ÚpsutilÚProcessZspawn_testprocÚpidÚassertInÚstrrÚreplaceÚ assertNotInZ terminateÚwaitrÚpatchÚobjectÚ ZombieProcessÚosÚgetpidÚ NoSuchProcessÚ AccessDenied)ÚselfÚfuncÚpÚr©r4úI/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_misc.pyÚtest_process__repr__=sB          zTestMisc.test_process__repr__cCs|jtddS)N)r1)r6r%)r0r4r4r5Útest_process__str__aszTestMisc.test_process__str__cCsN| tt d¡ƒd¡| ttjdddƒd¡| ttjdddƒd¡dS)NiAz7psutil.NoSuchProcess process no longer exists (pid=321)Úfoo)rzCpsutil.NoSuchProcess process no longer exists (pid=321, name='foo'))Úmsgzpsutil.NoSuchProcess foo)Ú assertEqualÚreprr!r.)r0r1r4r4r5Útest_no_such_process__repr__ds z%TestMisc.test_no_such_process__repr__cCsj| tt d¡ƒd¡| ttjdddƒd¡| ttjddddƒd¡| 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+)r0r1r4r4r5Útest_zombie_process__repr__ps z$TestMisc.test_zombie_process__repr__cCsN| tt d¡ƒd¡| ttjdddƒd¡| ttjdddƒd¡dS)NiAzpsutil.AccessDenied (pid=321)r8)rz)psutil.AccessDenied (pid=321, name='foo'))r9zpsutil.AccessDenied foo)r:r;r!r/)r0r1r4r4r5Útest_access_denied__repr__s z#TestMisc.test_access_denied__repr__cCsP| tt d¡ƒd¡| ttjdddƒd¡| ttjddddƒd¡dS) NiAz/psutil.TimeoutExpired timeout after 321 secondséo)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)r0r1r4r4r5Útest_timeout_expired__repr__Œs z%TestMisc.test_timeout_expired__repr__cCs>t ¡}t ¡}| ||¡d|_| ||¡| |d¡dS)N)rrr8)r!r"r:Z_identZassertNotEqual)r0Zp1Zp2r4r4r5Útest_process__eq__˜s   zTestMisc.test_process__eq__cCs(tt ¡t ¡gƒ}| t|ƒd¡dS)Nr=)Úsetr!r"r:Úlen)r0Úsr4r4r5Útest_process__hash__ szTestMisc.test_process__hash__c Cs°ttƒ}x†|D]~}|dkrq| d¡sy t|ƒWqtk rŠ|tjkr†tt|ƒ}|dkr`w|jdk r†d|j ¡kr†|  d|¡YqXqWxtjD]}|  ||¡q˜WdS)N)ZlongZtestsZtestÚPermissionErrorÚProcessLookupErrorÚ_Z deprecatedz%r not in psutil.__all__) Údirr!Ú startswithÚ __import__Ú ImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr$)r0Z dir_psutilrZfunr4r4r5Ú test__all__¤s"       zTestMisc.test__all__cCs$| d dd„tjDƒ¡tj¡dS)NÚ.cSsg|] }t|ƒ‘qSr4)r%)Ú.0Úxr4r4r5ú ¾sz)TestMisc.test_version..)r:Újoinr!Ú version_infoÚ __version__)r0r4r4r5Ú test_version½szTestMisc.test_versioncCs"t ¡}d|_| d| ¡¡dS)NÚ1r8)r!r"r8r'Úas_dict)r0r2r4r4r5Ú!test_process_as_dict_no_new_namesÁsz*TestMisc.test_process_as_dict_no_new_namescst‡fdd„ƒ}g‰x:tdƒD].}|ƒ}dif}| ||¡| tˆƒd¡qWx.foorr4r=)r=)Úbarrcréz foo docstring)rÚranger:rDÚ cache_clearrP)r0r8rVÚretZexpectedr4)rbr5Ú test_memoizeÇs.      zTestMisc.test_memoizecs G‡fdd„dƒ}|ƒ}g‰| ¡| ¡| tˆƒd¡g‰|j |¡| ¡| ¡| tˆƒd¡g‰|j |¡| ¡| ¡| tˆƒd¡dS)NcseZdZe‡fdd„ƒZdS)z1TestMisc.test_memoize_when_activated..Foocsˆ d¡dS)N)r_)r0)rbr4r5r8ísz5TestMisc.test_memoize_when_activated..Foo.fooN)Ú__name__Ú __module__Ú __qualname__rr8r4)rbr4r5ÚFooësrlrr=)r8r:rDZcache_activateZcache_deactivate)r0rlÚfr4)rbr5Útest_memoize_when_activatedês   z$TestMisc.test_memoize_when_activatedcCsØddlm}dd„}| |dƒ|dƒdi¡| |dƒ|dƒd|d ƒd i¡| |d ƒ|dƒd|d ƒd i¡| |d ƒ|dƒd|d ƒd i¡| |dƒ|dƒdi¡| |dƒ|dƒdi¡| |dƒ|dƒdi¡dS)Nr)Úparse_environ_blockcSstr | ¡S|S)N)rÚupper)rEr4r4r5Úksz,TestMisc.test_parse_environ_block..kza=1Úar\z a=1b=2ÚbÚ2za=1b=Úz a=1b=2c=3zxxxa=1z a=1=b=2za=1b=2)Úpsutil._commonror:)r0rorqr4r4r5Útest_parse_environ_blocks     z!TestMisc.test_parse_environ_blockc Cs>| tj¡tƒrút d¡}d|_t ¡tƒr6t‚WdQRXt ¡tjdtjd}tƒrdt‚|j snt‚WdQRXt ¡tjdtj d"}tƒrœt‚t ¡|j s®t‚WdQRXt ¡tjdtj d"}tƒrÜt‚t ¡|j sît‚WdQRXn@|  t ¡0t tj tj¡}z| d¡Wd| ¡XWdQRXdS)Nzpsutil._common.socketFzpsutil._common.socket.socket)r z!psutil._common.socket.socket.bind)z::1r)Z addCleanuprrfrr)Zhas_ipv6ÚAssertionErrorÚsocketÚerrorÚcalledZgaierrorÚ assertRaisesÚ ExceptionZAF_INET6Z SOCK_STREAMZbindÚclose)r0rEZsockr4r4r5Útest_supports_ipv6s8         zTestMisc.test_supports_ipv6c Csðddlm}tj t¡}||ƒs$t‚|tj |¡ƒr8t‚tj dt t j dƒd|  t ||¡WdQRXtj dt t jdƒd|  t ||¡WdQRXtj dt t jdƒd||ƒr¼t‚WdQRXtj ddd||ƒrât‚WdQRXdS) Nr)Ú isfile_strictzpsutil._common.os.statr8)r zpsutil._common.stat.S_ISREGF)Ú return_value)rvr€r,ÚpathÚabspathÚ__file__rxÚdirnamerr)ÚOSErrorÚerrnoZEPERMr|ZEACCESZENOENT)r0r€Z this_filer4r4r5Útest_isfile_strict=s   zTestMisc.test_isfile_strictcs¬‡fdd„}|t ¡ ¡ƒ|t ¡ƒ|t ¡ƒ|t ¡ƒ|tjddƒ|t ¡ƒtrnt j   d¡snnt s~|t  ¡ƒ|t ¡ƒ|t t  ¡¡ƒ|t ¡ƒdS)Ncs<tdk rt t |¡¡t |¡}t |¡}ˆ ||¡dS)N)ÚjsonÚloadsÚdumpsÚpickler:)rgrrrs)r0r4r5ÚcheckOs   z*TestMisc.test_serialization..checkr)Zintervalz/proc/diskstats)r!r"r]Zvirtual_memoryZ swap_memoryZ cpu_timesZcpu_times_percentÚnet_io_countersrr,r‚Úexistsr Údisk_io_countersZdisk_partitionsZ disk_usageÚgetcwdÚusers)r0rr4)r0r5Útest_serializationNs       zTestMisc.test_serializationcCsTtj td¡}tr(tj |¡s(| d¡St|ƒ}| t |j ¡|  |  ¡t j¡dS)Nzsetup.pyzcan't find setup.py)r,r‚rXrr rÚskipTestrr|Ú SystemExitZsetupr:Z get_versionr!rZ)r0Zsetup_pyÚmoduler4r4r5Útest_setup_scriptes  zTestMisc.test_setup_scriptc Cs¸tjjtjdtjd}t ¡|js*t‚WdQRXtjjtjdt d¡d}t ¡|jsbt‚WdQRXtjjtjdt d.}|  t ¡t ¡WdQRX|jsªt‚WdQRXdS)NZ create_time)r r=) rr)r*r!r"r/r{rxr+Ú ValueErrorr|)r0Zmethr4r4r5Útest_ad_on_process_creationms      z$TestMisc.test_ad_on_process_creationc CsRtjddd:| t¡}ttƒWdQRX| dt|jƒ  ¡¡WdQRXdS)Nzpsutil._psplatform.cext.versionz0.0.0)rzversion conflict) rr)r|rMrr!r$r%Z exceptionrQ)r0Úcmr4r4r5Útest_sanity_version_check~s   z"TestMisc.test_sanity_version_checkN)rirjrkr;r6r7r<r>r?rArBrFrSr[r^rhrnrwrrˆr“r—r™r›r4r4r4r5r;s( $  ##rr8za b cc@sŽeZdZdd„ZeZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Ze e d¡dd„ƒZdS)ÚTestWrapNumberscCs t ¡dS)N)rrf)r0r4r4r5ÚsetUp‘szTestWrapNumbers.setUpcCs&dtdddƒi}| t|dƒ|¡dS)NÚdisk1éÚdisk_io)Úntr:r)r0Úinputr4r4r5Útest_first_call–szTestWrapNumbers.test_first_callcCs8dtdddƒi}| t|dƒ|¡| t|dƒ|¡dS)NržrŸr )r¡r:r)r0r¢r4r4r5Útest_input_hasnt_changedšsz(TestWrapNumbers.test_input_hasnt_changedcCsŒdtdddƒi}| t|dƒ|¡dtdddƒi}| t|dƒ|¡dtdddƒi}| t|dƒ|¡dtdddƒi}| t|dƒ|¡dS) NržrŸr é éééé)r¡r:r)r0r¢r4r4r5Útest_increase_but_no_wrapŸsz)TestWrapNumbers.test_increase_but_no_wrapcCs–dtdddƒi}| t|dƒ|¡dtdddƒi}| t|dƒdtdddƒi¡dtdddƒi}| t|dƒdtdddƒi¡dtdddƒi}| t|dƒdtdddƒi¡dtdddƒi}| t|dƒdtddd ƒi¡dtdddƒi}| t|dƒdtddd ƒi¡dtd ddƒi}| t|dƒdtd dd ƒi¡dtd ddƒi}| t|dƒdtddd ƒi¡dtd ddƒi}| t|dƒdtddd ƒi¡dS) Nržédr r¥énéZé¾r§éÒé2é–é()r¡r:r)r0r¢r4r4r5Ú test_wrap©s4        zTestWrapNumbers.test_wrapcCstdtdddƒi}| t|dƒ|¡tdddƒtdddƒdœ}| t|dƒ|¡dtdddƒi}| t|dƒ|¡dS)NržrŸr é)ržÚdisk2é)r¡r:r)r0r¢r4r4r5Útest_changing_keysÎs z"TestWrapNumbers.test_changing_keyscCs.tdddƒtdddƒdœ}| t|dƒ|¡tdddƒtdddƒdœ}| t|dƒtdddƒtdddƒdœ¡dtdddƒi}| t|dƒ|¡tdddƒtdddƒdœ}| t|dƒ|¡tdddƒtdddƒdœ}| t|dƒ|¡tdddƒtdddƒdœ}| t|dƒtdddƒtdddƒdœ¡dS)Nr°r«)ržrµr r¥r¬rž)r¡r:r)r0r¢r4r4r5Útest_changing_keys_w_wrapÚs*         z)TestWrapNumbers.test_changing_keys_w_wrapcCsbdddddœ}| t|dƒ|¡| t|dƒ|¡dddddœ}t|dƒ}| |dd d ¡dS) N) i,iüi€i#iRiÃii§äiÈ·) i“ritUiirrrr¶) é6r¹i$iÐNrdér©i·é) iU i»i"r±iÜi4iãiŽi\)Únvme0n1Z nvme0n1p1Z nvme0n1p2Z nvme0n1p3r ) r«iüi€i#iRiÃii§äiÈ·r¼ri)r:r)r0ÚdÚoutr4r4r5Útest_real_dataøs zTestWrapNumbers.test_real_datacCsbdtdddƒi}t|dƒt ¡}| |dd|i¡| |ddii¡| |ddii¡dS)NržrŸr rr=r)r¡rÚ cache_infor:)r0r¢Úcacher4r4r5Útest_cache_first_call s  z%TestWrapNumbers.test_cache_first_callcCs„dtdddƒi}t|dƒdtdddƒi}t|dƒt ¡}| |dd|i¡| |ddddddœi¡| |ddii¡dS) NržrŸr r¥rr=))ržr)ržr=)ržrr)r¡rrÀr:)r0r¢rÁr4r4r5Útest_cache_call_twices  z%TestWrapNumbers.test_cache_call_twicecs‚dtdddƒi}t|dƒdtdddƒi}t|dƒt ¡}ˆ |dd|i¡ˆ |ddddddœi¡ˆ |dddtd gƒii¡‡fd d „}dtdddƒi}t|dƒt ¡}ˆ |dd|i¡|ƒdtddd ƒi}t|dƒt ¡}ˆ |dd|i¡|ƒdtddd ƒi}t|dƒt ¡}ˆ |dd|i¡ˆ |ddddddœi¡ˆ |dddtd gƒii¡dS)Nržr«r r¥rr=))ržr)ržr=)ržrr)ržrcsFt ¡}ˆ |ddddddœi¡ˆ |dddtdgƒii¡dS) Nr=r rr«))ržr)ržr=)ržrrrž)ržr)rrÀr:rC)rÁ)r0r4r5Úassert_,s  z0TestWrapNumbers.test_cache_wrap..assert_r­r§r®)r¡rrÀr:rC)r0r¢rÁrÄr4)r0r5Útest_cache_wraps:      zTestWrapNumbers.test_cache_wrapcCsŽdtdddƒi}t|dƒtdddƒtdddƒdœ}t|dƒt ¡}| |dd|i¡| |ddddddœi¡| |d dii¡dS) NržrŸr r´)ržrµrr=))ržr)ržr=)ržrr)r¡rrÀr:)r0r¢rÁr4r4r5Útest_cache_changing_keysMs   z(TestWrapNumbers.test_cache_changing_keyscCs\dtdddƒi}t|dƒt|dƒt d¡| t ¡iiif¡t d¡t d¡dS)NržrŸr z?!?)r¡rrfr:rÀ)r0r¢r4r4r5Útest_cache_clearZs    z TestWrapNumbers.test_cache_clearz not supportedcCs¸t ¡rt ¡s| d¡St ¡t ¡t ¡}x$|D]}| d|¡| d|¡q8Wtj ¡t ¡}x$|D]}| d|¡| d|¡qpWtj ¡t ¡}|  |iiif¡dS)Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters) r!rrŽr”rrÀr$rfr'r:)r0ZcachesrÁr4r4r5Útest_cache_clear_public_apiscs        z,TestWrapNumbers.test_cache_clear_public_apisN)rirjrkrZtearDownr£r¤rªr³r·r¸r¿rÂrÃrÅrÆrÇrÚskipIfrrÈr4r4r4r5rœs %  0  rœzcan't locate scripts directoryc@s~eZdZdZedd„ƒZed}| d¡rdtj |¡d|kr| dtj t|¡¡qWdS)Nz.pyZtest_rzno test defined for %r script) rJr,ÚlistdirrÚendswithr‚ÚsplitextrRrX)r0Zmethsrr4r4r5Ú test_coveragežs  zTestScripts.test_coveragez POSIX onlycCsTxNt t¡D]@}| d¡r tj t|¡}tjt |¡tj@s |  d|¡q WdS)Nz.pyz%r is not executable) r,rÚrrÛr‚rXÚstatÚS_IXUSRÚST_MODErR)r0rr‚r4r4r5Útest_executable¨s  zTestScripts.test_executablecCs| d¡dS)Nz disk_usage.py)rÑ)r0r4r4r5Útest_disk_usage°szTestScripts.test_disk_usagecCs| d¡dS)Nzfree.py)rÑ)r0r4r4r5Ú test_free³szTestScripts.test_freecCs| d¡dS)Nz meminfo.py)rÑ)r0r4r4r5Ú test_meminfo¶szTestScripts.test_meminfocCs| dtt ¡ƒ¡dS)Nz procinfo.py)rÑr%r,r-)r0r4r4r5Ú test_procinfo¹szTestScripts.test_procinfozno userscCs| d¡dS)Nzwho.py)rÑ)r0r4r4r5Útest_who¼szTestScripts.test_whocCs| d¡dS)Nzps.py)rÑ)r0r4r4r5Útest_psÀszTestScripts.test_pscCs| d¡dS)Nz pstree.py)rÑ)r0r4r4r5Ú test_pstreeÃszTestScripts.test_pstreecCs| d¡dS)Nz netstat.py)rÑ)r0r4r4r5Ú test_netstatÆszTestScripts.test_netstatcCs| d¡dS)Nz ifconfig.py)rÑ)r0r4r4r5Ú test_ifconfigÉszTestScripts.test_ifconfigz not supportedcCs| dtt ¡ƒ¡dS)Nzpmap.py)rÑr%r,r-)r0r4r4r5Ú test_pmapÌszTestScripts.test_pmapcCs*dt ¡ ¡jkr| d¡‚| d¡dS)NZussz not supportedz procsmem.py)r!r"Zmemory_full_infoÚ_fieldsr”rÑ)r0r4r4r5Ú test_procsmemÐs zTestScripts.test_procsmemcCs| d¡dS)Nz killall.py)rÙ)r0r4r4r5Ú test_killallÕszTestScripts.test_killallcCs| d¡dS)Nz nettop.py)rÙ)r0r4r4r5Ú test_nettopØszTestScripts.test_nettopcCs| d¡dS)Nztop.py)rÙ)r0r4r4r5Útest_topÛszTestScripts.test_topcCs| d¡dS)Nziotop.py)rÙ)r0r4r4r5Ú test_iotopÞszTestScripts.test_iotopcCs,| dt ¡ ¡¡}| tt ¡ƒ|¡dS)Nzpidof.py)rÑr!r"rr$r%r,r-)r0Úoutputr4r4r5Ú test_pidofászTestScripts.test_pidofz WINDOWS onlycCs| d¡dS)Nzwinservices.py)rÑ)r0r4r4r5Útest_winservicesåszTestScripts.test_winservicescCs| d¡dS)Nzcpu_distribution.py)rÙ)r0r4r4r5Útest_cpu_distributionész!TestScripts.test_cpu_distributioncCs t ¡s| d¡| d¡dS)Nzno temperaturesztemperatures.py)r!Zsensors_temperaturesr”rÑ)r0r4r4r5Útest_temperaturesìs zTestScripts.test_temperaturescCs t ¡s| d¡| d¡dS)Nzno fanszfans.py)r!Z sensors_fansr”rÑ)r0r4r4r5Ú test_fansòs zTestScripts.test_fansz no batterycCs| d¡dS)Nz battery.py)rÑ)r0r4r4r5Ú test_batteryøszTestScripts.test_batterycCs| d¡dS)Nz sensors.py)rÑ)r0r4r4r5Ú test_sensorsýszTestScripts.test_sensors)N)+rirjrkrPÚ staticmethodrÑrÙrÝrrÉrrárârãrärår r!r’rærçrèrérêr rërírîrïrðrñrórrôrõrrörr÷rr rørùr4r4r4r5rÊ~s<     rÊÚ__main__)Ú run_from_name)5rPrÖÚ collectionsr‡r‰r,rŒryrÞÚsysr!rrrrvrrrrZpsutil._compatr Z psutil.testsr r r r rrrrrrrrrrrrrrYZ PYTHON_39rÚ namedtupler¡rœrÉr‚rrÊriZpsutil.tests.runnerrür„r4r4r4r5Ú sd                         S p