§
    ±Ûg#C  ã                   óŽ  — d Z ddlZddlZddl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
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 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ZddlZddlm Z  d$d„Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&ej'         (                    e d¬¦  «         G d„ de¦  «        ¦   «         Z)ej'         (                    e d¬¦  «         G d „ d!e¦  «        ¦   «         Z*ej'         (                    e d¬¦  «         G d"„ d#e¦  «        ¦   «         Z+dS )%zPOSIX specific tests.é    N)Úmock)ÚAIX)ÚBSD)ÚLINUX)ÚMACOS)ÚOPENBSD)ÚPOSIX)ÚSUNOS)ÚAARCH64)ÚHAS_NET_IO_COUNTERS)Ú
PYTHON_EXE)ÚPsutilTestCase)Úpytest)Úretry_on_failure)Úsh)Úskip_on_access_denied)Úspawn_testproc)Ú	terminate)Úgetpagesizec                 ó®  — dg}t           r|                     d¦  «         |�%|                     dt          |¦  «        g¦  «         n9t          st
          r|                     d¦  «         n|                     d¦  «         t          r|                      dd¦  «        } |                     d	| g¦  «         t          |¦  «        }t           r|                     ¦   «         n|                     ¦   «         d
d…         }g }|D ]L}| 	                    ¦   «         }	 t          |¦  «        }n# t          $ r Y nw xY w|                     |¦  «         ŒM|€|S |d         S )zwWrapper for calling the ps command with a little bit of cross-platform
    support for a narrow range of features.
    Úpsz--no-headersNz-pz-AÚaxÚstartÚstimez-oé   r   )r   ÚappendÚextendÚstrr
   r   Úreplacer   Ú
splitlinesÚstripÚintÚ
ValueError)ÚfmtÚpidÚcmdÚoutputÚ
all_outputÚlines         úM/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_posix.pyr   r   -   sm  € ð
 ˆ&€Cåð #Ø�
Š
�>Ñ"Ô"Ð"à
€Ø�
Š
�D�#˜c™(œ(Ð#Ñ$Ô$Ð$Ð$Ý	ð •#ð Ø�
Š
�4ÑÔÐÐà�
Š
�4ÑÔÐåð ,Ø�kŠk˜' 7Ñ+Ô+ˆà‡J‚J��cˆ{ÑÔÐå�‰WŒW€Få$)ÐFˆV×ÒÑ Ô Ð ¨v×/@Ò/@Ñ/BÔ/BÀ1À2À2Ô/F€Fà€JØð  ð  ˆØ�zŠz‰|Œ|ˆð	Ý�t‘9”9ˆDˆDøÝð 	ð 	ð 	ØˆDð	øøøð 	×Ò˜$ÑÔÐÐà
€{ØÐà˜!Œ}Ðs   ÄD%Ä%
D2Ä1D2c                 ól   — d}t           rd}t          || ¦  «                             ¦   «         }|d         S )NÚcommandÚcommr   )r
   r   Úsplit)r%   Úfieldr,   s      r*   Úps_namer0   d   s7   € Ø€EÝð ØˆÝ�˜‰nŒn×"Ò"Ñ$Ô$€GØ�1Œ:Ðó    c                 óš   — d}t           st          rd}t          || ¦  «        }t          j        dd|¦  «        }|                     ¦   «         S )Nr,   Úargsz\(python.*?\)$Ú )r   r
   r   ÚreÚsubr!   )r%   r/   Úouts      r*   Úps_argsr8   l   sJ   € Ø€EÝ
ð �eð ØˆÝ
ˆU�C‰.Œ.€Cå
Œ&Ð" B¨Ñ
,Ô
,€CØ�9Š9‰;Œ;Ðr1   c                 ó8   — d}t           rd}t          || ¦  «        S )NÚrssÚrssize©r   r   ©r%   r/   s     r*   Úps_rssr>   v   s"   € Ø€EÝ
ð ØˆÝˆe�S‰>Œ>Ðr1   c                 ó8   — d}t           rd}t          || ¦  «        S )NÚvszÚvsizer<   r=   s     r*   Úps_vszrB   }   s"   € Ø€EÝ
ð ØˆÝˆe�S‰>Œ>Ðr1   c                 ó.  — 	 t          d| › �¦  «                             ¦   «         }nJ# t          $ r=}dt          |¦  «                             ¦   «         v rt          j        d¦  «        ‚‚ d }~ww xY w|                     d¦  «        d         }|                     ¦   «         }t          |d         ¦  «        dz  }t          |d         ¦  «        dz  }t          |d         ¦  «        dz  }t          |d	          
                    d
