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Ú assertNotInÚ terminateÚwaitrÚpatchÚobjectÚ ZombieProcessÚosÚgetpidÚ NoSuchProcessÚ AccessDenied)ÚselfÚfuncÚpÚr©r5ú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)r2)r7r%)r1r5r5r6Ú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/)r1r2r5r5r6Ú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)r9)rzQpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo')é)rÚppidzYpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo', ppid=1))r:zpsutil.ZombieProcess foo)r;r<r!r,)r1r2r5r5r6Útest_zombie_process__repr__ps z$TestMisc.test_zombie_process__repr__cCsN| tt d¡ƒd¡| ttjdddƒd¡| ttjdddƒd¡dS)NiAzpsutil.AccessDenied (pid=321)r9)rz)psutil.AccessDenied (pid=321, name='foo'))r:zpsutil.AccessDenied foo)r;r<r!r0)r1r2r5r5r6Ú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)r9)r#rzEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r;r<r!ÚTimeoutExpired)r1r2r5r5r6Útest_timeout_expired__repr__Œs z%TestMisc.test_timeout_expired__repr__cCs>t ¡}t ¡}| ||¡d|_| ||¡| |d¡dS)N)rrr9)r!r"r;Ú_identZassertNotEqual)r1Úp1Úp2r5r5r6Útest_process__eq__˜s   zTestMisc.test_process__eq__cCs(tt ¡t ¡gƒ}| t|ƒd¡dS)Nr>)Úsetr!r"r;Úlen)r1Úsr5r5r6Ú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)ÚlongÚtestsÚtestÚPermissionErrorÚProcessLookupErrorÚ_Z deprecatedz%r not in psutil.__all__) Údirr!Ú startswithÚ __import__Ú ImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr$)r1Z dir_psutilrÚfunr5r5r6Ú test__all__¤s"       zTestMisc.test__all__cCs$| d dd„tjDƒ¡tj¡dS)NÚ.cSsg|] }t|ƒ‘qSr5)r%)Ú.0Úxr5r5r6ú ¾sz)TestMisc.test_version..)r;Újoinr!Ú version_infoÚ __version__)r1r5r5r6Ú test_version½szTestMisc.test_versioncCs"t ¡}d|_| d| ¡¡dS)NÚ1r9)r!r"r9r'Úas_dict)r1r3r5r5r6Ú!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.foorr5r>)r>)Úbarrmréz foo docstring)rÚranger;rJÚ cache_clearrY)r1r9r`ÚretZexpectedr5)rlr6Ú 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)ri)r1)rlr5r6r9ísz5TestMisc.test_memoize_when_activated..Foo.fooN)Ú__name__Ú __module__Ú __qualname__rr9r5)rlr5r6ÚFooësrvrr>)r9r;rJÚcache_activateÚcache_deactivate)r1rvÚfr5)rlr6Ú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)rKr5r5r6Úksz,TestMisc.test_parse_environ_block..kza=1Úarfz a=1b=2ÚbÚ2za=1b=Úz a=1b=2c=3zxxxa=1z a=1=b=2za=1b=2)Úpsutil._commonr{r;)r1r{r}r5r5r6Ú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 addCleanuprrprr*Úhas_ipv6ÚAssertionErrorÚsocketÚerrorÚcalledÚgaierrorÚ assertRaisesÚ ExceptionÚAF_INET6Ú SOCK_STREAMÚbindÚclose)r1rKÚsockr5r5r6Ú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.statr9)r zpsutil._common.stat.S_ISREGF)Ú return_value)r‚r’r-ÚpathÚabspathÚ__file__r…Údirnamerr*ÚOSErrorÚerrnoÚEPERMrŠÚEACCESÚENOENT)r1r’Z this_filer5r5r6Ú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;)rqr~r)r1r5r6ÚcheckOs   z*TestMisc.test_serialization..checkr)Úintervalz/proc/diskstats)r!r"rgZvirtual_memoryZ swap_memoryZ cpu_timesZcpu_times_percentÚnet_io_countersrr-r”Úexistsr Údisk_io_countersZdisk_partitionsÚ disk_usageÚgetcwdÚusers)r1r¢r5)r1r6Útest_serializationNs       zTestMisc.test_serializationcCsTtj td¡}tr(tj |¡s(| d¡St|ƒ}| t |j ¡|  |  ¡t j¡dS)Nzsetup.pyzcan't find setup.py)r-r”rbrr r¥ÚskipTestrrŠÚ SystemExitÚsetupr;Ú get_versionr!rd)r1Zsetup_pyÚmoduler5r5r6Ú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"r0rˆr…r,Ú ValueErrorrŠ)r1Úmethr5r5r6Ú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)r“zversion conflict) rr*rŠrVrr!r$r%Ú exceptionrZ)r1Úcmr5r5r6Útest_sanity_version_check~s   z"TestMisc.test_sanity_version_checkN)rsrtrur<r7r8r=r@rArDrHrLr]rerhrrrzrƒr‘rrªr°r³r¶r5r5r5r6r;s( $  ##rr9za 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)rrp)r1r5r5r6ÚsetUp‘szTestWrapNumbers.setUpcCs&dtdddƒi}| t|dƒ|¡dS)NÚdisk1éÚdisk_io)Úntr;r)r1Úinputr5r5r6Útest_first_call–szTestWrapNumbers.test_first_callcCs8dtdddƒi}| t|dƒ|¡| t|dƒ|¡dS)Nr¹rºr»)r¼r;r)r1r½r5r5r6Ú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)r1r½r5r5r6Ú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)r1r½r5r5r6Ú 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)r1r½r5r5r6Ú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)r1r½r5r5r6Ú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ÐNrné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)r1ÚdÚoutr5r5r6Ú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;)r1r½Úcacher5r5r6Ú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;)r1r½rÜr5r5r6Ú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;rI)rÜ)r1r5r6Úassert_,s  z0TestWrapNumbers.test_cache_wrap..assert_rÈrÂrÉ)r¼rrÛr;rI)r1r½rÜrßr5)r1r6Ú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;)r1r½rÜr5r5r6Ú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¼rrpr;rÛ)r1r½r5r5r6Ú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!r¦r¤r«rrÛr$rpr'r;)r1ZcachesrÜr5r5r6Útest_cache_clear_public_apiscs        z,TestWrapNumbers.test_cache_clear_public_apisN)rsrtrur¸ZtearDownr¾r¿rÅrÎrÒrÓrÚrÝrÞràrárârÚskipIfrrãr5r5r5r6r·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) rSr-ÚlistdirrÚendswithr”Úsplitextr[rb)r1Zmethsrr5r5r6Ú 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”rbÚstatÚS_IXUSRÚST_MODEr[)r1rr”r5r5r6Útest_executable¨s  zTestScripts.test_executablecCs| d¡dS)Nz disk_usage.py)rì)r1r5r5r6Útest_disk_usage°szTestScripts.test_disk_usagecCs| d¡dS)Nzfree.py)rì)r1r5r5r6Ú test_free³szTestScripts.test_freecCs| d¡dS)Nz meminfo.py)rì)r1r5r5r6Ú test_meminfo¶szTestScripts.test_meminfocCs| dtt ¡ƒ¡dS)Nz procinfo.py)rìr%r-r.)r1r5r5r6Ú test_procinfo¹szTestScripts.test_procinfozno userscCs| d¡dS)Nzwho.py)rì)r1r5r5r6Útest_who¼szTestScripts.test_whocCs| d¡dS)Nzps.py)rì)r1r5r5r6Útest_psÀszTestScripts.test_pscCs| d¡dS)Nz pstree.py)rì)r1r5r5r6Ú test_pstreeÃszTestScripts.test_pstreecCs| d¡dS)Nz netstat.py)rì)r1r5r5r6Ú test_netstatÆszTestScripts.test_netstatcCs| d¡dS)Nz ifconfig.py)rì)r1r5r5r6Ú test_ifconfigÉszTestScripts.test_ifconfigz not supportedcCs| dtt ¡ƒ¡dS)Nzpmap.py)rìr%r-r.)r1r5r5r6Ú test_pmapÌszTestScripts.test_pmapcCs*dt ¡ ¡jkr| d¡‚| d¡dS)NZussz not supportedz procsmem.py)r!r"Zmemory_full_infoÚ_fieldsr«rì)r1r5r5r6Ú test_procsmemÐs zTestScripts.test_procsmemcCs| d¡dS)Nz killall.py)rõ)r1r5r5r6Ú test_killallÕszTestScripts.test_killallcCs| d¡dS)Nz nettop.py)rõ)r1r5r5r6Ú test_nettopØszTestScripts.test_nettopcCs| d¡dS)Nztop.py)rõ)r1r5r5r6Útest_topÛszTestScripts.test_topcCs| d¡dS)Nziotop.py)rõ)r1r5r5r6Ú test_iotopÞszTestScripts.test_iotopcCs,| dt ¡ ¡¡}| tt ¡ƒ|¡dS)Nzpidof.py)rìr!r"rr$r%r-r.)r1Úoutputr5r5r6Ú test_pidofászTestScripts.test_pidofz WINDOWS onlycCs| d¡dS)Nzwinservices.py)rì)r1r5r5r6Útest_winservicesåszTestScripts.test_winservicescCs| d¡dS)Nzcpu_distribution.py)rõ)r1r5r5r6Útest_cpu_distributionész!TestScripts.test_cpu_distributioncCs t ¡s| d¡| d¡dS)Nzno temperaturesztemperatures.py)r!Zsensors_temperaturesr«rì)r1r5r5r6Útest_temperaturesìs zTestScripts.test_temperaturescCs t ¡s| d¡| d¡dS)Nzno fanszfans.py)r!Z sensors_fansr«rì)r1r5r5r6Ú test_fansòs zTestScripts.test_fansz no batterycCs| d¡dS)Nz battery.py)rì)r1r5r5r6Ú test_batteryøszTestScripts.test_batterycCs| d¡dS)Nz sensors.py)rì)r1r5r5r6Ú test_sensorsýszTestScripts.test_sensors)N)+rsrtrurYÚ staticmethodrìrõrùrrärrýrþrÿrrr r!r©rrrrrr rr r r r r rrrrrrrrrr rrr5r5r5r6rå~s<     råÚ__main__)Ú run_from_name)5rYròÚ collectionsr™ržr-r¡r†rúÚsysr!rrrr‚rrrrZpsutil._compatr Z psutil.testsr r r r rrrrrrrrrrrrrrcZ PYTHON_39rÚ namedtupler¼r·rär”r¥rårsZpsutil.tests.runnerrr–r5r5r5r6Ú sd                         S p