
    fjs@                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKJr  S SKJr  S SKJr  SSKJr  \R*                  S 5       rS r " S	 S
\" \R2                  5      5      r " S S\R2                  \S9rSqS S jrS S jrS S jrS rS SSSSSSSS\R@                  \RB                  \RD                  S.S jjr# " S S\5      r$ " S S\$5      r%S r& " S S\$5      r' " S S\$5      r(g)!    Ncluster)
connection)pool   )fuzzerc               #      #    S n [         R                  " S5      nUR                  U 5         S v   UR                  U 5        g ! UR                  U 5        f = f7f)Nc                 N    U R                  5       nUR                  S5      (       + $ )Nz
Executing )
getMessage
startswith)
log_recordmsgs     S/var/www/html/GQ-WA/venv/lib/python3.13/site-packages/asyncpg/_testbase/__init__.pyflt.silence_asyncio_long_exec_warning.<locals>.flt    s"    ##%>>,///    asyncio)logging	getLogger	addFilterremoveFilter)r   loggers     r   !silence_asyncio_long_exec_warningr      sN     0 y)F
S!C C s   +AA AAAc                    ^  U 4S jnU$ )Nc                    > TU l         U $ N)__timeout__)functimeouts    r   wrapwith_timeout.<locals>.wrap-   s    "r    )r   r    s   ` r   with_timeoutr#   ,   s     Kr   c                   <   ^  \ rS rSrSr\S 5       rU 4S jrSrU =r	$ )TestCaseMeta4   Nc              #   r  #    U  HZ  n[        U5       HH  nUR                  S5      (       d  M  [        X#5      n[        R                  " U5      (       d  MC  X44v   MJ     M\     UR                  5        H?  u  p4UR                  S5      (       d  M  [        R                  " U5      (       d  M:  X44v   MA     g 7f)Ntest_)dirr   getattrinspectiscoroutinefunctionitems)basesnsbasemethnamemeths        r   _iter_methodsTestCaseMeta._iter_methods7   s     DI**733t.22488n$ &  !hhjNH&&w//..t44.  )s   B5B7c                    >^  T R                  X#5       H,  u  pE[        R                  " U5      US.U 4S jj5       nXcU'   M.     [        TT ]  T XU5      $ )N)__meth__c                h  > U" U /UQ70 UD6n[        USTR                  5      nU(       a3  [        R                  " XE5      n U R                  R                  U5        g U R                  R                  U5        g ! [        R                   a"    U R                  SR                  U5      5      S ef = f)Nr   ztest timed out after {} seconds)	r*   TEST_TIMEOUTr   wait_forlooprun_until_completeTimeoutErrorfailureExceptionformat)selfr6   argskwargscoror   mclss         r   wrapper%TestCaseMeta.__new__.<locals>.wrapperO   s    6t6v6!(M4;L;LM"++D:D4		44T: II006 #// 4"33=DD ')*/344s   A; ;6B1)r3   	functoolswrapssuper__new__)rC   namer.   r/   r1   r2   rD   	__class__s   `      r   rI   TestCaseMeta.__new__M   sV    "00;NH__T".2 7 #7 #xL <" wtT"55r   r"   )
__name__
__module____qualname____firstlineno__r8   staticmethodr3   rI   __static_attributes____classcell__rK   s   @r   r%   r%   4   s$    L! !*6 6r   r%   c                       \ rS rSr\S 5       r\S 5       rS rS r\	R                  S 5       r\	R                  S\4S j5       rS	 rS
 rSrg)TestCaseb   c                     [         R                  R                  S5      (       a(  SS Kn[        R
                  " UR                  5       5        [        R                  " 5       n[        R                  " S 5        X l	        g )N
USE_UVLOOPr   )
osenvirongetuvloopr   set_event_loop_policyEventLoopPolicynew_event_loopset_event_loopr:   )clsr]   r:   s      r   
setUpClassTestCase.setUpClassd   sP    ::>>,''))&*@*@*BC%%'t$r   c                 d    U R                   R                  5         [        R                  " S 5        g r   )r:   closer   ra   rb   s    r   tearDownClassTestCase.tearDownClassn   s    t$r   c                 \    U R                   R                  U R                  5        / U l        g r   )r:   set_exception_handlerloop_exception_handler_TestCase__unhandled_exceptions)r?   s    r   setUpTestCase.setUps   s"    		''(C(CD&(#r   c                    / nU R                    Hf  n[        U[        5      (       a=  [        R                  R                  USS9nUR                  S   R                  S:X  a  MU  UR                  U5        Mh     U(       a]  / n[        U5       H(  u  pVUR                  U R                  XeS-   5      5        M*     U R                  SSR                  U5      -   5        g g )NF)lookup_lines_call_connection_lostr   z,unexpected exceptions in asynchronous code:

)rm   
isinstanceConnectionResetError	tracebackTracebackExceptionfrom_exceptionstackrJ   append	enumerate_format_loop_exceptionfailjoin)r?   excsexctexc	formattedicontexts          r   tearDownTestCase.tearDownw   s    ..C#344 33BBe C -::b>&&*AA KK / I'o
  !<!<W!e!LM . II?		)$%& r   c              #   &  #    [         R                  " 5       n S v   [         R                  " 5       U-
  nX1:  a  [        SR                  X15      5      eg ! [         R                  " 5       U-
  nX1:  a  [        SR                  X15      5      ef = f7f)NzQrunning block took {:0.3f}s which is longer than the expected maximum of {:0.3f}s)time	monotonicAssertionErrorr>   )r?   deltastelapseds       r   assertRunUnderTestCase.assertRunUnder   s     ^^	)nn&+G$<<BF=() )  nn&+G$<<BF=() ) s   BA 8B9BBmsg_rec              #     ^#    / mU4S jnU R                   R                  5       nU R                   R                  U5         S v   T HU  nUR                  S5      nU(       d  M  [        R
                  " X5      (       d  M:    U R                   R                  U5        g    [        SR                  U5      5      e! U R                   R                  U5        f = f7f)Nc                 (   > TR                  U5        g r   )r{   )r:   ctxcontextss     r   handler6TestCase.assertLoopErrorHandlerCalled.<locals>.handler   s    OOC r   messagezFno message matching {!r} was logged with loop.call_exception_handler())r:   get_exception_handlerrk   r\   researchr   r>   )r?   r   r   old_handlerr   r   r   s         @r   assertLoopErrorHandlerCalled%TestCase.assertLoopErrorHandlerCalled   s     	! ii557		''0	9ggi(3299V11 II++K8  
 !006v@ @
 II++K8s/   >CB; %B; B; CB; ;CCc                 \    U R                   R                  U5        UR                  U5        g r   )rm   r{   default_exception_handler)r?   r:   r   s      r   rl   TestCase.loop_exception_handler   s$    ##**73&&w/r   c                 &   UR                  SS5      nUR                  S5      nUb  [        U5      XDR                  4nOS n/ n[        U5       H{  nUS;   a  M  X   nUS:X  a:  SR	                  [
        R                  " U5      5      n	SnXR                  5       -  nO [        U5      nUR                  S	R                  Xx5      5        M}     UbY  UR                  S
5        [        R                  " SR	                  [
        R                  " U6 5      S5      nUR                  U5        [        R                  " SR	                  U5      S5      nSR                  X#U5      $ ! [         a%  n
SR                  U
[        U5      5      n S n
A
NS n
A
ff = f)Nr   z!Unhandled exception in event loop	exception>   r   r   source_traceback z+Object created at (most recent call last):
z,Exception in __repr__ {!r}; value type: {!r}z
[{}]: {}

z[exception]:
z  z    z{:02d}. {}:
{}
)r\   type__traceback__sortedr   rw   format_listrstriprepr	Exceptionr>   r{   textwrapindentformat_exception)r?   r   nr   r   exc_infolineskeyvaluetbexformatted_excdetailss                r   r}   TestCase._format_loop_exception   se   ++i)LMKK,	 Y4K4KLHH'?C..LE((WWY2259:F$I KE LL..s:; #  LL)*$OO	22H=>FMLL'//"''%.&9"))!g>> ! I006r4;0G Is   E!!
F+FF)__unhandled_exceptionsN)rM   rN   rO   rP   classmethodrc   rh   rn   r   
contextlibcontextmanagerr   strr   rl   r}   rR   r"   r   r   rV   rV   b   sw      % %)&. 
) 
) 93 9 9.0 ?r   rV   )	metaclassc                     U " S0 UD6nUR                   " S0 U=(       d    0 D6  UR                  5         [        R                  " [        U5        U$ )Nr"   )inittrust_local_connectionsatexitregister_shutdown_cluster)
ClusterClscluster_kwargsinitdb_optionsr   s       r   _init_clusterr      sC    *>*GLL*N(b*##%
OO%w/Nr   c                 F    U (       d  0 n O[        U 5      n SU ;  a  SU S'   U $ )Nusernamepostgres)dict)r   s    r   _get_initdb_optionsr      s.    n- '%/z"r   c                     [         ce  [        R                  R                  S5      nU(       a  [        R
                  " 5       q [         $ [        [        R                  SS0[        U 5      S9q [         $ )NPGHOSTdata_dir_suffixz.apgtestr   r   )	_default_clusterrZ   r[   r\   
pg_clusterRunningClusterr   TempClusterr   )r   pg_hosts     r   _init_default_clusterr      sh     **..*)88:   -&&%z   3>B  r   c                     U R                  5       S:X  a  U R                  5         U R                  5       S:w  a  U R                  5         g g )Nrunningznot-initialized)
get_statusstopdestroyr   s    r   r   r     s=    y(00 1r   
   iP  g      N@)min_sizemax_sizemax_queries max_inactive_connection_lifetimeconnectsetupr   r:   
pool_classconnection_classrecord_classc                *    U	" U 4UUUUUUUUU
US.
UD6$ )N)
r   r   r   r:   r   r   r   r   r   r   r"   )dsnr   r   r   r   r   r   r   r:   r   r   r   connect_kwargss                r   create_poolr     sA     )I)!  r   c                     ^  \ rS rSr\S 5       r\0 0 S.S j5       r\0 S.S j5       r\S 5       r\U 4S j5       r	\U 4S	 j5       r
\0 4S
 j5       r\S 5       rU 4S jrU 4S jr\R                   \R$                  4S jrSrU =r$ )ClusterTestCasei*  c                 T    SS0nU R                   R                  5       S:  a  SUS'   U$ )Nlog_connectionson)   r   offjit)r   get_pg_version)rb   settingss     r   get_server_settings#ClusterTestCase.get_server_settings+  s7     t
 ;;%%'72 $HUOr   r   c                f    [        X[        U5      5      nU R                  R                  U5        U$ r   )r   r   	_clustersr{   )rb   r   r   r   r   s        r   new_clusterClusterTestCase.new_cluster8  s.    
 3N CEW%r   server_settingsc                $    UR                  SUS9  g )Ndynamicportr   )start)rb   r   r   s      r   start_clusterClusterTestCase.start_cluster?  s    9oFr   c                     [        5       U l        U R                  R                  5       S:w  a)  U R                  R                  SU R	                  5       S9  g g )Nr   r   r   )r   r   r   r  r   rg   s    r   setup_clusterClusterTestCase.setup_clusterC  sL    +-;;!!#y0KK0G0G0I  K 1r   c                 P   > [         TU ]  5         / U l        U R                  5         g r   )rH   rc   r   r  rb   rK   s    r   rc   ClusterTestCase.setUpClassK  s!    r   c                    > [         TU ]  5         U R                   H.  nU[        Ld  M  UR	                  5         UR                  5         M0     / U l        g r   )rH   rh   r   r   r   r   )rb   r   rK   s     r   rh   ClusterTestCase.tearDownClassQ  sA    }}G..! % r   c                 J   U R                   R                  5       nUR                  S5      (       a  UR                  S5        UR	                  U5        [
        R                  R                  S5      (       d,  UR                  S5      (       d  SU;  a  SUS'   SU;  a  SUS'   U$ Nr   hostr   databaser   user)r   get_connection_specr\   popupdaterZ   r[   rb   rA   	conn_specs      r   r  #ClusterTestCase.get_connection_specZ  s    KK335	::eMM&! zz~~h''

50A0A*(2	*%Y&$.	&!r   c                 l    U R                  U5      n[        R                  " S0 UDSU R                  0D6$ Nr:   r"   )r  pg_connectionr   r:   r  s      r   r   ClusterTestCase.connectg  s/    ++F3	$$@y@sxx@@r   c                 0   > [         TU ]  5         / U l        g r   )rH   rn   _poolsr?   rK   s    r   rn   ClusterTestCase.setUpl  s    r   c                 v   > [         TU ]  5         U R                   H  nUR                  5         M     / U l        g r   )rH   r   r  	terminate)r?   r   rK   s     r   r   ClusterTestCase.tearDownp  s-    KKDNN  r   c                     U R                  U5      n[        SU R                  UUS.UD6nU R                  R	                  U5        U$ )N)r:   r   r   r"   )r  r   r:   r  r{   )r?   r   r   rA   r  r   s         r   r   ClusterTestCase.create_poolv  sN    ,,V4	 K		j,<K@IK4 r   )r  )rM   rN   rO   rP   r   r   r   r  r  rc   rh   r  r   rn   r   pg_poolPoolr  
Connectionr   rR   rS   rT   s   @r   r   r   *  s    
 
 79"   79 G G K K  
   (* 
 
 A A &-\\%2%=%= r   r   c                      ^  \ rS rSr\U 4S j5       r\S 5       r\U 4S j5       r\U 4S j5       r\U 4S j5       r	U 4S jr
SrU =r$ )	ProxiedClusterTestCasei  c                 @   > [        [        TU ]	  5       5      nSUS'   U$ )N	127.0.0.1listen_addresses)r   rH   r   )rb   r   rK   s     r   r   *ProxiedClusterTestCase.get_server_settings  s%    356'2#$r   c                 
    SS 0$ )Nzfuzzing-moder"   rg   s    r   get_proxy_settings)ProxiedClusterTestCase.get_proxy_settings  s    %%r   c                 *  > [         TU ]  5         U R                  R                  5       nUR	                  S5      nU(       d  SnOUR                  S5      (       a  Sn[        R                  " UUS   S9U l        U R                  R                  5         g )Nr  r+  /r  )backend_hostbackend_port)
rH   rc   r   r  r\   r   r   TCPFuzzingProxyproxyr  )rb   r  r  rK   s      r   rc   !ProxiedClusterTestCase.setUpClass  sw    KK335	}}V$D__S!!D**"6*
	 			r   c                 V   > U R                   R                  5         [        TU ]  5         g r   )r6  r   rH   rh   r	  s    r   rh   $ProxiedClusterTestCase.tearDownClass  s    		r   c                    > [         TU ]  U5      nU R                  R                  US'   U R                  R                  US'   U$ )Nr  r  )rH   r  r6  listening_addrlistening_port)rb   rA   r  rK   s      r   r  *ProxiedClusterTestCase.get_connection_spec  s@    G/7	II44	&II44	&r   c                 V   > U R                   R                  5         [        TU ]  5         g r   )r6  resetrH   r   r  s    r   r   ProxiedClusterTestCase.tearDown  s    

r   r"   )rM   rN   rO   rP   r   r   r/  rc   rh   r  r   rR   rS   rT   s   @r   r)  r)    so     
 & &         r   r)  c                  8   ^  T (       d  [        S5      eU 4S jnU$ )Nz$no connection options were specifiedc                    > TU l         U $ r   )__connect_options__)r   optionss    r   r    %with_connection_options.<locals>.wrap  s    #* r   )
ValueError)rD  r    s   ` r   with_connection_optionsrG    s    ?@@ Kr   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )ConnectedTestCasei  c                   > [         TU ]  5         [        X R                  5      R                  n[        US0 5      nU R
                  R                  U R                  " S0 UD65      U l        U R                  R                  5       U l
        g )NrC  r"   )rH   rn   r*   _testMethodName__func__r:   r;   r   conget_server_versionserver_version)r?   	test_funcoptsrK   s      r   rn   ConnectedTestCase.setUp  sj     D"6"67@@	y"7<99//0Dt0DE"hh99;r   c                    >  U R                   R                  U R                  R                  5       5        S U l        [        TU ]  5         g ! [        TU ]  5         f = fr   )r:   r;   rM  rf   rH   r   r  s    r   r   ConnectedTestCase.tearDown  sC    	II(()9:DHGEGs   :A A)rM  rO  )rM   rN   rO   rP   rn   r   rR   rS   rT   s   @r   rI  rI    s    < r   rI  c                   p    \ rS rSr\S 5       r\0 4S j5       r\0 4S j5       r\S 5       r\S 5       r	Sr
g)	HotStandbyTestCasei  c                    U R                  [        R                  5      U l        U R	                  U R                  SSS.S9  S n U R
                  R                  U R                  R                  SSU R
                  S95      nU R
                  R                  UR                  S5      5        U R                  R                  S5        U R                  R                  5       nU R                  [        R                  USS	.S
9U l        U R	                  U R                  SS0S9  Ub*  U R
                  R                  UR                  5       5        g g ! Ub*  U R
                  R                  UR                  5       5        f f = f)Nr   hot_standby)max_wal_senders	wal_levelr   r   )r  r  r:   zT
                    CREATE ROLE replication WITH LOGIN REPLICATION
                replication)masterreplication_user)r   T)r   r   r   master_clusterr  r:   r;   r   executetrust_local_replication_byr  HotStandbyClusterstandby_clusterrf   )rb   rM  r  s      r   r   HotStandbyTestCase.setup_cluster  sn    __Z-C-CD#%* 	 	
 	9((--""**'jsxx + IJC HH''  
 99-H**>>@I"%//,,'(5  #2 #C ##!4!   ++CIIK8 s++CIIK8 s   CE /Fc                 6   UR                  5       nUR                  S5      (       a  UR                  S5        UR                  U5        [        R
                  R                  S5      (       d,  UR                  S5      (       d  SU;  a  SUS'   SU;  a  SUS'   U$ r  )r  r\   r  r  rZ   r[   )rb   r   rA   r  s       r   get_cluster_connection_spec.HotStandbyTestCase.get_cluster_connection_spec  s    //1	::eMM&! zz~~h''

50A0A*(2	*%Y&$.	&!r   c                     U R                  U R                  U5      nU R                  U R                  U5      nUS   US   /US   US   /US   US   S.UE$ )Nr  r  r  r  )r  r  r  r  )re  r^  rb  )rb   rA   primary_specstandby_specs       r   r  &HotStandbyTestCase.get_connection_spec  s    66
 66
 "&)<+?@!&)<+?@$Z0 (	

 
 	
r   c                     U R                  U R                  U5      n[        R                  " S0 UDSU R                  0D6$ r  )re  r^  r  r   r:   r  s      r   connect_primary"HotStandbyTestCase.connect_primary  s7    33C4F4FO	$$@y@sxx@@r   c                     U R                  U R                  U5      n[        R                  " S0 UDSU R                  0D6$ r  )re  rb  r  r   r:   r  s      r   connect_standby"HotStandbyTestCase.connect_standby  s=    33
	 $$@y@sxx@@r   r"   N)rM   rN   rO   rP   r   r  re  r  rl  ro  rR   r"   r   r   rV  rV    so    *9 *9X 9; 
 
 (* 
 
 A A A Ar   rV  r   ))r   r   r   rF   r+   r   rZ   r   r   r   rw   unittestasyncpgr   r   r   r  r   r%  r   r   r   r   r#   r   rV   r%   r   r   r   r   r   r&  r'  Recordr   r   r)  rG  rI  rV  r"   r   r   <module>rt     s         	 	      ) / #  
! 
!+64))* +6\u?x  L u?p  
(!15"<<!.!9!9$^^:Rh Rj(_ (V &WA WAr   