§
    <«ev  ć                   ó¾    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Z ej	        d¦  «        Z
 G d dej        ¦  «        Zedk    r ej        ¦   «          dS dS )	é    N)Śsupport)Śimport_helper)Ś	os_helperŚresourcec                   ó6   e Zd Zd Z ej        ej        dk    d¦  «        d ¦   «         Zd Z	d Z
 ej         eed¦  «        d¦  «        d	 ¦   «         Z ej        ej        dk    d
¦  «        d ¦   «         Zd Z ej        ej        dk    d¦  «        d ¦   «         Zd Z ej         eed¦  «        d¦  «         ej        ddd¦  «        d ¦   «         ¦   «         Z ej         eed¦  «        d¦  «         ej        ddd¦  «        d ¦   «         ¦   «         ZdS )ŚResourceTestc                 ó8   |                       t          t          j        ¦  «         |                       t          t          j        dd¦  «         |                       t          t          j        ¦  «         |                       t          t          j        ddd¦  «         d S ©Né*   )ŚassertRaisesŚ	TypeErrorr   Ś	getrlimitŚ	setrlimit©Śselfs    ś)/usr/lib/python3.11/test/test_resource.pyŚ	test_argszResourceTest.test_args   sv    Ų×Ņ)„XŌ%7Ń8Ō8Š8Ų×Ņ)„XŌ%7øøRŃ@Ō@Š@Ų×Ņ)„XŌ%7Ń8Ō8Š8Ų×Ņ)„XŌ%7øøRĄŃDŌDŠDŠDŠDó    Śvxworksz0setting RLIMIT_FSIZE is not supported on VxWorksc                 ó   	 t                                t           j        ¦  «        \  }}|                      t           j        |¦  «         t                                t           j        ||f¦  «         d S # t          $ r Y d S w xY w)N)r   r   ŚRLIMIT_FSIZEŚassertEqualŚRLIM_INFINITYr   ŚAttributeError)r   ŚcurŚmaxs      r   Śtest_fsize_ismaxzResourceTest.test_fsize_ismax   s    š	BŻ!×+Ņ+­HŌ,AŃBŌBJS#š ×ŅXŌ3°SŃ9Ō9Š9Ż×ŅxŌ4°søC°jŃAŌAŠAŠAŠAųõ š 	š 	š 	ŲDDš	ųųųs   'A2 Į2
B Į?B c                 ó   	 t                                t           j        ¦  «        \  }}	 	 t                                t           j        d|f¦  «         d}n# t          $ r d}Y nw xY wt          t          j        d¦  «        }	 |                     d¦  «         	 |                     d¦  «         | 	                    ¦   «          t          d¦  «        D ]*}t          j        d¦  «         | 	                    ¦   «          +n# t          $ r |s Y nw xY w|r't                                t           j        ||f¦  «         |                     ¦   «          n# |                     ¦   «          w xY w	 |r't                                t           j        ||f¦  «         t          j        t          j        ¦  «         d S # |r't                                t           j        ||f¦  «         t          j        t          j        ¦  «         w xY w# t           $ r Y d S w xY w)	Ni   TFŚwbs   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXó   Yé   g¹?)r   r   r   r   Ś
ValueErrorŚopenr   ŚTESTFNŚwriteŚflushŚrangeŚtimeŚsleepŚOSErrorŚcloseŚunlinkr   )r   r   r   Ś	limit_setŚfŚis         r   Śtest_fsize_enforcedz ResourceTest.test_fsize_enforced%   s   š,	3Ż!×+Ņ+­HŌ,AŃBŌBJS#š 3š&Ż×&Ņ&„xŌ'<øtĄSøkŃJŌJŠJŲ $IIųŻ!š &š &š &Ų %IIIš&ųųųåŌ)Ø4Ń0Ō0šŲGGKŃ(Ō(Š(š"Ų Ų			õ "' q”¤š &š &AŻ J rNNNŲGGIIIIš&ųõ #š "š "š "Ų(š "Ų!š"š "š"ųųųš !š Nõ !×*Ņ*­8Ō+@Ą3ČĄ*ŃMŌMŠMąGGIIIIųAGGIIIIųųųIąš JŻ×&Ņ&„xŌ'<øsĄCøjŃIŌIŠIŻŌ „Ō!1Ń2Ō2Š2Š2Š2ųš š JŻ×&Ņ&„xŌ'<øsĄCøjŃIŌIŠIŻŌ „Ō!1Ń2Ō2Š2Š2ųųųųõU š 	š 	š 	ŲDDš	ųųųsx   'G< «)A ĮF0 ĮA$Į!F0 Į#A$Į$F0 ĀE ĀA#C< Ć;E Ć<DÄ	E ÄDÄ,E Ä8F0 ÅE#Å#F0 Ę0A	G9Ē<
H
Č	H
c                 ó   ddz  }	 t                                t           j        ¦  «        \  }}	 t                                t           j        ||f¦  «         n# t          t
          f$ r Y nw xY w	 t                                t           j        ||f¦  «         d S # t          t
          f$ r Y d S w xY w# t          $ r Y d S w xY w)Né
   é2   )r   r   r   r   ŚOverflowErrorr"   r   )r   Śtoo_bigr   r   s       r   Śtest_fsize_toobigzResourceTest.test_fsize_toobigT   sē    ąb&š	Ż!×+Ņ+­HŌ,AŃBŌBJS#šŻ×"Ņ"„8Ō#8ø7ĄCø.ŃIŌIŠIŠIųŻ!„:Š.š š š ŲšųųųšŻ×"Ņ"„8Ō#8ø3Ąø.ŃIŌIŠIŠIŠIųŻ!„:Š.š š š Ųšųųųųõ š 	š 	š 	ŲDDš	ųųųs4   'B0 Æ'A ĮA+Į*A+Į/'B ĀB-Ā,B-Ā0
