python (3.12.0)

(root)/
lib/
python3.12/
test/
libregrtest/
__pycache__/
runtest_mp.cpython-312.pyc

ϑeU	ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZmZmZmZmZddlmZddlmZddlmZddlmZddlmZddlmZmZmZm Z m!Z!m"Z"dd	l#m$Z$dd
l%m&Z&m'Z'ejPdk(rddl)Z)dZ*e*e k\sJd
Z+e+e*k\sJdZ,e-edxr	e-edZ.ej^dGddZ0GddejbZ2de3e4efde0e3e4efzfdZ5de4de6ee4ffdZ7	d3de0dede4dzdejpfdZ9de4defdZ:Gd d!Z;Gd"d#eZ<e4Z=e6ed$e<fe6ede=fzZ>Gd%d&e?Z@Gd'd(e
jZBd)eCeBdeCeBfd*ZDGd+d,ZEd-ed.e"ddfd/ZFGd0d1ejbZGde3e4efdee3e4efzfd2ZHy)4N)
NamedTupleNoReturnLiteralAnyTextIO)support)	os_helper)	TestStats)	Namespace)Regrtest)runtest
TestResultStatePROGRESS_MIN_TIME
MatchTestsRunTests)setup_tests)format_duration
print_warningwin32g>@gr@setsidkillpgT)slotscDeZdZUeed<eed<dZeed<dZe	dzed<y)	WorkerJob	test_name	namespaceFrerunNmatch_tests)
__name__
__module____qualname__str__annotations__rrboolrrO/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/libregrtest/runtest_mp.pyrr/s&NE4%)Kd")r'rc2eZdZdedeeefffdZxZS)_EncodeWorkerJoboreturnc|xtdx\tj|}d|d<|Stdx\t	|}d|d<|S	t
||S)Nr&T__worker_job__
__namespace__)rdataclassesasdictrvarssuperdefaultselfr+result	__class__s   r(r4z_EncodeWorkerJob.default8sj$++A.+/'(
a*.'
wq))r')r r!r"rdictr#r4
__classcell__r8s@r(r*r*7s#**c3h**r'r*dr,cd|vr|jdtdi|Sd|vr|jdtdi|S|S)Nr.r/r&)poprrr<s r(_decode_worker_jobr@FsH1	~1~!	o~1~r'worker_jsonc8tj|tS)Nobject_hook)jsonloadsr@)rAs r(_parse_worker_argsrGQs::k"466r'
worker_joboutput_filetmp_dirc|j}|j}tj|t}||}nt
jg}g|tjdddd|}ttj}|||d<||d<||d<t|||d	tjd
k7tj}	trd	|	d<t!j"|fi|	S)
Nclsz-uz-mz
test.regrtestz
--worker-argsTMPDIRTEMPTMPTnt)envstdoutstderrtext	close_fdscwdstart_new_session)rpythonrEdumpsr*sys
executablerargs_from_interpreter_flagsr9osenvironnamer	SAVEDCWDUSE_PROCESS_GROUP
subprocessPopen)
rHrIrJnsrYworker_argsr\cmdrRkws
          r(run_test_in_subprocessriVs

		B
YYF**Z-=>K

nn%
)J)<<>))) ))()C
rzz
CH
FE



