
    r@;j-                        d dl Z d dlZd dlZd dlZd dlZd dlZedk    rej        d          Zne	ZddZ
d Z G d dej                  Z G d d	ej                  Z G d
 de          Z G d de          Z G d dej                  Z G d dej                  Z G d dej                  Zd dlZd dlZ G d d          Z G d dej                  Zd Zedk    rej        dd         dgk    r e              ej        d             ej                      ej                      e              ej                      ej                      ej                     dS dS )    N__main__returnc                  J    dt           j        v rt          j        d          dS )zFor tests that often fails in CI, probably when it is being run multiple times
    (ie, for different Python versions)

    Github actions always have a `CI` variable.
    CIzWe skip this test on CIN)osenvironunittestSkipTest     hC:\Users\Administrator\AppData\Local\Temp\2\pip-target-b0z114gj\lib\python\win32/test/test_win32trace.pySkipIfCIr      s+     rz 9::: r   c                      t          j        d           t          j        d           t          j                    dk    r5t          j                     t          j                     t          d          d S )NHig?z\An existing win32trace reader appears to be running - please stop this process and try again)
win32tracewritetimesleepreadTermRead	TermWriteAssertionErrorr   r   r   CheckNoOtherReadersr      ss    TJtD  ?
 
 	
	 ! r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestInitOpsc                     t                       t          j                     t          j                     t          j                     d S N)r   r   InitReadr   r   selfs    r   setUpzTestInitOps.setUp'   s=    


