+
    BiE                        R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t^ RI
HtHt ^ RI
Ht ^ RI
Ht ^ RI
Ht ]P"                  P%                  R4       ]P"                  P'                  RR7       R	t]P*                  t]! ]R
4      t]P0                  ! ]R4      t]P"                  P4                  t]P0                  ! ]R4      t]P                  t]P"                  P<                  3R lt]P"                  PA                  4       ]PB                  R 4       4       t" ! R R]PF                  4      t$ ! R R]PF                  4      t% ! R R]	PL                  4      t' ! R R]	PP                  4      t) ! R R]	PT                  ]'4      t+]'       d    ! R R]	PX                  ]'4      t- ! R R]PF                  4      t. ! R R]PF                  4      t/]0R8X  d   ]Pb                  ! 4        R# R# ) z
Test suite for socketserver.
N)reap_childrenverbose)	os_helper)socket_helper)threading_helpernetworkT)modules   hello world
AF_UNIXzrequires Unix socketszrequires forkingc                 r    \        V .. . V4      w  r4pW9   d   V P                  V4      # \        R V : 24      h)ztimed out on )_real_selectrecvRuntimeError)sockntimeoutrwxs   &&&   -/usr/lib/python3.14/test/test_socketserver.pyreceiver   &   s9    D62r73GA!yyy|677    c              #    "   \         P                  ! 4       pV^ 8X  d   \         P                  ! ^H4        Rx   \        P                  P                  T^HR7       R#    h ; i  \        P                  P                  T^HR7       i ; i5i)zBTests that a custom child process is not waited on (Issue 1540386)N)exitcode)osfork_exittestsupportwait_process)testcasepids   & r   simple_subprocessr!   .   sh      '')C
ax
4
 	!!#!3!!#!3s'   3B
A #B
A!!A$ $#BB
c                   N  a  ] tR t^>t o RtR tR tR tR t]	P                  R 4       tR tR tR	 tR
 t]R 4       t]R 4       t]R 4       t]]R 4       4       tR tR t]R 4       t]R 4       t]R 4       t]]R 4       4       t]	P                  R 4       tR tR tR tRt V t!R# )SocketServerTestzTest all socket servers.c                "    ^ V n         . V n        R#     N	port_seed
test_filesselfs   &r   setUpSocketServerTest.setUpA   s    r   c                    \        4        V P                   F  p \        P                  ! V4       K  	  . V P                  R &   R#   \         d     K=  i ; i):NNNN)r   r)   r   removeOSError)r+   fns   & r   tearDownSocketServerTest.tearDownE   sI    //B		" "
    s   AAAc                    V\         P                  8X  d	   \        ^ 3# \        P                  ! 4       pV P
                  P                  V4       V# )r&   )socketAF_INETHOSTr   create_unix_domain_namer)   append)r+   protor1   s   && r   pickaddrSocketServerTest.pickaddrO   s?    FNN"!9 668BOO""2&Ir   c           	     D    ! R  RV4      p ! R RV4      p\         '       d   \        R4        V! W4      pV P	                  XP
                  VP                  P                  4       4       V#   \         d(   pT P                  RT: RT: RT: 24        Rp?LcRp?ii ; i)	c                   &   a  ] tR t^Zt o R tRtV tR# ).SocketServerTest.make_server.<locals>.MyServerc                &    V P                  V4       h N)close_requestr+   requestclient_addresss   &&&r   handle_error;SocketServerTest.make_server.<locals>.MyServer.handle_error[   s    ""7+r    N)__name__
__module____qualname____firstlineno__rF   __static_attributes____classdictcell____classdict__s   @r   MyServerr?   Z   s      r   rQ   c                   &   a  ] tR t^_t o R tRtV tR# )/SocketServerTest.make_server.<locals>.MyHandlerc                p    V P                   P                  4       pV P                  P                  V4       R # rA   )rfilereadlinewfilewrite)r+   lines   & r   handle6SocketServerTest.make_server.<locals>.MyHandler.handle`   s&    zz**,

  &r   rH   NrI   rJ   rK   rL   rZ   rM   rN   rO   s   @r   	MyHandlerrS   _   s     ' 'r   r]   zcreating serverzCannot create server (z, z): N)r   printPermissionErrorskipTestassertEqualserver_addressr5   getsockname)r+   addrsvrclshdlrbaserQ   r]   serveres   &&&&    r   make_serverSocketServerTest.make_serverY   s    	v 	
	' 	'
 7E+,	-d.F
 	..0I0I0KL  	-MM!4, - -	-s   A- -B8BBc                   V P                  V P                  VP                  4      W4      pVP                  p\        '       d   \        R V4       \        RV4       \        P                  ! RV,          VP                  RR/R7      pRVn	        VP                  4        \        '       d   \        R4       \        ^4       F.  p\        '       d   \        RV4       V! VP                  V4       K0  	  \        '       d   \        R	4       VP                  4        VP                  4        VP                  4        V P                  RVP                   P#                  4       4       \$        '       d<   \'        V\(        P*                  4      '       d   V P-                  VP.                  4       \        '       d   \        R
