Ë
    V.j’B  ã                   ó  — 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Z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 d dlmZ d dlmZ ddlmZ ej*                  d„ «       Zd„ Z G d	„ d
 eej2                  «      «      Z G d„ dej2                  e¬«      Zdad d„Zd d„Zd d„Zd„ Zd ddddddddej@                  ejB                  ejD                  dœd„Z# G d„ de«      Z$ G d„ de$«      Z%d„ Z& G d„ de$«      Z' G d„ de$«      Z(y)!é    N©Úcluster)Ú
connection)Úpoolé   )Úfuzzerc               #   ó¶   K  — d„ } t        j                  d«      }|j                  | «       	 d –— |j                  | «       y # |j                  | «       w xY w­w)Nc                 óF   — | j                  «       }|j                  d«       S )Nz
Executing )Ú
getMessageÚ
startswith)Ú
log_recordÚmsgs     ú\C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\asyncpg/_testbase/__init__.pyÚfltz.silence_asyncio_long_exec_warning.<locals>.flt    s"   € Ø×#Ñ#Ó%ˆØ—>‘> ,Ó/Ð/Ð/ó    Úasyncio)ÚloggingÚ	getLoggerÚ	addFilterÚremoveFilter)r   Úloggers     r   Ú!silence_asyncio_long_exec_warningr      sO   è ø€ ò0ô ×Ñ˜yÓ)€FØ
×Ñ�SÔð!Ûà×Ñ˜CÕ øˆ×Ñ˜CÕ üs   ‚*A­A ±AÁAÁAc                 ó   ‡ — ˆ fd„}|S )Nc                 ó   •— ‰| _         | S ©N)Ú__timeout__)ÚfuncÚtimeouts    €r   Úwrapzwith_timeout.<locals>.wrap-   s   ø€ Ø"ˆÔØˆr   © )r   r   s   ` r   Úwith_timeoutr!   ,   s   ø€ ôð €Kr   c                   ó2   ‡ — e Zd ZdZed„ «       Zˆ fd„Zˆ xZS )ÚTestCaseMetaNc              #   ó:  K  — | D ]L  }t        |«      D ]<  }|j                  d«      sŒt        ||«      }t        j                  |«      sŒ7||f–— Œ> ŒN |j                  «       D ]3  \  }}|j                  d«      sŒt        j                  |«      sŒ.||f–— Œ5 y ­w)NÚtest_)Údirr   ÚgetattrÚinspectÚiscoroutinefunctionÚitems)ÚbasesÚnsÚbaseÚmethnameÚmeths        r   Ú_iter_methodszTestCaseMeta._iter_methods7   s˜   è ø€ ãˆDÜ žI�Ø×*Ñ*¨7Ô3Øä˜t XÓ.�Ü×2Ñ2°4Ô8Øà �nÓ$ñ &ð ð !Ÿh™hžj‰NˆH�dØ×&Ñ& wÔ/Øä×.Ñ.¨tÔ4Øà˜D�.Ó ñ )ùs   ‚BBc                 ó¨   •‡ — ‰ j                  ||«      D ]*  \  }}t        j                  |«      |dœˆ fd„
«       }|||<   Œ, t        ‰‰ �  ‰ |||«      S )N)Ú__meth__c                ó\  •—  || g|¢­i |¤Ž}t        |d‰j                  «      }|r3t        j                  ||«      }	 | j                  j                  |«       y | j                  j                  |«       y # t        j                  $ r" | j                  dj                  |«      «      d ‚w xY w)Nr   ztest timed out after {} seconds)	r'   ÚTEST_TIMEOUTr   Úwait_forÚloopÚrun_until_completeÚTimeoutErrorÚfailureExceptionÚformat)Úselfr2   ÚargsÚkwargsÚcoror   Úmclss         €r   Úwrapperz%TestCaseMeta.__new__.<locals>.wrapperO   s©   ø€ á Ð6 tÒ6¨vÑ6�Ü! (¨M¸4×;LÑ;LÓM�ÙÜ"×+Ñ+¨D°'Ó:�Dð4ØŸ	™	×4Ñ4°TÕ:ð —I‘I×0Ñ0°Õ6øô #×/Ñ/ò 4Ø"×3Ñ3Ø=×DÑDØ 'ó)ó*à/3ð4ð4ús   ¾A6 Á65B+)r0   Ú	functoolsÚwrapsÚsuperÚ__new__)r?   Únamer+   r,   r.   r/   r@   Ú	__class__s   `      €r   rD   zTestCaseMeta.__new__M   s^   ù€ Ø"×0Ñ0°¸Ö;‰NˆH�dÜ�_‰_˜TÓ"Ø.2õ 7ó #ð7ð #ˆBˆxŠLð <ô" ‰w‰˜t T¨5°"Ó5Ð5r   )Ú__name__Ú
__module__Ú__qualname__r4   Ústaticmethodr0   rD   Ú__classcell__©rF   s   @r   r#   r#   4   s$   ø„ Ø€Làñ!ó ð!÷*6ð 6r   r#   c                   ó’   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zej                  d„ «       Z
ej                  defd„«       Zd„ Zd	„ Zy
)ÚTestCasec                 óð   — t         j                  j                  d«      r'dd l}t	        j
                  |j                  «       «       t	        j                  «       }t	        j                  d «       || _	        y )NÚ