r   c                     	 t          j                     n# t           j        $ r Y nw xY w	 t          j                     d S # t           j        $ r Y d S w xY wr   )r   r   errorr   r   s    r   tearDownzTestInitOps.tearDown.   s{    	!!!! 	 	 	D		 """"" 	 	 	DD	s    ((A AAc                    |                      t          j        t          j                   t          j                     t          j                    }|                     |d           t          j                     |                      t          j        t          j                   t          j                     |                      t          j        t          j                   t          j                     |                      t          j        t          j                   t          j                     t          j                     d S )N )	assertRaisesr   r#   r   r   assertEqualr   	InitWriter   )r    results     r   testInitTermReadzTestInitOps.testInitTermRead8   s    **JO<<<""$$$**JO<<<**J,?@@@**J,@AAAr   c                 &   |                      t          j        t          j        d           t          j                     t          j        d           t          j                     |                      t          j        t          j        d           d S )NHeizJohan Galtung)r'   r   r#   r   r)   r   r   s    r   testInitTermWritezTestInitOps.testInitTermWriteG   ss    **J,<eDDD)))**J,<eDDDDDr   c                 $   t          j                     t          j        d           t          j                     t          j                     |                     t          j                    dv            t          j                     t          j                     t          j        d           t          j                     t          j                     |                     dt          j                               t          j                     d S )NTa da)r0   r&   )	r   r)   r   r   r   
assertTruer   r   r(   r   s    r   testTermSematicszTestInitOps.testTermSematicsN   s    !!! 	
))]:;;; 	!!!*/"3"3444r   N)__name__
__module____qualname__r!   r$   r+   r.   r2   r   r   r   r   r   &   sb              E E E    r   r   c                       e Zd Zd Zd ZdS )BasicSetupTearDownc                     t                       t          j                     t          j                     t          j                     d S r   r   r   r   r   r)   r   s    r   r!   zBasicSetupTearDown.setUpe   s?    


 	r   c                 R    t          j                     t          j                     d S r   )r   r   r   r   s    r   r$   zBasicSetupTearDown.tearDownn   s&    r   N)r3   r4   r5   r!   r$   r   r   r   r7   r7   d   s2              r   r7   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestModuleOpsc                     t          j        d           t          j                    }|                     d|           d S NzSyver Enstadr   r   r   r(   r    syverEnstads     r   testRoundTripzTestModuleOps.testRoundTript   s<    ((( o''55555r   c                     t          j        d           t          j                    }|                     d|           d S Nu   ©opyright Syver Enstadr?   r@   s     r   testRoundTripUnicodez"TestModuleOps.testRoundTripUnicodey   s>    4555 o''4kBBBBBr   c                 |    t          j        d           |                     dt          j                               d S r>   r   r   r(   blockingreadr   s    r   testBlockingReadzTestModuleOps.testBlockingRead~   s8    ((()@)B)BCCCCCr   c                 |    t          j        d           |                     dt          j                               d S rD   rG   r   s    r   testBlockingReadUnicodez%TestModuleOps.testBlockingReadUnicode   s:    45554j6M6O6OPPPPPr   c                 ,    t          j                     d S r   )r   flushr   s    r   	testFlushzTestModuleOps.testFlush   s    r   N)r3   r4   r5   rB   rE   rI   rK   rN   r   r   r   r<   r<   s   sh        6 6 6
C C C
D D DQ Q Q    r   r<   c                   &    e Zd Zd Zd Zd Zd ZdS )TestTraceObjectOpsc                    t          j                     t          j                     t          j                    }|                     t           j        |j                   |                     t           j        |j        d           t          j                     t          j	                     | 
                    d|                                           |                    d           d S )Nr&   Syver)r   r   r   	GetTracerr'   r#   r   r   r   r)   r(   r    traceObjects     r   testInitzTestTraceObjectOps.testInit   s     *,,**K,<===**K,=rBBB[--//000'"""""r   c                 T    t          j                    }|                                 d S r   )r   rS   rM   rT   s     r   rN   zTestTraceObjectOps.testFlush   s(     *,,r   c                 z    t          j                    }|                     |                                           d S r   )r   rS   assertFalseisatty)r    tracers     r   
testIsattyzTestTraceObjectOps.testIsatty   s2    %'')))))r   c                     t          j                    }|                    d           |                     d|                                           d S r>   )r   rS   r   r(   r   rT   s     r   rB   z TestTraceObjectOps.testRoundTrip   sL     *,,.))))9)9););<<<<<r   N)r3   r4   r5   rV   rN   r\   rB   r   r   r   rP   rP      sP        	# 	# 	#  * * *= = = = =r   rP   c                       e Zd Zd Zd ZdS )WriterThreadc                     d| _         t          | j                  D ]#}t          j        t          |                     $| j        | _         d S Nr   )
writeCountrangeBucketCountr   r   strr    eachs     r   runzWriterThread.run   sK    $*++ 	( 	(DSYY''''*r   c                 "    | j         | j        k    S r   )rb   rd   r   s    r   verifyWrittenzWriterThread.verifyWritten   s    $"222r   N)r3   r4   r5   rh   rj   r   r   r   r_   r_      s2        + + +3 3 3 3 3r   r_   c                   4    e Zd ZdZdZd Zd Zd Zd Zd Z	dS )	TestMultipleThreadsWriting2   	   c                    t                       | j        t          _        t          j                     t          j                     t          j                     t                       d t          | j	                  D             | _
        t          t          | j                            | _        | j        D ]}d| j        |<   d S )Nc                 *    g | ]}t                      S r   r_   .0rg   s     r   
<listcomp>z4TestMultipleThreadsWriting.setUp.<locals>.<listcomp>   s    JJJ4JJJr   r   )r   rd   r_   r   r   r   r)   r   rc   
FullBucketthreadslistbucketsrf   s     r   r!   z TestMultipleThreadsWriting.setUp   s    


#'#3 JJ53I3IJJJE$"23344L 	# 	#D!"DL	# 	#r   c                 R    t          j                     t          j                     d S r   r   r   r   r   s    r   r$   z#TestMultipleThreadsWriting.tearDown   &    r   c                 r    d}| j         D ],}|                     || j                   || j        k    rd} n-|S NTFrx   assertLessEqualru   r    bucketsAreFullrg   s      r   areBucketsFullz)TestMultipleThreadsWriting.areBucketsFull   T    L 	 	D  t777t&&!& ' r   c                    	 t          j                    }|D ]n}t          |          }| j        |         }|                     |d           |dz   | j        |<   | j        |         | j        k    r|                                 r d S oN   r   rH   intrx   assertNotEqualru   r   r    
readStringchintegercounts        r   r   zTestMultipleThreadsWriting.read       		#022J   b''W-##E2...(-	W%<(DO;;**,, 		r   c                 V   | j         D ]}|                                 |                                  | j         D ]}|                                 | j         D ])}|                     |                                           *|                     |                                            d S r   )rv   startr   joinr1   rj   r   rf   s     r   testThreadsz&TestMultipleThreadsWriting.testThreads   s    L 	 	DJJLLLL		L 	 	DIIKKKKL 	2 	2DOOD..001111++--.....r   N)
r3   r4   r5   ru   rd   r!   r$   r   r   r   r   r   r   rl   rl      si        JK
# 
# 
#    
 
 
/ / / / /r   rl   c                   $    e Zd ZdZd Zd Zd ZdS )TestHugeChunksi   c                     t                       t          j                     t          j                     t          j                     d S r   r9   r   s    r   r!   zTestHugeChunks.setUp   s=    


r   c                     d}t          |          | j        k    r3t          j        |           ||z  }t          |          | j        k    1d S d S )Na   ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
)lenBiggestChunkr   r   )r    datas     r   testHugeChunkszTestHugeChunks.testHugeChunks   sW     $ii4,,,T"""DLD $ii4,,,,,,,r   c                 R    t          j                     t          j                     d S r   rz   r   s    r   r$   zTestHugeChunks.tearDown   r{   r   N)r3   r4   r5   r   r!   r   r$   r   r   r   r   r      sF        L        r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TraceWriteProcessc                 "    d| _         || _        d S )Nr   )exitCodethreadCount)r    r   s     r   __init__zTraceWriteProcess.__init__   s    &r   c                     t          j        d d                    t          | j        | j                  d d dt           j        d d t          j                    	  	        \  }}}}|| _        d S )Nz'python.exe "{}" /run_test_process {} {}r   )	win32processCreateProcessformat	this_filerd   r   NORMAL_PRIORITY_CLASSSTARTUPINFOprocessHandle)r    
procHandlethreadHandleprocIdthreadIds        r   r   zTraceWriteProcess.start  ss    5A5O5<<4+T-=  .$&&6
 6
