
    ɧd                        d 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 ddlmZ erddlmZ d 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           dS dS )zmacOS specific tests.    N)MACOS)POSIX)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)retry_on_failure)sh)spawn_testproc)	terminate)unittest)getpagesizec                     t          |           }|                                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      5lib/python3.11/site-packages/psutil/tests/test_osx.pysysctlr      sU     W++CYY[[^F6{{   s   : A	A	c                    t          d          }|                    d          D ]}| |v r n	t          d          t          t	          j        d|                              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   *   s~    
Y--C		$ + +D= 	E	 )***ry&&,,Q//00;==@@    c                 v   ddi}| }d}| r| dd                                          s| dd         dk    rA|| d         z  }| dd          } | r| dd                                          3| dd         dk    At          |          }|                                 }|                                D ]\  }}||v r n6|dk    r|d         }|                                }nt          d|z            |d         di}t          |dd                    D ]\  }} d|dz   d	z  z  || <   t          |||         z            S )
N	customary)	BKMGTPEZY r   r   .kzcan't interpret %r
   )isdigitfloatstripitemsupperr   	enumerater   )	sSYMBOLSinitnumletternamessetprefixis	            r   human2bytesr@   6   s   BG D
C
 !A#   AacFcM qtabbE  !A#   AacFcM  **CWWYYFmmoo : :
dT> 	E	 S= 	:;'D\\^^FF1D89991gq\F$qrr(## & &1!a%2%q		sVF^#$$$r!   z
MACOS onlyc                   @    e Zd Zed             Zed             Zd ZdS )TestProcessc                 6    t                      j        | _        d S N)r   pidclss    r   
setUpClasszTestProcess.setUpClassS   s     ""&r!   c                 .    t          | j                   d S rD   )r   rE   rF   s    r   tearDownClasszTestProcess.tearDownClassW   s    #'r!   c           	      2   t          d| j        z            }|                    dd                                          }|                    d          d         }|                    d          d         }t          j        | j                                                  }|                     |t          j
        dt          j        |                               |                     |t          j
        dt          j        |                               d S )	Nzps -o lstart -p %sSTARTEDr-    z%H:%M:%Sz%Y)r
   rE   replacer3   r   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    (48344>>)R006688$$R(~~c""2&~dh//;;==M*dn\&B&BCC	E 	E 	E 	M$| < <==	? 	? 	? 	? 	?r!   N)__name__
__module____qualname__classmethodrH   rJ   r^    r!   r   rB   rB   P   sY         ' ' ['   [? ? ? ? ?r!   rB   c                   l   e Zd Z e            d             Zd Zd Z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dS )TestSystemAPIsc                    d }t          j        d          D ]}t          j        |j                  } ||j                  \  }}}}|                     |j        |           |                     |j        |           |                     |j        |t                     |                     |j
        |t                     d S )Nc                    t          d| z                                            }|                    d          }|                    d           |                    d          }|                                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
   r3   r   popr   )pathr   linesr    devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfr   s    \D())//11CIIdOOEIIaLLL99Q<<D%)ZZ\\"1"%5"Cdf} JJ%Et99t#Dt99t#DtT))r!   F)alldelta)rQ   disk_partitions
disk_usage
mountpointrT   devicern   assertAlmostEqualrp   r   ro   )rX   rq   partusagerm   rn   ro   rp   s           r   
test_diskszTestSystemAPIs.test_disksn   s    	* 	* 	* *u555 	? 	?D%do66E%'R%8%8"CdT[#...U[%000""5:t)= # ? ? ?""5:t)= # ? ? ? ?	? 	?r!   c                 v    t          d          }|                     |t          j        d                     d S )Nzsysctl hw.logicalcpuTlogicalr   rT   rQ   	cpu_countrX   r:   s     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logical   s:    +,,f.t<<<=====r!   c                 v    t          d          }|                     |t          j        d                     d S )Nzsysctl hw.physicalcpuFr~   r   r   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_cores   s:    ,--f.u===>>>>>r!   c                 @   t          j                    }|                     |j        dz  dz  t	          d                     |                     |j        dz  dz  t	          d                     |                     |j        dz  dz  t	          d                     d S )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)rQ   cpu_freqrT   currentr   minmax)rX   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_freq   s      L4$&/G(H(H	J 	J 	JHtOd"F+G$H$H	J 	J 	JHtOd"F+G$H$H	J 	J 	J 	J 	Jr!   c                 |    t          d          }|                     |t          j                    j                   d S )Nzsysctl hw.memsize)r   rT   rQ   virtual_memoryrn   )rX   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total   s8     !455&*?*A*A*GHHHHHr!   c                     t          d          }t          j                    j        }|                     ||t
                     d S )Nrp   rs   )r   rQ   r   rp   ry   r   rX   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   s@    V__