d¦  «        ¦  «        }||||fS )Nzdf -k zdevice busyzdf returned EBUSYú
r   é   é   é   é   ú%r4   )r   r!   ÚRuntimeErrorr   Úlowerr   Úskipr.   r"   Úfloatr   )	Údevicer7   Úerrr)   ÚfieldsÚ	sys_totalÚsys_usedÚsys_freeÚsys_percents	            r*   ÚdfrU   „   s  € ðÝÐ"˜&Ð"Ð"Ñ#Ô#×)Ò)Ñ+Ô+ˆˆøÝð ð ð Ø�C ™HœHŸNšNÑ,Ô,Ð,Ð,Ý”+Ð1Ñ2Ô2Ð2Øøøøøðøøøð �9Š9�T‰?Œ?˜1Ô€DØ�ZŠZ‰\Œ\€FÝ�F˜1”I‘” Ñ%€IÝ�6˜!”9‰~Œ~ Ñ$€HÝ�6˜!”9‰~Œ~ Ñ$€HÝ˜˜qœ	×)Ò)¨#¨rÑ2Ô2Ñ3Ô3€KØ�x ¨;Ð7Ð7s   ‚$' §
A.±8A)Á)A.z
POSIX only©Úreasonc                   ó  — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d„ Z e¦   «          e¦   «         d	„ ¦   «         ¦   «         Z e¦   «          e¦   «         d
„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zej                             eped¬¦  «        d„ ¦   «         Zd„ Z e¦   «         d„ ¦   «         Zej                             ed¬¦  «        ej                             ed¬¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestProcesszBCompare psutil results against 'ps' command line utility (mainly).c                 ó`   — t          t          ddgt          j        ¬¦  «        j        | _        d S )Nz-Ez-O)Ústdin)r   r   Ú
subprocessÚPIPEr%   ©Úclss    r*   Ú
setUpClasszTestProcess.setUpClass˜   s0   € å Ý˜˜tÐ$­J¬Oð
ñ 
ô 
ä
ð 	Œˆˆr1   c                 ó.   — t          | j        ¦  «         d S ©N)r   r%   r^   s    r*   ÚtearDownClasszTestProcess.tearDownClassž   s   € å�#”'ÑÔÐÐÐr1   c                 ó–   — t          d| j        ¦  «        }t          j        | j        ¦  «                             ¦   «         }||k    sJ ‚d S )NÚppid)r   r%   ÚpsutilÚProcessre   )ÚselfÚppid_psÚppid_psutils      r*   Ú	test_ppidzTestProcess.test_ppid¢   sG   € Ý�V˜TœXÑ&Ô&ˆÝ”n T¤XÑ.Ô.×3Ò3Ñ5Ô5ˆØ˜+Ò%Ð%Ð%Ð%Ð%Ð%r1   c                 ó    — t          d| j        ¦  «        }t          j        | j        ¦  «                             ¦   «         j        }||k    sJ ‚d S )NÚuid)r   r%   rf   rg   ÚuidsÚreal)rh   Úuid_psÚ
uid_psutils      r*   Útest_uidzTestProcess.test_uid§   sJ   € Ý�E˜4œ8Ñ$Ô$ˆÝ”^ D¤HÑ-Ô-×2Ò2Ñ4Ô4Ô9ˆ
Ø˜Ò#Ð#Ð#Ð#Ð#Ð#r1   c                 ó    — t          d| j        ¦  «        }t          j        | j        ¦  «                             ¦   «         j        }||k    sJ ‚d S )NÚrgid)r   r%   rf   rg   Úgidsro   )rh   Úgid_psÚ
gid_psutils      r*   Útest_gidzTestProcess.test_gid¬   sJ   € Ý�F˜DœHÑ%Ô%ˆÝ”^ D¤HÑ-Ô-×2Ò2Ñ4Ô4Ô9ˆ
Ø˜Ò#Ð#Ð#Ð#Ð#Ð#r1   c                 ó–   — t          d| j        ¦  «        }t          j        | j        ¦  «                             ¦   «         }||k    sJ ‚d S )NÚuser)r   r%   rf   rg   Úusername)rh   Úusername_psÚusername_psutils      r*   Útest_usernamezTestProcess.test_username±   sG   € Ý˜ ¤Ñ*Ô*ˆÝ œ.¨¬Ñ2Ô2×;Ò;Ñ=Ô=ˆØ˜oÒ-Ð-Ð-Ð-Ð-Ð-r1   c                 ó$  — t          j        ¦   «         }t          j        dt          ¬¦  «        5 }|                     ¦   «         t          |                     ¦   «         j        ¦  «        k    sJ ‚|j	        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzpsutil.pwd.getpwuid©Úside_effect)
rf   rg   r   ÚpatchÚKeyErrorr{   r   rn   ro   Úcalled)rh   ÚpÚfuns      r*   Útest_username_no_resolutionz'TestProcess.test_username_no_resolution¶   sÄ   € õ ŒNÑÔˆÝŒZÐ-½8ÐDÑDÔDð 	ÈØ—:’:‘<”<¥3 q§v¢v¡x¤x¤}Ñ#5Ô#5Ò5Ð5Ð5Ð5Ø”:ÐÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¯ABÂB	ÂB	c                 óÎ   — t          j        d¦  «         t          | j        ¦  «        }t	          j        | j        ¦  «                             ¦   «         d         dz  }||k    sJ ‚d S )Nçš™™™™™¹?r   rE   )ÚtimeÚsleepr>   r%   rf   rg   Úmemory_info)rh   Úrss_psÚ
rss_psutils      r*   Útest_rss_memoryzTestProcess.test_rss_memory¿   ó^   € õ
 	Œ
�3‰ŒˆÝ˜œÑ!Ô!ˆÝ”^ D¤HÑ-Ô-×9Ò9Ñ;Ô;¸AÔ>ÀÑEˆ
Ø˜Ò#Ð#Ð#Ð#Ð#Ð#r1   c                 óÎ   — t          j        d¦  «         t          | j        ¦  «        }t	          j        | j        ¦  «                             ¦   «         d         dz  }||k    sJ ‚d S )Nr‰   r   rE   )rŠ   r‹   rB   r%   rf   rg   rŒ   )rh   Úvsz_psÚ
vsz_psutils      r*   Útest_vsz_memoryzTestProcess.test_vsz_memoryÉ   r�   r1   c                 óÊ  — t          | j        ¦  «        }t          j                             |¦  «                             ¦   «         }t          j        | j        ¦  «                             ¦   «                              ¦   «         }t          j
        dd|¦  «        }t          j
        dd|¦  «        }t          j
        dd|¦  «        }t          j
        dd|¦  «        }||k    sJ ‚d S )Nz\d.\dr4   z\d)r0   r%   ÚosÚpathÚbasenamerK   rf   rg   Únamer5   r6   )rh   Úname_psÚname_psutils      r*   Ú	test_namezTestProcess.test_nameÓ   sÀ   € Ý˜$œ(Ñ#Ô#ˆå”'×"Ò" 7Ñ+Ô+×1Ò1Ñ3Ô3ˆÝ”n T¤XÑ.Ô.×3Ò3Ñ5Ô5×;Ò;Ñ=Ô=ˆõ ”&˜ 2 wÑ/Ô/ˆÝ”f˜X r¨;Ñ7Ô7ˆå”&˜  GÑ,Ô,ˆÝ”f˜U B¨Ñ4Ô4ˆØ˜+Ò%Ð%Ð%Ð%Ð%Ð%r1   c                 ó(  — d}g d¢}t          j        d|¬¦  «        5  t          j        d|¬¦  «        5  t          j        ¦   «         }|                     ¦   «         dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Núlong-program-name)úlong-program-name-extendedÚfooÚbarúpsutil._psplatform.Process.name©Úreturn_valueú"psutil._psplatform.Process.cmdlinerŸ   )r   r‚   rf   rg   r™   )rh   r™   Úcmdliner…   s       r*   Útest_name_longzTestProcess.test_name_longá   sP  € ð #ˆØ>Ð>Ð>ˆÝŒZÐ9ÈÐMÑMÔMð 	@ð 	@Ý”Ø4À7ðñ ô ð @ð @õ ”NÑ$Ô$�Ø—v’v‘x”xÐ#?Ò?Ð?Ð?Ð?Ð?ð	@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s4   �B´.A/Á#BÁ/A3	Á3BÁ6A3	Á7BÂBÂBc                 óF  — d}t          j        d|¬¦  «        5  t          j        dt          j        dd¦  «        ¬¦  «        5  t          j        ¦   «         }|                     ¦   «         dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S ©Nrž   r¢   r£   r¥   r   r4   r€   )r   r‚   rf   ÚAccessDeniedrg   r™   ©rh   r™   r…   s      r*   Útest_name_long_cmdline_ad_excz)TestProcess.test_name_long_cmdline_ad_excî   s.  € ð #ˆÝŒZÐ9ÈÐMÑMÔMð 	7ð 	7Ý”Ø4Ý"Ô/°°2Ñ6Ô6ðñ ô ð 7ð 7õ ”NÑ$Ô$�Ø—v’v‘x”xÐ#6Ò6Ð6Ð6Ð6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s5   ™*BÁ.A>Á2BÁ>B	ÂBÂB	ÂBÂBÂBc                 ó¤  — d}t          j        d|¬¦  «        5  t          j        dt          j        dd¦  «        ¬¦  «        5  t          j        ¦   «         }t          j        t          j        ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S r©   )r   r‚   rf   ÚNoSuchProcessrg   r   Úraisesr™   r«   s      r*   Útest_name_long_cmdline_nsp_excz*TestProcess.test_name_long_cmdline_nsp_excû   s†  € ð #ˆÝŒZÐ9ÈÐMÑMÔMð 	ð 	Ý”Ø4Ý"Ô0°°BÑ7Ô7ðñ ô ð ð õ ”NÑ$Ô$�Ý”]¥6Ô#7Ñ8Ô8ð ð Ø—F’F‘H”H�Hðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	sY   ™*CÁ2B-Á5BÂ
B-ÂBÂB-ÂBÂB-Â!CÂ-B1	Â1CÂ4B1	Â5CÃC	ÃC	zps -o start not availablerV   c                 ó|  — t          d| j        ¦  «        }t          j        | j        ¦  «                             ¦   «         }t
          j                             |¦  «                             d¦  «        }t          |¦  «        }t
          j                             |¦  «                             d¦  «        }|||hv sJ ‚d S )Nr   z%H:%M:%S)	r   r%   rf   rg   Úcreate_timeÚdatetimeÚfromtimestampÚstrftimeÚround)rh   Útime_psÚtime_psutilÚtime_psutil_tstampÚround_time_psutilÚround_time_psutil_tstamps         r*   Útest_create_timezTestProcess.test_create_time  s¶   € å�W˜dœhÑ'Ô'ˆÝ”n T¤XÑ.Ô.×:Ò:Ñ<Ô<ˆÝ%Ô.×<Ò<Øñ
ô 
ç
Š(�:Ñ
Ô
ð 	õ
 " +Ñ.Ô.ÐÝ#+Ô#4×#BÒ#BØñ$
ô $
ç
Š(�:Ñ
Ô
ð 	!ð Ð-Ð/GÐHÐHÐHÐHÐHÐHÐHr1   c                 óö   — t          | j        ¦  «        }t          j        | j        ¦  «                             ¦   «         }	 ||k    sJ ‚d S # t
          $ r# |d t          |¦  «        …         }||k    sJ ‚Y d S w xY wrb   )r0   r%   rf   rg   ÚexeÚAssertionErrorÚlen)rh   Úps_pathnameÚpsutil_pathnameÚadjusted_ps_pathnames       r*   Útest_exezTestProcess.test_exe  s›   € Ý˜dœhÑ'Ô'ˆÝ œ.¨¬Ñ2Ô2×6Ò6Ñ8Ô8ˆð
	7Ø /Ò1Ð1Ð1Ð1Ð1Ð1øÝð 	7ð 	7ð 	7ð $/Ð/Aµ°[Ñ1AÔ1AÐ/AÔ#BÐ ØÐ"6Ò6Ð6Ð6Ð6Ð6Ð6Ð6ð	7øøøs   ÁA Á)A8Á7A8c                 ó:  — t          | j        ¦  «        }d                     t          j        | j        ¦  «                             ¦   «         ¦  «        }t          r9t          |¦  «        t          |¦  «        k     r|                     |¦  «        sJ ‚d S ||k    sJ ‚d S )Nú )	r8   r%   Újoinrf   rg   r¦   r   rÀ   Ú
startswith)rh   Ú
ps_cmdlineÚpsutil_cmdlines      r*   Útest_cmdlinezTestProcess.test_cmdline+  s‘   € å˜TœXÑ&Ô&ˆ
ØŸš¥&¤.°´Ñ":Ô":×"BÒ"BÑ"DÔ"DÑEÔEˆÝð 	0•s˜:‘”­¨^Ñ)<Ô)<Ò<Ð<Ø!×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8à Ò/Ð/Ð/Ð/Ð/Ð/r1   znot reliable on SUNOSznot reliable on AIXc                 óŠ   — t          d| j        ¦  «        }t          j        ¦   «                              ¦   «         }||k    sJ ‚d S )NÚnice)r   r%   rf   rg   rÍ   )rh   Úps_niceÚpsutil_nices      r*   Ú	test_nicezTestProcess.test_nice9  sE   € õ �V˜TœXÑ&Ô&ˆÝ”nÑ&Ô&×+Ò+Ñ-Ô-ˆØ˜+Ò%Ð%Ð%Ð%Ð%Ð%r1   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr`   rc   rk   rr   rx   r~   r‡   r   r   r�   r”   rœ   r§   r¬   r°   r   ÚmarkÚskipifr   r   r¼   rÄ   rË   r
   r   rÐ   © r1   r*   rY   rY   ”   s  € € € € € àLÐLàðð ñ „[ðð
 ðð ñ „[ðð&ð &ð &ð
$ð $ð $ð
$ð $ð $ð
.ð .ð .ð
ð ð ð ÐÑÔØÐÑÔð$ð $ñ Ôñ Ôð$ð ÐÑÔØÐÑÔð$ð $ñ Ôñ Ôð$ð&ð &ð &ð@ð @ð @ð7ð 7ð 7ðð ð ð „[×Ò˜˜ Ð-HÐÑIÔIðIð Iñ JÔIðIð7ð 7ð 7ð( ÐÑÔð0ð 0ñ Ôð0ð „[×Ò˜Ð&=ÐÑ>Ô>Ø„[×Ò˜Ð$9ÐÑ:Ô:ð&ð &ñ ;Ô:ñ ?Ô>ð&ð &ð &r1   rY   c                   óø  — e Zd ZdZ e¦   «         d„ ¦   «         Zej                             e	d¬¦  «        ej                              e
j        d¦  «         d¬¦  «        ej                             e d¬¦  «        d„ ¦   «         ¦   «         ¦   «         Z e¦   «         d	„ ¦   «         Z e¦   «         d
„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zej                             ed¬¦  «         e¦   «         d„ ¦   «         ¦   «         ZdS )ÚTestSystemAPIszTest some system APIs.c                 ó‚  ‡‡— t          t          d¦  «        ¦  «        Št          j        ¦   «         Št          st
          rd‰vr‰                     dd¦  «         t          ‰¦  «        t          ‰¦  «        z
  dk    rBˆfd„‰D ¦   «         ˆfd„‰D ¦   «         z   }|                      dt          |¦  «        z   ¦  «        ‚d S )Nr%   r   r   c                 ó   •— g | ]}|‰v¯|‘Œ	S rØ   rØ   )Ú.0ÚxÚpids_pss     €r*   ú
