B =_~@s dZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZd dZddZddZee dGdddeZee dGdddeZedkrddlmZeedS)zmacOS specific tests.N)MACOS) HAS_BATTERY)PsutilTestCase)retry_on_failure)sh)spawn_testproc) terminate)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)unittestcCs6t|}|d}yt|Stk r0|SXdS)zmExpects a sysctl command with an argument and parse the result returning only the value of interest. N)rsplitint ValueError)ZcmdlineoutresultrH/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_osx.pysysctls  rcCsVddlm}td}x$|dD]}||kr Pq Wtdttd|d|S)z)Wrapper around 'vm_stat' cmdline utility.r) getpagesizevm_stat zline not foundz\d+) Zpsutil._psutil_posixrrr rrresearchgroup)Zfieldrrlinerrrr%s rc Csddi}|}d}x@|r&|dds6|dddkrP||d7}|dd}qWt|}|}xD|D]\}}||krlPqlW|dkr|d}|}n td||ddi}x0t|ddD]\}}d|dd >||<qWt|||S) NZ customary) BKMGTPEZYrr .kzcan't interpret %r )isdigitfloatstripitemsupperr enumerater) sZSYMBOLSZinitnumZletternameZssetprefixirrr human2bytes3s&&    r4z MACOS onlyc@s,eZdZeddZeddZddZdS) TestProcesscCstj|_dS)N)rpid)clsrrr setUpClassPszTestProcess.setUpClasscCst|jdS)N)rr6)r7rrr tearDownClassTszTestProcess.tearDownClassc Cstd|j}|dd}|dd}|dd}t|j}||t dt |||t dt |dS) Nzps -o lstart -p %sZSTARTEDr% z%H:%M:%Sz%Y) rr6replacer+r psutilZProcessZ create_time assertEqualtimeZstrftimeZ localtime)selfoutputZstart_psZhhmmssZyearZ start_psutilrrrtest_process_create_timeXsz$TestProcess.test_process_create_timeN)__name__ __module__ __qualname__ classmethodr8r9rCrrrrr5Ms  r5c@seZdZeddZddZddZddZd d Zed d Z ed dZ eddZ eddZ eddZ eddZddZee dddZdS)TestSystemAPIscCsdd}xrtjddD]b}t|j}||j\}}}}||j|||j||j|j|t d|j|j |t dqWdS)NcSstd|}|d}|d|d}|dd\}}}}|dkrRd}t|d}t|d}t|d}||||fS)Nz df -k "%s"rrZnoner%i)rr+r popr)pathrlinesrdevtotalusedfreerrrdfos      z%TestSystemAPIs.test_disks..dfF)all)delta) r>Zdisk_partitionsZ disk_usageZ mountpointr?ZdevicerNassertAlmostEqualrPr rO)rArQpartZusagerMrNrOrPrrr test_disksks    zTestSystemAPIs.test_diskscCs td}||tjdddS)Nzsysctl hw.logicalcpuT)logical)rr?r> cpu_count)rAr0rrrtest_cpu_count_logicalsz%TestSystemAPIs.test_cpu_count_logicalcCs td}||tjdddS)Nzsysctl hw.physicalcpuF)rW)rr?r>rX)rAr0rrrtest_cpu_count_physicalsz&TestSystemAPIs.test_cpu_count_physicalcCsZt}||jddtd||jddtd||jddtddS)Nizsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r>Zcpu_freqr?Zcurrentrminmax)rAZfreqrrr test_cpu_freqszTestSystemAPIs.test_cpu_freqcCstd}||tjdS)Nzsysctl hw.memsize)rr?r>virtual_memoryrN)rAZsysctl_hwphymemrrrtest_vmem_totalszTestSystemAPIs.test_vmem_totalcCs&td}tj}|j||tddS)NrP)rS)rr>r^rPrTr )rA vmstat_val psutil_valrrrtest_vmem_frees zTestSystemAPIs.test_vmem_freecCs&td}tj}|j||tddS)Nactive)rS)rr>r^rcrTr )rAr`rarrrtest_vmem_actives zTestSystemAPIs.test_vmem_activecCs&td}tj}|j||tddS)Ninactive)rS)rr>r^rerTr )rAr`rarrrtest_vmem_inactives z!TestSystemAPIs.test_vmem_inactivecCs&td}tj}|j||tddS)Nwired)rS)rr>r^rgrTr )rAr`rarrrtest_vmem_wireds zTestSystemAPIs.test_vmem_wiredcCs"td}tj}|||dS)NZPageins)rr> swap_memoryZsinr?)rAr`rarrrtest_swapmem_sins zTestSystemAPIs.test_swapmem_sincCs"td}tj}|||dS)NZPageout)rr>riZsoutr?)rAr`rarrrtest_swapmem_souts z TestSystemAPIs.test_swapmem_soutc CsxxrtD]b\}}ytd|}Wntk r:YqX|j|jd|k|d||jtt d|dqWdS)Nz ifconfig %sZRUNNING)msgz mtu (\d+)r) r>Z net_if_statsr,r RuntimeErrorr?ZisupZmturrfindall)rAr1Zstatsrrrrtest_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) rrrrr>Zsensors_batteryr? power_pluggedpercentr)rArrqZ drawing_fromrpZ psutil_resultrrrtest_sensors_batterysz#TestSystemAPIs.test_sensors_batteryN)rDrErFrrVrYrZr]r_rbrdrfrhrjrkror skipIfrrrrrrrrHfs  rH__main__) run_from_name)__doc__rr@r>rZ psutil.testsrrrrrrr r r rrr4rsr5rHrDZpsutil.tests.runnerru__file__rrrrs0