17
17
import shutil
18
18
from datajoint .utils import parse_sql
19
19
20
- __author__ = ' Edgar Walker, Fabian Sinz, Dimitri Yatsenko, Raphael Guzman'
20
+ __author__ = " Edgar Walker, Fabian Sinz, Dimitri Yatsenko, Raphael Guzman"
21
21
22
22
# turn on verbose logging
23
23
logging .basicConfig (level = logging .DEBUG )
24
24
25
- __all__ = [' __author__' , ' PREFIX' , ' CONN_INFO' ]
25
+ __all__ = [" __author__" , " PREFIX" , " CONN_INFO" ]
26
26
27
27
# Connection for testing
28
28
CONN_INFO = dict (
29
- host = environ .get ('DJ_TEST_HOST' , 'fakeservices.datajoint.io' ),
30
- user = environ .get ('DJ_TEST_USER' , 'datajoint' ),
31
- password = environ .get ('DJ_TEST_PASSWORD' , 'datajoint' ))
29
+ host = environ .get ("DJ_TEST_HOST" , "fakeservices.datajoint.io" ),
30
+ user = environ .get ("DJ_TEST_USER" , "datajoint" ),
31
+ password = environ .get ("DJ_TEST_PASSWORD" , "datajoint" ),
32
+ )
32
33
33
34
CONN_INFO_ROOT = dict (
34
- host = environ .get ('DJ_HOST' , 'fakeservices.datajoint.io' ),
35
- user = environ .get ('DJ_USER' , 'root' ),
36
- password = environ .get ('DJ_PASS' , 'simple' ))
35
+ host = environ .get ("DJ_HOST" , "fakeservices.datajoint.io" ),
36
+ user = environ .get ("DJ_USER" , "root" ),
37
+ password = environ .get ("DJ_PASS" , "simple" ),
38
+ )
37
39
38
40
S3_CONN_INFO = dict (
39
- endpoint = environ .get ('S3_ENDPOINT' , 'fakeservices.datajoint.io' ),
40
- access_key = environ .get ('S3_ACCESS_KEY' , 'datajoint' ),
41
- secret_key = environ .get ('S3_SECRET_KEY' , 'datajoint' ),
42
- bucket = environ .get ('S3_BUCKET' , 'datajoint.test' ))
43
-
44
- S3_MIGRATE_BUCKET = [path .name for path in Path (
45
- Path (__file__ ).resolve ().parent ,
46
- 'external-legacy-data' , 's3' ).iterdir ()][0 ]
41
+ endpoint = environ .get ("S3_ENDPOINT" , "fakeservices.datajoint.io" ),
42
+ access_key = environ .get ("S3_ACCESS_KEY" , "datajoint" ),
43
+ secret_key = environ .get ("S3_SECRET_KEY" , "datajoint" ),
44
+ bucket = environ .get ("S3_BUCKET" , "datajoint.test" ),
45
+ )
46
+
47
+ S3_MIGRATE_BUCKET = [
48
+ path .name
49
+ for path in Path (
50
+ Path (__file__ ).resolve ().parent , "external-legacy-data" , "s3"
51
+ ).iterdir ()
52
+ ][0 ]
47
53
48
54
# Prefix for all databases used during testing
49
- PREFIX = environ .get (' DJ_TEST_DB_PREFIX' , ' djtest' )
55
+ PREFIX = environ .get (" DJ_TEST_DB_PREFIX" , " djtest" )
50
56
conn_root = dj .conn (** CONN_INFO_ROOT )
51
57
52
58
# Initialize httpClient with relevant timeout.
53
59
httpClient = urllib3 .PoolManager (
54
- timeout = 30 ,
55
- cert_reqs = 'CERT_REQUIRED' ,
56
- ca_certs = certifi .where (),
57
- retries = urllib3 .Retry (
58
- total = 3 ,
59
- backoff_factor = 0.2 ,
60
- status_forcelist = [500 , 502 , 503 , 504 ]
61
- )
62
- )
60
+ timeout = 30 ,
61
+ cert_reqs = "CERT_REQUIRED" ,
62
+ ca_certs = certifi .where (),
63
+ retries = urllib3 .Retry (
64
+ total = 3 , backoff_factor = 0.2 , status_forcelist = [500 , 502 , 503 , 504 ]
65
+ ),
66
+ )
63
67
64
68
# Initialize minioClient with an endpoint and access/secret keys.
65
69
minioClient = minio .Minio (
66
- S3_CONN_INFO [' endpoint' ],
67
- access_key = S3_CONN_INFO [' access_key' ],
68
- secret_key = S3_CONN_INFO [' secret_key' ],
70
+ S3_CONN_INFO [" endpoint" ],
71
+ access_key = S3_CONN_INFO [" access_key" ],
72
+ secret_key = S3_CONN_INFO [" secret_key" ],
69
73
secure = True ,
70
- http_client = httpClient )
74
+ http_client = httpClient ,
75
+ )
71
76
72
77
73
78
def setup_package ():
74
79
"""
75
80
Package-level unit test setup
76
81
Turns off safemode
77
82
"""
78
- dj .config [' safemode' ] = False
83
+ dj .config [" safemode" ] = False
79
84
80
85
# Create MySQL users
81
- if LooseVersion (conn_root .query (
82
- "select @@version;" ).fetchone ()[0 ]) >= LooseVersion ('8.0.0' ):
86
+ if LooseVersion (conn_root .query ("select @@version;" ).fetchone ()[0 ]) >= LooseVersion (
87
+ "8.0.0"
88
+ ):
83
89
# create user if necessary on mysql8
84
- conn_root .query ("""
90
+ conn_root .query (
91
+ """
85
92
CREATE USER IF NOT EXISTS 'datajoint'@'%%'
86
93
IDENTIFIED BY 'datajoint';
87
- """ )
88
- conn_root .query ("""
94
+ """
95
+ )
96
+ conn_root .query (
97
+ """
89
98
CREATE USER IF NOT EXISTS 'djview'@'%%'
90
99
IDENTIFIED BY 'djview';
91
- """ )
92
- conn_root .query ("""
100
+ """
101
+ )
102
+ conn_root .query (
103
+ """
93
104
CREATE USER IF NOT EXISTS 'djssl'@'%%'
94
105
IDENTIFIED BY 'djssl'
95
106
REQUIRE SSL;
96
- """ )
97
- conn_root .query (
98
- "GRANT ALL PRIVILEGES ON `djtest%%`.* TO 'datajoint'@'%%';" )
99
- conn_root .query (
100
- "GRANT SELECT ON `djtest%%`.* TO 'djview'@'%%';" )
101
- conn_root .query (
102
- "GRANT SELECT ON `djtest%%`.* TO 'djssl'@'%%';" )
107
+ """
108
+ )
109
+ conn_root .query ("GRANT ALL PRIVILEGES ON `djtest%%`.* TO 'datajoint'@'%%';" )
110
+ conn_root .query ("GRANT SELECT ON `djtest%%`.* TO 'djview'@'%%';" )
111
+ conn_root .query ("GRANT SELECT ON `djtest%%`.* TO 'djssl'@'%%';" )
103
112
else :
104
113
# grant permissions. For MySQL 5.7 this also automatically creates user
105
114
# if not exists
106
- conn_root .query ("""
115
+ conn_root .query (
116
+ """
107
117
GRANT ALL PRIVILEGES ON `djtest%%`.* TO 'datajoint'@'%%'
108
118
IDENTIFIED BY 'datajoint';
109
- """ )
119
+ """
120
+ )
110
121
conn_root .query (
111
122
"GRANT SELECT ON `djtest%%`.* TO 'djview'@'%%' IDENTIFIED BY 'djview';"
112
- )
113
- conn_root .query ("""
123
+ )
124
+ conn_root .query (
125
+ """
114
126
GRANT SELECT ON `djtest%%`.* TO 'djssl'@'%%'
115
127
IDENTIFIED BY 'djssl'
116
128
REQUIRE SSL;
117
- """ )
129
+ """
130
+ )
118
131
119
132
# Add old MySQL
120
- source = Path (
121
- Path (__file__ ).resolve ().parent ,
122
- 'external-legacy-data' )
133
+ source = Path (Path (__file__ ).resolve ().parent , "external-legacy-data" )
123
134
db_name = "djtest_blob_migrate"
124
135
db_file = "v0_11.sql"
125
- conn_root .query ("""
136
+ conn_root .query (
137
+ """
126
138
CREATE DATABASE IF NOT EXISTS {};
127
- """ .format (db_name ))
139
+ """ .format (
140
+ db_name
141
+ )
142
+ )
128
143
129
- statements = parse_sql (Path (source ,db_file ))
144
+ statements = parse_sql (Path (source , db_file ))
130
145
for s in statements :
131
146
conn_root .query (s )
132
147
133
148
# Add old S3
134
- source = Path (
135
- Path (__file__ ).resolve ().parent ,
136
- 'external-legacy-data' , 's3' )
149
+ source = Path (Path (__file__ ).resolve ().parent , "external-legacy-data" , "s3" )
137
150
region = "us-east-1"
138
151
try :
139
152
minioClient .make_bucket (S3_MIGRATE_BUCKET , location = region )
140
153
except minio .error .S3Error as e :
141
- if e .code != ' BucketAlreadyOwnedByYou' :
154
+ if e .code != " BucketAlreadyOwnedByYou" :
142
155
raise e
143
156
144
- pathlist = Path (source ).glob (' **/*' )
157
+ pathlist = Path (source ).glob (" **/*" )
145
158
for path in pathlist :
146
159
if os .path .isfile (str (path )) and ".sql" not in str (path ):
147
160
minioClient .fput_object (
148
- S3_MIGRATE_BUCKET , str (Path (
149
- os .path .relpath (str (path ), str (Path (source , S3_MIGRATE_BUCKET ))))
150
- .as_posix ()), str (path ))
161
+ S3_MIGRATE_BUCKET ,
162
+ str (
163
+ Path (
164
+ os .path .relpath (str (path ), str (Path (source , S3_MIGRATE_BUCKET )))
165
+ ).as_posix ()
166
+ ),
167
+ str (path ),
168
+ )
151
169
# Add S3
152
170
try :
153
- minioClient .make_bucket (S3_CONN_INFO [' bucket' ], location = region )
171
+ minioClient .make_bucket (S3_CONN_INFO [" bucket" ], location = region )
154
172
except minio .error .S3Error as e :
155
- if e .code != ' BucketAlreadyOwnedByYou' :
173
+ if e .code != " BucketAlreadyOwnedByYou" :
156
174
raise e
157
175
158
176
# Add old File Content
159
177
try :
160
178
shutil .copytree (
161
- str (Path (Path (__file__ ).resolve ().parent ,
162
- 'external-legacy-data' ,'file' ,'temp' )),
163
- str (Path (os .path .expanduser ('~' ),'temp' )))
179
+ str (
180
+ Path (
181
+ Path (__file__ ).resolve ().parent ,
182
+ "external-legacy-data" ,
183
+ "file" ,
184
+ "temp" ,
185
+ )
186
+ ),
187
+ str (Path (os .path .expanduser ("~" ), "temp" )),
188
+ )
164
189
except FileExistsError :
165
190
pass
166
191
@@ -172,31 +197,34 @@ def teardown_package():
172
197
To deal with possible foreign key constraints, it will unset
173
198
and then later reset FOREIGN_KEY_CHECKS flag
174
199
"""
175
- conn_root .query (' SET FOREIGN_KEY_CHECKS=0' )
200
+ conn_root .query (" SET FOREIGN_KEY_CHECKS=0" )
176
201
cur = conn_root .query ('SHOW DATABASES LIKE "{}\_%%"' .format (PREFIX ))
177
202
for db in cur .fetchall ():
178
- conn_root .query (' DROP DATABASE `{}`' .format (db [0 ]))
179
- conn_root .query (' SET FOREIGN_KEY_CHECKS=1' )
203
+ conn_root .query (" DROP DATABASE `{}`" .format (db [0 ]))
204
+ conn_root .query (" SET FOREIGN_KEY_CHECKS=1" )
180
205
if os .path .exists ("dj_local_conf.json" ):
181
206
remove ("dj_local_conf.json" )
182
207
183
208
# Remove created users
184
- conn_root .query (' DROP USER `datajoint`' )
185
- conn_root .query (' DROP USER `djview`' )
186
- conn_root .query (' DROP USER `djssl`' )
209
+ conn_root .query (" DROP USER `datajoint`" )
210
+ conn_root .query (" DROP USER `djview`" )
211
+ conn_root .query (" DROP USER `djssl`" )
187
212
188
213
# Remove old S3
189
- objs = list (minioClient .list_objects (
190
- S3_MIGRATE_BUCKET , recursive = True ))
191
- objs = [minioClient .remove_object (S3_MIGRATE_BUCKET ,
192
- o .object_name .encode ('utf-8' )) for o in objs ]
214
+ objs = list (minioClient .list_objects (S3_MIGRATE_BUCKET , recursive = True ))
215
+ objs = [
216
+ minioClient .remove_object (S3_MIGRATE_BUCKET , o .object_name .encode ("utf-8" ))
217
+ for o in objs
218
+ ]
193
219
minioClient .remove_bucket (S3_MIGRATE_BUCKET )
194
220
195
221
# Remove S3
196
- objs = list (minioClient .list_objects (S3_CONN_INFO ['bucket' ], recursive = True ))
197
- objs = [minioClient .remove_object (S3_CONN_INFO ['bucket' ],
198
- o .object_name .encode ('utf-8' )) for o in objs ]
199
- minioClient .remove_bucket (S3_CONN_INFO ['bucket' ])
222
+ objs = list (minioClient .list_objects (S3_CONN_INFO ["bucket" ], recursive = True ))
223
+ objs = [
224
+ minioClient .remove_object (S3_CONN_INFO ["bucket" ], o .object_name .encode ("utf-8" ))
225
+ for o in objs
226
+ ]
227
+ minioClient .remove_bucket (S3_CONN_INFO ["bucket" ])
200
228
201
229
# Remove old File Content
202
- shutil .rmtree (str (Path (os .path .expanduser ('~' ), ' temp' )))
230
+ shutil .rmtree (str (Path (os .path .expanduser ("~" ), " temp" )))
0 commit comments