
    daf                        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mZ d dl	m
Z
 ddlmZmZmZ dad Zd	 Zdd
Z G d de      Z G d de      Z e e       e        e e       e       d Zedk(  r ej0                          yy)    N)BrokenExecutor)QueueHandler)support   )ExecutorMixincreate_executor_testssetup_moduleuninitializedc                     | a y NINITIALIZER_STATUS)xs    A/root/Python-3.12.4/Lib/test/test_concurrent_futures/test_init.pyinitr      s        c                      t         S r   r    r   r   get_init_statusr      s    r   c                     | Gt        j                  d      }|j                  t        |              |j	                  d       d|_        t        j                  d       t        d      )Nconcurrent.futuresCRITICALFg?zerror in initializer)	logging	getLogger
addHandlerr   setLevel	propagatetimesleep
ValueError)	log_queueloggers     r   	init_failr#      sW    ""#78,y12
# JJsO
+
,,r   c                   (     e Zd ZdZ fdZd Z xZS )InitializerMixin   c                 R    da t        t        d      | _        t        |           y )Nr
   )initializedinitializerinitargs)r   dictr   executor_kwargssupersetUpself	__class__s    r   r/   zInitializerMixin.setUp$   s$    ,#-= ?r   c                     t        | j                        D cg c]!  }| j                  j                  t              # }}|D ]"  }| j                  |j                         d       $ y c c}w )Nr(   )rangeworker_countexecutorsubmitr   assertEqualresult)r1   _futuresfs       r   test_initializerz!InitializerMixin.test_initializer+   se    !$"3"346 ==''8 6 6  	8AQXXZ7	86s   &A()__name__
__module____qualname__r5   r/   r=   __classcell__r2   s   @r   r%   r%   !   s    L8r   r%   c                   L     e Zd ZdZ fdZd Zej                  d        Z xZ	S )FailingInitializerMixinr&   c                 ,   t        | d      rV| j                         | _        | j                  j                         | _        t        t        | j                  f      | _        n#d | _        d | _        t        t              | _        t        | %          y )Nctxr)   )r*   )
hasattrget_context
mp_contextQueuer!   r,   r#   r-   r.   r/   r0   s    r   r/   zFailingInitializerMixin.setUp6   sq    4"..0DO!__224DN#'I26..1B$DD 
 #DO!DN#'I#>D r   c                 6   | j                  d      5  	 | j                  j                  t              }| j	                  t
              5  |j                          d d d        t        j                  t        j                  d      D ]  }| j                  j                  s n | j	                  t
              5  | j                  j                  t               d d d        d d d        y # 1 sw Y   xY w# t
        $ r Y w xY w# 1 sw Y   -xY w# 1 sw Y   y xY w)Nz ValueError: error in initializerzexecutor not broken)_assert_loggedr6   r7   r   assertRaisesr   r9   r   sleeping_retrySHORT_TIMEOUT_broken)r1   futurer:   s      r   r=   z(FailingInitializerMixin.test_initializerE   s      !CD 	6$--o>
 &&~6 $MMO$ ++G,A,A,AC ==(( "">2 6$$_56#	6 	6$ $	 " 6 6#	6 	6sd   DC4DC(ADD7 DD(C1	-D4	D =D?D  DD	DDc              #     K   | j                   @d  g }	 	 |j                  | j                   j                         j                                8| j                  dd      5 }d  d d d        j                  }| j                  t        fd|D              |       y # t        j
                  $ r Y :w xY w# 1 sw Y   SxY ww)Nr   r   c              3   &   K   | ]  }|v  
 y wr   r   ).0linemsgs     r   	<genexpr>z9FailingInitializerMixin._assert_logged.<locals>.<genexpr>h   s     ;DC4K;s   )
r!   append
get_nowait
getMessagequeueEmpty
assertLogsoutput
assertTrueany)r1   rV   r^   cms    `  r   rL   z&FailingInitializerMixin._assert_loggedZ   s     >>%FMM$..";";"="H"H"JK 
 !5zB bYYF;F;;	  ;;  s@   C9B  C"B9'9C B63C5B66C9C>C)
r>   r?   r@   r5   r/   r=   
contextlibcontextmanagerrL   rA   rB   s   @r   rD   rD   3   s,    L6*    r   rD   c                      t                y r   )r	   r   r   r   setUpModulere   p   s    Nr   __main__r   )rb   r   r[   r   unittestconcurrent.futures._baser   logging.handlersr   testr   utilr   r   r	   r   r   r   r#   r%   rD   globalsre   r>   mainr   r   r   <module>rn      s         3 )  D D % -8} 8$6 m 6 r gi!1 2 gi!8 9 zHMMO r   