77d?
B"&C&2&&r'ct|}|j}|j}|j}|j}t||rC|r)ddj
|z}td|d|ddntd|ddd|_|||_t||}tttj|t	dtjd
y)Nz
matching: , zRe-running z in verbose mode ()Tflushz in verbose moderLr)rGrrrrrjoinprintverboser
rErZEncodeTestResultr[exit)rArHrerrrmatchingr7s        r(run_tests_workerru}s#K0J			B$$IE((KO#dii&<<HK	{*<XJaHPTUK	{*:;4H
$
R
#F	G
$**V!1
2$?HHQKr'c(eZdZdZdZdZdZdZy)MultiprocessIteratorz8A thread-safe iterator over tests for multiprocess mode.cDtj|_||_yN)	threadingLocklock
tests_iter)r6r}s  r(__init__zMultiprocessIterator.__init__sNN$	$r'c|Sryr&r6s r(__iter__zMultiprocessIterator.__iter__sr'c|j5|jtt|jcdddS#1swYyxYwry)r|r}
StopIterationnextrs r(__next__zMultiprocessIterator.__next__s:
YY	)&##(	)	)	)s	'>AcT|j5d|_dddy#1swYyxYwry)r|r}rs r(stopzMultiprocessIterator.stops%
YY	#"DO	#	#	#s'N)r r!r"__doc__r~rrrr&r'r(rwrwsB%)#r'rwc@eZdZUeed<dZedzed<dZedzed<y)MultiprocessResultr7N
worker_stdouterr_msg)r r!r"rr$rr#rr&r'r(rrs$ $M3:$GS4Zr'rFceZdZy)
ExitThreadN)r r!r"r&r'r(rrsr'rceZdZdeddddffdZdefdZddZdd	Z		dd
e	dedzde
fdZ	dd
ededzdefdZ
dede
fdZddZddZdeddfdZxZS)TestWorkerProcess	worker_idrunnerMultiprocessTestRunnerr,Ncdt|||_|j|_|j|_|j
|_|j|_|j|_|j|_	|j|_
d|_d|_d|_
d|_d|_y)NF)r3r~rruntestspendingoutputreworker_timeouttimeoutregrtestrcurrent_test_name
start_time_popen_killed_stopped)r6rrr8s   r(r~zTestWorkerProcess.__init__s
"
~~mm)),,
\\
!%
r'cd|jg}|jr|jdn|jd|j}|r|jd||j}|Wtj|jz
}|jd|jjdt|fddj|zS)	NzTestWorkerProcess #runningstoppedztest=zpid=ztime=z<%s> )ris_aliveappendrrtime	monotonicrextendpidrro)r6infotestpopendts     r(__repr__zTestWorkerProcess.__repr__s%dnn%567==?KK	"KK	"%%KK%v'!DOO3BKK401 !4 568
9&&r'c|j}|y|jryd|_tr|d}n|}td|tj
d	tr/t
j|jtjy|jy#t$rYyt$r}td|d|Yd}~yd}~wwxYw)NTz process groupzKill )filernzFailed to kill z: )rrrbrpr[rTr^rrsignalSIGKILLkillProcessLookupErrorOSErrorr)r6rwhatexcs    r(_killzTestWorkerProcess._kills=<<V>*DVD
dVn3::T:	= 		%))V^^4

!	
	=OD6C7;<<	=s$4BB	C$C,CCc2d|_|jy)NT)rrrs r(rzTestWorkerProcess.stops


r'test_resultrSct|||Sry)r)r6rrSrs    r(mp_result_errorz!TestWorkerProcess.mp_result_errors"+vw??r'rIrJc|j|_	t|||}d|_||_	|j
r|j
t	|j|j}|J||jd|_d|_S#d|_xYw#tj$r'|j
rt|j
d}Ynt$r|j
rtwxYwn#|j
xYw	|jd|_d|_y#|jd|_d|_wxYw)NFr)rrrirrrrrwaitr_wait_completedrcTimeoutExpiredr)r6rHrIrJrretcodes      r(_run_processzTestWorkerProcess._run_process	sO!+!5!5	*:{GLE DLDK
'	*}}

  
**T\\*:**2
  "DK%)D"W	%)D",,

==%$


==%$
		JJL
  "DK%)D"
  "DK%)D"sFB"C8!B
B7C4C8C44C87D.8DD.. Erc
*tjdk(rtj}ntjj
}|jj|}tjd|5}t||j|j|}tjsttjd}t j"j%|}	|j'|||}t!j(|}t+j,|n|j'||}d}|j/d	|j1j3}		ddd-t7|t8j>
}|j=|	Sd}|dk7rd|z}nF	jAd
\}	}
}|	jC}	|sd}n	tEjF|tH}|r.t7|t8j:
}|j=|	|SrAd|dtK|ddjMtO|}	|z
}	jQtS	S#t!j(|}t+j,|wxYw#t4$rF}
d	|
}t7|t8j:
}|j=||cYd}
~
cdddSd}
~
wwxYw#1swYxYw#t4$r}
d|
z}Yd}
~
!d}
~
wwxYw)Nrzw+)encoding)rrrtest_python_)prefixr&rzCannot read process stdout: state)rzExit code %s
zFailed to parse worker stdoutrCzFailed to parse worker JSON: %sz

