3 ̪e@s"dZddlZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd lm Z dd lmZdd lmZdd lmZerdd lmZddZddZeje dGddde Zeje dGddde ZedkrddlmZeedS)zmacOS specific tests.N)MACOS)POSIX) HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)retry_on_failure)sh)spawn_testproc) terminate) getpagesizec Cs6t|}|jd}yt|Stk r0|SXdS)zmExpects a sysctl command with an argument and parse the result returning only the value of interest. N)r splitint ValueError)cmdlineoutresultrA/usr/local/lib64/python3.6/site-packages/psutil/tests/test_osx.pysysctls  rcCsJtd}x$|jdD]}||krPqWtdttjd|jdtS)z)Wrapper around 'vm_stat' cmdline utility.vm_stat zline not foundz\d+r)r rrrresearchgroupr )fieldrlinerrrr+s rz MACOS onlyc@s,eZdZeddZeddZddZdS) TestProcesscCstj|_dS)N)r pid)clsrrr setUpClass8szTestProcess.setUpClasscCst|jdS)N)r r)r rrr tearDownClass<szTestProcess.tearDownClasscCstd|j}|jddj}|jdd }|jdd }tj|jj}|j|t j dt j ||j|t j dt j |dS) Nzps -o lstart -p %sZSTARTED r 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@seZdZeddZddZddZeje j dkdd d Z d d Z ed dZ eddZeddZeddZeddZeddZddZeje dddZdS)TestSystemAPIscCsdd}xrtjddD]b}tj|j}||j\}}}}|j|j||j|j||j|j|t d|j|j |t dqWdS)NcSstd|j}|jd}|jd|jd}|jdd\}}}}|dkrRd}t|d}t|d}t|d}||||fS)Nz df -k "%s"rrnoner#i)r r)rpopr)pathrlinesrdevtotalusedfreerrrdfWs      z%TestSystemAPIs.test_disks..dfF)all)delta) r*Zdisk_partitions disk_usage mountpointr,devicer?assertAlmostEqualrArr@)r0rBpartusager>r?r@rArrr test_disksSs  zTestSystemAPIs.test_diskscCs td}|j|tjdddS)Nzsysctl hw.logicalcpuT)logical)rr,r* cpu_count)r0numrrrtest_cpu_count_logicalrsz%TestSystemAPIs.test_cpu_count_logicalcCs td}|j|tjdddS)Nzsysctl hw.physicalcpuF)rL)rr,r*rM)r0rNrrrtest_cpu_count_coresvsz#TestSystemAPIs.test_cpu_count_coresarm64zskipped due to #1892cCsZtj}|j|jddtd|j|jddtd|j|jddtddS)Nizsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r*Zcpu_freqr,currentrminmax)r0Zfreqrrr test_cpu_freq{szTestSystemAPIs.test_cpu_freqcCstd}|j|tjjdS)Nzsysctl hw.memsize)rr,r*virtual_memoryr?)r0Zsysctl_hwphymemrrrtest_vmem_totalszTestSystemAPIs.test_vmem_totalcCs&td}tjj}|j||tddS)NrA)rD)rr*rVrArHr)r0 vmstat_val psutil_valrrrtest_vmem_frees zTestSystemAPIs.test_vmem_freecCs&td}tjj}|j||tddS)Nactive)rD)rr*rVr[rHr)r0rXrYrrrtest_vmem_actives zTestSystemAPIs.test_vmem_activecCs&td}tjj}|j||tddS)Ninactive)rD)rr*rVr]rHr)r0rXrYrrrtest_vmem_inactives z!TestSystemAPIs.test_vmem_inactivecCs&td}tjj}|j||tddS)Nwired)rD)rr*rVr_rHr)r0rXrYrrrtest_vmem_wireds zTestSystemAPIs.test_vmem_wiredcCs&td}tjj}|j||tddS)NZPageins)rD)rr* swap_memorysinrHr)r0rXrYrrrtest_swapmem_sins zTestSystemAPIs.test_swapmem_sincCs&td}tjj}|j||tddS)NZPageout)rD)rr*rasoutrHr)r0rXrYrrrtest_swapmem_souts z TestSystemAPIs.test_swapmem_soutcCsxxrtjjD]b\}}ytd|}Wntk r:YqX|j|jd|k|d|j|jtt j d|dqWdS)Nz ifconfig %sRUNNING)msgz mtu (\d+)r) r*Z net_if_statsitemsr RuntimeErrorr,isupmturrfindall)r0nameZstatsrrrrtest_net_if_statssz TestSystemAPIs.test_net_if_statsz no batterycCs`td}tjd|jd}tjd|jd}|dk}tj}|j|j||j|jt |dS)Nz pmset -g battz(\d+)%r zNow drawing from '([^']+)'zAC Power) r rrrr*Zsensors_batteryr, power_pluggedpercentr)r0rrpZ drawing_fromroZ psutil_resultrrrtest_sensors_batterysz#TestSystemAPIs.test_sensors_batteryN)r4r5r6rrKrOrPunittestskipIfplatformmachinerUrWrZr\r^r`rcrernrrqrrrrr8Nsr8__main__) run_from_name)__doc__rtrr-rrr*rrZ psutil.testsrrrrrr r r Zpsutil._psutil_posixr rrrsrr8r4Zpsutil.tests.runnerrw__file__rrrrs6