4       R# R# )zADDR =zCLASS =z
%s servingpoll_interval{Gz?nametargetkwargsTzserver runningztest clientzwaiting for serverdoneN)ri   r;   address_familyrb   r   r^   	threadingThreadserve_foreverdaemonstartrangeshutdownjoinserver_closera   r5   filenoHAVE_FORKING
isinstancesocketserverForkingMixInassertFalseactive_children)r+   re   rf   testfuncrg   rd   tis   &&&&    r   
run_serverSocketServerTest.run_servern   sG   !!$--0E0E"F"(4 $$7(D!)V$&'' $D)+ 		7E*+qAwmQ/V**D1  7E./	V]]1134<Jv|/H/HII V3347E&M7r   c                v   \         P                   ! V\         P                  4      ;_uu_ 4       pVP                  V4       VP                  \        4       \        V^d4      ;rEV'       d   RV9  d   \        V^d4      pWE,          pK%  V P                  V\        4       RRR4       R#   + '       g   i     R# ; id      
N)r5   SOCK_STREAMconnectsendallTEST_STRr   ra   r+   r:   rd   sbufdatas   &&&   r   stream_examineSocketServerTest.stream_examine   s{    ]]5&"4"455IIdOIIh C(C5+q#S(+ 6555s   ;B'*3B''B8	c                   \         P                   ! V\         P                  4      ;_uu_ 4       p\        '       d6   V\         P                  8X  d!   VP	                  V P                  V4      4       VP                  \        V4       \        V^d4      ;rEV'       d   RV9  d   \        V^d4      pWE,          pK%  V P                  V\        4       RRR4       R#   + '       g   i     R# ; ir   )
r5   
SOCK_DGRAMHAVE_UNIX_SOCKETSr	   bindr;   sendtor   r   ra   r   s   &&&   r   dgram_examineSocketServerTest.dgram_examine   s    ]]5&"3"344  Ufnn%<t}}U+,HHXt$ C(C5+q#S(+ 5444s   A,C3CC)	c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   	TCPServerStreamRequestHandlerr   r*   s   &r   test_TCPServerSocketServerTest.test_TCPServer   s(    ..$99++	-r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   ThreadingTCPServerr   r   r*   s   &r   test_ThreadingTCPServer(SocketServerTest.test_ThreadingTCPServer   s(    77$99++	-r   c                    \        V 4      ;_uu_ 4        V P                  \        P                  \        P                  V P
                  4       R R R 4       R #   + '       g   i     R # ; irA   )r!   r   r   ForkingTCPServerr   r   r*   s   &r   test_ForkingTCPServer&SocketServerTest.test_ForkingTCPServer   sB    t$$OOL99(== //1 %$$$   :AA)	c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   UnixStreamServerr   r   r*   s   &r   test_UnixStreamServer&SocketServerTest.test_UnixStreamServer   s(    55$99++	-r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   ThreadingUnixStreamServerr   r   r*   s   &r   test_ThreadingUnixStreamServer/SocketServerTest.test_ThreadingUnixStreamServer   s(    >>$99++	-r   c                    \        V 4      ;_uu_ 4        V P                  \        P                  \        P                  V P
                  4       R R R 4       R #   + '       g   i     R # ; irA   )r!   r   r   ForkingUnixStreamServerr   r   r*   s   &r   test_ForkingUnixStreamServer-SocketServerTest.test_ForkingUnixStreamServer   sD     t$$OOL@@(== //1 %$$$r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   	UDPServerDatagramRequestHandlerr   r*   s   &r   test_UDPServerSocketServerTest.test_UDPServer   s(    ..$;;**	,r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   ThreadingUDPServerr   r   r*   s   &r   test_ThreadingUDPServer(SocketServerTest.test_ThreadingUDPServer   s(    77$;;**	,r   c                    \        V 4      ;_uu_ 4        V P                  \        P                  \        P                  V P
                  4       R R R 4       R #   + '       g   i     R # ; irA   )r!   r   r   ForkingUDPServerr   r   r*   s   &r   test_ForkingUDPServer&SocketServerTest.test_ForkingUDPServer   sB    t$$OOL99(?? ..0 %$$$r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   UnixDatagramServerr   r   r*   s   &r   test_UnixDatagramServer(SocketServerTest.test_UnixDatagramServer   s(    77$;;**	,r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   ThreadingUnixDatagramServerr   r   r*   s   &r    test_ThreadingUnixDatagramServer1SocketServerTest.test_ThreadingUnixDatagramServer   s(    @@$;;**	,r   c                x    V P                  \        P                  \        P                  V P                  4       R # rA   )r   r   ForkingUnixDatagramServerr   r   r*   s   &r   test_ForkingUnixDatagramServer/SocketServerTest.test_ForkingUnixDatagramServer   s*     	>>$;;**	,r   c                    ! R  R\         P                  4      p ! R R\         P                  4      p. p\        ^4       FP  pV! \        ^ 3V4      p\
        P                  ! RVP                  RR/R7      pRVn        VP                  We34       KR  	  V F%  w  reVP                  4        VP                  4        K'  	  V F%  w  reVP                  4        VP                  4        K'  	  R	# )
c                       ] tR t^tRtR# )0SocketServerTest.test_shutdown.<locals>.MyServerrH   NrI   rJ   rK   rL   rM   rH   r   r   rQ   r          r   rQ   c                       ] tR t^tRtR# )1SocketServerTest.test_shutdown.<locals>.MyHandlerrH   Nr   rH   r   r   r]   r      r   r   r]   zMyServer servingrl   rm   rn   TN)r   r   r   rz   r7   ru   rv   rw   rx   r9   ry   r{   r|   r}   )r+   rQ   r]   threadsr   r   r   s   &      r   test_shutdownSocketServerTest.test_shutdown   s    	|-- 		99 	 rA$I.A  ''-/A AHNNA6"  DAGGIJJL  DAFFHNN r   c                     ! R  R\         P                  \         P                  4      pV! \        ^ 3R 4      pVP	                  4        R# )c                       ] tR tRtRtR# )9SocketServerTest.test_close_immediately.<locals>.MyServeri
  rH   Nr   rH   r   r   rQ   r   
  r   r   rQ   c                      R # rA   rH   rH   r   r   <lambda>9SocketServerTest.test_close_immediately.<locals>.<lambda>  s    Tr   N)r   ThreadingMixInr   r7   r}   )r+   rQ   rg   s   &  r   test_close_immediately'SocketServerTest.test_close_immediately	  s:    	|22L4J4J 	 4)\2r   c                    \        R 4       FT  pV P                  \        4      ;_uu_ 4        \        P                  ! \
        R3\        P                  4       RRR4       KV  	  R#   + '       g   i     Kk  ; i)i   Nrs   )rz   assertRaisesOverflowErrorr   r   r7   r   )r+   r   s   & r   test_tcpserver_bind_leak)SocketServerTest.test_tcpserver_bind_leak  sS    
 tA""=11&&bz'3'H'HJ 21 111s   ,A&&A7c                    \         P                  ! \        ^ 3\         P                  4      ;_uu_ 4       p RRR4       V P	                  RXP
                  P                  4       4       R#   + '       g   i     L<; i)r&   Nrs   )r   r   r7   r   ra   r5   r~   )r+   rg   s   & r   test_context_manager%SocketServerTest.test_context_manager  s^    ##T1I$0$E$EG GJPG 	V]]1134G Gs   A**A:	r'   N)"rI   rJ   rK   rL   __doc__r,   r2   r;   ri   r   reap_threadsr   r   r   r   r   requires_forkingr   requires_unix_socketsr   r   r   r   r   r   r   r   r   r   r   r   r   rM   rN   rO   s   @r   r#   r#   >   s4    " * "" " # "D,	,-