USE_UVLOOPr   )
ÚosÚenvironÚgetÚuvloopr   Úset_event_loop_policyÚEventLoopPolicyÚnew_event_loopÚset_event_loopr6   )ÚclsrT   r6   s      r   Ú
setUpClasszTestCase.setUpClassd   sO   € ä�:‰:�>‰>˜,Ô'ÛÜ×)Ñ)¨&×*@Ñ*@Ó*BÔCä×%Ñ%Ó'ˆÜ×Ñ˜tÔ$Øˆ�r   c                 ób   — | j                   j                  «        t        j                  d «       y r   )r6   Úcloser   rX   ©rY   s    r   ÚtearDownClasszTestCase.tearDownClassn   s   € à�‰�‰ÔÜ×Ñ˜tÕ$r   c                 ó\   — | j                   j                  | j                  «       g | _        y r   )r6   Úset_exception_handlerÚloop_exception_handlerÚ_TestCase__unhandled_exceptions)r;   s    r   ÚsetUpzTestCase.setUps   s"   € Ø�	‰	×'Ñ'¨×(CÑ(CÔDØ&(ˆÕ#r   c                 ó¦  — g }| j                   D ]a  }t        |t        «      r>t        j                  j                  |d¬«      }|j                  d   j                  dk(  rŒQ|j                  |«       Œc |r]g }t        |«      D ])  \  }}|j                  | j                  ||dz   «      «       Œ+ | j                  ddj                  |«      z   «       y y )NF)Úlookup_lineséÿÿÿÿÚ_call_connection_lostr   z,unexpected exceptions in asynchronous code:
Ú
)rb   Ú
isinstanceÚConnectionResetErrorÚ	tracebackÚTracebackExceptionÚfrom_exceptionÚstackrE   ÚappendÚ	enumerateÚ_format_loop_exceptionÚfailÚjoin)r;   ÚexcsÚexcÚtexcÚ	formattedÚiÚcontexts          r   ÚtearDownzTestCase.tearDownw   sÍ   € ØˆØ×.Ô.ˆCÜ˜#Ô3Ô4Ü ×3Ñ3×BÑBØ eð Có -�à—:‘:˜b‘>×&Ñ&Ð*AÒAð Ø�K‰K˜Õð /ñ ØˆIä'¨žo‘
��7Ø× Ñ  ×!<Ñ!<¸WÀaÈ!ÁeÓ!LÕMð .ð �I‰IØ?Ø—	‘	˜)Ó$ñ%õ&ð r   c              #   ó$  K  — t        j                  «       }	 d –— t        j                  «       |z
  }||kD  rt        dj                  ||«      «      ‚y # t        j                  «       |z
  }||kD  rt        dj                  ||«      «      ‚w xY w­w)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   ÚassertRunUnderzTestCase.assertRunUnderŽ   s™   è ø€ ä�^‰^Óˆð	)Ûä—n‘nÓ&¨Ñ+ˆGØ˜ŠÜ$ð<ß<B¹FØ ó=(ó)ð )ð øô —n‘nÓ&¨Ñ+ˆGØ˜ŠÜ$ð<ß<B¹FØ ó=(ó)ð )ð üs   ‚B˜A œ8BÁ9BÂBÚmsg_rec              #   óž  ‡K  — g Šˆfd„}| j                   j                  «       }| j                   j                  |«       	 d –— ‰D ]I  }|j                  d«      }|sŒt	        j
                  ||«      sŒ. | j                   j                  |«       y  t        dj                  |«      «      ‚# | j                   j                  |«       w xY w­w)Nc                 ó(   •— ‰j                  |«       y r   )ro   )r6   ÚctxÚcontextss     €r   Úhandlerz6TestCase.assertLoopErrorHandlerCalled.<locals>.handlerŸ   s   ø€ Ø�O‰O˜CÕ r   ÚmessagezFno message matching {!r} was logged with loop.call_exception_handler())r6   Úget_exception_handlerr`   rS   ÚreÚsearchr~   r:   )r;   rƒ   rˆ   Úold_handlerr†   r   r‡   s         @r   ÚassertLoopErrorHandlerCalledz%TestCase.assertLoopErrorHandlerCalled›   s²   øè ø€ àˆô	!ð —i‘i×5Ñ5Ó7ˆØ�	‰	×'Ñ'¨Ô0ð	9Ûã�Ø—g‘g˜iÓ(�Úœ2Ÿ9™9 V¨SÕ1Øð �I‰I×+Ñ+¨KÕ8ð  ô
 !ð0ß06±°v³ó@ð @øð
 �I‰I×+Ñ+¨KÕ8üs/   ƒ=CÁB- ÁB- Á5B- Á6CÂB- Â-C
