U =_~@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)unittestcCs<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)rsplitint ValueError)ZcmdlineoutresultrH/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_osx.pysysctls   rcCsTddlm}td}|dD]}||krq8qtdttd|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}|r$|dds4|dddkrN||d7}|dd}qt|}|}|D]\}}||krfqqf|dkr|d}|}n td||ddi}t|ddD]\}}d|dd >||<qt|||S) NZ customary) BKMGTPEZYrr .kzcan't interpret %r )isdigitfloatstripitemsupperr enumerater) sZSYMBOLSZinitnumZletternameZssetprefixirrr human2bytes3s*$    r4z MACOS onlyc@s,eZdZeddZeddZddZdS) TestProcesscCstj|_dSN)rpidclsrrr setUpClassPszTestProcess.setUpClasscCst|jdSr6)rr7r8rrr tearDownClassTszTestProcess.tearDownClassc Cstd|j}|dd}|dd}|dd}t|j}||t dt |||t dt |dS) Nzps -o lstart -p %sZSTARTEDr% z%H:%M:%Sz%Y) rr7replacer+r psutilZProcessZ create_time assertEqualtimestrftime localtime)selfoutputZstart_psZhhmmssZyearZ start_psutilrrrtest_process_create_timeXsz$TestProcess.test_process_create_timeN)__name__ __module__ __qualname__ classmethodr:r;rGrrrrr5Ms   r5c@seZdZeddZddZddZddZd d Zed d Z ed dZ eddZ eddZ eddZ eddZddZee 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"rrZnoner%i)rr+r popr)pathrlinesrdevtotalusedfreerrrdfos      z%TestSystemAPIs.test_disks..dfF)allZdelta) r@Zdisk_partitionsZ disk_usageZ mountpointrAZdevicerRassertAlmostEqualrTr rS)rErUpartZusagerQrRrSrTrrr test_disksks    zTestSystemAPIs.test_diskscCs td}||tjdddS)Nzsysctl hw.logicalcpuTZlogicalrrAr@ cpu_countrEr0rrrtest_cpu_count_logicalsz%TestSystemAPIs.test_cpu_count_logicalcCs td}||tjdddS)Nzsysctl hw.physicalcpuFr[r\r^rrrtest_cpu_count_physicalsz&TestSystemAPIs.test_cpu_count_physicalcCsZt}||jddtd||jddtd||jddtddS)Nizsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r@Zcpu_freqrAZcurrentrminmax)rEZfreqrrr test_cpu_freqs   zTestSystemAPIs.test_cpu_freqcCstd}||tjdS)Nzsysctl hw.memsize)rrAr@virtual_memoryrR)rEZsysctl_hwphymemrrrtest_vmem_totalszTestSystemAPIs.test_vmem_totalcCs&td}tj}|j||tddS)NrTrW)rr@rdrTrXr rEZ vmstat_valZ psutil_valrrrtest_vmem_frees zTestSystemAPIs.test_vmem_freecCs&td}tj}|j||tddS)NactiverW)rr@rdrhrXr rfrrrtest_vmem_actives zTestSystemAPIs.test_vmem_activecCs&td}tj}|j||tddS)NinactiverW)rr@rdrjrXr rfrrrtest_vmem_inactives z!TestSystemAPIs.test_vmem_inactivecCs&td}tj}|j||tddS)NwiredrW)rr@rdrlrXr rfrrrtest_vmem_wireds zTestSystemAPIs.test_vmem_wiredcCs"td}tj}|||dS)NZPageins)rr@ swap_memoryZsinrArfrrrtest_swapmem_sins zTestSystemAPIs.test_swapmem_sincCs"td}tj}|||dS)NZPageout)rr@rnZsoutrArfrrrtest_swapmem_souts z TestSystemAPIs.test_swapmem_soutc CsttD]b\}}ztd|}Wntk r8Yq X|j|jd|k|d||jtt d|dq dS)Nz ifconfig %sZRUNNING)msgz mtu (\d+)r) r@Z net_if_statsr,r RuntimeErrorrAZisupZmturrfindall)rEr1Zstatsrrrrtest_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_batteryrA power_pluggedpercentr)rErrvZ drawing_fromruZ psutil_resultrrrtest_sensors_batterysz#TestSystemAPIs.test_sensors_batteryN)rHrIrJrrZr_r`rcrergrirkrmrorprtr skipIfrrwrrrrrLfs*         rL__main__) run_from_name)__doc__rrBr@rZ psutil.testsrrrrrrr r r rrr4rxr5rLrHZpsutil.tests.runnerrz__file__rrrrs0