-
 1 1 - -
 - -
 1  1,
,
 0 0 , ,
 , ,
 ,  ,
 "" #2J5 5r   r#   c                   h   a  ] tR tRt o RtR tR tR tR tR t	]
R 4       t]
R	 4       tR
 tRtV tR# )ErrorHandlerTesti!  zTest that the servers pass normal exceptions from the handler to
handle_error(), and that exiting exceptions like SystemExit and
KeyboardInterrupt are not passed.c                N    \         P                  ! \         P                  4       R # rA   )r   unlinkTESTFNr*   s   &r   r2   ErrorHandlerTest.tearDown&  s    ))*r   c                H    \        \        4       V P                  R R7       R# ThandledN)BaseErrorTestServer
ValueErrorcheck_resultr*   s   &r   test_sync_handled"ErrorHandlerTest.test_sync_handled)  s    J'$'r   c                    V P                  \        4      ;_uu_ 4        \        \        4       R R R 4       V P                  RR7       R #   + '       g   i     L$; i)NFr   )r   
SystemExitr   r   r*   s   &r   test_sync_not_handled&ErrorHandlerTest.test_sync_not_handled-  s:    z**
+ +%( +*s   A

A	c                H    \        \        4       V P                  R R7       R# r   )ThreadingErrorTestServerr   r   r*   s   &r   test_threading_handled'ErrorHandlerTest.test_threading_handled2  s     ,$'r   c                    \         P                  ! 4       ;_uu_ 4       p\        \        4       V P	                  R R7       V P                  VP                  \        4       RRR4       R#   + '       g   i     R# ; iFr   N)r   catch_threading_exceptionr  r  r   assertIsexc_type)r+   cms   & r   test_threading_not_handled+ErrorHandlerTest.test_threading_not_handled6  sM    7799R$Z0e,MM"++z2	 :999s   AA**A;	c                H    \        \        4       V P                  R R7       R# r   )ForkingErrorTestServerr   r   r*   s   &r   test_forking_handled%ErrorHandlerTest.test_forking_handled=  s    z*$'r   c                H    \        \        4       V P                  R R7       R# r	  )r  r  r   r*   s   &r   test_forking_not_handled)ErrorHandlerTest.test_forking_not_handledB  s    z*%(r   c                    \        \        P                  4      ;_uu_ 4       pR RV,          ,           pV P                  VP	                  4       V4       RRR4       R#   + '       g   i     R# ; i)Handler called
Error handled
N)openr   r   ra   read)r+   r   logexpecteds   &&  r   r   ErrorHandlerTest.check_resultG  sJ    )""##s),=,GGHSXXZ2 $###s   1AA.	rH   N)rI   rJ   rK   rL   r   r2   r   r  r  r  r   r  r  r   rM   rN   rO   s   @r   r   r   !  sU     )+()
(3 ( ( ) )3 3r   r   c                   >   a a ] tR tRt oV 3R ltR tR tRtVtV ;t	# )r   iM  c                ^  < Wn         \        SV `	  \        ^ 3\        4       \
        P                  ! V P                  4      ;_uu_ 4         RRR4        V P                  4        V P                  4        V P                  4        R#   + '       g   i     LC; i  T P                  4        i ; ir%   )	exceptionsuper__init__r7   
