zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
U
¸ý°dS ã@sÀddlmZddlmZddlmZddlmZddlmZddlm    Z    ddlm
Z
ddlm Z dd    lm Z dd
lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZe     d¡dd„ƒZe d¡dd„ƒZdd„Ze  d¡dd„ƒZe
 d¡dd„ƒZe  d¡dd„ƒZe d¡dd „ƒZd0d"d#„ZeƒZe d¡d$d%„ƒZ e d¡d&d'„ƒZ!e  d¡d(d)„ƒZ"e d¡d*d+„ƒZ#e d¡d,d-„ƒZ$e d¡d.d/„ƒZ%d!S)1é)Ú create_engine)Úexc)Úinspect)Úurl)Úconfigure_follower)Ú    create_db)Ú#drop_all_schema_objects_post_tables)Ú"drop_all_schema_objects_pre_tables)Ú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_args)Úupdate_db_optsZoraclec    Cs¦| ¡”}| d|¡| d|¡| d|¡| d|f¡| d|¡| d|¡| d|¡| 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_ts2zgrant create table to %szgrant create table to %s_ts1zgrant create table to %s_ts2)ÚbeginÚexec_driver_sql©ÚcfgÚengÚidentÚconn©rú[d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/dialects/oracle/provision.pyÚ_oracle_create_dbs
rcCsd||_d||_dS©Nú%s_ts1ú%s_ts2)Ú test_schemaZ test_schema_2)ÚconfigrrrrÚ_oracle_configure_follower)s
r"c
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'cCst|ƒt||jƒdS©N)Ú_purge_recyclebinr ©rrrrrÚ'_ora_drop_all_schema_objects_pre_tables9sr+c    Csœ| ¡Š}|j |ddd¡D]}| d|d›¡q|j ||jdd¡D] }| d|j›d|d›¡qJt|ƒ ¡D]}| d|›¡qxW5QRXdS)Nz drop synonym Z synonym_nameÚ.z drop table )rÚdialectZ _get_synonymsrr rZget_temp_table_names)rrrZsynZ    tmp_tablerrrÚ(_ora_drop_all_schema_objects_post_tables?s
ÿÿr.c    Cs>| ¡,}t||ƒt|d|ƒt|d|ƒW5QRXdSr)rr'rrrrÚ_oracle_drop_dbQs
 
r/c
Cs†z t|ƒWn0tjk
r<}zt d|¡W5d}~XYnXtD]6}z
|j}Wn|jjj    k
rjYqBXd|_||_qBt 
¡dS)Nz#purge recyclebin command failed: %sé) r)rr$r r%Ú
_all_connsZ stmtcachesizer-ZdbapiZInterfaceErrorÚclear)r!ÚdbÚclsr&Zcx_oracle_connZscrrrÚ%_ora_stop_test_class_outside_fixtures^s 
r5Nc Csr| ¡`}|dkr| d¡nF| dd|j |¡i¡ ¡D](\}}}| d|›d|›d|›d¡q:W5QRXdS)Nzpurge recyclebinzWselect owner, object_name,type from dba_recyclebin where owner=:schema and type='TABLE'Úschemazpurge ú z."ú")rrr-Zdenormalize_nameÚall)rr6rÚownerZ object_nameÚtype_rrrr)us
 ýr)cCs8ddlm}| |d¡dd„ƒ}| |d¡dd„ƒ}dS)    Nr0)ÚeventÚcheckoutcSst |¡dSr()r1Úadd)Z    dbapi_conZ
con_recordZ    con_proxyrrrr=Œsz/_oracle_post_configure_engine.<locals>.checkoutÚcheckincSsd|jkr| ¡dS)NZ cx_oracle_xid)r#Z
invalidate)Údbapi_connectionZconnection_recordrrrr?s
z._oracle_post_configure_engine.<locals>.checkin)Z
sqlalchemyr<Z listens_for)rÚengineZfollower_identr<r=r?rrrÚ_oracle_post_configure_engineˆs
 
 
 
rBc     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Ú    <setcomp>¦sz#_reap_oracle_dbs.<locals>.<setcomp>Z_ts1Z_ts2rrr0éz-Dropped %d out of %d stale databases detected) r r#rrÚjoinrÚsetÚendswithr>Ú    enumerater') rZidentsrrZto_reapZ    all_namesZto_dropÚnameZdroppedÚtotalrErrrÚ_reap_oracle_dbs™s6 
ÿ
 
 
ÿrNcCst |¡}|j|ddS)NZxe)rEÚpassword)Úsa_urlÚmake_urlrI)rrrrrÚ_oracle_follower_url_from_main»s
rRcCs dgddœS)NzGLOBAL TEMPORARYz PRESERVE ROWS)ÚprefixesZoracle_on_commitrr*rrrÚ_oracle_temp_table_keyword_argsÁsþrTcCs"| ¡}| d|¡| ¡dS)Nz#ALTER SESSION SET CURRENT_SCHEMA=%s)ÚcursorÚexecuteÚclose)rr@Z schema_namerUrrrÚ(_oracle_set_default_schema_on_connectionÉsrXcCs$|jr t |¡ ¡dkr d|d<dS)zCSet database options (db_opts) for a test database that we created.ZoracledbTZ
thick_modeN)Zoracledb_thick_moderPrQZget_driver_name)Zdb_urlZdb_optsÚoptionsrrrÚ_update_db_optsÒs
ÿþrZ)N)&ÚrrrrArrPZtesting.provisionrrrr    r
r r r rrrrrZfor_dbrr"r'r+r.r/r5r)rIr1rBrNrRrTrXrZrrrrÚ<module>sV                 
 
 
 
 
 
 
 
 
 
!