
    Xh                        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,                  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)
CI_TESTING)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      a/var/www/html/cjf29f/d23bf782/d32178f2/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   ,   sb    
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.setUpClass9   s     "&&r"   c                 .    t        | j                         y r(   )r   r)   r*   s    r   tearDownClasszTestProcess.tearDownClass=   s    #''r"   c                    t        d| j                         }|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 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    &txxj12>>)R0668$R(~~c"2&~~dhh/;;=|4
 
 	
 
 t}}T4>>,+GHHHHr"   N)__name__
__module____qualname__classmethodr,   r.   rC    r"   r   r&   r&   7   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j                  j                  exr e
xr  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                  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|  d      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 ""r   r      noner1   i   )r   r6   r   popr   )pathr   linesr!   devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfV   s    wtfA&'--/CIIdOEIIaL99Q<D%)ZZ\"1%5"Cdf}J%Et9t#Dt9t#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 	AD%%doo6E%'%8"Cd;;#%%%;;%'''uzzD(),@@@@uzzD(),@@@@	Ar"   c                 P    t        d      }|t        j                  d      k(  sJ y )Nzsysctl hw.logicalcpuTlogicalr   r7   	cpu_countr=   nums     r   test_cpu_count_logicalz%TestSystemAPIs.test_cpu_count_logicalm   s&    +,f&&t4444r"   c                 P    t        d      }|t        j                  d      k(  sJ y )Nzsysctl hw.physicalcpuFrb   rd   rf   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coresq   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)r7   cpu_freqcurrentr   minmax)r=   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_freqv   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   r7   virtual_memoryrT   )r=   sysctl_hwphymems     r   test_vmem_totalzTestSystemAPIs.test_vmem_total   s*     !45&"7"7"9"?"????r"   z%skipped on MACOS + ARM64 + CI_TESTINGc                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )NrV   )r   r7   rt   rV   r]   r   r=   
vmstat_val
psutil_vals      r   test_vmem_freezTestSystemAPIs.test_vmem_free   s:     V_
**,11
:
*+.????r"   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )Nactive)r   r7   rt   r}   r]   r   rx   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   r7   rt   r   r]   r   rx   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   r7   rt   r   r]   r   rx   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   r7   swap_memorysinr]   r   rx   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   r7   r   soutr]   r   rx   s      r   test_swapmem_soutz TestSystemAPIs.test_swapmem_sout   s9    Y'
'')..
:
*+.????r"   c                 &   t        j                         j                         D ]]  \  }}	 t        d|       }|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 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668 	JKD%J9TF+, zzi3&67<<7yyC

<(Ea(H$IIII	J   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   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yy!>DJJ1M$
2..0**m;;;$$G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   sv   
 A A456
 [[/"(""$/8N  NN@ [[>u>!1!1!1!3w!>6   @ 	
@
 @ @
 @ @
 @ @ @ @
 @ @J [[K=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      	     # $ - * '  )  ' " 	0	A Il3I. I 4I* Il3w5^ w5 4w5r"   