<listcomp>z,TestSystemAPIs.test_pids.<locals>.<listcomp>R  s#   ø€ ÐEÐEÐE °A¸WÐ4DÐ4D˜!Ð4DÐ4DÐ4Dr1   c                 ó   •— g | ]}|‰v¯|‘Œ	S rØ   rØ   )rÝ   rÞ   Úpids_psutils     €r*   rà   z,TestSystemAPIs.test_pids.<locals>.<listcomp>R  s-   ø€ ð Ið Ið IØ a¨{Ð&:Ð&:�Ð&:Ð&:Ð&:r1   zdifference: )
Úsortedr   rf   Úpidsr   r   ÚinsertrÀ   Úfailr   )rh   Ú
differencerß   râ   s     @@r*   Ú	test_pidszTestSystemAPIs.test_pidsE  så   øø€ õ �˜E™œÑ#Ô#ˆÝ”k‘m”mˆõ ð 	!•Wð 	! ¨'Ð!1Ð!1Ø�NŠN˜1˜aÑ Ô Ð õ ˆw‰<Œ<�#˜kÑ*Ô*Ñ*¨QÒ.Ð.ØEÐEÐEÐE [ÐEÑEÔEð Ið Ið Ið IØ"ðIñ Iô Iñ ˆJð —)’)˜N­S°©_¬_Ñ<Ñ=Ô=Ð=ð	 /Ð.r1   zunreliable on SUNOSrV   Úifconfigzno ifconfig cmdznot supportedc                 óæ   — t          d¦  «        }t          j        d¬¦  «        D ]K}|                     ¦   «         D ]}|                     |¦  «        r nŒ|                      d|› d|› �¦  «        ‚ŒLd S )Nzifconfig -aT)Úperniczcouldn't find z nic in 'ifconfig -a' output
)r   rf   Únet_io_countersr.   rÈ   ræ   )rh   r'   Únicr)   s       r*   Útest_nic_nameszTestSystemAPIs.test_nic_namesY  s¨   € õ �MÑ"Ô"ˆÝÔ)°Ð6Ñ6Ô6ð 	ð 	ˆCØŸš™œð ð �Ø—?’? 3Ñ'Ô'ð Ø�Eðð —i’ið) Sð )ð )Ø &ð)ð )ñô ð ð ð	ð 	r1   c                 ó�  — t          d¦  «        }|                     ¦   «         st          j        d¦  «        ‚|                     d¦  «        }d„ |D ¦   «         }d„ |D ¦   «         }t          |¦  «        t          t          j        ¦   «         ¦  «        k    sJ ‚|                      t          j        ¦   «         |¬¦  «        5  t          t          j        ¦   «         ¦  «        D ]K\  }}|j
        ||         k    sJ ‚|j        ||         k    sJ ‚|j        �t          j        |j        ¦  «         ŒL	 d d d ¦  «         d S # 1 swxY w Y   d S )Núwho -uúno users on this systemrD   c                 óB   — g | ]}|                      ¦   «         d          ‘ŒS )r   ©r.   ©rÝ   rÞ   s     r*   rà   z-TestSystemAPIs.test_users.<locals>.<listcomp>p  s$   € Ð-Ð-Ð- !�—’‘”˜1”Ð-Ð-Ð-r1   c                 óB   — g | ]}|                      ¦   «         d          ‘ŒS )r   ró   rô   s     r*   rà   z-TestSystemAPIs.test_users.<locals>.<listcomp>q  s$   € Ð1Ð1Ð1 a�Q—W’W‘Y”Y˜q”\Ð1Ð1Ð1r1   ©rf   Úwho)r   r!   r   rL   r.   rÀ   rf   ÚusersÚsubTestÚ	enumerater™   Úterminalr%   rg   )rh   r7   Úlinesrø   Ú	terminalsÚidxÚus          r*   Ú