*,,1
z:=NOOOOOr!   c                     t          d          }t          j                    j        }|                     ||t
                     d S )Nactivers   )r   rQ   r   r   ry   r   r   s      r   test_vmem_activezTestSystemAPIs.test_vmem_active   sB    X&&
*,,3
z:=NOOOOOr!   c                     t          d          }t          j                    j        }|                     ||t
                     d S )Ninactivers   )r   rQ   r   r   ry   r   r   s      r   test_vmem_inactivez!TestSystemAPIs.test_vmem_inactive   sB    Z((
*,,5
z:=NOOOOOr!   c                     t          d          }t          j                    j        }|                     ||t
                     d S )Nwiredrs   )r   rQ   r   r   ry   r   r   s      r   test_vmem_wiredzTestSystemAPIs.test_vmem_wired   sB    W%%
*,,2
z:=NOOOOOr!   c                     t          d          }t          j                    j        }|                     ||           d S )NPageins)r   rQ   swap_memorysinrT   r   s      r   test_swapmem_sinzTestSystemAPIs.test_swapmem_sin   s<    Y''
'))-
Z00000r!   c                     t          d          }t          j                    j        }|                     ||           d S )NPageout)r   rQ   r   soutrT   r   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   s<    Y''
')).
Z00000r!   c           
      b   t          j                                                    D ]\  }}	 t          d|z            }|                     |j        d|v |           |                     |j        t          t          j	        d|          d                              y# t          $ r Y w xY wd S )Nzifconfig %sRUNNING)msgz	mtu (\d+)r   )rQ   net_if_statsr4   r
   rT   isupmtur   r   findallRuntimeError)rX   r<   statsr   s       r   test_net_if_statsz TestSystemAPIs.test_net_if_stats   s    !.006688 	H 	HKD%H-..   Y#-=3 GGG  !$RZc%B%B1%E!F!FH H H H	     	H 	Hs   B
B,+B,z
no batteryc                 |   t          d          }t          j        d|                              d          }t          j        d|                              d          }|dk    }t	          j                    }|                     |j        |           |                     |j        t          |                     d S )Nzpmset -g battz(\d+)%r   zNow drawing from '([^']+)'zAC Power)
r
   r   r   r   rQ   sensors_batteryrT   power_pluggedpercentr   )rX   r   r   drawing_fromr   psutil_results         r   test_sensors_batteryz#TestSystemAPIs.test_sensors_battery   s    !!)Is++11!44y!=sCCII!LL$
2.004mDDD.G=====r!   N)r_   r`   ra   r	   r|   r   r   r   r   r   r   r   r   r   r   r   r   skipIfr   r   rc   r!   r   re   re   i   s       
 ? ? ?8> > >? ? ?J J JI I I P P P
 P P P
 P P P
 P P P 1 1 1
 1 1 1"	H 	H 	H X__l33> > 43> > >r!   re   __main__)run_from_name)__doc__r   rU   rQ   r   r   psutil.testsr   r   r   r   r	   r
   r   r   r   psutil._psutil_posixr   r   r   r@   r   rB   re   r_   psutil.tests.runnerr   __file__rc   r!   r   <module>r      s     				               $ $ $ $ $ $ - - - - - - * * * * * * ' ' ' ' ' ' ) ) ) ) ) )       ' ' ' ' ' ' " " " " " " ! ! ! ! ! ! 	 1000000	 	 	A A A% % %4 UL))? ? ? ? ?. ? ? *)?0 UL))> > > > >^ > > *)>D z 111111M( r!   