§
    ±Û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 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      úK/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_osx.pyÚsysctlr       sU   € õ ˆW‰+Œ+€CØ�YŠY‰[Œ[˜Œ^€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ð õ Ð)Ñ*Ô*Ð*Ý�rŒy˜ Ñ&Ô&×,Ò,¨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å   € ÝÐ1 t¤xÐ1Ð1Ñ2Ô2ˆØ—>’> )¨RÑ0Ô0×6Ò6Ñ8Ô8ˆØ—’ Ñ$Ô$ RÔ(ˆØ�~Š~˜cÑ"Ô" 2Ô&ˆÝ”~ d¤hÑ/Ô/×;Ò;Ñ=Ô=ˆØ�œØ�œ |Ñ4Ô4ñ
ô 
ò 
ð 
ð 
ð 
ð •t”} T­4¬>¸,Ñ+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Ø—I’I˜d‘O”OˆEØ�IŠI�a‰LŒLˆLØ—9’9˜Q‘<”<ˆDØ%)§Z¢Z¡\¤\°"°1°"Ô%5Ñ"ˆC�˜˜dØ�fŠ}ˆ}Ø�Ý˜‘J”J Ñ%ˆEÝ�t‘9”9˜tÑ#ˆDÝ�t‘9”9˜tÑ#ˆDØ˜˜t TÐ)Ð)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ÝÔ% d¤oÑ6Ô6ˆEØ%' R¨¬Ñ%8Ô%8Ñ"ˆC�˜˜dØ”; #Ò%Ð%Ð%Ð%Ø”; %Ò'Ð'Ð'Ð'Ý�u”z DÑ(Ñ)Ô)Õ,@Ò@Ð@Ð@Ð@Ý�u”z DÑ(Ñ)Ô)Õ,@Ò@Ð@Ð@Ð@Ð@ð	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Ñ)­VÐ4LÑ-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‰KˆD�%ðJÝÐ+ TÐ+Ð+Ñ,Ô,�ð ”z i°3Ð&6Ò7Ð7Ð7¸Ñ7Ô7Ð7Ø”y¥C­¬
°<ÀÑ(EÔ(EÀaÔ(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š   € å�Ñ!Ô!ˆÝ”)˜I sÑ+Ô+×1Ò1°!Ñ4Ô4ˆÝ”yÐ!>ÀÑDÔD×JÒJÈ1Ñ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Ô!3°wÒ!>Ø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ð „×Ò˜�I lÐÑ3Ô3ðIð Ið Ið Ið I�.ñ Iô Iñ 4Ô3ðIð* „×Ò˜�I lÐÑ3Ô3ðw5ð w5ð w5ð w5ð w5�^ñ w5ô w5ñ 4Ô3ðw5ð w5ð w5r"   