
    g                     x   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*                  j-                  e d       G d de             Zej*                  j-                  e d       G d de             Zy)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                 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      J/var/www/openai/venv/lib/python3.12/site-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   +   s]    
Y-C		$D=   )**ryy&,,Q/0;=@@    z
MACOS onlyreasonc                   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                         }|t        j                  dt        j                  |            k(  sJ |t        j                  dt        j                  |            k(  sJ y )	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    (48834>>)R0668$R(~~c"2&~~dhh/;;=|4
 
 	
 
 t}}T4>>,+GHHHHr!   N)__name__
__module____qualname__classmethodr+   r-   rB    r!   r   r%   r%   6   s.    ' '  	Ir!   r%   c                      e Zd Z e       d        Zd Zd Zej                  j                  e
xr  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                  j                  e d      d        Zy)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  rJ  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      noner0   i   )r   r5   r   popr   )pathr   linesr    devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfU   s    \D()//1CIIdOEIIaL99Q<D%)ZZ\"1%5"Cdf}J%Et9t#Dt9t#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5D%%doo6E%'%8"Cd;;#%%%;;%'''uzzD(),@@@@uzzD(),@@@@ 6r!   c                 P    t        d      }|t        j                  d      k(  sJ y )Nzsysctl hw.logicalcpuTlogicalr   r6   	cpu_countr<   nums     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logicall   s&    +,f&&t4444r!   c                 P    t        d      }|t        j                  d      k(  sJ y )Nzsysctl hw.physicalcpuFr`   rb   rd   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coresp   s&    ,-f&&u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 y )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   st      ||d"T)V4L-MMMMxx$%0L)MMMMxx$%0L)MMMMr!   c                 `    t        d      }|t        j                         j                  k(  sJ y )Nzsysctl hw.memsize)r   r6   virtual_memoryrR   )r<   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total   s*     !45&"7"7"9"?"????r!   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )NrT   )r   r6   rr   rT   r[   r   r<   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   s8    V_
**,11
:
*+.????r!   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )Nactive)r   r6   rr   r{   r[   r   rv   s      r   test_vmem_activezTestSystemAPIs.test_vmem_active   s9    X&
**,33
:
*+.????r!   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )Ninactive)r   r6   rr   r~   r[   r   rv   s      r   test_vmem_inactivez!TestSystemAPIs.test_vmem_inactive   s9    Z(
**,55
:
*+.????r!   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )Nwired)r   r6   rr   r   r[   r   rv   s      r   test_vmem_wiredzTestSystemAPIs.test_vmem_wired   s9    W%
**,22
:
*+.????r!   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )NPageins)r   r6   swap_memorysinr[   r   rv   s      r   test_swapmem_sinzTestSystemAPIs.test_swapmem_sin   s9    Y'
'')--
:
*+.????r!   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )NPageout)r   r6   r   soutr[   r   rv   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   s9    Y'
'')..
:
*+.????r!   c                 &   t        j                         j                         D ]]  \  }}	 t        d|z        }|j                  d|v k(  sJ |       |j
                  t        t        j                  d|      d         k(  r]J  y # t        $ r Y lw xY w)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668KD%J-. zzi3&67<<7yyC

<(Ea(H$IIII 9   s   B	BBz
no batteryc                 6   t        d      }t        j                  d|      j                  d      }t        j                  d|      j                  d      }|dk(  }t	        j
                         }|j                  |k(  sJ |j                  t        |      k(  sJ y )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yy!=sCII!L$
2..0**m;;;$$G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   s7   
 A A456
 [[/"(""$/8N  NN@ @ @
 @ @
 @ @
 @ @ @ @
 @ @J [[K=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      	     $ - * '  )  ' " 	0	A Il3I. I 4I* Il3s5^ s5 4s5r!   