
    h                        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 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)AARCH64)
CI_TESTING)HAS_BATTERY)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)PsutilTestCase)pytest)retry_on_failure)sh)spawn_subproc)	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      S/var/www/html/eduruby.in/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.setUpClass8   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_time@   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/   rD    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d      d        Zd Zej                  j                  exr e
xr ed       e       d	               Zej                  j                  exr e
xr ed       e       d
               Z e       d        Z e       d        Z e       d        Z e       d        Zd Zej                  j                  e d      d        Z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      noner2   i   )r   r7   r   popr   )pathr   linesr"   devtotalusedfrees           r   dfz%TestSystemAPIs.test_disks.<locals>.dfU   s    wtfA&'--/CIIdOEIIaL99Q<D%)ZZ\"1%5"Cdf}J%Et9t#Dt9t#DtT))r#   F)all)
r8   disk_partitions
disk_usage
mountpointdevicerU   absrW   r   rV   )r>   rX   partusagerT   rU   rV   rW   s           r   
test_diskszTestSystemAPIs.test_disksQ   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   r8   	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.physicalcpuFrc   re   rg   s     r   test_cpu_count_coresz#TestSystemAPIs.test_cpu_count_coresp   s&    ,-f&&u5555r#   z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)r8   cpu_freqcurrentr   minmax)r>   freqs     r   test_cpu_freqzTestSystemAPIs.test_cpu_frequ   sr     ||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   r8   virtual_memoryrU   )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 )NrW   )r   r8   rt   rW   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   r8   rt   r}   r^   r	   rx   s      r   test_vmem_activezTestSystemAPIs.test_vmem_active   s;     X&
**,33
:
*+.????r#   c                     t        d      }t        j                         j                  }t	        ||z
        t
        k  sJ y )Ninactive)r   r8   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   r8   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   r8   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   r8   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   )
r8   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    r8   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#   c                     t        d      }t        t        j                  d|      j	                  d      d         }t        j                         }||k(  sJ y )Nzsysctl kern.boottimezsec\s*=\s*(\d+)r   )r   floatr   r   groupsr8   	boot_time)r>   r   abs       r   test_boot_timezTestSystemAPIs.test_boot_time   sL    '(")).4;;A>qABAvvr#   N)rE   rF   rG   r   ra   ri   rk   r   markskipifr   r   rr   rv   r   r{   r~   r   r   r   r   r   r   r   r   rI   r#   r   rK   rK   L   s   
 A A456
 [[)'2HIN JN@ [[(u(6   @ 	
@
 [[(u(6   @ 	
@
 @ @
 @ @ @ @
 @ @J [[K=5 >5r#   rK   )__doc__r   r;   r8   r   r   psutil.testsr   r   r   r   r	   r
   r   r   r   r   r   psutil._psutil_posixr   r   r   r   r   r'   rK   rI   r#   r   <module>r      s     	       # $ - * '  )  & "0	A Il3I. I 4I* Il3A^ A 4Ar#   