Ã
Cc                 ó\   — | j                   j                  |«       |j                  |«       y r   )rb   ro   Údefault_exception_handler)r;   r6   ry   s      r   ra   zTestCase.loop_exception_handler³   s$   € Ø×#Ñ#×*Ñ*¨7Ô3Ø×&Ñ& wÕ/r   c                 ó  — |j                  dd«      }|j                  d«      }|�t        |«      ||j                  f}nd }g }t        |«      D ]x  }|dv rŒ||   }|dk(  r:dj	                  t        j                  |«      «      }	d}||	j                  «       z  }n	 t        |«      }|j                  d	j                  ||«      «       Œz |�W|j                  d
«       t        j                  dj	                  t        j                  |Ž «      d«      }|j                  |«       t        j                  dj	                  |«      d«      }dj                  |||«      S # t        $ r%}
dj                  |
t        |«      «      }Y d }
~
ŒÝd }
~
ww xY w)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}. {}:
{}
)rS   ÚtypeÚ__traceback__Úsortedrs   rk   Úformat_listÚrstripÚreprÚ	Exceptionr:   ro   ÚtextwrapÚindentÚformat_exception)r;   ry   Únr‰   r’   Úexc_infoÚlinesÚkeyÚvalueÚtbÚexÚformatted_excÚdetailss                r   rq   zTestCase._format_loop_exception·   so  € Ø—+‘+˜iÐ)LÓMˆØ—K‘K Ó,ˆ	ØÐ Ü˜Y›¨°I×4KÑ4KÐL‰HàˆHàˆÜ˜'–?ˆCØÐ.Ñ.ØØ˜C‘LˆEØÐ(Ò(Ø—W‘WœY×2Ñ2°5Ó9Ó:�ØF�Ø˜Ÿ™›Ñ$‘ðIÜ  ›K�Eð �L‰L˜×.Ñ.¨s°EÓ:Õ;ð #ð  ÐØ�L‰LÐ)Ô*Ü$ŸO™OØ—‘œ	×2Ñ2°HÐ=Ó>ÀóFˆMà�L‰L˜Ô'ä—/‘/ "§'¡'¨%£.°&Ó9ˆØ"×)Ñ)¨!¨W°gÓ>Ð>øô !ò Ið0ß06±°r¼4À»;Ó0Gõ ûðIús   ÂEÅ	FÅ#FÆFN)rG   rH   rI   ÚclassmethodrZ   r^   rc   rz   Ú
contextlibÚcontextmanagerr‚   ÚstrrŽ   ra   rq   r    r   r   rN   rN   b   sw   „ àñó ðð ñ%ó ð%ò)ò&ð. ×Ññ
)ó ð
)ð ×Ñð9°3ò 9ó ð9ò.0ó ?r   rN   )Ú	metaclassc                 ó–   —  | di |¤Ž} |j                   di |xs i ¤Ž |j                  «        t        j                  t        |«       |S )Nr    )ÚinitÚtrust_local_connectionsÚatexitÚregisterÚ_shutdown_cluster)Ú
ClusterClsÚcluster_kwargsÚinitdb_optionsr   s       r   Ú_init_clusterr¶   Ý   sE   € ÙÑ*˜>Ñ*€GØ€G‡L�LÑ*�NÒ( bÒ*Ø×#Ñ#Ô%Ü
‡O�OÔ% wÔ/Ø€Nr   c                 ó8   — | si } nt        | «      } d| vrd| d<   | S )NÚusernameÚpostgres)Údict)rµ   s    r   Ú_get_initdb_optionsr»   å   s.   € ÙØ‰ä˜nÓ-ˆð ˜Ñ'Ø%/ˆ�zÑ"àÐr   c                 óÞ   — t         €bt        j                  j                  d«      }|rt	        j
                  «       a t         S t        t        j                  ddit        | «      ¬«      a t         S )NÚPGHOSTÚdata_dir_suffixz.apgtest©r´   rµ   )	Ú_default_clusterrQ   rR   rS   Ú