2
L&( (r   c                     t          j        | j        t           j                   t	          j        | j                  | _        d S r   )
win32eventWaitForSingleObjectr   INFINITEr   GetExitCodeProcessr   r   s    r   r   zTraceWriteProcess.join  s4    &t'9:;NOOO$78JKKr   c                     | j         dk    S ra   )r   r   s    r   rj   zTraceWriteProcess.verifyWritten  s    }!!r   N)r3   r4   r5   r   r   r   rj   r   r   r   r   r      sS        ' ' '( ( ( L L L" " " " "r   r   c                   :    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	S )
TestOutofProcessrn   rm   c                    t                       t          j                     | j        t          _        |                                  t          t          | j                            | _        | j        D ]}d| j        |<   d S ra   )	r   r   r   rd   r   setUpWritersrw   rc   rx   rf   s     r   r!   zTestOutofProcess.setUp  s|    


(,(8%E$"23344L 	# 	#D!"DL	# 	#r   c                 ,    t          j                     d S r   )r   r   r   s    r   r$   zTestOutofProcess.tearDown(  s    r   c                    g | _         t          | j        d          \  }}t          d          D ])}| j                             t          |                     *|r)| j                             t          |                     d S d S )N   )	processesdivmodru   rc   appendr   )r    quot	remainderrg   s       r   r   zTestOutofProcess.setUpWriters+  s     !44i!HH 	; 	;DN!!"3D"9"9:::: 	@N!!"3I">">?????	@ 	@r   c                 r    d}| j         D ],}|                     || j                   || j        k    rd} n-|S r}   r~   r   s      r   r   zTestOutofProcess.areBucketsFull4  r   r   c                    	 t          j                    }|D ]n}t          |          }| j        |         }|                     |d           |dz   | j        |<   | j        |         | j        k    r|                                 r d S or   r   r   s        r   r   zTestOutofProcess.read=  r   r   c                 V   | j         D ]}|                                 |                                  | j         D ]}|                                 | j         D ])}|                     |                                           *|                     |                                            d S r   )r   r   r   r   r1   rj   r   rf   s     r   testProcesseszTestOutofProcess.testProcessesI  s    N 	 	DJJLLLL		N 	 	DIIKKKKN 	2 	2DOOD..001111++--.....r   N)r3   r4   r5   rd   ru   r!   r$   r   r   r   r   r   r   r   r   r     s{        KJ# # #  @ @ @  
 
 
/ / / / /r   r   c                     t          t          j        d                   t          _        t          t          j        d                   } d t          |           D             }t          j                     |D ]}|                                 |D ]}|	                                 |D ]*}|
                                st          j        d           +d S )N      c                 *    g | ]}t                      S r   rq   rr   s     r   rt   z%_RunAsTestProcess.<locals>.<listcomp>X  s    ===$|~~===r   r   )r   sysargvr_   rd   rc   r   r)   r   r   rj   exit)r   rv   ts      r   _RunAsTestProcessr   T  s    "38A;//Lchqk""K==%*<*<===G  					  	     	HRLLL r   r   r   z/run_test_process)r   N) r   r   	threadingr   r	   r   r3   r   r   __file__r   r   TestCaser   r7   r<   rP   Threadr_   rl   r   r   r   r   r   r   r   r   r)   r   r   mainr   r   r   <module>r      s   				 



          zIII; ; ; ;

 

 

; ; ; ; ;(# ; ; ;|    *       &   .= = = = =+ = = =43 3 3 3 39# 3 3 32/ 2/ 2/ 2/ 2/!2 2/ 2/ 2/j    X&   ,        " " " " " " " ":6/ 6/ 6/ 6/ 6/x( 6/ 6/ 6/r   z
x!},--- JJJJHMOOOOO r   