
    f                     t   d Z ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ erddlmZ d Zd Z ej*                  e d       G d de             Z ej*                  e d       G d de             Zedk(  rddlmZ  ee       yy)zmacOS specific tests.    N)MACOS)POSIX)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)retry_on_failure)sh)spawn_testproc)	terminate)getpagesizec                 x    t        |       }|j                         d   }	 t        |      S # t        $ r |cY S w xY w)zmExpects a sysctl command with an argument and parse the result
    returning only the value of interest.
       )r
   splitint
ValueError)cmdlineoutresults      7/usr/lib/python3/dist-packages/psutil/tests/test_osx.pysysctlr      s?     W+CYY[^F6{ s   
+ 99c                     t        d      }|j                  d      D ]  }| |v s n t        d      t        t	        j
                  d|      j                  d            t               z  S )z)Wrapper around 'vm_stat' cmdline utility.vm_stat
zline not foundz\d+r   )r
   r   r   r   researchgroupr   )fieldr   lines      r   r   r   +   sb    
Y-C		$ +D=+ )**ryy&,,Q/0;=@@    z
MACOS onlyc                   2    e Zd Zed        Zed        Zd Zy)TestProcessc                 6    t               j                  | _        y N)r   pidclss    r   
setUpClasszTestProcess.setUpClass8   s     "&&r    c                 .    t        | j                         y r$   )r   r%   r&   s    r   tearDownClasszTestProcess.tearDownClass<   s    #''r    c           	         t        d| j                  z        }|j                  dd      j                         }|j	                  d      d   }|j	                  d      d   }t        j                  | j                        j                         }| j                  |t        j                  dt        j                  |                   | j                  |t        j                  dt        j                  |                   y )	Nzps -o lstart -p %sSTARTED  z%H:%M:%Sz%Y)r
   r%   replacestripr   psutilProcesscreate_timeassertEqualtimestrftime	localtime)selfoutputstart_pshhmmssyearstart_psutils         r   test_process_create_timez$TestProcess.test_process_create_time@   s    (48834>>)R0668$R(~~c"2&~~dhh/;;=DMM*dnn\.JK	
 	$--dnn\&BC	
r    N)__name__
__module____qualname__classmethodr(   r*   r@    r    r   r"   r"   6   s-    ' '  
r    r"   c                   d   e Zd Z e       d        Zd Zd Z ej                   e	j                         dk(  d      d        Zd Z e       d        Z e       d	        Z e       d
        Z e       d        Z e       d        Z e       d        Zd Z ej                  e d      d        Zy)TestSystemAPIsc                    d }t        j                  d      D ]  }t        j                  |j                        } ||j                        \  }}}}| j	                  |j
                  |       | j	                  |j                  |       | j                  |j                  |t               | j                  |j                  |t                y )Nc                 >   t        d| z        j                         }|j                  d      }|j                  d       |j                  d      }|j                         d d \  }}}}|dk(  rd}t	        |      dz  }t	        |      dz  }t	        |      dz  }||||fS )Nz
df -k "%s"r   r      noner-   i   )r
   r2   r   popr   )pathr   linesr   devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfW   s    \D()//1CIIdOEIIaL99Q<D%)ZZ\"1%5"Cdf}J%Et9t#Dt9t#DtT))r    F)alldelta)r3   disk_partitions
disk_usage
mountpointr6   devicerP   assertAlmostEqualrR   r   rQ   )r:   rS   partusagerO   rP   rQ   rR   s           r   
test_diskszTestSystemAPIs.test_disksS   s    	* **u5 
	D%%doo6E%'%8"CdT[[#.U[[%0""

