
    daf                        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	m
Z
mZmZmZmZmZmZmZmZmZ d Zd Z G d d	      Z G d
 deee      Z e e       eeeef       d Zedk(  r ej6                          yy)    N)futures)support   )CANCELLED_FUTURECANCELLED_AND_NOTIFIED_FUTUREEXCEPTION_FUTURESUCCESSFUL_FUTUREcreate_executor_testssetup_moduleBaseTestCaseThreadPoolMixinProcessPoolForkMixinProcessPoolForkserverMixinProcessPoolSpawnMixinc                     | |z  S N )xys     A/root/Python-3.12.4/Lib/test/test_concurrent_futures/test_wait.pymulr      s    q5L    c                 B    t        j                  |        t        d      )Nzthis is an exception)timesleep	Exception)ts    r   sleep_and_raiser      s    JJqM
*
++r   c                   f    e Zd Zd Zd Zd Z ej                  d      d        Zd Z	d Z
d Zd	 Zy
)	WaitTestsc                    | j                   j                  t        j                  d      }t	        j
                  ||gt        j                        \  }}| j                  |h|       | j                  t               |       y N      ?return_when)	executorsubmitr   r   r   waitALL_COMPLETEDassertEqualset)selffuturedonenot_dones       r   
test_20369zWaitTests.test_20369   sb    %%djj#6 vv&6(/(=(=?h&4()r   c                 r   | j                   j                  t        dd      }| j                   j                  t        j                  d      }t        j                  t        ||gt
        j                        \  }}| j                  t        |g      |       | j                  t        t        |g      |       y )N      r#   r$   )r&   r'   r   r   r   r   r(   r   FIRST_COMPLETEDr*   r+   )r,   future1future2r.   r/   s        r   test_first_completedzWaitTests.test_first_completed"   s    --&&sB2--&&tzz37 !7G4$446h 	gY..898Dr   c                 @   | j                   j                  t        j                  d      }t	        j
                  t        t        |gt        j                        \  }}| j                  t        t        t        g      |       | j                  t        |g      |       y r"   )r&   r'   r   r   r   r(   r   r	   r4   r*   r+   r,   r5   finishedpendings       r   +test_first_completed_some_already_completedz5WaitTests.test_first_completed_some_already_completed-   s}    --&&tzz37#LL/1BGL$446' 	24EFG	 	gY1r   walltimec                    | j                   j                  t        dd      }| j                   j                  t        d      }| j                   j                  t        j
                  d      }t        j                  |||gt        j                        \  }}| j                  t        ||g      |       | j                  t        |g      |       y )Nr3   r2   r#      r$   )r&   r'   r   r   r   r   r   r(   FIRST_EXCEPTIONr*   r+   )r,   r5   r6   future3r:   r;   s         r   test_first_exceptionzWaitTests.test_first_exception9   s    --&&sAr2--&&<--&&tzz15#LL'7+#335' 	gw/0(;gY1r   c                    | j                   j                  t        dd      }| j                   j                  t        j                  d      }t        j                  t        t        t        ||gt
        j                        \  }}| j                  t        t        t        |g      |       | j                  t        t        |g      |       y )Nr2   r   r#   r$   )r&   r'   divmodr   r   r   r(   r	   r   r   r@   r*   r+   r,   r5   r6   r:   r;   s        r   *test_first_exception_some_already_completez4WaitTests.test_first_exception_some_already_completeF   s    --&&vr15--&&tzz37#LL"!.'# $335' 	/;%' ()1	3 	.897Cr   c                 ,   | j                   j                  t        j                  d      }t	        j
                  t        |gt        j                        \  }}| j                  t        t        g      |       | j                  t        |g      |       y )Nr3   r$   )
r&   r'   r   r   r   r(   r   r@   r*   r+   r9   s       r   'test_first_exception_one_already_failedz1WaitTests.test_first_exception_one_already_failedV   sq    --&&tzz15#LL"G,$446' 	./0(;gY1r   c           	         | j                   j                  t        dd      }| j                   j                  t        dd      }t	        j
                  t        t        t        ||gt        j                        \  }}| j                  t        t        t        t        ||g      |       | j                  t               |       y )Nr3   r   r2   r$   )r&   r'   rD   r   r   r(   r	   r   r   r)   r*   r+   rE   s        r   test_all_completedzWaitTests.test_all_completed`   s    --&&vq!4--&&sAr2#LL".!	
 $113' 	/;.%%	' ( *2		3
 	(r   c                 d   d}|dz  }| j                   j                  t        j                  |      }t	        j
                  t        t        t        |g|t        j                        \  }}| j                  t        t        t        t        g      |       | j                  t        |g      |       y )Ng?
   )timeoutr%   )r&   r'   r   r   r   r(   r   r   r	   r)   r*   r+   )r,   short_timeoutlong_timeoutr-   r:   r;   s         r   test_timeoutzWaitTests.test_timeouts   s    $r)%%djj,?#LL.!" &#113' 	;./1 2 "	# 	fX0r   N)__name__
__module____qualname__r0   r7   r<   r   requires_resourcerB   rF   rH   rJ   rP   r   r   r   r    r       sH    *	E
2 Wz*
2 +
2D 2)&1r   r    c                       e Zd Zd Zy)ThreadPoolWaitTestsc                    t        j                         fd}t        j                         }t        j                  d       	 t        d      D ch c]  }| j                  j                  |       }}j                          t        j                  |t        j                         t        j                  |       y c c}w # t        j                  |       w xY w)Nc                  &     j                          y r   )r(   )events   r   future_funcz@ThreadPoolWaitTests.test_pending_calls_race.<locals>.future_func   s    JJLr   gư>d   r$   )	threadingEventsysgetswitchintervalsetswitchintervalranger&   r'   r+   r   r(   r)   )r,   rZ   oldswitchintervalifsrY   s        @r   test_pending_calls_racez+ThreadPoolWaitTests.test_pending_calls_race   s     !	113d#	5=B3ZH$--&&{3HBHIIKLL)>)>?!!"34	 I !!"34s   C "C47C C CN)rQ   rR   rS   re   r   r   r   rV   rV      s    5r   rV   )executor_mixinsc                      t                y r   )r   r   r   r   setUpModulerh      s    Nr   __main__)r^   r\   r   unittest
concurrentr   testr   utilr   r   r   r	   r
   r   r   r   r   r   r   r   r   r    rV   globalsrh   rQ   mainr   r   r   <module>rp      s    
     M M M M,
m1 m1`5/9l 5$ gi';'A'<'>? zHMMO r   