pg_clusterÚRunningClusterr¶   ÚTempClusterr»   )rµ   Úpg_hosts     r   Ú_init_default_clusterrÅ   ò   sh   € ô ÐÜ—*‘*—.‘. Ó*ˆÙä)×8Ñ8Ó:Ðô Ðô  -Ü×&Ñ&à% zð ô  3°>ÓBô Ðô Ðr   c                 ó’   — | j                  «       dk(  r| j                  «        | j                  «       dk7  r| j                  «        y y )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®   r6   Ú
pool_classÚconnection_classÚrecord_classc                ó*   —  |	| f|||||||||
|dœ
|¤ŽS )N)
rÌ   rÍ   rÎ   r6   rÐ   rÑ   r®   rÏ   rÓ   rÔ   r    )ÚdsnrÌ   rÍ   rÎ   rÏ   rÐ   rÑ   r®   r6   rÒ   rÓ   rÔ   Úconnect_kwargss                r   Úcreate_poolrØ     sA   € ñ ØðàØØØØØØØ)IØ)Ø!ñð ñð r   c                   óö   ‡ — e Zd Zed„ «       Zei i dœd„«       Zei dœd„«       Zed„ «       Zeˆ fd„«       Zeˆ fd„«       Z	ei fd	„«       Z
ed
„ «       Zˆ fd„Zˆ fd„Zej                  ej"                  fd„Zˆ xZS )ÚClusterTestCasec                 óR   — ddi}| j                   j                  «       dk\  rd|d<   |S )NÚlog_connectionsÚon)é   r   ÚoffÚjit)r   Úget_pg_version)rY   Úsettingss     r   Úget_server_settingsz#ClusterTestCase.get_server_settings+  s7   € ð ˜tð
ˆð �;‰;×%Ñ%Ó'¨7Ò2ð $ˆH�U‰Oàˆr   r¿   c                óh   — t        ||t        |«      «      }| j                  j                  |«       |S r   )r¶   r»   Ú	_clustersro   )rY   r³   r´   rµ   r   s        r   Únew_clusterzClusterTestCase.new_cluster8  s0   € ä 
¨NÜ 3°NÓ CóEˆà�‰×Ñ˜WÔ%Øˆr   ©Úserver_settingsc                ó*   — |j                  d|¬«       y )NÚdynamic©Úportrè   )Ústart)rY   r   rè   s      r   Ústart_clusterzClusterTestCase.start_cluster?  s   € à�‰˜9°oˆÕFr   c                 ó´   — t        «       | _        | j                  j                  «       dk7  r,| j                  j                  d| j	                  «       ¬«       y y )NrÇ   rê   rë   )rÅ   r   rÈ   rí   rã   r]   s    r   Úsetup_clusterzClusterTestCase.setup_clusterC  sL   € ä+Ó-ˆŒà�;‰;×!Ñ!Ó# yÒ0Ø�K‰K×ÑØ°×0GÑ0GÓ0Ið õ Kð 1r   c                 óP   •— t         ‰| �  «        g | _        | j                  «        y r   )rC   rZ   rå   rð   ©rY   rF   s    €r   rZ   zClusterTestCase.setUpClassK  s!   ø€ ä‰ÑÔØˆŒØ×ÑÕr   c                 ó¤   •— t         ‰| �  «        | j                  D ]+  }|t        usŒ|j	                  «        |j                  «        Œ- g | _        y r   )rC   r^   rå   rÀ   rÉ   rÊ   )rY   r   rF   s     €r   r^   zClusterTestCase.tearDownClassQ  sA   ø€ ä‰ÑÔØ—}”}ˆGØÔ.Ò.Ø—‘”Ø—‘Õ!ð %ð ˆ�r   c                 ó$  — | j                   j                  «       }|j                  d«      r|j                  d«       |j	                  |«       t
        j                  j                  d«      s#|j                  d«      sd|vrd|d<   d|vrd|d<   |S ©NrÖ   Úhostr½   Údatabaser¹   Úuser)r   Úget_connection_specrS   ÚpopÚupdaterQ   rR   ©rY   r=   Ú	conn_specs      r   rù   z#ClusterTestCase.get_connection_specZ  s   € à—K‘K×3Ñ3Ó5ˆ	Ø�:‰:�eÔØ�M‰M˜&Ô!Ø×Ñ˜Ô Ü�z‰z�~‰~˜hÔ'°·