D(< #  ""

D(< # 
	r    c                 f    t        d      }| j                  |t        j                  d             y )Nzsysctl hw.logicalcpuTlogicalr   r6   r3   	cpu_countr:   nums     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logicalr   s(    +,f..t<=r    c                 f    t        d      }| j                  |t        j                  d             y )Nzsysctl hw.physicalcpuFr`   rb   rd   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coresv   s(    ,-f..u=>r    arm64zskipped due to #1892c                 .   t        j                         }| j                  |j                  dz  dz  t	        d             | j                  |j
                  dz  dz  t	        d             | j                  |j                  dz  dz  t	        d             y )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r3   cpu_freqr6   currentr   minmax)r:   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_freq{   s     LL4$&/G(H	
 	HHtOd"F+G$H	
 	HHtOd"F+G$H	
r    c                 v    t        d      }| j                  |t        j                         j                         y )Nzsysctl hw.memsize)r   r6   r3   virtual_memoryrP   )r:   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total   s,     !45&*?*?*A*G*GHr    c                     t        d      }t        j                         j                  }| j	                  ||t
               y )NrR   rU   )r   r3   rr   rR   r[   r   r:   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   s5    V_
**,11
z:=NOr    c                     t        d      }t        j                         j                  }| j	                  ||t
               y )NactiverU   )r   r3   rr   r{   r[   r   rv   s      r   test_vmem_activezTestSystemAPIs.test_vmem_active   s6    X&
**,33
z:=NOr    c                     t        d      }t        j                         j                  }| j	                  ||t
               y )NinactiverU   )r   r3   rr   r~   r[   r   rv   s      r   test_vmem_inactivez!TestSystemAPIs.test_vmem_inactive   s6    Z(
**,55
z:=NOr    c                     t        d      }t        j                         j                  }| j	                  ||t
               y )NwiredrU   )r   r3   rr   r   r[   r   rv   s      r   test_vmem_wiredzTestSystemAPIs.test_vmem_wired   s6    W%
**,22
z:=NOr    c                     t        d      }t        j                         j                  }| j	                  ||t
               y )NPageinsrU   )r   r3   swap_memorysinr[   r   rv   s      r   test_swapmem_sinzTestSystemAPIs.test_swapmem_sin   s6    Y'
'')--
z:=NOr    c                     t        d      }t        j                         j                  }| j	                  ||t
               y )NPageoutrU   )r   r3   r   soutr[   r   rv   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   s6    Y'
'')..
z:=NOr    c           
      L   t        j                         j                         D ]p  \  }}	 t        d|z        }| j	                  |j
                  d|v |       | j	                  |j                  t        t        j                  d|      d                r y # t        $ r Y w xY w)Nzifconfig %sRUNNING)msgz	mtu (\d+)r   )r3   net_if_statsitemsr
   r6   isupmtur   r   findallRuntimeError)r:   namestatsr   s       r   test_net_if_statsz TestSystemAPIs.test_net_if_stats   s    !..0668 		KD%-.   Y#-=3 G  IIs2::lC#@#CD		   s   B	B#"B#z
no batteryc                 b   t        d      }t        j                  d|      j                  d      }t        j                  d|      j                  d      }|dk(  }t	        j
                         }| j                  |j                  |       | j                  |j                  t        |             y )Nzpmset -g battz(\d+)%r   zNow drawing from '([^']+)'zAC Power)
r
   r   r   r   r3   sensors_batteryr6   power_pluggedpercentr   )r:   r   r   drawing_fromr   psutil_results         r   test_sensors_batteryz#TestSystemAPIs.test_sensors_battery   s    !))Is+11!4yy!=sCII!L$
2..044mD..G=r    N)rA   rB   rC   r	   r^   rf   rh   unittestskipIfplatformmachinerp   rt   ry   r|   r   r   r   r   r   r   r   rE   r    r   rG   rG   N   s   
  <>?
 X__%X%%'724JK

 L

I P P
 P P
 P P
 P P P P
 P P
 X___l3> 4>r    rG   __main__)run_from_name)__doc__r   r   r7   r   r3   r   r   psutil.testsr   r   r   r   r	   r
   r   r   psutil._psutil_posixr   r   r   r   r"   rG   rA   psutil.tests.runnerr   __file__rE   r    r   <module>r      s      	      $ - * ' )  ' " 	0	A UL)
. 
 *
. UL)}>^ }> *}>@ z1( r    