BadHandlerr5   create_connectionrb   handle_requestr}   	wait_done)r+   r!  	__class__s   &&r   r#  BaseErrorTestServer.__init__N  sy    "$J/%%d&9&9:: ;	 ! ;:
 s   
BB B	B,c                    \        \        P                  R 4      ;_uu_ 4       pVP                  R4       RRR4       R#   + '       g   i     R# ; i)ar  N)r  r   r   rX   )r+   rD   rE   r  s   &&& r   rF    BaseErrorTestServer.handle_errorY  s3    )""C((CII'( )(((s	   ?A	c                    R # rA   rH   r*   s   &r   r'  BaseErrorTestServer.wait_done]  s    r   )r!  )
rI   rJ   rK   rL   r#  rF   r'  rM   rN   __classcell__r(  rP   s   @@r   r   r   M  s     	) r   r   c                   &   a  ] tR tRt o R tRtV tR# )r$  ia  c                    \        \        P                  R 4      ;_uu_ 4       pVP                  R4       RRR4       V P                  P                  R4      h  + '       g   i     L+; i)r+  r  Nz
Test error)r  r   r   rX   rg   r!  )r+   r  s   & r   rZ   BadHandler.handleb  sG    )""C((CII() )kk##L11 )(s   AA(	rH   Nr\   rO   s   @r   r$  r$  a  s     2 2r   r$  c                   D   a a ] tR tRt oV 3R ltV 3R ltR tRtVtV ;t	# )r  ih  c                \   < \         P                  ! 4       V n        \        SV `  ! V/ VB  R # rA   )ru   Eventrr   r"  r#  r+   poskwr(  s   &*,r   r#  !ThreadingErrorTestServer.__init__j  s#    OO%	#$$r   c                \   < \         SV `  ! V/ VB  V P                  P                  4        R # rA   )r"  shutdown_requestrr   setr7  s   &*,r   r<  )ThreadingErrorTestServer.shutdown_requestn  s"     #,,		r   c                :    V P                   P                  4        R # rA   )rr   waitr*   s   &r   r'  "ThreadingErrorTestServer.wait_doner  s    		r   )rr   )
rI   rJ   rK   rL   r#  r<  r'  rM   rN   r/  r0  s   @@r   r  r  h  s     % r   r  c                       ] tR tRtRtR# )r  iw  rH   Nr   rH   r   r   r  r  w  s    r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )SocketWriterTesti{  c                f    ! R  R\         P                  4      p\         P                  ! \        ^ 3V4      pV P	                  VP
                  4       \        P                  ! VP                  \        P                  \        P                  4      pV;_uu_ 4        VP                  VP                  4       RRR4       VP                  4        V P                  VP                  \        P                   4       V P#                  VP$                  VP&                  4       R#   + '       g   i     Lr; i)c                   &   a  ] tR tRt o R tRtV tR# )-SocketWriterTest.test_basics.<locals>.Handleri}  c                    V P                   V P                  n         V P                   P                  4       V P                  n        V P                  P                  4       V P                  n        R # rA   )rW   rg   r~   wfile_filenorD   request_filenor*   s   &r   rZ   4SocketWriterTest.test_basics.<locals>.Handler.handle~  sD    $(JJ!+/::+<+<+>(-1\\-@-@-B*r   rH   Nr\   rO   s   @r   HandlerrG  }  s     C Cr   rL  N)r   r   r   r7   
addCleanupr}   r5   rt   r   IPPROTO_TCPr   rb   r&  assertIsInstancerW   ioBufferedIOBasera   rI  rJ  )r+   rL  rg   r   s   &   r   test_basicsSocketWriterTest.test_basics|  s    	Cl77 	C ''q	7;++,MM!!6#5#5v7I7IKQIIf++, fllB,=,=>,,f.C.CD	 Qs   D  D0	c                   aaaa	a
a \         P                  P                  \        R 4      o ! R R\        P
                  4      p\        P                  ! \        ^ 3V4      oV P                  SP                  4       \        P                  ! 4       oV3R lp\        P                  ! \        P                  V4      pV P                  \        P                  \        P                  V4       Ro
