
    /h                        d 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 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dS )zmacOS specific tests.    N)MACOS)POSIX)
CI_TESTING)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh)spawn_testproc)	terminate)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      H/var/www/html/venv/lib/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;==@@    z
MACOS onlyreasonc                   @    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.setUpClass9   s     ""&r"   c                 .    t          | j                   d S r(   )r   r)   r*   s    r   tearDownClasszTestProcess.tearDownClass=   s    #'r"   c                    t          d| j                   }|                    dd                                          }|                    d          d         }|                    d          d         }t          j        | j                                                  }|t          j	        dt          j
        |                    k    sJ |t          j	        dt          j
        |                    k    sJ d S )	Nzps -o lstart -p STARTED  z%H:%M:%Sz%Y)r   r)   replacestripr   psutilProcesscreate_timetimestrftime	localtime)selfoutputstart_pshhmmssyearstart_psutils         r   test_process_create_timez$TestProcess.test_process_create_timeA   s    1tx1122>>)R006688$$R(~~c""2&~dh//;;==|44
 
 
 
 
 
 t}T4>,+G+GHHHHHHHHr"   N)__name__
__module____qualname__classmethodr,   r.   rC    r"   r   r&   r&   7   s\        ' ' ['   [	I 	I 	I 	I 	Ir"   r&   c                   Z   e Zd Z e            d             Zd Zd Zej        	                    e
o ej                    dk    d          d             Zd Zej        	                    eoe
o ej                    dk    d	           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                 T   d }t          j        d          D ]}t          j        |j                  } ||j                  \  }}}}|j        |k    sJ |j        |k    sJ t          |j        |z
            t          k     sJ t          |j	        |z
            t          k     sJ d S )Nc                    t          d|  d                                          }|                    d          }|                    d           |                    d          }|                                d d         \  }}}}|dk    rd}t	          |          dz  }t	          |          dz  }t	          |          dz  }||||fS )	Nzdf -k ""r   r      noner1   i   )r   r6   r   popr   )pathr   linesr!   devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfV   s    &t&&&''--//CIIdOOEIIaLLL99Q<<D%)ZZ\\"1"%5"Cdf}}JJ%Et99t#Dt99t#DtT))r"   F)all)
r7   disk_partitions
disk_usage
mountpointdevicerT   absrV   r   rU   )r=   rW   partusagerS   rT   rU   rV   s           r   
test_diskszTestSystemAPIs.test_disksR   s    	* 	* 	* *u555 	A 	AD%do66E%'R%8%8"Cd;#%%%%;%''''uzD()),@@@@@uzD()),@@@@@@	A 	Ar"   c                 Z    t          d          }|t          j        d          k    sJ d S )Nzsysctl hw.logicalcpuTlogicalr   r7   	cpu_countr=   nums     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logicalm   s5    +,,f&t444444444r"   c                 Z    t          d          }|t          j        d          k    sJ d S )Nzsysctl hw.physicalcpuFrb   rd   rf   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coresq   s5    ,--f&u555555555r"   arm64zskipped due to #1892r#   c                     t          j                    }|j        dz  dz  t          d          k    sJ |j        dz  dz  t          d          k    sJ |j        dz  dz  t          d          k    sJ d S )Ni  zsysctl hw.cpufrequencyzsysctl hw.cpufrequency_minzsysctl hw.cpufrequency_max)r7   cpu_freqcurrentr   minmax)r=   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_freqv   s       |d"T)V4L-M-MMMMMx$%0L)M)MMMMMx$%0L)M)MMMMMMMr"   c                 `    t          d          }|t          j                    j        k    sJ d S )Nzsysctl hw.memsize)r   r7   virtual_memoryrT   )r=   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total   s3     !455&"7"9"9"???????r"   z%skipped on MACOS + ARM64 + CI_TESTINGc                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NrV   )r   r7   rt   rV   r]   r   r=   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   sE     V__
*,,1
:
*++.???????r"   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Nactive)r   r7   rt   r}   r]   r   rx   s      r   test_vmem_activezTestSystemAPIs.test_vmem_active   sE    X&&
*,,3
:
*++.???????r"   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Ninactive)r   r7   rt   r   r]   r   rx   s      r   test_vmem_inactivez!TestSystemAPIs.test_vmem_inactive   sE    Z((
*,,5
:
*++.???????r"   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Nwired)r   r7   rt   r   r]   r   rx   s      r   test_vmem_wiredzTestSystemAPIs.test_vmem_wired   sE    W%%
*,,2
:
*++.???????r"   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NPageins)r   r7   swap_memorysinr]   r   rx   s      r   test_swapmem_sinzTestSystemAPIs.test_swapmem_sin   sE    Y''
'))-
:
*++.???????r"   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NPageout)r   r7   r   soutr]   r   rx   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   sE    Y''
')).
:
*++.???????r"   c                 6   t          j                                                    D ]r\  }}	 t          d|           }|j        d|v k    s
J |            |j        t          t          j        d|          d                   k    sJ c# t          $ r Y ow xY wd S )Nz	ifconfig RUNNINGz	mtu (\d+)r   )
r7   net_if_statsitemsr   isupmtur   r   findallRuntimeError)r=   namestatsr   s       r   test_net_if_statsz TestSystemAPIs.test_net_if_stats   s    !.006688 	J 	JKD%J+T++,, zi3&6777777yC
<(E(Ea(H$I$IIIIII	     	J 	Js   B		
BBz
no batteryc                 D   t          d          }t          j        d|                              d          }t          j        d|                              d          }|dk    }t	          j                    }|j        |k    sJ |j        t          |          k    sJ d S )Nzpmset -g battz(\d+)%r   zNow drawing from '([^']+)'zAC Power)	r   r   r   r   r7   sensors_batterypower_pluggedpercentr   )r=   r   r   drawing_fromr   psutil_results         r   test_sensors_batteryz#TestSystemAPIs.test_sensors_battery   s    !!)Is++11!44y!>DDJJ1MM$
2.00*m;;;;$G444444r"   N)rD   rE   rF   r   r`   rh   rj   r
   markskipifr   platformmachinerr   rv   r   r{   r~   r   r   r   r   r   r   r   rH   r"   r   rJ   rJ   M   s<       
 A A A45 5 56 6 6
 [/"("$$/8N   N N N@ @ @ [>u>!1!1!3!3w!>6    @ @ 	 
@
 @ @ @
 @ @ @
 @ @ @ @ @ @
 @ @ @J J J [K==5 5 >=5 5 5r"   rJ   )__doc__r   r   r:   r7   r   r   psutil.testsr   r   r   r   r	   r
   r   r   r   r   psutil._psutil_posixr   r   r   r   r   r&   rJ   rH   r"   r   <module>r      s      				               # # # # # # $ $ $ $ $ $ - - - - - - * * * * * * ' ' ' ' ' '       ) ) ) ) ) )       ' ' ' ' ' ' " " " " " " 	 1000000	 	 	A A A Il33I I I I I. I I 43I* Il33w5 w5 w5 w5 w5^ w5 w5 43w5 w5 w5r"   