equal
deleted
inserted
replaced
173 assert self.ueid != -1 |
173 assert self.ueid != -1 |
174 self.repo._type_source_cache = {} # clear cache |
174 self.repo._type_source_cache = {} # clear cache |
175 self.pool = self.session.set_pool() |
175 self.pool = self.session.set_pool() |
176 self.maxeid = self.get_max_eid() |
176 self.maxeid = self.get_max_eid() |
177 do_monkey_patch() |
177 do_monkey_patch() |
|
178 self._dumb_sessions = [] |
178 |
179 |
179 def get_max_eid(self): |
180 def get_max_eid(self): |
180 return self.session.unsafe_execute('Any MAX(X)')[0][0] |
181 return self.session.unsafe_execute('Any MAX(X)')[0][0] |
181 def cleanup(self): |
182 def cleanup(self): |
182 self.session.unsafe_execute('DELETE Any X WHERE X eid > %s' % self.maxeid) |
183 self.session.unsafe_execute('DELETE Any X WHERE X eid > %s' % self.maxeid) |
184 def tearDown(self): |
185 def tearDown(self): |
185 undo_monkey_patch() |
186 undo_monkey_patch() |
186 self.session.rollback() |
187 self.session.rollback() |
187 self.cleanup() |
188 self.cleanup() |
188 self.commit() |
189 self.commit() |
|
190 # properly close dumb sessions |
|
191 for session in self._dumb_sessions: |
|
192 session.rollback() |
|
193 session.close() |
189 self.repo._free_pool(self.pool) |
194 self.repo._free_pool(self.pool) |
190 assert self.session.user.eid != -1 |
195 assert self.session.user.eid != -1 |
191 |
196 |
192 def set_debug(self, debug): |
197 def set_debug(self, debug): |
193 set_debug(debug) |
198 set_debug(debug) |
221 # use self.session.user.eid to get correct owned_by relation, unless explicit eid |
226 # use self.session.user.eid to get correct owned_by relation, unless explicit eid |
222 u = self.repo._build_user(self.session, self.session.user.eid) |
227 u = self.repo._build_user(self.session, self.session.user.eid) |
223 u._groups = set(groups) |
228 u._groups = set(groups) |
224 s = Session(u, self.repo) |
229 s = Session(u, self.repo) |
225 s._threaddata.pool = self.pool |
230 s._threaddata.pool = self.pool |
|
231 # register session to ensure it gets closed |
|
232 self._dumb_sessions.append(s) |
226 return s |
233 return s |
227 |
234 |
228 def execute(self, rql, args=None, eid_key=None, build_descr=True): |
235 def execute(self, rql, args=None, eid_key=None, build_descr=True): |
229 return self.o.execute(self.session, rql, args, eid_key, build_descr) |
236 return self.o.execute(self.session, rql, args, eid_key, build_descr) |
230 |
237 |
246 self.pool = self.session.set_pool() |
253 self.pool = self.session.set_pool() |
247 self.schema = self.o.schema |
254 self.schema = self.o.schema |
248 self.sources = self.o._repo.sources |
255 self.sources = self.o._repo.sources |
249 self.system = self.sources[-1] |
256 self.system = self.sources[-1] |
250 do_monkey_patch() |
257 do_monkey_patch() |
|
258 self._dumb_sessions = [] # by hi-jacked parent setup |
251 |
259 |
252 def add_source(self, sourcecls, uri): |
260 def add_source(self, sourcecls, uri): |
253 self.sources.append(sourcecls(self.repo, self.o.schema, |
261 self.sources.append(sourcecls(self.repo, self.o.schema, |
254 {'uri': uri})) |
262 {'uri': uri})) |
255 self.repo.sources_by_uri[uri] = self.sources[-1] |
263 self.repo.sources_by_uri[uri] = self.sources[-1] |
260 while self.newsources: |
268 while self.newsources: |
261 source = self.sources.pop(-1) |
269 source = self.sources.pop(-1) |
262 del self.repo.sources_by_uri[source.uri] |
270 del self.repo.sources_by_uri[source.uri] |
263 self.newsources -= 1 |
271 self.newsources -= 1 |
264 undo_monkey_patch() |
272 undo_monkey_patch() |
|
273 for session in self._dumb_sessions: |
|
274 session._threaddata.pool = None |
|
275 session.close() |
265 |
276 |
266 def _prepare_plan(self, rql, kwargs=None): |
277 def _prepare_plan(self, rql, kwargs=None): |
267 rqlst = self.o.parse(rql, annotate=True) |
278 rqlst = self.o.parse(rql, annotate=True) |
268 self.o.solutions(self.session, rqlst, kwargs) |
279 self.o.solutions(self.session, rqlst, kwargs) |
269 if rqlst.TYPE == 'select': |
280 if rqlst.TYPE == 'select': |