Ro	\        P                  ! 4       oVVVV	V
V3R lp\        P                  ! VR7      pVP                  4        SP!                  4        VP#                  4        V P%                  SP&                  \)        S
4      4       V P%                  S
R4       V P%                  SP*                  R4       V P%                  SP,                  \         P                  P.                  4       V P%                  S	\         P                  P.                  ^d,
          4       R# )	pthread_killc                   &   a  ] tR tRt o R tRtV tR# ),SocketWriterTest.test_write.<locals>.Handleri  c                B   V P                   P                  R 4      V P                  n        V P                  P                  4       V P                  n        R\        P                  P                  ,          pV P                   P                  V4      V P                  n
        R# )   write data
    N)rW   rX   rg   sent1rU   rV   receivedr   r   SOCK_MAX_SIZEsent2)r+   	big_chunks   & r   rZ   3SocketWriterTest.test_write.<locals>.Handler.handle  se    $(JJ$4$4_$E!'+zz':':'<$!DLL$>$>>	$(JJ$4$4Y$?!r   rH   Nr\   rO   s   @r   rL  rW    s     @ @r   rL  c                 (   < SP                  4        R # rA   )r=  )signumframeinterrupteds   &&r   signal_handler3SocketWriterTest.test_write.<locals>.signal_handler  s    OOr   Nc            	        < \         P                   ! SP                  \         P                  \         P                  4      p T ;_uu_ 4        V P	                  R 4      ;_uu_ 4       pV P                  SP                  4       VP                  4       oV P                  R4       VP                  ^d4        S! S\        P                  4       SP                  \        ^4      R7      '       g   K;   \        TP                  4       4      oRRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rb   client response
)r   N)r5   rt   r   rN  makefiler   rb   rV   r   r  signalSIGUSR1r@  floatlen)r   readerrd  main_threadrU  	received2	response1rg   s     r   
run_client/SocketWriterTest.test_write.<locals>.run_client  s    f33V5G5G""$AAJJt$$		&//0"OO-			./C   fnn="''a'99.	# %$$s+   
D,$BD	-D	D,D)$D,,D=	)rp   rY  ri  )r   r   get_attributerk  r   r   r   r7   rM  r}   ru   r6  rl  	get_identrv   ry   r&  r|   ra   r[  rn  r\  r^  r]  )r+   rL  re  originalrs  
backgroundrd  rp  rU  rq  rr  rg   s   &     @@@@@@r   
test_writeSocketWriterTest.test_write  sh    ||11&.I	@l77 	@ ''q	7;++,oo'	 ==@v~~x@		))+	/ 	/, %%Z8
s9~6O4*>?t||'A'ABDLL$>$>$DEr   rH   N)rI   rJ   rK   rL   rR  ry  rM   rN   rO   s   @r   rD  rD  {  s     E"8F 8Fr   rD  c                   2   a  ] tR tRt o R tR tR tRtV tR# )MiscTestCasei  c                   . p\        \        4       FQ  pVP                  R 4      '       d   K  \        \        V4      p\        VRR4      R8X  g   K@  VP	                  V4       KS  	  V P                  \        P                  V4       R# )_rJ   Nr   )dirr   
startswithgetattrr9   assertCountEqual__all__)r+   r  ro   
mod_objects   &   r   test_allMiscTestCase.test_all  sf    %D??3''$\48
:|T:nLOOD)	 &
 	l22H=r   c                    ! R  R\         P                  4      pV! \        ^ 3\         P                  4      p\        P                  ! VP
                  \        P                  4      pVP                  VP                  4       VP                  4        VP                  4        V P                  VP                  ^4       VP                  4        R# )c                   0   a  ] tR tRt o R t^ tR tRtV tR# )SMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServeri  c                    R # )FrH   rC   s   &&&r   verify_requestbMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServer.verify_request  s    r   c                v    V ;P                   ^,          un         \        P                  P                  W4       R# )   N)shutdown_calledr   r   r<  )r+   rD   s   &&r   r<  dMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServer.shutdown_request  s'    $$)$&&77Fr   rH   N)	rI   rJ   rK   rL   r  r  r<  rM   rN   rO   s   @r   rQ   r    s       OG Gr   rQ   N)r   r   r7   r   r5   rt   r   r   rb   closer&  ra   r  r}   )r+   rQ   rg   r   s   &   r   4test_shutdown_request_called_if_verify_request_falseAMiscTestCase.test_shutdown_request_called_if_verify_request_false  s    	G|-- 	G 4)\%F%FGMM&//1C1CD			&''(		//3r   c                    ! R R\         P                  \         P                  4      pV! \        ^ 3\         P                  4      p\        ^