test_userszTestSystemAPIs.test_usersj  sw  € å�‰lŒlˆØ�yŠy‰{Œ{ð 	9Ý”+Ð7Ñ8Ô8Ð8Ø—	’	˜$‘”ˆØ-Ð- uÐ-Ñ-Ô-ˆØ1Ð1¨5Ð1Ñ1Ô1ˆ	Ý�5‰zŒz�S¥¤¡¤Ñ0Ô0Ò0Ð0Ð0Ð0Ø�\Š\¥¤¡¤°Sˆ\Ñ9Ô9ð 	*ð 	*Ý#¥F¤L¡N¤NÑ3Ô3ð *ð *‘��QØ”v  s¤Ò+Ð+Ð+Ð+Ø”z Y¨s¤^Ò3Ð3Ð3Ð3Ø”5Ð$Ý”N 1¤5Ñ)Ô)Ð)øð	*ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   Ã A-D;Ä;D?ÅD?c                 óê  — t          d¦  «        }|                     ¦   «         st          j        d¦  «        ‚d }t	          j        d|¦  «        }|rd}nYt	          j        d|¦  «        }|rd}n?t	          j        d|¦  «        }|rd}n%t	          j        d	|¦  «        }|rd}d
„ |D ¦   «         }|st          j        d|› �¦  «        ‚|                      t          j        ¦   «         |¬¦  «        5  t          t          j        ¦   «         ¦  «        D ]J\  }}t          j
                             |j        ¦  «                             |¦  «        }|||         k    sJ ‚ŒK	 d d d ¦  «         d S # 1 swxY w Y   d S )Nrð   rñ   z\d\d\d\d-\d\d-\d\d \d\d:\d\dz%Y-%m-%d %H:%Mz[A-Z][a-z][a-z] \d\d \d\d:\d\dz%b %d %H:%Mz[A-Z][a-z][a-z] \d\dz%b %dz[a-z][a-z][a-z] \d\dc                 ó6   — g | ]}|                      ¦   «         ‘ŒS rØ   )Ú