B>Ā=B>Ś	getrusagezneeds getrusagec                 ó"   |                       t          t          j        ¦  «         |                       t          t          j        dd¦  «         t                               t          j        ¦  «        }t                               t          j        ¦  «        }	 t                               t          j        ¦  «        }n# t          t          f$ r Y nw xY w	 t                               t          j	        ¦  «        }d S # t          t          f$ r Y d S w xY wr
   )
r   r   r   r7   ŚRUSAGE_SELFŚRUSAGE_CHILDRENŚRUSAGE_BOTHr"   r   ŚRUSAGE_THREAD)r   Ś	usageselfŚusagechildrenŚ	usagebothŚusage_threads        r   Śtest_getrusagezResourceTest.test_getrusagee   sģ    ą×Ņ)„XŌ%7Ń8Ō8Š8Ų×Ņ)„XŌ%7øøRŃ@Ō@Š@Ż×&Ņ&„xŌ';Ń<Ō<	Ż ×*Ņ*­8Ō+CŃDŌDš	Ż ×*Ņ*­8Ō+?Ń@Ō@IIųŻNŠ+š 	š 	š 	ŲDš	ųųųš	Ż#×-Ņ-­hŌ.DŃEŌELLLųŻNŠ+š 	š 	š 	ŲDDš	ųųųs$   Ā$B; Ā;CĆCĆ$C9 Ć9DÄDz.setting RLIMIT_CPU is not supported on VxWorksc                 óę    	 t                                t           j        ¦  «        } G d d¦  «        }t                                t           j         |¦   «         ¦  «         d S # t          $ r Y d S w xY w)Nc                   ó    e Zd Zd Zd ZdS )ś9ResourceTest.test_setrusage_refcount.<locals>.BadSequencec                 ó    dS ©Né   © r   s    r   Ś__len__zAResourceTest.test_setrusage_refcount.<locals>.BadSequence.__len__   s    Ų1r   c                 ój    |dv r)t          t          t          d¦  «        ¦  «        ¦  «        S t          )N)r   é   i@B )ŚlenŚtupler'   Ś
IndexError)r   Śkeys     r   Ś__getitem__zEResourceTest.test_setrusage_refcount.<locals>.BadSequence.__getitem__   s-    Ųf}}Ż"„5­Øw©¬Ń#8Ō#8Ń9Ō9Š9Ż$Š$r   N©Ś__name__Ś
__module__Ś__qualname__rI   rP   rH   r   r   ŚBadSequencerD   ~   s2        šš š š%š %š %š %š %r   rU   )r   r   Ś
RLIMIT_CPUr   r   )r   ŚlimitsrU   s      r   Śtest_setrusage_refcountz$ResourceTest.test_setrusage_refcountv   s    š	CŻ×'Ņ'­Ō(;Ń<Ō<Fš%š %š %š %š %ń %ō %š %õ ×ŅxŌ2°K°K±M“MŃBŌBŠBŠBŠBųõ š 	š 	š 	ŲDDš	ųųųs   $A" Į"
A0Į/A0c                 ó    t                                ¦   «         }|                      |t          ¦  «         |                      |d¦  «         d S )Nr   )r   ŚgetpagesizeŚassertIsInstanceŚintŚassertGreaterEqual)r   Śpagesizes     r   Śtest_pagesizezResourceTest.test_pagesize   sE    Ż×'Ņ'Ń)Ō)Ų×Ņh­Ń,Ō,Š,Ų×Ņ Ø!Ń,Ō,Š,Š,Š,r   Ślinuxztest requires Linuxc           	      óŌ    dD ]d}t          j        t          ¦  «        5  |                      t	          t
          d|z   ¦  «        t          ¦  «         d d d ¦  «         n# 1 swxY w Y   ed S )N)ŚMSGQUEUEŚNICEŚRTPRIOŚRTTIMEŚ
