U Ã|ýfSã@sÀdZddlZddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddl m Z ddl m Z dd l mZdd l mZdd l mZdd l mZdd l mZddl mZerðddlmZeƒZe ¡dkoìedƒZndZdZdd„Zdd„Ze e d¡Gdd„deƒƒZe e d¡Gdd„deƒƒZe e d¡Gdd„deƒƒZe e d¡Gdd„deƒƒZe e d ¡Gd!d"„d"eƒƒZ e!d#kr¼dd$l"m#Z#e#e$ƒdS)%z$Tests specific to all BSD platforms.éN)ÚBSD)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)Ú HAS_BATTERY)ÚTOLERANCE_SYS_MEM)ÚPsutilTestCase)Úretry_on_failure)Úsh)Úspawn_testproc)Ú terminate)Úwhich)Ú getpagesizeÚmuseFcCsntd|ƒ}tr(|| d¡dd…}nts0trF|| d¡dd…}z t|ƒWStk rh|YSXdS)zmExpects a sysctl command with an argument and parse the result returning only the value of interest. zsysctl z: éNú=é)r rÚfindrrÚintÚ ValueError)ÚcmdlineÚresult©rúH/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_bsd.pyÚsysctl-s  rcCs>tdƒ}| d¡D]}| |¡rq.qtdƒ‚t| ¡dƒS)z+Thin wrapper around 'muse' cmdline utility.rÚ zline not foundr)r ÚsplitÚ startswithrr)ÚfieldÚoutÚlinerrrr<s  zBSD onlyc@sžeZdZdZedd„ƒZedd„ƒZe e d¡dd„ƒZ d d „Z e e d ƒ d ¡d d„ƒZ e e d ƒ d ¡e e d¡dd„ƒƒZe e dƒ d¡dd„ƒZdS)Ú BSDTestCasez)Generic tests common to all BSD variants.cCstƒj|_dS©N©r Úpid©ÚclsrrrÚ setUpClassPszBSDTestCase.setUpClasscCst|jƒdSr"©r r$r%rrrÚ tearDownClassTszBSDTestCase.tearDownClassz -o lstart doesn't work on NETBSDcCsPtd|jƒ}| dd¡ ¡}t |j¡ ¡}t dt  |¡¡}|  ||¡dS)Nzps -o lstart -p %sZSTARTEDÚz%a %b %e %H:%M:%S %Y) r r$ÚreplaceÚstripÚpsutilÚProcessZ create_timeÚtimeÚstrftimeÚ localtimeÚ assertEqual)ÚselfÚoutputZstart_psZ start_psutilrrrÚtest_process_create_timeXsÿz$BSDTestCase.test_process_create_timecCs¤dd„}tjddD]Š}t |j¡}||jƒ\}}}}| |j|¡| |j|¡t|j|ƒdkrx|  d|j|f¡‚t|j |ƒdkr|  d|j |f¡‚qdS)NcSs‚td|ƒ ¡}| d¡}| d¡| d¡}| ¡dd…\}}}}|dkrRd}t|ƒd}t|ƒd}t|ƒd}||||fS)Nz df -k "%s"rréÚnoner*é)r r,rÚpopr)ÚpathrÚlinesr ÚdevÚtotalÚusedÚfreerrrÚdfes      z"BSDTestCase.test_disks..dfF)Úalli zpsutil=%s, df=%s) r-Zdisk_partitionsÚ disk_usageZ mountpointr2Zdevicer=Úabsr?Zfailr>)r3r@ÚpartÚusager<r=r>r?rrrÚ test_disksbs  zBSDTestCase.test_disksrzsysctl cmd not availablecCs tdƒ}| tjdd|¡dS)Nzhw.ncpuT)Zlogical)rr2r-Ú cpu_count©r3ZsystrrrÚtest_cpu_count_logical}sz"BSDTestCase.test_cpu_count_logicalzskipped on NETBSDcCstdƒ}| |t ¡j¡dS)Nz hw.physmem)rr2r-Úvirtual_memoryr=©r3ÚnumrrrÚtest_virtual_memory_total‚sz%BSDTestCase.test_virtual_memory_totalÚifconfigzifconfig cmd not availablec Cs|t ¡ ¡D]j\}}ztd|ƒ}Wntk r8Yq X|j|jd|k|dd|kr | |jtt   d|¡dƒ¡q dS)Nz ifconfig %sÚRUNNING)ÚmsgÚmtuz mtu (\d+)r) r-Z net_if_statsÚitemsr Ú RuntimeErrorr2ZisuprQrÚreÚfindall)r3ÚnameÚstatsrrrrÚtest_net_if_statsˆsÿzBSDTestCase.test_net_if_statsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú classmethodr'r)ÚunittestÚskipIfrr5rFr rIrMrXrrrrr!Ls       r!z FREEBSD onlyc@sfeZdZedd„ƒZedd„ƒZeƒdd„ƒZdd„Zd d „Z d d „Z eƒd d„ƒZ eƒdd„ƒZ dS)ÚFreeBSDPsutilTestCasecCstƒj|_dSr"r#r%rrrr'žsz FreeBSDPsutilTestCase.setUpClasscCst|jƒdSr"r(r%rrrr)¢sz#FreeBSDPsutilTestCase.tearDownClassc Cs²td|jƒ}t |j¡jdd}| d¡dd…}|r®| ¡}| ¡}|dd…\}}}} } | ¡} | d||f| j¡| t | ƒ| j ¡| j   d¡s4| |d | j ¡q4dS) Nzprocstat -v %sF)Úgroupedrréz%s-%sú[é ) r r$r-r.Z memory_mapsrr9r2ÚaddrrZrssr:r) r3rÚmapsr;r ÚfieldsÚ_ÚstartÚstopZ_permsÚresÚmaprrrÚtest_memory_maps¦s z&FreeBSDPsutilTestCase.test_memory_mapscCs<td|jƒ}| t |j¡ ¡| d¡d ¡d¡dS)Nzprocstat -b %srréÿÿÿÿ)r r$r2r-r.Úexer©r3rrrrÚtest_exeµs ÿzFreeBSDPsutilTestCase.test_execCsLtd|jƒ}| d t |j¡ ¡¡d | d¡d ¡dd…¡¡dS)Nzprocstat -c %sú rrr)r r$r2Újoinr-r.rrrprrrÚ test_cmdline»s þz"FreeBSDPsutilTestCase.test_cmdlinec CsÀtd|jƒ}| d¡d ¡dd…\}}}}}}t |j¡}| ¡} | ¡} | | jt |ƒ¡| | j t |ƒ¡| | j t |ƒ¡| | jt |ƒ¡| | j t |ƒ¡| | j t |ƒ¡dS)Nzprocstat -s %srrré) r r$rr-r.ÚuidsÚgidsr2ÚrealrZ effectiveZsaved) r3rZeuidZruidZsuidZegidZrgidZsgidÚprvrwrrrÚtest_uids_gidsÂs& z$FreeBSDPsutilTestCase.test_uids_gidscCsÄg}td|jƒ}t |j¡}| d¡D]‚}| ¡ ¡}d|krrt| ¡dƒ}| ¡j }|  ||¡|  d¡q(d|kr(t| ¡dƒ}| ¡j }|  ||¡|  d¡q(t |ƒdkrÀtdƒ‚dS)Núprocstat -r %srz voluntary contextrnz involuntary contextrú)couldn't find lines match in procstat out)r r$r-r.rÚlowerr,rZnum_ctx_switchesZ voluntaryr2ÚappendZ involuntaryÚlenrS©r3Ztestedrryr Z pstat_valueZ psutil_valuerrrÚtest_ctx_switchesÏs"         z'FreeBSDPsutilTestCase.test_ctx_switchescCsàg}td|jƒ}t |j¡}| d¡D]ž}| ¡ ¡}d|kr€td| ¡d d¡dƒ}| ¡j }|  ||¡|  d¡q(d|kr(td| ¡d d¡dƒ}| ¡j }|  ||¡|  d¡q(t |ƒdkrÜtd ƒ‚dS) Nr{rz user timez0.rnÚ.z system timerr|)r r$r-r.rr}r,ÚfloatZ cpu_timesÚuserr2r~ÚsystemrrSr€rrrÚtest_cpu_timesãs"         z$FreeBSDPsutilTestCase.test_cpu_timesN) rYrZr[r]r'r)r rmrqrtrzrr†rrrrr`œs     r`c@sÀeZdZedd„ƒZdd„Zeƒdd„ƒZeƒdd„ƒZeƒd d „ƒZ eƒd d „ƒZ eƒd d„ƒZ eƒdd„ƒZ e  e d¡dd„ƒZe  e d¡eƒdd„ƒƒZe  e d¡eƒdd„ƒƒZe  e d¡eƒdd„ƒƒZe  e d¡eƒdd„ƒƒZe  e d¡eƒdd„ƒƒZe  e d¡eƒdd„ƒƒZd d!„Zd"d#„Zd$d%„Zeƒd&d'„ƒZd(d)„Zd*d+„Zd,d-„Zd.d/„Ze  e d0¡d1d2„ƒZ e  e d0¡d3d4„ƒZ!e  ed5¡d6d7„ƒZ"d8d9„Z#d:S);ÚFreeBSDSystemTestCasecCsRtdƒ ¡d}t d|¡}|s,td|ƒ‚dd„|dd…Dƒ\}}}|||fS) Nz swapinfo -krnz\s+zCan't parse swapinfo: %scss|]}t|ƒdVqdS)r8N)r)Ú.0ryrrrÚ sz7FreeBSDSystemTestCase.parse_swapinfo..rr6)r Ú splitlinesrTrr)r4Úpartsr=r>r?rrrÚparse_swapinfoús   z$FreeBSDSystemTestCase.parse_swapinfocCs®d}ztt|ƒƒ}Wntk r2t d¡‚YnX| t ¡j|¡d}t|ƒ}t|  ¡d  d¡dƒ}t|  ¡d  d¡dƒ}| t ¡j |¡| t ¡j |¡dS)Nzdev.cpu.0.freqz#frequencies not supported by kernelzdev.cpu.0.freq_levelsrú/rn) rrrSr^ÚSkipTestr2r-Zcpu_freqÚcurrentrÚmaxÚmin)r3ÚsensorÚ sysctl_resultZmax_freqZmin_freqrrrÚ!test_cpu_frequency_against_sysctlsz7FreeBSDSystemTestCase.test_cpu_frequency_against_sysctlcCs&tdƒt}|jt ¡j|tddS)Nzvm.stats.vm.v_active_count©Údelta)rÚPAGESIZEÚassertAlmostEqualr-rJÚactiverrHrrrÚtest_vmem_actives  ÿz&FreeBSDSystemTestCase.test_vmem_activecCs&tdƒt}|jt ¡j|tddS)Nzvm.stats.vm.v_inactive_countr•)rr—r˜r-rJÚinactiverrHrrrÚtest_vmem_inactive$s  ÿz(FreeBSDSystemTestCase.test_vmem_inactivecCs&tdƒt}|jt ¡j|tddS)Nzvm.stats.vm.v_wire_countr•)rr—r˜r-rJÚwiredrrHrrrÚtest_vmem_wired+s  ÿz%FreeBSDSystemTestCase.test_vmem_wiredcCs&tdƒt}|jt ¡j|tddS)Nzvm.stats.vm.v_cache_countr•)rr—r˜r-rJÚcachedrrHrrrÚtest_vmem_cached2s  ÿz&FreeBSDSystemTestCase.test_vmem_cachedcCs&tdƒt}|jt ¡j|tddS)Nzvm.stats.vm.v_free_countr•)rr—r˜r-rJr?rrHrrrÚtest_vmem_free9s  ÿz$FreeBSDSystemTestCase.test_vmem_freecCs"tdƒ}|jt ¡j|tddS)Nz vfs.bufspacer•)rr˜r-rJÚbuffersrrHrrrÚtest_vmem_buffers@s ÿz'FreeBSDSystemTestCase.test_vmem_bufferszmuse not installedcCstdƒ}| t ¡j|¡dS)NZTotal)rr2r-rJr=rKrrrÚtest_muse_vmem_totalIsz*FreeBSDSystemTestCase.test_muse_vmem_totalcCs"tdƒ}|jt ¡j|tddS)NZActiver•)rr˜r-rJr™rrKrrrÚtest_muse_vmem_activeNs ÿz+FreeBSDSystemTestCase.test_muse_vmem_activecCs"tdƒ}|jt ¡j|tddS)NZInactiver•)rr˜r-rJr›rrKrrrÚtest_muse_vmem_inactiveVs ÿz-FreeBSDSystemTestCase.test_muse_vmem_inactivecCs"tdƒ}|jt ¡j|tddS)NZWiredr•)rr˜r-rJrrrKrrrÚtest_muse_vmem_wired^s ÿz*FreeBSDSystemTestCase.test_muse_vmem_wiredcCs"tdƒ}|jt ¡j|tddS)NÚCacher•)rr˜r-rJrŸrrKrrrÚtest_muse_vmem_cachedfs ÿz+FreeBSDSystemTestCase.test_muse_vmem_cachedcCs"tdƒ}|jt ¡j|tddS)NZFreer•)rr˜r-rJr?rrKrrrÚtest_muse_vmem_freens ÿz)FreeBSDSystemTestCase.test_muse_vmem_freecCs"tdƒ}|jt ¡j|tddS)NÚBufferr•)rr˜r-rJr¢rrKrrrÚtest_muse_vmem_buffersvs ÿz,FreeBSDSystemTestCase.test_muse_vmem_bufferscCs|jt ¡jtdƒdddS)Nzvm.stats.sys.v_swtchéèr•)r˜r-Ú cpu_statsÚ ctx_switchesr©r3rrrÚtest_cpu_stats_ctx_switches~s ýz1FreeBSDSystemTestCase.test_cpu_stats_ctx_switchescCs|jt ¡jtdƒdddS)Nzvm.stats.sys.v_intrr­r•)r˜r-r®Ú interruptsrr°rrrÚtest_cpu_stats_interrupts…s ýz/FreeBSDSystemTestCase.test_cpu_stats_interruptscCs|jt ¡jtdƒdddS)Nzvm.stats.sys.v_softr­r•)r˜r-r®Zsoft_interruptsrr°rrrÚtest_cpu_stats_soft_interruptsŒs ýz4FreeBSDSystemTestCase.test_cpu_stats_soft_interruptscCs|jt ¡jtdƒdddS)Nzvm.stats.sys.v_syscalli@ r•)r˜r-r®Zsyscallsrr°rrrÚtest_cpu_stats_syscalls“s ýz-FreeBSDSystemTestCase.test_cpu_stats_syscallscCs(| ¡\}}}|jt ¡j|tddS©Nr•)rŒr˜r-Ú swap_memoryr?r)r3Ú_totalÚ_usedr?rrrÚtest_swapmem_free¢s ÿz'FreeBSDSystemTestCase.test_swapmem_freecCs(| ¡\}}}|jt ¡j|tddSr¶)rŒr˜r-r·r>r)r3r¸r>Ú_freerrrÚtest_swapmem_used¨s ÿz'FreeBSDSystemTestCase.test_swapmem_usedcCs(| ¡\}}}|jt ¡j|tddSr¶)rŒr˜r-r·r=r)r3r=r¹r»rrrÚtest_swapmem_total®s ÿz(FreeBSDSystemTestCase.test_swapmem_totalcCsLtdƒ}|| d¡dd…}|d| d¡…}t|ƒ}| |t ¡¡dS)Nzsysctl kern.boottimez sec = éú,)rrrr2r-Ú boot_time)r3ÚsZbtimerrrÚtest_boot_time¶s z$FreeBSDSystemTestCase.test_boot_timez no batterycCsŠdd„}tdƒ}tdd„| d¡Dƒƒ}t ¡}t|d dd ¡ƒ}|d }| |j|¡|d krt| |j tj ¡n| ||j ƒ|¡dS) NcSs(t|dƒ\}}t|dƒ\}}d||fS)Né<z%d:%02d)Údivmod)ZsecsÚmZ_sÚhrrrÚ secs2hoursÁsz>FreeBSDSystemTestCase.test_sensors_battery..secs2hoursz acpiconf -i 0cSs(g|] }| d¡d| d¡df‘qS)ú rrn)r)rˆÚxrrrÚ Èsz>FreeBSDSystemTestCase.test_sensors_battery..rzRemaining capacity:ú%r*zRemaining time:Úunknown) r Údictrr-Úsensors_batteryrr+r2ÚpercentÚsecsleftZPOWER_TIME_UNLIMITED)r3rÇrrgZmetricsrÏZremaining_timerrrÚtest_sensors_battery¿sÿz*FreeBSDSystemTestCase.test_sensors_batterycCsl| t ¡jtdƒ¡| t ¡jtdƒdk¡t ¡j}|dkrT| tdƒd¡n| |tdƒd¡dS)Núhw.acpi.battery.lifeúhw.acpi.aclinerrúhw.acpi.battery.timernrÃ)r2r-rÎrÏrZ power_pluggedrÐ)r3rÐrrrÚ#test_sensors_battery_against_sysctlÓsÿ þ z9FreeBSDSystemTestCase.test_sensors_battery_against_sysctlz has batteryc Cs@| t¡tdƒtdƒtdƒW5QRX| t ¡¡dS)NrÒrÔrÓ)Ú assertRaisesrSrZ assertIsNoner-rÎr°rrrÚtest_sensors_battery_no_batteryâs  z5FreeBSDSystemTestCase.test_sensors_battery_no_batteryc Cs¸t d¡}t|ƒD] }d|}zttt|ƒdd…ƒƒ}Wntk rXt d¡‚YnX|j t  ¡d|j |ddd|}ttt|ƒdd…ƒƒ}|  t  ¡d|j |¡qdS) NTzdev.cpu.%s.temperaturernz$temperatures not supported by kernelZcoretemprdr•zdev.cpu.%s.coretemp.tjmax)r-rGÚrangerrƒrrSr^rŽr˜Zsensors_temperaturesrr2Úhigh)r3Znum_cpusÚcpur’r“rrrÚ(test_sensors_temperatures_against_sysctlïs$  ýþz>FreeBSDSystemTestCase.test_sensors_temperatures_against_sysctlN)$rYrZr[Ú staticmethodrŒr”r ršrœržr r¡r£r^r_ÚMUSE_AVAILABLEr¤r¥r¦r§r©rªr¬r±r³r´rµrºr¼r½rÂrrÑrÕr×rÛrrrrr‡øsf                            r‡z OPENBSD onlyc@seZdZdd„ZdS)ÚOpenBSDTestCasecCs6tdƒ}tj |d¡}tj t ¡¡}| ||¡dS)Nz kern.boottimez%a %b %d %H:%M:%S %Y)rÚdatetimeÚstrptimeÚ fromtimestampr-rÀr2)r3rÁZsys_btZ psutil_btrrrr szOpenBSDTestCase.test_boot_timeN)rYrZr[rÂrrrrrÞ srÞz NETBSD onlyc@sheZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„ZdS)ÚNetBSDTestCasec Cs\tdƒ>}|D]2}| |¡rt| ¡dƒdW5QR£SqW5QRXtd|ƒ‚dS)Nz /proc/meminforr8z can't find %s)Úopenrrrr)Zlook_forÚfr rrrÚ parse_meminfos   0zNetBSDTestCase.parse_meminfocCs| t ¡j| d¡¡dS)Nz MemTotal:)r2r-rJr=rår°rrrÚtest_vmem_total%sÿzNetBSDTestCase.test_vmem_totalcCs |jt ¡j| d¡tddS)NzMemFree:r•)r˜r-rJr?rårr°rrrr¡*s ýzNetBSDTestCase.test_vmem_freecCs |jt ¡j| d¡tddS)NzBuffers:r•)r˜r-rJr¢rårr°rrrr£1s ýz NetBSDTestCase.test_vmem_bufferscCs |jt ¡j| d¡tddS)Nz MemShared:r•)r˜r-rJZsharedrårr°rrrÚtest_vmem_shared8s ýzNetBSDTestCase.test_vmem_sharedcCs |jt ¡j| d¡tddS)NzCached:r•)r˜r-rJrŸrårr°rrrr ?s ýzNetBSDTestCase.test_vmem_cachedcCs |jt ¡j| d¡tddS)Nz SwapTotal:r•)r˜r-r·r=rårr°rrrr½Hs ýz!NetBSDTestCase.test_swapmem_totalcCs |jt ¡j| d¡tddS)Nz SwapFree:r•)r˜r-r·r?rårr°rrrrºOs ýz NetBSDTestCase.test_swapmem_freecCs"t ¡}| |j|j|j¡dSr")r-r·r2r>r=r?)r3Zsmemrrrr¼Vsz NetBSDTestCase.test_swapmem_usedc Cs`tddƒ6}|D]"}| d¡rt| ¡dƒ}q sR              O [   [