U =_P@sdZddlZddlZddlZddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z dd l m Z dd l mZdd l mZdd l mZdd l mZddl mZddl mZerddlmZeZedkredrdndZndZdZddZddZee dGddde Zee dGddde Zee dGddde Zee dGd d!d!e Zee d"Gd#d$d$e Z e!d%krdd&l"m#Z#e#e$dS)'z$Tests specific to all BSD platforms.N)BSD)FREEBSD)NETBSD)OPENBSD)spawn_testproc) HAS_BATTERY)PsutilTestCase)retry_on_failure)sh)TOLERANCE_SYS_MEM) terminate)unittest)which) getpagesizemuseTFcCsntd|}tr(||ddd}nts0trF||ddd}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 rfindrrint ValueError)cmdlineresultrH/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_bsd.pysysctl-s  rcCs>td}|dD]}||rq.qtdt|dS)z+Thin wrapper around 'muse' cmdline utility.r zline not foundr)r split startswithrr)Zfieldoutlinerrrr<s  zBSD onlyc@seZdZdZeddZeddZee dddZ d d Z ee d  d d dZ ee d  d ddZddZdS) BSDTestCasez)Generic tests common to all BSD variants.cCstj|_dSNrpidclsrrr setUpClassPszBSDTestCase.setUpClasscCst|jdSr"r r$r%rrr tearDownClassTszBSDTestCase.tearDownClassz -o lstart doesn't work on NETBSDcCsPtd|j}|dd}t|j}tdt |}| ||dS)Nzps -o lstart -p %sZSTARTEDz%a %b %e %H:%M:%S %Y) r r$replacestrippsutilProcessZ create_timetimestrftime localtime assertEqual)selfoutputZstart_psZ start_psutilrrrtest_process_create_timeXsz$BSDTestCase.test_process_create_timecCsdd}tjddD]}t|j}||j\}}}}||j|||j|t|j|dkrx| d|j|ft|j |dkr| d|j |fqdS)NcSstd|}|d}|d|d}|dd\}}}}|dkrRd}t|d}t|d}t|d}||||fS)Nz df -k "%s"rrZnoner*)r r,rpopr)pathrlinesr devtotalusedfreerrrdfds      z"BSDTestCase.test_disks..dfF)allizpsutil=%s, df=%s) r-Zdisk_partitionsZ disk_usageZ mountpointr2Zdevicer<absr>Zfailr=)r3r?partZusager;r<r=r>rrr test_disksas  zBSDTestCase.test_disksrzsysctl cmd not availablecCs td}|tjdd|dS)Nzhw.ncpuT)Zlogical)rr2r- cpu_countr3Zsystrrrtest_cpu_count_logical|sz"BSDTestCase.test_cpu_count_logicalcCstd}||tjdS)Nz hw.physmem)rr2r-virtual_memoryr<r3Znumrrrtest_virtual_memory_totalsz%BSDTestCase.test_virtual_memory_totalc Cs|tD]j\}}ztd|}Wntk r8Yq X|j|jd|k|dd|kr ||jtt d|dq dS)Nz ifconfig %sZRUNNING)msgmtuz mtu (\d+)r) r-Z net_if_statsitemsr RuntimeErrorr2ZisuprKrrefindall)r3nameZstatsrrrrtest_net_if_statsszBSDTestCase.test_net_if_statsN)__name__ __module__ __qualname____doc__ classmethodr'r)r skipIfrr5rCrrFrIrQrrrrr!Ls      r!z FREEBSD onlyc@sfeZdZeddZeddZeddZddZd d Z d d Z ed dZ eddZ dS)FreeBSDPsutilTestCasecCstj|_dSr"r#r%rrrr'sz FreeBSDPsutilTestCase.setUpClasscCst|jdSr"r(r%rrrr)sz#FreeBSDPsutilTestCase.tearDownClassc Cstd|j}t|jjdd}|ddd}|r|}|}|dd\}}}} } |} |d||f| j|t | | j | j ds4||d | j q4dS) Nzprocstat -v %sF)Zgroupedrrz%s-%s[ ) r r$r-r.Z memory_mapsrr8r2ZaddrrZrssr9r) r3rmapsr:r fields_startstopZpermsresmaprrrtest_memory_mapss z&FreeBSDPsutilTestCase.test_memory_mapscCs<td|j}|t|j|ddddS)Nzprocstat -b %srr)r r$r2r-r.Zexerr3rrrrtest_exeszFreeBSDPsutilTestCase.test_execCsLtd|j}|dt|jd|dddddS)Nzprocstat -c %s rrr)r r$r2joinr-r.rrrerrr test_cmdlinesz"FreeBSDPsutilTestCase.test_cmdlinec Cstd|j}|dddd\}}}}}}t|j}|} |} || jt ||| j t ||| j t ||| jt ||| j t ||| j t |dS)Nzprocstat -s %srrr) r r$rr-r.uidsgidsr2realrZ effectiveZsaved) r3rZeuidZruidZsuidZegidZrgidZsgidprkrlrrrtest_uids_gidss& z$FreeBSDPsutilTestCase.test_uids_gidscCsg}td|j}t|j}|dD]}|}d|krrt|d}|j }| ||| dq(d|kr(t|d}|j }| ||| dq(t |dkrtddS)Nprocstat -r %srz voluntary contextrdz involuntary contextr)couldn't find lines match in procstat out)r r$r-r.rlowerr,rZnum_ctx_switchesZ voluntaryr2appendZ involuntarylenrMr3Ztestedrrnr Z pstat_valueZ psutil_valuerrrtest_ctx_switchess"         z'FreeBSDPsutilTestCase.test_ctx_switchescCsg}td|j}t|j}|dD]}|}d|krtd|ddd}|j }| ||| dq(d|kr(td|ddd}|j }| ||| dq(t |dkrtd dS) Nrprz user timez0.rd.z system timerrq)r r$r-r.rrrr,floatZ cpu_timesuserr2rssystemrtrMrurrrtest_cpu_timess"         z$FreeBSDPsutilTestCase.test_cpu_timesN) rRrSrTrVr'r)r rcrfrirorvr{rrrrrXs     rXc@seZdZeddZddZeddZeddZed d Z ed d Z ed dZ eddZ e e dddZe e deddZe e deddZe e deddZe e deddZe e deddZe e deddZd d!Zd"d#Zd$d%Zed&d'Zd(d)Zd*d+Zd,d-Zd.d/Ze e d0d1d2Z e e d0d3d4Z!e ed5d6d7Z"d8d9Z#d:S);FreeBSDSystemTestCasecCsRtdd}td|}|s,td|dd|ddD\}}}|||fS) Nz swapinfo -krdz\s+zCan't parse swapinfo: %scss|]}t|dVqdS)r7N)r).0rnrrr sz7FreeBSDSystemTestCase.parse_swapinfo..rr6)r splitlinesrNrr)r4partsr<r=r>rrrparse_swapinfos   z$FreeBSDSystemTestCase.parse_swapinfocCsd}ztt|}Wntk r2|dYnX|tj|d}t|}t|ddd}t|ddd}|tj ||tj |dS)Nzdev.cpu.0.freqz#frequencies not supported by kernelzdev.cpu.0.freq_levelsr/rd) rrrMskipTestr2r-Zcpu_freqcurrentrmaxmin)r3sensor sysctl_resultZmax_freqZmin_freqrrr!test_cpu_frequency_against_sysctlsz7FreeBSDSystemTestCase.test_cpu_frequency_against_sysctlcCs&tdt}|jtj|tddS)Nzvm.stats.vm.v_active_countZdelta)rPAGESIZEassertAlmostEqualr-rGactiver rErrrtest_vmem_actives z&FreeBSDSystemTestCase.test_vmem_activecCs&tdt}|jtj|tddS)Nzvm.stats.vm.v_inactive_countr)rrrr-rGinactiver rErrrtest_vmem_inactives z(FreeBSDSystemTestCase.test_vmem_inactivecCs&tdt}|jtj|tddS)Nzvm.stats.vm.v_wire_countr)rrrr-rGwiredr rErrrtest_vmem_wired$s z%FreeBSDSystemTestCase.test_vmem_wiredcCs&tdt}|jtj|tddS)Nzvm.stats.vm.v_cache_countr)rrrr-rGcachedr rErrrtest_vmem_cached*s z&FreeBSDSystemTestCase.test_vmem_cachedcCs&tdt}|jtj|tddS)Nzvm.stats.vm.v_free_countr)rrrr-rGr>r rErrrtest_vmem_free0s z$FreeBSDSystemTestCase.test_vmem_freecCs"td}|jtj|tddS)Nz vfs.bufspacer)rrr-rGbuffersr rErrrtest_vmem_buffers6sz'FreeBSDSystemTestCase.test_vmem_bufferszmuse not installedcCstd}|tj|dS)NZTotal)rr2r-rGr<rHrrrtest_muse_vmem_total>sz*FreeBSDSystemTestCase.test_muse_vmem_totalcCs"td}|jtj|tddS)NZActiver)rrr-rGrr rHrrrtest_muse_vmem_activeCsz+FreeBSDSystemTestCase.test_muse_vmem_activecCs"td}|jtj|tddS)NZInactiver)rrr-rGrr rHrrrtest_muse_vmem_inactiveJsz-FreeBSDSystemTestCase.test_muse_vmem_inactivecCs"td}|jtj|tddS)NZWiredr)rrr-rGrr rHrrrtest_muse_vmem_wiredQsz*FreeBSDSystemTestCase.test_muse_vmem_wiredcCs"td}|jtj|tddS)NZCacher)rrr-rGrr rHrrrtest_muse_vmem_cachedXsz+FreeBSDSystemTestCase.test_muse_vmem_cachedcCs"td}|jtj|tddS)NZFreer)rrr-rGr>r rHrrrtest_muse_vmem_free_sz)FreeBSDSystemTestCase.test_muse_vmem_freecCs"td}|jtj|tddS)NZBufferr)rrr-rGrr rHrrrtest_muse_vmem_buffersfsz,FreeBSDSystemTestCase.test_muse_vmem_bufferscCs|jtjtddddS)Nzvm.stats.sys.v_swtchr)rr- cpu_stats ctx_switchesrr3rrrtest_cpu_stats_ctx_switchesms z1FreeBSDSystemTestCase.test_cpu_stats_ctx_switchescCs|jtjtddddS)Nzvm.stats.sys.v_intrrr)rr-r interruptsrrrrrtest_cpu_stats_interruptsqs z/FreeBSDSystemTestCase.test_cpu_stats_interruptscCs|jtjtddddS)Nzvm.stats.sys.v_softrr)rr-rZsoft_interruptsrrrrrtest_cpu_stats_soft_interruptsus z4FreeBSDSystemTestCase.test_cpu_stats_soft_interruptscCs|jtjtddddS)Nzvm.stats.sys.v_syscalli@ r)rr-rZsyscallsrrrrrtest_cpu_stats_syscallsys z-FreeBSDSystemTestCase.test_cpu_stats_syscallscCs(|\}}}|jtj|tddSNr)rrr- swap_memoryr>r r3r<r=r>rrrtest_swapmem_frees z'FreeBSDSystemTestCase.test_swapmem_freecCs(|\}}}|jtj|tddSr)rrr-rr=r rrrrtest_swapmem_useds z'FreeBSDSystemTestCase.test_swapmem_usedcCs(|\}}}|jtj|tddSr)rrr-rr<r rrrrtest_swapmem_totals z(FreeBSDSystemTestCase.test_swapmem_totalcCsLtd}||ddd}|d|d}t|}||tdS)Nzsysctl kern.boottimez sec = ,)rrrr2r- boot_time)r3sZbtimerrrtest_boot_times z$FreeBSDSystemTestCase.test_boot_timez no batterycCsdd}td}tdd|dD}t}t|ddd }|d }||j||d krt||j tj n|||j |dS) NcSs(t|d\}}t|d\}}d||fS)N<z%d:%02d)divmod)Zsecsmrhrrr secs2hourssz>FreeBSDSystemTestCase.test_sensors_battery..secs2hoursz acpiconf -i 0cSs(g|] }|dd|ddfqS) rrd)r)r}xrrr sz>FreeBSDSystemTestCase.test_sensors_battery..rzRemaining capacity:%r*zRemaining time:unknown) r dictrr-sensors_batteryrr+r2percentsecsleftZPOWER_TIME_UNLIMITED)r3rrr]ZmetricsrZremaining_timerrrtest_sensors_batterysz*FreeBSDSystemTestCase.test_sensors_batterycCsl|tjtd|tjtddktj}|dkrT|tddn||tdddS)Nhw.acpi.battery.lifehw.acpi.aclinerrhw.acpi.battery.timerdr)r2r-rrrZ power_pluggedr)r3rrrr#test_sensors_battery_against_sysctls    z9FreeBSDSystemTestCase.test_sensors_battery_against_sysctlz has batteryc Cs@|ttdtdtdW5QRX|tdS)Nrrr)Z assertRaisesrMrZ assertIsNoner-rrrrrtest_sensors_battery_no_batterys  z5FreeBSDSystemTestCase.test_sensors_battery_no_batteryc Cstd}t|D]}d|}zttt|dd}Wntk rX|dYnX|jt d|j |ddd|}ttt|dd}| t d|j |qdS) NTzdev.cpu.%s.temperaturerdz$temperatures not supported by kernelZcoretempr[rzdev.cpu.%s.coretemp.tjmax) r-rDrangerrxrrMrrZsensors_temperaturesrr2Zhigh)r3Znum_cpusZcpurrrrr(test_sensors_temperatures_against_sysctls$  z>FreeBSDSystemTestCase.test_sensors_temperatures_against_sysctlN)$rRrSrT staticmethodrrr rrrrrrr rWMUSE_AVAILABLErrrrrrrrrrrrrrrrrrrrrrrrr|sf                           r|z OPENBSD onlyc@seZdZddZdS)OpenBSDTestCasecCs6td}tj|d}tjt}|||dS)Nz kern.boottimez%a %b %d %H:%M:%S %Y)rdatetimestrptimeZ fromtimestampr-rr2)r3rZsys_btZ psutil_btrrrrszOpenBSDTestCase.test_boot_timeN)rRrSrTrrrrrrsrz NETBSD onlyc@s`eZdZeddZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS)NetBSDTestCasec Cs^tdd>}|D]2}||rt|ddW5QRSqW5QRXtd|dS)Nz /proc/meminfoZrtrr7z can't find %s)openrrrr)Zlook_forfr rrr parse_meminfos   0zNetBSDTestCase.parse_meminfocCs|tj|ddS)Nz MemTotal:)r2r-rGr<rrrrrtest_vmem_totalszNetBSDTestCase.test_vmem_totalcCs |jtj|dtddS)NzMemFree:r)rr-rGr>rr rrrrrs zNetBSDTestCase.test_vmem_freecCs |jtj|dtddS)NzBuffers:r)rr-rGrrr rrrrrs z NetBSDTestCase.test_vmem_bufferscCs |jtj|dtddS)Nz MemShared:r)rr-rGZsharedrr rrrrtest_vmem_shared s zNetBSDTestCase.test_vmem_sharedcCs |jtj|dtddS)Nz SwapTotal:r)rr-rr<rr rrrrrs z!NetBSDTestCase.test_swapmem_totalcCs |jtj|dtddS)Nz SwapFree:r)rr-rr>rr rrrrrs z NetBSDTestCase.test_swapmem_freecCs"t}||j|j|jdSr")r-rr2r=r<r>)r3Zsmemrrrrsz NetBSDTestCase.test_swapmem_usedc Cs`tdd6}|D]"}|drt|d}q sP               K Y r  B