SIGPENDINGŚRLIMIT_©Ś
contextlibŚsuppressr   r[   Śgetattrr   r\   ©r   Śattrs     r   Śtest_linux_constantsz!ResourceTest.test_linux_constants   s¼    ąJš 	Pš 	PDŻŌ$„^Ń4Ō4š Pš PŲ×%Ņ%„g­hø	ĄDŃ8HŃ&IŌ&IĶ3ŃOŌOŠOšPš Pš Pń Pō Pš Pš Pš Pš Pš Pš Pųųųš Pš Pš Pš Pųš	Pš 	Pó   2AĮA 	Į#A 	c           	      óŌ    dD ]d}t          j        t          ¦  «        5  |                      t	          t
          d|z   ¦  «        t          ¦  «         d d d ¦  «         n# 1 swxY w Y   ed S )N)ŚSWAPŚSBSIZEŚNPTSrg   rh   rl   s     r   Śtest_freebsd_contantsz"ResourceTest.test_freebsd_contants   s¼    Ų.š 	Pš 	PDŻŌ$„^Ń4Ō4š Pš PŲ×%Ņ%„g­hø	ĄDŃ8HŃ&IŌ&IĶ3ŃOŌOŠOšPš Pš Pń Pō Pš Pš Pš Pš Pš Pš Pųųųš Pš Pš Pš Pųš	Pš 	Pro   Śprlimitz
no prlimitrG   é   é$   c                 óą   |                       t          t          j        ¦  «         |                       t          t          j        dt          j        ¦  «         t                               t          j        ¦  «        }|                      t                               dt          j        ¦  «        |¦  «         |                      t                               dt          j        |¦  «        |¦  «         d S )Né’’’’r   )r   r   r   ru   ŚProcessLookupErrorŚ	RLIMIT_ASr   r   )r   Ślimits     r   Śtest_prlimitzResourceTest.test_prlimit   sĄ    š 	×Ņ)„XŌ%5Ń6Ō6Š6Ų×ŅÕ,­hŌ.>ŲhŌ0ń	2ō 	2š 	2å×"Ņ"„8Ō#5Ń6Ō6Ų×Ņ×)Ņ)Ø!­XŌ-?Ń@Ō@Ą%ŃHŌHŠHŲ×Ņ×)Ņ)Ø!­XŌ-?ĄŃGŌGŲń	 ō 	 š 	 š 	 š 	 r   c                 óņ     G fdd¦  «        }t                                t           j        ¦  «        |                      t                                dt           j         |¦   «         ¦  «        ¦  «         d S )Nc                   ó     e Zd Zd Z fdZdS )ś2ResourceTest.test_prlimit_refcount.<locals>.BadSeqc                 ó    dS rF   rH   r   s    r   rI   z:ResourceTest.test_prlimit_refcount.<locals>.BadSeq.__len__Ø   s    Ųqr   c                 ó    |         dz
  S )NrK   rH   )r   rO   rW   s     r   rP   z>ResourceTest.test_prlimit_refcount.<locals>.BadSeq.__getitem__Ŗ   s   ų Ųc{ QŠ&r   NrQ   )rW   s   r   ŚBadSeqr   §   s=   ų     šš š š'š 'š 'š 'š 'š 'š 'r   r   r   )r   r   r{   r   ru   )r   r   rW   s     @r   Śtest_prlimit_refcountz"ResourceTest.test_prlimit_refcount¤   s   ų š	'š 	'š 	'š 	'š 	'š 	'š 	'ń 	'ō 	'š 	'õ ×#Ņ#„HŌ$6Ń7Ō7Ų×Ņ×)Ņ)Ø!­XŌ-?ĄĄĮÄŃJŌJŲń	!ō 	!š 	!š 	!š 	!r   N)rR   rS   rT   r   ŚunittestŚskipIfŚsysŚplatformr   r0   r6   Ś
skipUnlessŚhasattrr   rA   rX   r_   rn   rt   r   Śrequires_linux_versionr}   r   rH   r   r   r   r      sü       šEš Eš Eš X_S\ YŅ.ŲGńIō IšBš BńIō IšBš-3š -3š -3š^š š š" XŌ Ø;Ń7Ō7Š9JŃKŌKšš ń LŌKšš  X_S\ YŅ.ŲEńGō GšCš CńGō GšCš -š -š -š
 XŌØŅ0Š2GŃHŌHšPš Pń IŌHšPš
Pš Pš Pš
 XŌ Ø9Ń5Ō5°|ŃDŌDŲ#WŌ# A qØ"Ń-Ō-š š  ń .Ō-ń EŌDš š XŌ Ø9Ń5Ō5°|ŃDŌDŲ#WŌ# A qØ"Ń-Ō-š	!š 	!ń .Ō-ń EŌDš	!š 	!š 	!r   r   Ś__main__)ri   r   r   Śtestr   Śtest.supportr   r   r(   Śimport_moduler   ŚTestCaser   rR   ŚmainrH   r   r   ś<module>r      sŠ   šŲ Š Š Š Ų 



Ų Ų Š Š Š Š Š Ų &Š &Š &Š &Š &Š &Ų "Š "Š "Š "Š "Š "Ų ą&=Ō& zŃ2Ō2šb!š b!š b!š b!š b!8Ō$ń b!ō b!š b!šJ zŅŠŲHMOOOOOš Šr   