U |f@s"dZddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd lm Z dd lmZdd lmZdd lmZerdd lmZddZddZee dGddde Zee dGddde ZedkrddlmZeedS)zmacOS specific tests.N)MACOS)POSIX) HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)retry_on_failure)sh)spawn_testproc) terminate) getpagesizecCs<t|}|d}z t|WStk r6|YSXdS)zmExpects a sysctl command with an argument and parse the result returning only the value of interest. N)r splitint ValueError)ZcmdlineoutresultrH/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_osx.pysysctls   rcCsHtd}|dD]}||krq,qtdttd|dtS)z)Wrapper around 'vm_stat' cmdline utility.vm_stat zline not foundz\d+r)r rrrresearchgroupr )fieldrlinerrrr+s rz MACOS onlyc@s,eZdZeddZeddZddZdS) TestProcesscCstj|_dSN)r pidclsrrr setUpClass8szTestProcess.setUpClasscCst|jdSr)r rr rrr tearDownClass<szTestProcess.tearDownClassc Cstd|j}|dd}|dd}|dd}t|j}||t dt |||t dt |dS) Nzps -o lstart -p %sZSTARTED z%H:%M:%Sz%Y) r rreplacestriprpsutilProcessZ create_time assertEqualtimestrftime localtime)selfoutputZstart_psZhhmmssyearZ start_psutilrrrtest_process_create_time@sz$TestProcess.test_process_create_timeN)__name__ __module__ __qualname__ classmethodr"r#r3rrrrr6s   rc@seZdZeddZddZddZee o8e dkdd d Z d d Z ed dZeddZeddZeddZeddZeddZddZee dddZdS)TestSystemAPIscCs|dd}tjddD]b}t|j}||j\}}}}||j|||j||j|j|t d|j|j |t dqdS)NcSstd|}|d}|d|d}|dd\}}}}|dkrRd}t|d}t|d}t|d}||||fS)Nz df -k "%s"rrnoner$i)r r)rpopr)pathrlinesrdevtotalusedfreerrrdfWs      z%TestSystemAPIs.test_disks..dfF)alldelta) r*Zdisk_partitions disk_usageZ mountpointr,Zdevicer?assertAlmostEqualrArr@)r0rBpartusager>r?r@rArrr test_disksSs   zTestSystemAPIs.test_diskscCs td}||tjdddS)Nzsysctl hw.logicalcpuTZlogicalrr,r* cpu_countr0numrrrtest_cpu_count_logicalrsz%TestSystemAPIs.test_cpu_count_logicalcCs td}||tjdddS)Nzsysctl hw.physicalcpuFrKrLrNrrrtest_cpu_count_coresvsz#TestSystemAPIs.test_cpu_count_coresarm64zskipped due to #1892cCsZt}||jddtd||jddtd||jddtddS)Nizsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r*Zcpu_freqr,currentrminmax)r0freqrrr test_cpu_freq{s   zTestSystemAPIs.test_cpu_freqcCstd}||tjdS)Nzsysctl hw.memsize)rr,r*virtual_memoryr?)r0Zsysctl_hwphymemrrrtest_vmem_totalszTestSystemAPIs.test_vmem_totalcCs&td}tj}|j||tddS)NrArD)rr*rXrArGrr0Z vmstat_valZ psutil_valrrrtest_vmem_frees zTestSystemAPIs.test_vmem_freecCs&td}tj}|j||tddS)NactiverD)rr*rXr\rGrrZrrrtest_vmem_actives zTestSystemAPIs.test_vmem_activecCs&td}tj}|j||tddS)NinactiverD)rr*rXr^rGrrZrrrtest_vmem_inactives z!TestSystemAPIs.test_vmem_inactivecCs&td}tj}|j||tddS)NwiredrD)rr*rXr`rGrrZrrrtest_vmem_wireds zTestSystemAPIs.test_vmem_wiredcCs&td}tj}|j||tddS)NZPageinsrD)rr* swap_memorysinrGrrZrrrtest_swapmem_sins zTestSystemAPIs.test_swapmem_sincCs&td}tj}|j||tddS)NZPageoutrD)rr*rbZsoutrGrrZrrrtest_swapmem_souts z TestSystemAPIs.test_swapmem_soutc CsttD]b\}}ztd|}Wntk r8Yq X|j|jd|k|d||jtt d|dq dS)Nz ifconfig %sRUNNING)msgz mtu (\d+)r) r*Z net_if_statsitemsr RuntimeErrorr,ZisupZmturrfindall)r0namestatsrrrrtest_net_if_statssz TestSystemAPIs.test_net_if_statsz no batterycCs`td}td|d}td|d}|dk}t}||j|||jt |dS)Nz pmset -g battz(\d+)%r zNow drawing from '([^']+)'zAC Power) r rrrr*Zsensors_batteryr, power_pluggedpercentr)r0rroZ drawing_fromrnZ psutil_resultrrrtest_sensors_batterysz#TestSystemAPIs.test_sensors_batteryN)r4r5r6rrJrPrQunittestskipIfrplatformmachinerWrYr[r]r_rardrermrrprrrrr8Ns2         r8__main__) run_from_name)__doc__rsrr-rqr*rrZ psutil.testsrrrrrr r r Zpsutil._psutil_posixr rrrrrr8r4Zpsutil.tests.runnerrv__file__rrrrs6