3 JZ%@s<dZddlZddlZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZerejd ndZddZddZddZeje dGdddejZeje dGdddejZeje dGdddejZedkr8e edS)zOSX specific tests.N)OSX)create_zombie_proc)get_test_subprocess) HAS_BATTERY)MEMORY_TOLERANCE) reap_children)retry_before_failing)run_test_module_by_name)sh)unittest SC_PAGE_SIZEc 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)cmdlineoutresultr /usr/lib64/python3.6/test_osx.pysysctls  rcCsHtd}x$|jdD]}||krPqWtdttjd|jdtS)z)Wrapper around 'vm_stat' cmdline utility.vm_stat zline not foundz\d+r)r rrrresearchgroupPAGESIZE)Zfieldrlinerrrr(s rc Csddi}|}d }x@|r&|d d js6|d d dkrP||d 7}|d d}qWt|}|j}xD|jD]\}}||krlPqlW|dkr|d}|j}n td||d d i}x0t|d dD]\}}d |d d>||<qWt|||S)NZ customaryBKMGTPEZYrr .kzcan't interpret %r ) rrr r!r"r#r$r%r&)isdigitfloatstripitemsupperr enumerater) sZSYMBOLSZinitnumZletternameZssetprefixirrr human2bytes4s&&    r6zOSX onlyc@s,eZdZeddZeddZddZdS) TestProcesscCstj|_dS)N)rpid)clsrrr setUpClassQszTestProcess.setUpClasscCs tdS)N)r)r9rrr tearDownClassUszTestProcess.tearDownClasscCstd|j}|jddj}|jdd }|jdd }tj|jj}|j|t j dt j ||j|t j dt j |dS) Nzps -o lstart -p %sZSTARTEDr' r z%H:%M:%Sz%Y) r r8replacer-rpsutilProcess create_time assertEqualtimeZstrftimeZ localtime)selfoutputZstart_psZhhmmssZyearZ start_psutilrrrtest_process_create_timeYsz$TestProcess.test_process_create_timeN)__name__ __module__ __qualname__ classmethodr:r;rHrrrrr7Ns  r7c@seZdZeddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!S)"TestZombieProcessAPIscCst}tj||_dS)N)rrArBp)r9Zzpidrrrr:jsz TestZombieProcessAPIs.setUpClasscCstdddS)NT) recursive)r)r9rrrr;osz#TestZombieProcessAPIs.tearDownClasscCsJ|j|jjtj|jj|jj|jj|jj|jj dS)N) rDrNZstatusrAZ STATUS_ZOMBIEZppidZuidsZgidsZterminalrC)rFrrrtest_pidtask_infoss     z'TestZombieProcessAPIs.test_pidtask_infocCs|jtj|jjdS)N) assertRaisesrA ZombieProcessrNZexe)rFrrrtest_exe{szTestZombieProcessAPIs.test_execCs|jtj|jjdS)N)rQrArRrNr)rFrrr test_cmdline~sz"TestZombieProcessAPIs.test_cmdlinecCs|jtj|jjdS)N)rQrArRrNenviron)rFrrr test_environsz"TestZombieProcessAPIs.test_environcCs|jtj|jjdS)N)rQrArRrNcwd)rFrrrtest_cwdszTestZombieProcessAPIs.test_cwdcCs|jtj|jjdS)N)rQrArRrNZmemory_full_info)rFrrrtest_memory_full_infosz+TestZombieProcessAPIs.test_memory_full_infocCs|jtj|jjdS)N)rQrArRrNZ cpu_times)rFrrrtest_cpu_timessz$TestZombieProcessAPIs.test_cpu_timescCs|jtj|jjdS)N)rQrArRrNZnum_ctx_switches)rFrrrtest_num_ctx_switchessz+TestZombieProcessAPIs.test_num_ctx_switchescCs|jtj|jjdS)N)rQrArRrNZ num_threads)rFrrrtest_num_threadssz&TestZombieProcessAPIs.test_num_threadscCs|jtj|jjdS)N)rQrArRrNZ open_files)rFrrrtest_open_filessz%TestZombieProcessAPIs.test_open_filescCs|jtj|jjdS)N)rQrArRrNZ connections)rFrrrtest_connectionssz&TestZombieProcessAPIs.test_connectionscCs|jtj|jjdS)N)rQrArRrNZnum_fds)rFrrr test_num_fdssz"TestZombieProcessAPIs.test_num_fdscCs|jtjtjf|jjdS)N)rQrArRZ AccessDeniedrNZthreads)rFrrr test_threadssz"TestZombieProcessAPIs.test_threadscCs|jtj|jjdS)N)rQrArRrNZ memory_maps)rFrrrtest_memory_mapssz&TestZombieProcessAPIs.test_memory_mapsN)rIrJrKrLr:r;rPrSrTrVrXrYrZr[r\r]r^r_r`rarrrrrMgs   rMc@seZdZddZddZddZddZd d Zed d Z ed dZ eddZ eddZ eddZ eddZeddZddZeje dddZdS)TestSystemAPIscCsdd}xtjddD]}tj|j}||j\}}}}|j|j||j|j|t|j|d krx|j d|j|t|j |d kr|j d|j |qWdS) NcSstd|j}|jd}|jd|jd}|jdd\}}}}|dkrRd}t|d}t|d}t|d}||||fS)Nz df -k "%s"rrZnoner'i)r r-rpopr)pathrlinesrdevtotalusedfreerrrdfs      z%TestSystemAPIs.test_disks..dfF)allr*izpsutil=%s, df=%si(ii(i) rAZdisk_partitionsZ disk_usageZ mountpointrDZdevicerhabsrjZfailri)rFrkpartZusagergrhrirjrrr test_diskss  zTestSystemAPIs.test_diskscCs td}|j|tjdddS)Nzsysctl hw.logicalcpuT)logical)rrDrA cpu_count)rFr2rrrtest_cpu_count_logicalsz%TestSystemAPIs.test_cpu_count_logicalcCs td}|j|tjdddS)Nzsysctl hw.physicalcpuF)rp)rrDrArq)rFr2rrrtest_cpu_count_physicalsz&TestSystemAPIs.test_cpu_count_physicalcCsZtj}|j|jddtd|j|jddtd|j|jddtddS)Nizsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)rAZcpu_freqrDZcurrentrminmax)rFZfreqrrr test_cpu_freqszTestSystemAPIs.test_cpu_freqcCstd}|j|tjjdS)Nzsysctl hw.memsize)rrDrAvirtual_memoryrh)rFZsysctl_hwphymemrrrtest_vmem_totalszTestSystemAPIs.test_vmem_totalcCs&td}tjj}|j||tddS)Nrj)delta)rrArwrjassertAlmostEqualr)rF vmstat_val psutil_valrrrtest_vmem_frees zTestSystemAPIs.test_vmem_freecCs.tdtd}tjj}|j||tddS)Ninactiverj)ry)rrArwZ availablerzr)rFr{r|rrrtest_vmem_availables z"TestSystemAPIs.test_vmem_availablecCs&td}tjj}|j||tddS)Nactive)ry)rrArwrrzr)rFr{r|rrrtest_vmem_actives zTestSystemAPIs.test_vmem_activecCs&td}tjj}|j||tddS)Nr~)ry)rrArwr~rzr)rFr{r|rrrtest_vmem_inactives z!TestSystemAPIs.test_vmem_inactivecCs&td}tjj}|j||tddS)Nwired)ry)rrArwrrzr)rFr{r|rrrtest_vmem_wireds zTestSystemAPIs.test_vmem_wiredcCs"td}tjj}|j||dS)NZPageins)rrA swap_memoryZsinrD)rFr{r|rrrtest_swapmem_sins zTestSystemAPIs.test_swapmem_sincCs"td}tjj}|j||dS)NZPageout)rrArZsoutrD)rFr{r|rrrtest_swapmem_souts z TestSystemAPIs.test_swapmem_soutcCsxxrtjjD]b\}}ytd|}Wntk r:YqX|j|jd|k|d|j|jtt j d|dqWdS)Nz ifconfig %sZRUNNING)msgz mtu (\d+)r) rAZ net_if_statsr.r RuntimeErrorrDZisupZmturrfindall)rFr3Zstatsrrrrtest_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 rrrrAZsensors_batteryrD power_pluggedpercentr)rFrrZ drawing_fromrZ psutil_resultrrrtest_sensors_battery"sz#TestSystemAPIs.test_sensors_batteryN)rIrJrKrorrrsrvrxrr}rrrrrrrr skipIfrrrrrrrbs  rb__main__)__doc__osrrErArZ psutil.testsrrrrrrr r r sysconfrrrr6rZTestCaser7rMrbrI__file__rrrrs6              <