U ÂÏ aMã@sPddlmZddlmZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZe d¡dd„ƒZe d¡dd„ƒZdd„Ze  d¡dd„ƒZe d¡dd„ƒZeƒZe  d¡dd„ƒZe  d¡dd„ƒZe  d¡dd„ƒZe d¡dd „ƒZe d¡d!d"„ƒZd#S)$é)Ú create_engine)Úexc)Úurl)Úconfigure_follower)Ú create_db)Údrop_db)Úfollower_url_from_main)Úlog)Úpost_configure_engine)Ú run_reap_dbs)Ú set_default_schema_on_connection)Ú stop_test_class_outside_fixtures)Útemp_table_keyword_argsZoraclec Cs|| ¡j}| d|¡| d|¡| d|¡| d|f¡| d|¡| d|¡| d|¡W5QRXdS)Nzcreate user %s identified by xez#create user %s_ts1 identified by xez#create user %s_ts2 identified by xezgrant dba to %sz grant unlimited tablespace to %sz$grant unlimited tablespace to %s_ts1z$grant unlimited tablespace to %s_ts2)ÚbeginÚexec_driver_sql©ÚcfgÚengÚidentÚconn©rúeC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\dialects\oracle\provision.pyÚ_oracle_create_dbs rcCsd||_d||_dS©Nú%s_ts1ú%s_ts2)Z test_schemaZ test_schema_2)ÚconfigrrrrÚ_oracle_configure_followers rc Cs\z | d|¡t d|¡WdStjk rV}zt d|¡WY¢dSd}~XYnXdS)Nzdrop user %s cascadez Reaped db: %sTzcouldn't drop db: %sF)rr ÚinforÚ DatabaseErrorÚwarning)rZdbnameÚerrrrrÚ_ora_drop_ignore%s  r"c Cs>| ¡,}t||ƒt|d|ƒt|d|ƒW5QRXdSr)rr"rrrrÚ_oracle_drop_db/s  r#c Csœz"| ¡}| d¡W5QRXWn0tjk rR}zt d|¡W5d}~XYnXtD]6}z |j}Wn|jj j k r€YqXXd|_||_qXt  ¡dS)Nzpurge recyclebinz#purge recyclebin command failed: %sé) rrrrr r Ú _all_connsZ stmtcachesizeÚdialectZdbapiZInterfaceErrorÚclear)rÚdbÚclsrr!Zcx_oracle_connZscrrrr <s  r cCs8ddlm}| |d¡dd„ƒ}| |d¡dd„ƒ}dS) Nr$)ÚeventÚcheckoutcSst |¡dS)N)r%Úadd)Z dbapi_conZ con_recordZ con_proxyrrrr+]sz/_oracle_post_configure_engine..checkoutÚcheckincSsd|jkr| ¡dS)NZ cx_oracle_xid)rZ invalidate)Údbapi_connectionZconnection_recordrrrr-as z._oracle_post_configure_engine..checkin)Z sqlalchemyr*Z listens_for)rÚengineZfollower_identr*r+r-rrrÚ_oracle_post_configure_engineYs     r0c Cst d|¡t|ƒ}| ¡Ú}t dd |¡¡| d¡}dd„|Dƒ}tƒ}|D]b}| d¡sR| d¡rnqRqR||krR| |¡d ||krš| d |¡d ||krR| d |¡qRd }} t |d ƒD]\} } t || ƒrÈ|d 7}qÈt d || ¡W5QRXdS)Nzdb reaper connecting to %rzidentifiers in file: %sz, z‰select u.username from all_users u where username like 'TEST_%' and not exists (select username from v$session where username=u.username)cSsh|]\}| ¡’qSr)Úlower)Ú.0ÚusernamerrrÚ wsz#_reap_oracle_dbs..Z_ts1Z_ts2rrr$éz-Dropped %d out of %d stale databases detected) r rrrÚjoinrÚsetÚendswithr,Ú enumerater") rZidentsrrZto_reapZ all_namesZto_dropÚnameZdroppedÚtotalr3rrrÚ_reap_oracle_dbsjs6  ÿ     ÿr<cCst |¡}|j|ddS)NZxe)r3Úpassword)Úsa_urlZmake_urlr7)rrrrrÚ_oracle_follower_url_from_mainŒs r?cCs dgddœS)NzGLOBAL TEMPORARYz PRESERVE ROWS)ÚprefixesZoracle_on_commitr)rrrrrÚ_oracle_temp_table_keyword_args’sþrAcCs"| ¡}| d|¡| ¡dS)Nz#ALTER SESSION SET CURRENT_SCHEMA=%s)ÚcursorÚexecuteÚclose)rr.Z schema_namerBrrrÚ(_oracle_set_default_schema_on_connectionšsrEN)Úrrr/rr>Ztesting.provisionrrrrr r r r r rZfor_dbrrr"r#r7r%r0r<r?rArErrrrÚs@                    !