±
¸5Ô0AØ Ñ*Ø(2�	˜*Ñ%Ø˜YÑ&Ø$.�	˜&Ñ!ØÐr   c                 ój   — | j                  |«      }t        j                  di |¤d| j                  i¤ŽS ©Nr6   r    )rù   Úpg_connectionrÐ   r6   rü   s      r   rÐ   zClusterTestCase.connectg  s/   € à×+Ñ+¨FÓ3ˆ	Ü×$Ñ$Ñ@ yÑ@°s·x±xÒ@Ð@r   c                 ó0   •— t         ‰| �  «        g | _        y r   )rC   rc   Ú_pools©r;   rF   s    €r   rc   zClusterTestCase.setUpl  s   ø€ Ü‰‰ŒØˆ�r   c                 ór   •— t         ‰| �  «        | j                  D ]  }|j                  «        Œ g | _        y r   )rC   rz   r  Ú	terminate)r;   r   rF   s     €r   rz   zClusterTestCase.tearDownp  s-   ø€ Ü‰ÑÔØ—K”KˆDØ�N‰NÕð  àˆ�r   c                 ó�   — | j                  |«      }t        d| j                  ||dœ|¤Ž}| j                  j	                  |«       |S )N)r6   rÒ   rÓ   r    )rù   rØ   r6   r  ro   )r;   rÒ   rÓ   r=   rý   r   s         r   rØ   zClusterTestCase.create_poolv  sN   € à×,Ñ,¨VÓ4ˆ	Üð K §	¡	°jØ,<ñKØ@IñKˆà�‰×Ñ˜4Ô Øˆr   )rG   rH   rI   r¨   rã   ræ   rî   rð   rZ   r^   rù   rÐ   rc   rz   Úpg_poolÚPoolr   Ú
ConnectionrØ   rK   rL   s   @r   rÚ   rÚ   *  sÓ   ø„ Øñ
ó ð
ð Ø79È"ó ó ðð Ø79ó Gó ðGð ñKó ðKð óó ðð
 óó ðð Ø(*ò 
ó ð
ð ñAó ðAôôð &-§\¡\Ø%2×%=Ñ%=÷r   rÚ   c                   ó~   ‡ — e Zd Zeˆ fd„«       Zed„ «       Zeˆ fd„«       Zeˆ fd„«       Zeˆ fd„«       Zˆ fd„Z	ˆ xZ
S )ÚProxiedClusterTestCasec                 ó@   •— t        t        ‰| �	  «       «      }d|d<   |S )Nú	127.0.0.1Úlisten_addresses)rº   rC   rã   )rY   râ   rF   s     €r   rã   z*ProxiedClusterTestCase.get_server_settings€  s%   ø€ äœ™Ñ3Ó5Ó6ˆØ'2ˆÐ#Ñ$Øˆr   c                 ó
   — dd iS )Nzfuzzing-moder    r]   s    r   Úget_proxy_settingsz)ProxiedClusterTestCase.get_proxy_settings†  s   € à Ð%Ð%r   c                 ó  •— t         ‰| �  «        | j                  j                  «       }|j	                  d«      }|sd}n|j                  d«      rd}t        j                  ||d   ¬«      | _        | j                  j                  «        y )Nrö   r  Ú/rì   )Úbackend_hostÚbackend_port)
