0iN2dZddlZddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddl m Z ddl m Z dd l mZdd l mZdd l mZdd l mZdd l mZddl mZerMej(j*j-Zej0dk(xrej2dZndZdZdZdZej:j=e dGddeZej:j=e dGddeZ ej:j=e dGddeZ!ej:j=e dGddeZ"ej:j=e dGd d!eZ#y)"z$Tests specific to all BSD platforms.N)BSD)FREEBSD)NETBSD)OPENBSD) HAS_BATTERY)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh) spawn_subproc) terminatemuseFctd|z}tr||jddzd}n#tstr||jddzd} t |S#t $r|cYSwxYw)zmExpects a sysctl command with an argument and parse the result returning only the value of interest. zsysctl z: N=)r rfindrrint ValueError)cmdlineresults F/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_bsd.pysysctlr)st G# $F D)A-/0 F C(1,./6{  s A A*)A*ctd}|jdD]}|j|sn tdt |jdS)z+Thin wrapper around 'muse' cmdline utility.r zline not foundr)r split startswithrr)fieldoutlines rrr8sO V*C $ ??5 !  )** tzz|A zBSD onlyreasonceZdZdZedZedZejje ddZ dZ ejje jd d d Zejje jd d ejje d d Zejje jd  ddZy) BSDTestCasez)Generic tests common to all BSD variants.c6tj|_yNr pidclss r setUpClasszBSDTestCase.setUpClassL/%%r"c.t|jyr(rr*r+s r tearDownClasszBSDTestCase.tearDownClassP#''r"z -o lstart doesn't work on NETBSDr#c.td|j}|jddj}t j |jj }tjdtj|}||k(sJy)Nzps -o lstart -p STARTEDz%a %b %e %H:%M:%S %Y) r r*replacestrippsutilProcess create_timetimestrftime localtime)selfoutputstart_ps start_psutils rtest_process_create_timez$BSDTestCase.test_process_create_timeTsx&txxj12>>)R0668~~dhh/;;= }} "DNN<$@ <'''r"cd}tjdD]}tj|j}||j\}}}}|j|k(sJ|j |k(sJt |j|z dkDr'tjd|jd|cSt |j|z dkDstjd|jd|cSy)Nc@td|dj}|jd}|jd|jd}|jdd\}}}}|dk(rd}t |dz}t |dz}t |dz}||||fS) Nzdf -k ""rrnoner5)r r7rpopr)pathr linesr!devtotalusedfrees rdfz"BSDTestCase.test_disks..dfaswtfA&'--/CIIdOE IIaL99QrPpartusagerLrMrNrOs r test_diskszBSDTestCase.test_disks^s ***u5D%%doo6E%'%8 "Cd;;#% %%;;%' ''5::$%(88{{WUZZLdV#DEE5::$%(88{{WUZZLdV#DEE6r"rzsysctl cmd not availablecPtd}tjd|k(sJy)Nzhw.ncpuT)logical)rr8 cpu_countr>systs rtest_cpu_count_logicalz"BSDTestCase.test_cpu_count_logicalys'i -555r"zskipped on NETBSDc`td}|tjjk(sJy)Nz hw.physmem)rr8virtual_memoryrMr>nums rtest_virtual_memory_totalz%BSDTestCase.test_virtual_memory_totals+\"f++-33333r"ifconfigzifconfig cmd not availablec&tjjD]]\}} td|}|jd|vk(sJd|vs-|j t tjd|dk(r]Jy#t$rYlwxYw)Nz ifconfig RUNNINGmtuz mtu (\d+)r) r8 net_if_statsitemsr isuprirrefindall RuntimeError)r>namestatsr s rtest_net_if_statszBSDTestCase.test_net_if_statss"..0668KD% N9TF+,zzi3&6777C< 99BJJ|S,I!,L(MMMM9   sB BBN)__name__ __module__ __qualname____doc__ classmethodr-r1r markskipifrrBrZshutilwhichr`rerrr"rr&r&Hs53&& [['IJ(K(F6 [[ FLL ""+E66 [[ FLL ""+E [[*4 4 [[ FLL $$-I N Nr"r&z FREEBSD onlyceZdZedZedZedZdZdZ dZ edZ edZ y ) FreeBSDPsutilTestCasec6tj|_yr(r)r+s rr-z FreeBSDPsutilTestCase.setUpClassr.r"c.t|jyr(r0r+s rr1z#FreeBSDPsutilTestCase.tearDownClassr2r"ctd|j}tj|jj d}|j ddd}|r|j }|j }|dd\}}}} } |j } |d|| jk(sJt| | jk(sJ| jjds|d | jk(sJ|ryy) Nz procstat -v F)groupedrr-[ ) r r*r8r9 memory_mapsrrIaddrrrssrJr) r>r mapsrKr!fields_startstop_permsresmaps rtest_memory_mapsz&FreeBSDPsutilTestCase.test_memory_mapss<z*+~~dhh'33E3B $#99;DZZ\F*0!* 'AudFC((*CWAdV$0 00s8sww& &&88&&s+bzSXX---r"ctd|j}tj|jj |j ddj dk(sJy)Nz procstat -b rr)r r*r8r9exerr>r s rtest_exezFreeBSDPsutilTestCase.test_exesV<z*+~~dhh'++-41C1I1I1KB1OOOOr"ctd|j}djtj|jj dj|j ddj ddk(sJy)Nz procstat -c  rrr)r r*joinr8r9rrrs r test_cmdlinez"FreeBSDPsutilTestCase.test_cmdlinest<z*+xxtxx088:;sxx IIdOA  $ $ &qr *@    r"cBtd|j}|jddjdd\}}}}}}tj|j}|j } |j } | jt|k(sJ| jt|k(sJ| jt|k(sJ| jt|k(sJ| jt|k(sJ| jt|k(sJy)Nz procstat -s rrr) r r*rr8r9uidsgidsrealr effectivesaved) r>r euidruidsuidegidrgidsgidprrs rtest_uids_gidsz$FreeBSDPsutilTestCase.test_uids_gidss<z*+-0YYt_Q-?-E-E-G!-L*dD$d NN488 $vvxvvxyyCI%%%~~T***zzSY&&&yyCI%%%~~T***zzSY&&&r"c\g}td|j}tj|j}|j dD]}|j j }d|vrOt|j d}|jj}||k(sJ|jdtd|vsyt|j d}|jj}||k(sJ|jdt|dk7r tdy)N procstat -r rz voluntary contextrz involuntary contextr)couldn't find lines match in procstat out)r r*r8r9rlowerr7rnum_ctx_switches voluntaryappend involuntarylenror>testedr rr! pstat_value psutil_values rtest_ctx_switchesz'FreeBSDPsutilTestCase.test_ctx_switchess <z*+ NN488 $IIdOD::<%%'D#t+!$**,r"23  113== "l222 d#'4/!$**,r"23  113?? "l222 d#$ v;! JK K r"cg}td|j}tj|j}|j dD]}|j j }d|vrdtd|j dj ddz}|jj}||k(sJ|jdd|vstd|j dj ddz}|jj}||k(sJ|jdt|dk7r td y) Nrrz user timez0.r.z system timerr)r r*r8r9rrr7float cpu_timesuserrsystemrrors rtest_cpu_timesz$FreeBSDPsutilTestCase.test_cpu_timess-<z*+ NN488 $IIdOD::<%%'Dd"#D4::<+;+A+A#+Fr+J$JK  {{}11 "l222 d#$&#D4::<+;+A+A#+Fr+J$JK  {{}33 "l222 d#$ v;! JK K r"N) rsrtrurwr-r1r rrrrrrr|r"rr~r~s&& . .P 'LL&LLr"r~cNeZdZedZdZedZedZedZ edZ edZ edZ e jje d d Ze jje d ed Ze jje d ed Ze jje d edZe jje d edZe jje d edZe jje d edZdZdZdZedZdZdZdZdZe jje d dZ!e jje d dZ"e jje d dZ#dZ$y )!FreeBSDSystemTestCasectdjd}tjd|}|st d|d|ddD\}}}|||fS)Nz swapinfo -krz\s+zCan't parse swapinfo: c38K|]}t|dzyw)rHN)r).0rs r z7FreeBSDSystemTestCase.parse_swapinfo..s?JqSVd]JsrrF)r splitlinesrmrr)r?partsrMrNrOs rparse_swapinfoz$FreeBSDSystemTestCase.parse_swapinfosiM"--/3(5fX>? ?@E!AJ?tTdD  r"cd} tt|}t j j|k(sJd}t|}t|jdjdd}t|jdjdd}t j j|k(sJt j j|k(sJy#t$rtjdcYSwxYw)Nzdev.cpu.0.freqz#frequencies not supported by kernelzdev.cpu.0.freq_levelsr/r) rrror skipr8cpu_freqcurrentrmaxmin)r>sensor sysctl_resultmax_freqmin_freqs r!test_cpu_frequency_against_sysctlz7FreeBSDSystemTestCase.test_cpu_frequency_against_sysctls" Fv/M ((M999(v }**,Q/55c:1=>}**,R066s;A>? $$000 $$000 F;;DE E FsC++D  D ctdtz}ttjj |z t ksJy)Nzvm.stats.vm.v_active_count)rPAGESIZErVr8rbactiverr^s rtest_vmem_activez&FreeBSDSystemTestCase.test_vmem_actives:23h>6((*11D89OOOOr"ctdtz}ttjj |z t ksJy)Nzvm.stats.vm.v_wire_count)rrrVr8rbwiredrr^s rtest_vmem_wiredz%FreeBSDSystemTestCase.test_vmem_wired&s:01H<6((*00478;LLLLr"ctdtz}ttjj |z t ksJy)Nzvm.stats.vm.v_cache_count)rrrVr8rbcachedrr^s rtest_vmem_cachedz&FreeBSDSystemTestCase.test_vmem_cached+s:12X=6((*11D89s rtest_cpu_stats_ctx_switchesz1FreeBSDSystemTestCase.test_cpu_stats_ctx_switcheses>   "///01     r"ctttjjt dz dksJy)Nzvm.stats.sys.v_intrr)rVr8r interruptsrrs rtest_cpu_stats_interruptsz/FreeBSDSystemTestCase.test_cpu_stats_interruptsns6   "--7L0MM N   r"ctttjjt dz dksJy)Nzvm.stats.sys.v_softr)rVr8rsoft_interruptsrrs rtest_cpu_stats_soft_interruptsz4FreeBSDSystemTestCase.test_cpu_stats_soft_interruptsts>   "22./0     r"ctttjjt dz dksJy)Nzvm.stats.sys.v_syscalli@ )rVr8rsyscallsrrs rtest_cpu_stats_syscallsz-FreeBSDSystemTestCase.test_cpu_stats_syscalls}s8   "++f5M.NN O   r"c|j\}}}ttjj|z t ksJyr()rrVr8 swap_memoryrOr)r>_total_usedrOs rtest_swapmem_freez'FreeBSDSystemTestCase.test_swapmem_frees?"113t6%%',,t347HHHHr"c|j\}}}ttjj|z t ksJyr()rrVr8r rNr)r>r rN_frees rtest_swapmem_usedz'FreeBSDSystemTestCase.test_swapmem_useds?"113e6%%',,t347HHHHr"c|j\}}}ttjj|z t ksJyr()rrVr8r rMr)r>rMrrs rtest_swapmem_totalz(FreeBSDSystemTestCase.test_swapmem_totals?"113ue6%%'--569JJJJr"ctd}||jddzd}|d|jd}t|}|tjk(sJy)Nzsysctl kern.boottimez sec = ,)rrrr8 boot_time)r>sbtimes rtest_boot_timez$FreeBSDSystemTestCase.test_boot_times\ ) * affY!#% & ms A((****r"z no batterycd}td}|jdDcic])}|jdd|jdd+}}tj}t |dj dd }|d }|j |k(sJ|d k(r |jtjk(sJy||j|k(sJycc}w) Ncrt|d\}}t|d\}}t|dt|dS)N<:02)divmodr)secsm_shs r secs2hoursz>FreeBSDSystemTestCase.test_sensors_battery..secs2hourss<4$EAr!R=DAq!fXQs1vbk* *r"z acpiconf -i 0r rrzRemaining capacity:%r5zRemaining time:unknown) r rr8sensors_batteryrr6percentsecsleftPOWER_TIME_UNLIMITED)r>r&r xrmetricsr+remaining_times rtest_sensors_batteryz*FreeBSDSystemTestCase.test_sensors_batterys + !?ByyO!!''$-"AGGDM"$55O((*f23;;CDE 12'))) Y &##v'B'BB BBg../>A AAPs.CcHtjjtdk(sJtjjtddk(k(sJtjj }|dkrtddk(sJy|tddzk(sJy)Nhw.acpi.battery.lifehw.acpi.aclinerrhw.acpi.battery.timerr)r8r*r+r power_pluggedr,)r>r,s r#test_sensors_battery_against_sysctlz9FreeBSDSystemTestCase.test_sensors_battery_against_sysctls%%'//6 "4    %%'55 # $ )   ))+44 a<01R7 77v&<=BB BBr"z has batteryctjt5tdtdtddddt j Jy#1swY xYw)Nr3r5r4)r raisesrorr8r*rs rtest_sensors_battery_no_batteryz5FreeBSDSystemTestCase.test_sensors_battery_no_batterysP ]]< ( ) * ) * # $)%%'/// ) (s "AA$ctjd}t|D]}d|d} tt t |dd}ttjd|j|z dksJd|d}tt t |dd}tjd|j|k(rJy#t $rtjdcYcSwxYw) NTzdev.cpu.z .temperaturerz$temperatures not supported by kernelcoretemprz.coretemp.tjmax) r8r]rangerrrror rrVsensors_temperaturesrhigh)r>num_cpuscpurrs r(test_sensors_temperatures_against_sysctlz>FreeBSDSystemTestCase.test_sensors_temperatures_against_sysctls ##D)?CuL1F K #E&."*=$> ? //1*=cBJJ#$   uO4FfVnSb&9 :;M++-j9#>CC ! !%#   K{{#IJJ Ks CC54C5N)%rsrtru staticmethodrrr rrrrrrr rxryMUSE_AVAILABLErrrrrrrrrrr rrrrrr1r7r:rBr|r"rrrs ! !1,NNPPMMNNLLOO  [[N*3GH4I4 [[N*3GHMIM [[N*3GHOIO [[N*3GHLIL [[N*3GHMIM [[N*3GHKIK [[N*3GHNIN     IIK + [[K =B>B" [[K = C> C [[ M:0;0r"rz OPENBSD onlyceZdZdZy)OpenBSDTestCasectd}tjj|d}tjjt j }||k(sJy)Nz kern.boottimez%a %b %d %H:%M:%S %Y)rdatetimestrptime fromtimestampr8r)r>rsys_bt psutil_bts rrzOpenBSDTestCase.test_boot_timesR ? #""++A/EF%%33F4D4D4FG """r"N)rsrtrurr|r"rrFrFs#r"rFz NETBSD onlycXeZdZedZdZdZdZdZdZ dZ dZ d Z d Z d Zy ) NetBSDTestCasectd5}|D]=}|j|st|jddzccdddS dddt d|#1swYxYw)Nz /proc/meminforrHz can't find )openrrrr)look_forfr!s r parse_meminfozNetBSDTestCase.parse_meminfosd / "a??8,tzz|A/$66# "#;xj122 # "sA& A&A&&A/chtjj|jdk(sJy)Nz MemTotal:)r8rbrMrSrs rtest_vmem_totalzNetBSDTestCase.test_vmem_totals*$$&,,0B0B;0OOOOr"cttjj|j dz t ksJy)NzMemFree:)rVr8rbrOrSrrs rrzNetBSDTestCase.test_vmem_frees; %%',,t/A/A*/MM N   r"cttjj|j dz t ksJy)NzBuffers:)rVr8rbrrSrrs rrz NetBSDTestCase.test_vmem_buffers sC %%'//$$Z01     r"cttjj|j dz t ksJy)Nz MemShared:)rVr8rbsharedrSrrs rtest_vmem_sharedzNetBSDTestCase.test_vmem_sharedsC %%'..$$\23     r"cttjj|j dz t ksJy)NzCached:)rVr8rbrrSrrs rrzNetBSDTestCase.test_vmem_cacheds; %%'..1C1CI1NN O   r"cttjj|j dz t ksJy)Nz SwapTotal:)rVr8r rMrSrrs rrz!NetBSDTestCase.test_swapmem_total&s; ""$**T-?-? -MM N   r"cttjj|j dz t ksJy)Nz SwapFree:)rVr8r rOrSrrs rrz NetBSDTestCase.test_swapmem_free,s; ""$))D,>,>{,KK L   r"c|tj}|j|j|jz k(sJyr()r8r rNrMrO)r>smems rrz NetBSDTestCase.test_swapmem_used2s/!!#yyDJJ2222r"c(tdd5}|D]1}|jdst|jd}n t d dddt t jjz dksJy#1swY9xYw)N /proc/statrbsintrrcouldn't find liner) rPrrrrrVr8rr)r>rRr!rs rrz(NetBSDTestCase.test_cpu_stats_interrupts8s , %??7+!$TZZ\!_!5J !!566 &6##%00:=>EEE& %B*BBc(tdd5}|D]1}|jdst|jd}n t d dddt t jjz dksJy#1swY9xYw)Nrarbsctxtrrcr) rPrrrrrVr8rr)r>rRr!rs rrz*NetBSDTestCase.test_cpu_stats_ctx_switchesBs , %??7+#&tzz|A#7L !!566 &6##%22\ABTIII& %rdN)rsrtrurCrSrUrrrZrrrrrrr|r"rrNrNsI33P      3 FJr"rN)$rvrHosrmrzr;r8rrrr psutil.testsrrr r r r r r _psplatformcext getpagesizergetuidr{rDrrrxryr&r~rrFrNr|r"rrls+ $*')&"!!&&224HRYY[A%>,&,,v*>NHN  GJ/MN.MN0MNjK7ULNUL8ULpK7iNi8ibK7#n#8#J}5RJ^RJ6RJr"