
    g                        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 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)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      Q/var/www/html/ai-engine/env/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.setUpClass8   s     ""&r!   c                 .    t          | j                   d S r'   )r   r(   r)   s    r   tearDownClasszTestProcess.tearDownClass<   s    #'r!   c                    t          d| j        z            }|                    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 %s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_time@   s    (48344>>)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-   rB    r!   r   r%   r%   6   s\        ' ' ['   [	I 	I 	I 	I 	Ir!   r%   c                      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            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| 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      noner0   i   )r   r5   r   popr   )pathr   linesr    devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfU   s    \D())//11CIIdOOEIIaLLL99Q<<D%)ZZ\\"1"%5"Cdf}}JJ%Et99t#Dt99t#DtT))r!   F)all)
r6   disk_partitions
disk_usage
mountpointdevicerR   absrT   r   rS   )r<   rU   partusagerQ   rR   rS   rT   s           r   
test_diskszTestSystemAPIs.test_disksQ   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   r6   	cpu_countr<   nums     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logicall   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.physicalcpuFr`   rb   rd   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coresp   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)r6   cpu_freqcurrentr   minmax)r<   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_frequ   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   r6   virtual_memoryrR   )r<   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total   s3     !455&"7"9"9"???????r!   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )NrT   )r   r6   rr   rT   r[   r   r<   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   sC    V__
*,,1
:
*++.???????r!   c                     t          d          }t          j                    j        }t	          ||z
            t
          k     sJ d S )Nactive)r   r6   rr   r{   r[   r   rv   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   r6   rr   r~   r[   r   rv   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   r6   rr   r   r[   r   rv   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   r6   swap_memorysinr[   r   rv   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   r6   r   soutr[   r   rv   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   sE    Y''
')).
:
*++.???????r!   c                 6   t          j                                                    D ]r\  }}	 t          d|z            }|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 %sRUNNINGz	mtu (\d+)r   )
r6   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-.. 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   r6   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!=sCCII!LL$
2.00*m;;;;$G444444r!   N)rC   rD   rE   r
   r^   rf   rh   r	   markskipifr   platformmachinerp   rt   ry   r|   r   r   r   r   r   r   r   rG   r!   r   rI   rI   L   s       
 A A A45 5 56 6 6
 [/"("$$/8N   N N N@ @ @ @ @ @
 @ @ @
 @ @ @
 @ @ @ @ @ @
 @ @ @J J J [K==5 5 >=5 5 5r!   rI   )__doc__r   r   r9   r6   r   r   psutil.testsr   r   r   r   r	   r
   r   r   r   psutil._psutil_posixr   r   r   r   r   r%   rI   rG   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s5 s5 s5 s5 s5^ s5 s5 43s5 s5 s5r!   