rC   rZ   r   rù   rS   r   r   ÚTCPFuzzingProxyÚproxyrí   )rY   rý   rö   rF   s      €r   rZ   z!ProxiedClusterTestCase.setUpClassŠ  st   ø€ ä‰ÑÔØ—K‘K×3Ñ3Ó5ˆ	Ø�}‰}˜VÓ$ˆÙØ‰DØ�_‰_˜SÔ!ØˆDÜ×*Ñ*ØØ" 6Ñ*ô
ˆŒ	ð 	�	‰	�‰Õr   c                 óV   •— | j                   j                  «        t        ‰| �  «        y r   )r  rÉ   rC   r^   rò   s    €r   r^   z$ProxiedClusterTestCase.tearDownClass™  s   ø€ à�	‰	�‰ÔÜ‰ÑÕr   c                 óŠ   •— t         ‰| �  |«      }| j                  j                  |d<   | j                  j                  |d<   |S )Nrö   rì   )rC   rù   r  Úlistening_addrÚlistening_port)rY   r=   rý   rF   s      €r   rù   z*ProxiedClusterTestCase.get_connection_specž  s@   ø€ ä‘GÑ/°Ó7ˆ	ØŸI™I×4Ñ4ˆ	�&ÑØŸI™I×4Ñ4ˆ	�&ÑØÐr   c                 óV   •— | j                   j                  «        t        ‰| �  «        y r   )r  ÚresetrC   rz   r  s    €r   rz   zProxiedClusterTestCase.tearDown¥  s   ø€ Ø�
‰
×ÑÔÜ‰ÑÕr   )rG   rH   rI   r¨   rã   r  rZ   r^   rù   rz   rK   rL   s   @r   r  r    so   ø„ Øóó ðð
 ñ&ó ð&ð óó ðð ó ó ð ð óó ð÷ð r   r  c                  ó,   ‡ — ‰ st        d«      ‚ˆ fd„}|S )Nz$no connection options were specifiedc                 ó   •— ‰| _         | S r   )Ú__connect_options__)r   Úoptionss    €r   r   z%with_connection_options.<locals>.wrap®  s   ø€ Ø#*ˆÔ Øˆr   )Ú