4       FD  p\        P                  ! VP                  4      ;_uu_ 4        VP                  4        RRR4       KF  	  V P                  \        VP                  4      ^
4       VP                  4        R#   + '       g   i     K  ; i)z
In #37193, users reported a memory leak
due to the saving of every request thread. Ensure that
not all threads are kept forever.
c                       ] tR tRtRtR# )2MiscTestCase.test_threads_reaped.<locals>.MyServeri  rH   Nr   rH   r   r   rQ   r    r   r   rQ   N)r   r   r   r7   r   rz   r5   r%  rb   r&  
assertLessrn  _threadsr}   )r+   rQ   rg   r   s   &   r   test_threads_reaped MiscTestCase.test_threads_reaped  s    	|22L4J4J 	 4)\%F%FGrA))&*?*?@@%%' A@  	FOO,b1 A@@s   <CC!rH   N)	rI   rJ   rK   rL   r  r  r  rM   rN   rO   s   @r   r|  r|    s     >* r   r|  __main__)2r   
contextlibrP  r   selectrk  r5   ru   unittestr   test.supportr   r   r   r   r   r   r   requiresrequires_working_socketr   r7   hasattrr   
skipUnlessr   has_fork_supportr   r   r   SHORT_TIMEOUTr   requires_forkcontextmanagerr!   TestCaser#   r   r   r   BaseRequestHandlerr$  r   r  r   r  rD  r|  rI   mainrH   r   r   <module>r     s    	 	        / " & )   i    $ $D $ 1 FI.  ++,=,CE ||,,&&|5GH  }}!\\77 8 4  4`5x(( `5F)3x(( )3X,00 (200 2|:: !:!:<O JFx(( JFZ/8$$ /d zMMO r   