
    %
i-                        d dl Z 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 edk    rej	        d          Z
neZ
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)TestSkipped__main__c                  @    dt           j        v rt          d          d S )NCIzWe skip this test on CI)osenvironr        C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32/test/test_win32trace.pySkipIfCIr      s(     rz3444 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.testInitTermRead7   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.testInitTermWriteF   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)r.   r$   )	r   r'   r   r   r   
assertTruer   r   r&   r   s    r   testTermSematicszTestInitOps.testTermSematicsM   s    !!! 	
))]:;;; 	!!!*/"3"3444r
   N)__name__
__module____qualname__r   r"   r)   r,   r0   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.setUpd   s?    


 	r
   c                 R    t          j                     t          j                     d S r   )r   r   r   r   s    r   r"   zBasicSetupTearDown.tearDownm   s&    r
   N)r1   r2   r3   r   r"   r	   r
   r   r5   r5   c   s2              r
   r5   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.testRoundTrips   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.testRoundTripUnicodex   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 rB   rE   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)r1   r2   r3   r@   rC   rG   rI   rL   r	   r
   r   r:   r:   r   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   rQ   rK   rR   s     r   rL   zTestTraceObjectOps.testFlush   s(     *,,r
   c                 z    t          j                    }|                     |                                           d S r   )r   rQ   assertFalseisatty)r   tracers     r   
testIsattyzTestTraceObjectOps.testIsatty   s2    %'')))))r
   c                     t          j                    }|                    d           |                     d|                                           d S r<   )r   rQ   r   r&   r   rR   s     r   r@   z TestTraceObjectOps.testRoundTrip   sL     *,,.))))9)9););<<<<<r
   N)r1   r2   r3   rT   rL   rZ   r@   r	   r
   r   rN   rN      sP        	# 	# 	#  * * *= = = = =r
   rN   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   )r`   rb   r   s    r   verifyWrittenzWriterThread.verifyWritten   s    $"222r
   N)r1   r2   r3   rf   rh   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]   .0re   s     r   
<listcomp>z4TestMultipleThreadsWriting.setUp.<locals>.<listcomp>   s    JJJ4JJJr
   r   )r   rb   r]   r   r   r   r'   r   ra   
FullBucketthreadslistbucketsrd   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rv   assertLessEqualrs   r   bucketsAreFullre   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   rF   intrv   assertNotEqualrs   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   )rt   startr   joinr/   rh   r   rd   s     r   testThreadsz&TestMultipleThreadsWriting.testThreads   s    L 	 	DJJLLLL		L 	 	DIIKKKKL 	2 	2DOOD..001111++--.....r
   N)
r1   r2   r3   rs   rb   r   r"   r   r   r   r	   r
   r   rj   rj      si        JK
# 
# 
#    
 
 
/ / / / /r
   rj   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   r7   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   rx   r   s    r   r"   zTestHugeChunks.tearDown   ry   r
   N)r1   r2   r3   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_filerb   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 r_   )r   r   s    r   rh   zTraceWriteProcess.verifyWritten  s    }!!r
   N)r1   r2   r3   r   r   r   rh   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 )
TestOutofProcessrl   rk   c                    t                       t          j                     | j        t          _        |                                  t          t          | j                            | _        | j        D ]}d| j        |<   d S r_   )	r   r   r   rb   r   setUpWritersru   ra   rv   rd   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divmodrs   ra   appendr   )r   quot	remainderre   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.areBucketsFull3  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   r/   rh   r   rd   s     r   testProcesseszTestOutofProcess.testProcessesH  s    N 	 	DJJLLLL		N 	 	DIIKKKKN 	2 	2DOOD..001111++--.....r
   N)r1   r2   r3   rb   rs   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	   ro   rp   s     r   rr   z%_RunAsTestProcess.<locals>.<listcomp>W  s    ===$|~~===r
   r   )r   sysargvr]   rb   ra   r   r'   r   r   rh   exit)r   rt   ts      r   _RunAsTestProcessr   S  s    "38A;//Lchqk""K==%*<*<===G  					  	     	HRLLL r
   r   r   z/run_test_process)"r   r   	threadingr   unittestr   pywin32_testutilr   r1   r   r   __file__r   r   TestCaser   r5   r:   rN   Threadr]   rj   r   r   r   r   r   r   r   r   r'   r   r   mainr	   r
   r   <module>r      s   				 



           ( ( ( ( ( (zIII5 5 5

 

 

; ; ; ; ;(# ; ; ;|    *       &   .= = = = =+ = = =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
   