ValueError)r   r   s   ` r   Úwith_connection_optionsr"  ª  s   ø€ ÙÜÐ?Ó@Ð@ôð €Kr   c                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚConnectedTestCasec                 ó  •— t         ‰| �  «        t        | | j                  «      j                  }t        |di «      }| j
                  j                   | j                  di |¤Ž«      | _        | j                  j                  «       | _
        y )Nr  r    )rC   rc   r'   Ú_testMethodNameÚ__func__r6   r7   rÐ   ÚconÚget_server_versionÚserver_version)r;   Ú	test_funcÚoptsrF   s      €r   rc   zConnectedTestCase.setUp·  sn   ø€ Ü‰‰Œô ˜D $×"6Ñ"6Ó7×@Ñ@ˆ	Ü�yÐ"7¸Ó<ˆØ—9‘9×/Ñ/°°·±Ñ0D¸tÑ0DÓEˆŒØ"Ÿh™h×9Ñ9Ó;ˆÕr   c                 ó¾   •— 	 | j                   j                  | j                  j                  «       «       d | _        t        ‰| �  «        y # t        ‰| �  «        w xY wr   )r6   r7   r(  r\   rC   rz   r  s    €r   rz   zConnectedTestCase.tearDownÀ  sC   ø€ ð	Ø�I‰I×(Ñ(¨¯©¯©Ó)9Ô:ØˆDŒHä‰GÑÕøŒE‰GÑÕús   ƒ:A ÁA)rG   rH   rI   rc   rz   rK   rL   s   @r   r$  r$  µ  s   ø„ ô<÷ð r   r$  c                   ód   — e Zd Zed„ «       Zei fd„«       Zei fd„«       Zed„ «       Zed„ «       Zy)ÚHotStandbyTestCasec                 ó  — | j                  t        j                  «      | _        | j	                  | j                  dddœ¬«       d }	 | j
                  j                  | j                  j                  dd| j
                  ¬«      «      }| j
                  j                  |j                  d«      «       | j                  j                  d«       | j                  j                  «       }| j                  t        j                  |dd	œ¬
«      | _        | j	                  | j                  ddi¬«       |�*| j
                  j                  |j                  «       «       y y # |�*| j
                  j                  |j                  «       «       w w xY w)NrË   Úhot_standby)Úmax_wal_sendersÚ	wal_levelrç   r¹   )r÷   rø   r6   zT
                    CREATE ROLE replication WITH LOGIN REPLICATION
                Úreplication)ÚmasterÚreplication_user)r´   T)ræ   rÁ   rÃ   Úmaster_clusterrî   r6   r7   rÐ   ÚexecuteÚtrust_local_replication_byrù   ÚHotStandbyClusterÚstandby_clusterr\   )rY   r(  rý   s      r   rð   z HotStandbyTestCase.setup_clusterÊ  sn  € à Ÿ_™_¬Z×-CÑ-CÓDˆÔØ×ÑØ×Ñà#%Ø*ñð 	ô 	
ð ˆð	9Ø—(‘(×-Ñ-Ø×"Ñ"×*Ñ*Ø'¨j¸s¿x¹xð +ó IóJˆCð �H‰H×'Ñ'Ø—‘ð ó ôð
 ×Ñ×9Ñ9¸-ÔHà×*Ñ*×>Ñ>Ó@ˆIà"%§/¡/Ü×,Ñ,à'Ø(5ñ ð #2ó #ˆCÔð ×ÑØ×#Ñ#à! 4ð!ð ô ð ˆØ—‘×+Ñ+¨C¯I©I«KÕ8ð øˆsˆØ—‘×+Ñ+¨C¯I©I«KÕ8ð ús   ÁC(E Å.Fc                 ó  — |j                  «       }|j                  d«      r|j                  d«       |j                  |«       t        j
                  j                  d«      s#|j                  d«      sd|vrd|d<   d|vrd|d<   |S rõ   )rù   rS   rú   rû   rQ   rR   )rY   r   r=   rý   s       r   Úget_cluster_connection_specz.HotStandbyTestCase.get_cluster_connection_spec÷  s{   € à×/Ñ/Ó1ˆ	Ø�:‰:�eÔØ�M‰M˜&Ô!Ø×Ñ˜Ô Ü�z‰z�~‰~˜hÔ'°·
±
¸5Ô0AØ Ñ*Ø(2�	˜*Ñ%Ø˜YÑ&Ø$.�	˜&Ñ!ØÐr   c                 ó°   — | j                  | j                  |«      }| j                  | j                  |«      }|d   |d   g|d   |d   g|d   |d   dœ|¥S )Nrö   rì   r÷   rø   )rö   rì   r÷   rø   )r=  r7  r;  )rY   r=   Úprimary_specÚstandby_specs       r   rù   z&HotStandbyTestCase.get_connection_spec  s„   € à×6Ñ6Ø×Ñ ó
ˆð ×6Ñ6Ø×Ñ ó
ˆð " &Ñ)¨<¸Ñ+?Ð@Ø! &Ñ)¨<¸Ñ+?Ð@Ø$ ZÑ0Ø  Ñ(ñ	
ð
 ð
ð 	
r   c                 ó€   — | j                  | j                  |«      }t        j                  di |¤d| j                  i¤ŽS rÿ   )r=  r7  r   rÐ   r6   rü   s      r   Úconnect_primaryz"HotStandbyTestCase.connect_primary  s7   € à×3Ñ3°C×4FÑ4FÈÓOˆ	Ü×$Ñ$Ñ@ yÑ@°s·x±xÒ@Ð@r   c                 ó€   — | j                  | j                  |«      }t        j                  di |¤d| j                  i¤ŽS rÿ   )r=  r;  r   rÐ   r6   rü   s      r   Úconnect_standbyz"HotStandbyTestCase.connect_standby  s=   € à×3Ñ3Ø×ÑØó
ˆ	ô ×$Ñ$Ñ@ yÑ@°s·x±xÒ@Ð@r   N)	rG   rH   rI   r¨   rð   r=  rù   rB  rD  r    r   r   r/  r/  È  so   „ àñ*9ó ð*9ðX Ø9;ò 
ó ð
ð Ø(*ò 
ó ð
ð ñAó ðAð ñAó ñAr   r/  r   ))r   r°   r©   rA   r(   r   rQ   r‹   rœ   r|   rk   ÚunittestÚasyncpgr   rÁ   r   r   r   r  r”   r   rª   r   r!   r•   rN   r#   rÀ   r¶   r»   rÅ   r²   r  r	  ÚRecordrØ   rÚ   r  r"  r$  r/  r    r   r   Ú<module>rH     s  ðó Û Û Û Û Û Û 	Û 	Û Û Û Û ó Ý )Ý /Ý #å ð ×Ññ
!ó ð
!òô+6‘4˜×)Ñ)Ó*ô +6ô\u?ˆx× Ñ ¨Lõ u?ðp Ð óó
óò(ðØØØ!Ø15ØØØØØ"Ÿ<™<Ø!.×!9Ñ!9Ø$Ÿ^™^ôô:R�hô Rôj(˜_ô (òVô˜ô ô&WA˜õ WAr   