EI0tddlmZddlZddlZddlZddlmZddlmZddlm Z ddlm Z dd lm Z Gd d e Z e Zd Ze d Ze dZe dZe dZddZGdde ZddZddZddZGdde ZGdde ZeefdZdS))absolute_importN)config)uses_deprecated) decorator)event)poolceZdZdZdZdZdZdZdZdZ dZ d Z d Z e d Ze d Zd ZdS)ConnectionKillerctj|_tj|_t |_dSN)weakrefWeakKeyDictionary proxy_refstesting_enginessetconnsselfs /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/sqlalchemy/testing/engines.py__init__zConnectionKiller.__init__s2!355&8::UU cd|j|<dSNT)r)rengines r add_enginezConnectionKiller.add_engines'+V$$$rc>|j||fdSr)radd)r dbapi_conn con_records rconnectzConnectionKiller.connects!  J/00000rcd|j|<dSr)r)r dbapi_conr! con_proxys rcheckoutzConnectionKiller.checkout!s%) """rc>|j||fdSr)rdiscard)rr$r! exceptions r invalidatezConnectionKiller.invalidate$s# Iz233333rcz |dS#t$r"}tjd|zYd}~dSd}~wwxYw)Nz5testing_reaper couldn't rollback/close connection: %s Exceptionwarningswarnrfnes r_safezConnectionKiller._safe'so  BDDDDD    MJQN            :5:czt|jD]%}|!|jr||j&dSr)listris_validr3rollbackrrecs r rollback_allzConnectionKiller.rollback_all/sE(( ) )C3< 3<((( ) )rczt|jD]%}|!|jr||j&dSr)r6rr7r3_closer9s r close_allzConnectionKiller.close_all4sE(( ' 'C3< 3:&&& ' 'rc~t|jD]'\}}|j ||j(dSr)r6r connectionr3r8rconnr:s r_after_test_ctxz ConnectionKiller._after_test_ctx9sO dj)) & &ID#~%  JJt} % % % % & &rc|tjjr|dS|dSr)roptionslow_connections_stop_test_ctx_minimal_stop_test_ctx_aggressivers r_stop_test_ctxzConnectionKiller._stop_test_ctxHs? > ) -  ' ' ) ) ) ) )  * * , , , , ,rc|t|_t|jD]$}|t jur|%dSr)r>rrr6rrdbdisposer9s rrGz'ConnectionKiller._stop_test_ctx_minimalNs\ UU ,--  C&)##   rc |t|jD]&\}}||jd|_'t |_t|jD]}|dSr) r>r6rr3closer@rrrLrAs rrHz*ConnectionKiller._stop_test_ctx_aggressiveXs dj)) " "ID# JJtz " " "!CNNUU ,--  C KKMMMM  rc,|jD] }|jrJ dSr)rr7r9s rassert_all_closedz"ConnectionKiller.assert_all_closedcs1?  C| u   rN)__name__ __module__ __qualname__rrr"r&r*r3r;r>rCrIrrGrHrPrrr r s ,,,111***444))) ''' & & &--- __rr cptt|dr|tjjjsMddlm }| dd5| |ddddS#1swxYwYdS| |dS)NrNr) assertionszCan't sort tablesF)assert_) testing_reaperr>hasattrrNrrKdialectsupports_alterrVexpect_warningsdrop_all)metadatabindrVs rdrop_all_tablesralstW 9  +        ' '(;U ' K K $ $   d # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s1BBBc ||i|tdS#twxYwr)rXrPr1argskws rassert_conns_closedrfzsH+ DB((*****((**** %Ac ||i|tdS#twxYw)zBDecorator that rolls back all open connections after fn execution.N)rXr;rcs rrollback_open_connectionsrisH& DB##%%%%%##%%%%rgcHt||i|dS)z:Decorator that closes all connections before fn execution.NrXr>rcs r close_firstrls+BOOOOOOrc ||i|tdS#twxYw)z9Decorator that closes all connections after fn execution.Nrkrcs rclose_open_connectionsrnsH# DB  """""  """"rgc#Kddlm}|jD]W}|r||vr t||d}|s%tt d|zj|}|VXdS)Nrzsqlalchemy.databases.%s)sqlalchemy.databases databases__all__getattr __import__rZ)excludednamemods r all_dialectsrys$$$$$$    tw at$$ 4t;<<FCkkmm  rc4eZdZdZdZdZdZd dZdZdS) ReconnectFixturec0||_g|_d|_dSNF)dbapi connections is_stopped)rr~s rrzReconnectFixture.__init__s rc,t|j|Sr)rsr~rkeys r __getattr__zReconnectFixture.__getattr__stz3'''rc|jj|i|}|jrM||j|}|dJd|j||S)Nzselect 1Fz%simulated connect failure didn't work) r~r"rr3rNcursorexecuterappend)rrdkwargsrBcurss rr"zReconnectFixture.connects!tz!42622 ?  JJtz " " ";;==D LL $ $ $ AA A A5   # #D ) ) )Krcz |dS#t$r"}tjd|zYd}~dSd}~wwxYw)Nz.ReconnectFixture couldn't close connection: %sr,r0s rr3zReconnectFixture._safeso  BDDDDD    MCaG          r4Fc||_t|jD]}||jg|_dSr)rr6rr3rN)rstopcs rshutdownzReconnectFixture.shutdownsJ d&''  A JJqw    rcd|_dSr})rrs rrestartzReconnectFixture.restarts rN)F) rQrRrSrrr"r3rrrTrrr{r{ss   (((            rr{c(|ptjj}tjjj}|si}t ||d<t ||jfd}jjj_ jjj _ |_S)Nmoduleczjjdjj_dSr})rZr~rr)_disposersrrLz$reconnecting_engine..disposes6%%'''*/' r) rrKurlrZr~r{testing_enginerLr test_shutdownr test_restart)rrEr~rLrrs @@rreconnecting_enginers C I  #E (//GH C ) )F~H ">/8F ..6FFN Mrcjddlm}ddlm}|sd}n|dd}|pt jj}||}|;t j|jt jjjkr t j }nai}n^t jR|jt jjjkr3t j }| |||fi|}d|_ t|jtjrd|j_d|j_|rt%j|jdt(jt%j|jdt(jt%j|jd t(jt(||S) zBProduce an engine configured by --options with optional overrides.r create_engine)make_urlT use_reaperNr"r&r*) sqlalchemyrsqlalchemy.engine.urlrpoprrKr drivernamedb_optscopyupdate _has_events isinstancer QueuePool_timeout _max_overflowr listenrXr"r&r*r)rrErrr default_optrs rrrs)(((((...... 5 [[t44 C (3--C 9 &)-2J J JnGGGG  3>VY]5M#M#Mn))++ 7### ]3 * *' * *FF&+t~..&  $% !* V[)^-CDDD V[*n.EFFF V[,0IJJJ!!&))) Mrcddlm}|stjj}gfd}fd}fd}||dzd|t drJ_|_|_S) a'Provides a mocking engine based on the current testing.db. This is normally used to test DDL generation flow as emitted by an Engine. It should not be used in other cases, as assert_compile() and assert_sql_execution() are much better choices with fewer moving parts. rrc2|dSr)r)sqlarebuffers rexecutorzmock_engine..executor's crc@dD}||ks J|dS)Nc Tg|]%}tjddt|&S)z[\n\t]r\)resubstr).0ss r z3mock_engine..assert_sql..+s,>>>!y"c!ff-->>>rrT)stmtsrecvrs r assert_sqlzmock_engine..assert_sql*s->>v>>>u}}}d}}}}}rc`jdfdjDS)N c3^K|]'}t|V(dS))rZN)rcompile)rrrvs r z1mock_engine..print_sql..0s9HHqQYYqY1122HHHHHHr)rZjoinmock)rvrs@r print_sqlzmock_engine..print_sql.s4 NyyHHHHFKHHHHHHrz://r)strategyr) rrrrKrwrYrrr) dialect_namerrrrrrs @@r mock_enginers)((((( &y~ F#####IIIII]uvFvv&&&& &FK"F F Mrc8eZdZdZdZd dZdZdZdZdZ dS) DBAPIProxyCursorzuProxy a DBAPI cursor. Tests can provide subclasses of this to intercept DBAPI-level cursor operations. cF||_||_|j|i||_dSr)rr@r)rrrBrdrs rrzDBAPIProxyCursor.__init__Ds, !dk42622 rNc T|r|jj||fi|S|jj|fi|Sr)rr)rstmt parametersres rrzDBAPIProxyCursor.executeIsF  3&4;&tZ>>2>> >&4;&t22r22 2rc *|jj||fi|Sr)r executemany)rrparamsres rrzDBAPIProxyCursor.executemanyOs!&t{&tV::r:::rc,t|j|Sr)rsrrs rrzDBAPIProxyCursor.__getattr__Rst{C(((rc|SrrTrs r __enter__zDBAPIProxyCursor.__enter__Us rcdSrrT)rrds r__exit__zDBAPIProxyCursor.__exit__Xs rr) rQrRrS__doc__rrrrrrrTrrrr<s}333 3333 ;;;)))     rrc*eZdZdZdZdZdZdZdS)DBAPIProxyConnectionz}Proxy a DBAPI connection. Tests can provide subclasses of this to intercept DBAPI-level connection operations. cl|jx|_|_||_||_dSr)r _creatorrB _sqla_unwrapr cursor_cls)rrrs rrzDBAPIProxyConnection.__init__ds1(. (<(<(>(>> D% $rc:|j|j|jg|Ri|Sr)rrrB)rrdrs rrzDBAPIProxyConnection.cursoris*tt{DIGGGGGGGrc8|jdSr)rBrNrs rrNzDBAPIProxyConnection.closels rc,t|j|Sr)rsrBrs rrz DBAPIProxyConnection.__getattr__osty#&&&rN)rQrRrSrrrrNrrTrrrr\s]%%% HHH'''''rrc6fd}td|iS)zIProduce an engine that provides proxy hooks for common methods. c0tjSr)rrK)conn_clsrsr mock_connz"proxying_engine..mock_conn{sx :...rcreator)rE)r)rrrs`` rproxying_enginerss:////// 9i"8 9 9 99rr)NN) __future__rrr.rr\rrutilrr r objectr rXrarfrirlrnryr{rrrrrrrTrrrsD'&&&&& QQQQQvQQQh"!##     ++ + && &   ## #    + + + + + v+ + + \(####L%%%%P     v   @'''''6'''0".> : : : : : :r