capitalizerô   s     r*   rà   z5TestSystemAPIs.test_users_started.<locals>.<listcomp>“  s    € Ð"CÐ"CÐ"C°a 1§<¢<¡>¤>Ð"CÐ"CÐ"Cr1   z&cannot interpret tstamp in who output
rö   )r   r!   r   rL   r5   Úfindallrù   rf   rø   rú   r³   r´   Ústartedrµ   )rh   r7   Útstampr  rþ   rÿ   Úpsutil_values          r*   Útest_users_startedz!TestSystemAPIs.test_users_startedz  sá  € å�‰lŒlˆØ�yŠy‰{Œ{ð 	9Ý”+Ð7Ñ8Ô8Ð8Øˆå”*Ð<¸cÑBÔBˆØð 	DØ%ˆFˆFõ ”jÐ!BÀCÑHÔHˆGØð DØ&��õ œ*Ð%<¸cÑBÔB�Øð DØ$�F�Fõ !œjÐ)@À#ÑFÔF�GØð DØ!(˜Ø"CÐ"C¸7Ð"CÑ"CÔ"C˜àð 	OÝ”+ÐMÈÐMÐMÑNÔNÐNà�\Š\¥¤¡¤°Sˆ\Ñ9Ô9ð 	4ð 	4Ý#¥F¤L¡N¤NÑ3Ô3ð 4ð 4‘��QÝ'Ô0×>Ò>Ø”Iñ ô  ç’(˜6Ñ"Ô"ð ð $ w¨s¤|Ò3Ð3Ð3Ð3Ð3ð	4ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Ã.A,E(Å(E,Å/E,c                 ój  — t          j        dt          t          j        d¦  «        ¬¦  «        5 }t          j        t          ¦  «        5  t          j         	                    t          j        ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   |j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzpsutil._psposix.os.killr4   r€   )r   r‚   ÚOSErrorÚerrnoÚEBADFr   r¯   rf   Ú_psposixÚ
pid_existsr–   Úgetpidr„   ©rh   Úms     r*   Útest_pid_exists_let_raisez(TestSystemAPIs.test_pid_exists_let_raiseŸ  s  € õ ŒZØ%µ7½5¼;ÈÑ3KÔ3Kð
ñ 
ô 
ð 	àÝ”�wÑ'Ô'ð 8ð 8Ý”×*Ò*­2¬9©;¬;Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8à”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó5   ¯B(Á	1BÁ:B(ÂB
	Â
B(ÂB
	ÂB(Â(B,Â/B,c                 ój  — t          j        dt          t          j        d¦  «        ¬¦  «        5 }t          j        t          ¦  «        5  t          j         	                    t          j        ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   |j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Núpsutil._psposix.os.waitpidr4   r€   )r   r‚   r
  r  r  r   r¯   rf   r  Úwait_pidr–   r  r„   r  s     r*   Útest_os_waitpid_let_raisez(TestSystemAPIs.test_os_waitpid_let_raiseª  s  € õ ŒZØ(µg½e¼kÈ2Ñ6NÔ6Nð
ñ 
ô 
ð 	àÝ”�wÑ'Ô'ð 6ð 6Ý”×(Ò(­¬©¬Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6à”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	r  c                 ó‚  — t          j        dt          t          j        d¦  «        ¬¦  «        5 }t          j        t          j        j	        ¦  «        5  t          j         
                    t          j        ¦   «         d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr  r4   r€   g{®Gáz„?)Útimeout)r   r‚   r
  r  ÚEINTRr   r¯   rf   r  ÚTimeoutExpiredr  r–   r  r„   r  s     r*   Útest_os_waitpid_eintrz$TestSystemAPIs.test_os_waitpid_eintr´  s5  € åŒZØ(µg½e¼kÈ2Ñ6NÔ6Nð
ñ 
ô 
ð 	àÝ”�vœÔ=Ñ>Ô>ð Dð DÝ”×(Ò(­¬©¬¸dÐ(ÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dà”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s5   ¯$B4Á3BÂB4ÂB	ÂB4ÂB	ÂB4Â4B8Â;B8c                 ó:  — t          j        dd¬¦  «        5 }t          j        t          ¦  «        5  t
          j                             t          j	        ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   |j
        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr  )r   éÿÿÿÿr£   )r   r‚   r   r¯   r#   rf   r  r  r–   r  r„   r  s     r*   Útest_os_waitpid_bad_ret_statusz-TestSystemAPIs.test_os_waitpid_bad_ret_status½  s  € åŒZØ(°wð
ñ 
ô 
ð 	àÝ”�zÑ*Ô*ð 6ð 6Ý”×(Ò(­¬©¬Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6à”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s4   —B±1A.Á"BÁ.A2	Á2BÁ5A2	Á6BÂBÂBzunreliable on AIXc                 ó  — d}t          j        d¬¦  «        D ]î}t          j        |j        ¦  «        }	 t	          |j        ¦  «        \  }}}}t          |j        |z
  ¦  «        |k     sJ ‚t          |j        |z
  ¦  «        |k     sJ ‚t          |j	        |z
  ¦  «        |k     sJ ‚t          |j
        |z
  ¦  «        dk    sJ ‚Œª# t          $ r8}t          |¦  «                             ¦   «         }d|v sd|v sd|v rY d }~Œæ‚ d }~ww xY wd S )Ni  @ F)Úallr   zno such file or directoryzraw devices not supportedzpermission denied)rf   Údisk_partitionsÚ
disk_usageÚ
mountpointrU   rN   ÚabsÚtotalÚusedÚfreeÚpercentrJ   r   rK   )	rh   Ú	toleranceÚpartÚusagerQ   rR   rS   rT   rO   s	            r*   Útest_disk_usagezTestSystemAPIs.test_disk_usageÇ  sI  € ð $ˆ	ÝÔ*¨uÐ5Ñ5Ô5ð 	=ð 	=ˆDÝÔ% d¤oÑ6Ô6ˆEð=Ý=?ÀÄ¹_¼_Ñ:�	˜8 X¨{õ ˜5œ;¨Ñ2Ñ3Ô3°iÒ?Ð?Ð?Ð?Ý˜5œ:¨Ñ0Ñ1Ô1°IÒ=Ð=Ð=Ð=Ý˜5œ:¨Ñ0Ñ1Ô1°IÒ=Ð=Ð=Ð=Ý˜5œ=¨;Ñ6Ñ7Ô7¸1Ò<Ð<Ð<Ð<Ð<øõ!  ð ð ð õ ˜#‘h”h—n’nÑ&Ô&�à/°3Ð6Ð6Ø2°cÐ9Ð9Ø*¨cÐ1Ð1à�H�H�H�HØøøøøðøøøð		=ð 	=s   ´CÃ
DÃ-C?Ã>C?Ã?DN)rÑ   rÒ   rÓ   rÔ   r   rè   r   rÖ   r×   r
   ÚshutilÚwhichr   rî   r   r  r  r  r  r  r   r-  rØ   r1   r*   rÚ   rÚ   A  s’  € € € € € à Ð àÐÑÔð>ð >ñ Ôð>ð& „[×Ò˜Ð&;ÐÑ<Ô<Ø„[×Ò˜L˜FœL¨Ñ4Ô4Ð4Ð=NÐÑOÔOØ„[×ÒÐ/Ð/¸ÐÑHÔHð
ð 
ñ IÔHñ PÔOñ =Ô<ð
ð ÐÑÔð*ð *ñ Ôð*ð ÐÑÔð"4ð "4ñ Ôð"4ðH	ð 	ð 	ðð ð ðð ð ðð ð ð „[×Ò˜Ð$7ÐÑ8Ô8ØÐÑÔð=ð =ñ Ôñ 9Ô8ð=ð =ð =r1   rÚ   c                   ó   — e Zd Zd„ ZdS )ÚTestMiscc                 óˆ   — t          ¦   «         }|dk    sJ ‚|t          j         ¦   «         k    sJ ‚|t          j        k    sJ ‚d S )Nr   )r   ÚresourceÚmmapÚPAGESIZE)rh   Úpagesizes     r*   Útest_getpagesizezTestMisc.test_getpagesizeä  sK   € Ý‘=”=ˆØ˜!Š|ˆ|ˆ|ˆ|Ø�8Ô/Ñ1Ô1Ò1Ð1Ð1Ð1Ø�4œ=Ò(Ð(Ð(Ð(Ð(Ð(r1   N)rÑ   rÒ   rÓ   r7  rØ   r1   r*   r1  r1  â  s#   € € € € € ð)ð )ð )ð )ð )r1   r1  rb   ),rÔ   r³   r  r–   r5   r.  r\   rŠ   Úunittestr   rf   r   r   r   r   r   r	   r
   Úpsutil.testsr   r   r   r   r   r   r   r   r   r   r4  r3  Úpsutil._psutil_posixr   r   r0   r8   r>   rB   rU   rÖ   r×   rY   rÚ   r1  rØ   r1   r*   ú<module>r;     s0  ðð Ð à €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø #Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "ð 	ð 1Ø€K€K€KØ€O€O€Oà0Ð0Ð0Ð0Ð0Ð0ð(ð (ð (ð (ðnð ð ðð ð ðð ð ðð ð ð8ð 8ð 8ð  „×Ò˜�I lÐÑ3Ô3ði&ð i&ð i&ð i&ð i&�.ñ i&ô i&ñ 4Ô3ði&ðX „×Ò˜�I lÐÑ3Ô3ð]=ð ]=ð ]=ð ]=ð ]=�^ñ ]=ô ]=ñ 4Ô3ð]=ð@ „×Ò˜�I lÐÑ3Ô3ð)ð )ð )ð )ð )ˆ~ñ )ô )ñ 4Ô3ð)ð )ð )r1   