Warning -- z leaked temporary files (): rk)*r[platformlocalegetencodingrSrrget_match_teststempfile
TemporaryFilerrerris_wasimkdtempr^pathabspathrlistdirr	rmtreeseekreadstrip	ExceptionrrMULTIPROCESSING_ERRORrTIMEOUT
rpartitionrstriprErFdecode_test_resultlenrosortedset_env_changedr)r6rrrstdout_filerHrJr	tmp_filesrSrrr7_rAmsgs                r(_runtestzTestWorkerProcess._runtest>s<<7"))+Hzz**Hmm33I>
#
#D8
<	E"9-1WW)-/:<J??#**.A''//'2."//
KQG "

7 3I$$W-++JD	Q
E$))+1133	EB?	?F''77a<$w.G%+%6%6t%<"FA{]]_F9F!ZZ4FHF
	1L1LMF''@@!!*,9~&c$))F94E*F)GIC
cMF""$!&&11_!#

7 3I$$W-
E9>#IU5P5PQ++FG+DD?	E	E4
E5	E	Ed!F?#EGFsh5A)K,I+2AK,JK9+,JK,	K)#2K$K)K,$K))K,,K69	LL

Lc|jj}|jj}|js		t	|j
}tj|_	|j|}tj|jz
|j_|jjd|f|jj||ry	|jsyy#t$rYywxYw#t $rYyt"$r2|jjdt%j&fYywxYw)NFT)refailfastfail_env_changedrrrrrrrrr7durationrput	must_stopr
BaseException	traceback
format_exc)r6	fail_fastrr	mp_results     r(runzTestWorkerProcess.runs
GG$$	7733--
 $T\\ 2I#'.."2 MM)4	,0NN,<t,N	  )	 23##--i9IJK--%
 
y';';'= >?
s6C4BD4	D=D?DD	E7EEc	|j}	|jty#tjt
f$r+}t
d|dttd|Yd}~yd}~wwxYw)NzFailed to wait for z completion (timeout=r)rrJOIN_TIMEOUTrcrrrr)r6rrs   r(rz!TestWorkerProcess._wait_completedsg	&JJ|$))73	&/v6&&5l&C%DC G%
&
&	&s$A(!A##A(rc	|jd|jsytj|z
}|jjd|dt
||tkDrtd|dt
|y)Ng?zWaiting for z thread for zFailed to join z in )	rorrrrlogrrr)r6rrs   r(wait_stoppedzTestWorkerProcess.wait_stoppedsIIcN==?!J.BMMTF3%%4R%8$9;
<L vT/":M9NOPr'r,N)NNry)r r!r"intr~r#rrrrrrrrrrrfloatrr:r;s@r(rrs#/GD '#' =8"	@@d
@

@,03*F3*!Dj3*473*jM2#M2*<M2^.&ur'rworkerscg}|D]^}|j}|stj|jz
}|tk\s=|dt|d}|j
|`|S)Nz (rl)rrrrrrr)rrworkerrrrUs      r(get_runningrsjG!"44 
^^
 1 1
1
"" 1?23FGDNN4 !Nr'cjeZdZdededdfdZddZddZdedzfdZ	d	e
ddfd
ZdedefdZ
dd
Zy)rrrr,Nc|j}|j}||_||_|j|_|jj
|_||_t
j|_|j}t||_|t|dz|dz|_
d|_yd|_
d|_y)Ng?i,)rerrrrrqueueQueuer
iter_testsrwrminrr)r6rrrerr}s      r(r~zMultiprocessTestRunner.__init__s
[[** 
 
^^
==$$05
((*
+J7#&gmWv5E"FD#'Dr'c|jj}|jj}td|dzDcgc]}t	||c}|_dt
|j
d}|r(|dt|dt|jdz
}|j||j
D]}|jycc}w)NzRun tests in parallel using z child processesz (timeout: z, worker timeout: rl)reuse_mprrangerrrrrrstart)r6r	rindexrrs      r(
start_workersz$MultiprocessTestRunner.start_workerss''//%*1fqj%9;!*%6;,S->,??OP&w/&t':':;=
>C	

ll	FLLN	;sCctj}|jD]}|j|jD]}|j	|yry)rrrrr)r6rrs   r(stop_workersz#MultiprocessTestRunner.stop_workerssK^^%
ll	FKKM	ll	,F
+	,r'ch|jj}|jjdu}t}t	d|j
Dr:|rt
jtd	|jj|S	|jjdS#tj$rYnwxYwt|j
}|r%|s#|jddj|zt	d|j
DrɌ#tj$rYywxYw)Nc3<K|]}|jywry)r).0rs  r(	<genexpr>z5MultiprocessTestRunner._get_result.<locals>.<genexpr>s?&//#?sT)rsrzrunning: %srkr)repgorPROGRESS_UPDATEanyrfaulthandlerdump_traceback_laterMAIN_PROCESS_TIMEOUTrgetrEmptyrrro)r6ruse_faulthandlerrrs     r(_get_resultz"MultiprocessTestRunner._get_resultsggkk GGOO47!?$,,??112F7;=
{{w77	;;??1?--;;

"$,,/Gs7);;<?$,,??&{{		s$/B(D(B>=B>D10D1rc|j}|jj}t|}|jr|d|jzz
}n0|j
tk\r|s|dt|j
zz
}t|j}|r|s|ddj|zz
}|jj|j|y)Nz (%s)z -- running: %srk)r7rerr#rrrrrrrordisplay_progress
test_index)r6rr7rrUrs      r(display_resultz%MultiprocessTestRunner.display_results!!ggkk6{Gi////Doo!223Gofoo>>>Ddll+3%		'(:::D

&&t=r'itemc|jj}|drM|d}td|tdtj
}|jj|||S|xjdz
c_|d}|j}|jj|||j||jrt|jd|S)	z&Returns True if test runner must stop.rrzregrtest worker thread failed: z<regrtest worker>r)rTrm)
rrrrrrraccumulate_resultr r7r!rrp)r6r"rrr7rs      r(_process_resultz&MultiprocessTestRunner._process_result*s

##7aJ;J<HI 35;V;VWFMM++F%+@M1G	!!

''e'<I&"")))6
r'c|jj}|jj}|jj}|j	d|_		|j
}|n%|j|}|j||rn8|tj|jj!|j#y#t$rtd|j_YgwxYw#|tj|jj!|j#wxYw)NrT)rerrrr
r rr%rKeyboardInterruptrprinterruptedrcancel_dump_traceback_laterrrr)r6rrrr"r7s      r(	run_testsz MultiprocessTestRunner.run_tests@sGG$$	7733''//	 '')<--d3##I/?@"88:
LL!	-G(,DMM%	-"88:
LLs%9C$C<9C?;C<<C??AEr)r r!r"rrr~r
rQueueOutputrrr!r%r%r*r&r'r(rrscX$*,[4/:
>(:
>t
>KD, r'rrrc8t||jyry)rr*)rrs  r(run_tests_multiprocessr-^s8X.88:r'c6eZdZdZdedeeefffdZxZS)rrz7Encode a TestResult (sub)class object into a JSON dict.r+r,ct|tr0tj|}|jj
|d<|St||S)N__test_result__)
isinstancerr0r1r8r r3r4r5s   r(r4zEncodeTestResult.defaultesFa$ ''*F()(<(<F$%Mwq!!r')	r r!r"rrr9r#r4r:r;s@r(rrrrbs&A""c3h""r'rrcrd|vr|S|jd|dtdi|d|d<tdi|S)z7Decode a TestResult (sub)class object from a JSON dict.r0statsr&)r>r
rr?s r(rrnsI!EE
z,7,'
??r'ry)Ir0rrEos.pathr^rrrcr[rrzrrtypingrrrrrrrtest.supportr	r
test.libregrtest.cmdlinertest.libregrtest.mainrtest.libregrtest.runtestr
rrrrrtest.libregrtest.setuprtest.libregrtest.utilsrrrrrrrhasattrrb	dataclassrJSONEncoderr*r9r#r@tuplerGrdrirurwrExcStrr+rrThreadrlistrrr-rrrr&r'r(<module>rCsM

=="".*/A<<7+++
 ..R*Dwr8/DT"**#**t''*$sCx.Yc3h-G6C6E)S.,A626$'y$'(.$'$'$J$':D:J:J$'N#(:##,

GEN$667%
v@U:VV		D	((DN
/0
T:K5L
H H V;X;;d;	"t''	"	$sCx.	Z$sCx.-H	r'