1 # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
3 # |
3 # |
4 # This file is part of CubicWeb. |
4 # This file is part of CubicWeb. |
5 # |
5 # |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
275 self.session.commit() |
275 self.session.commit() |
276 self.session.set_pool() |
276 self.session.set_pool() |
277 |
277 |
278 |
278 |
279 class BasePlannerTC(BaseQuerierTC): |
279 class BasePlannerTC(BaseQuerierTC): |
280 newsources = 0 |
280 newsources = () |
|
281 |
281 def setup(self): |
282 def setup(self): |
282 clear_cache(self.repo, 'rel_type_sources') |
283 clear_cache(self.repo, 'rel_type_sources') |
283 clear_cache(self.repo, 'rel_type_sources') |
284 clear_cache(self.repo, 'rel_type_sources') |
284 clear_cache(self.repo, 'can_cross_relation') |
285 clear_cache(self.repo, 'can_cross_relation') |
285 clear_cache(self.repo, 'is_multi_sources_relation') |
286 clear_cache(self.repo, 'is_multi_sources_relation') |
291 self.sources = self.o._repo.sources |
292 self.sources = self.o._repo.sources |
292 self.system = self.sources[-1] |
293 self.system = self.sources[-1] |
293 do_monkey_patch() |
294 do_monkey_patch() |
294 self._dumb_sessions = [] # by hi-jacked parent setup |
295 self._dumb_sessions = [] # by hi-jacked parent setup |
295 self.repo.vreg.rqlhelper.backend = 'postgres' # so FTIRANK is considered |
296 self.repo.vreg.rqlhelper.backend = 'postgres' # so FTIRANK is considered |
|
297 self.newsources = [] |
296 |
298 |
297 def add_source(self, sourcecls, uri): |
299 def add_source(self, sourcecls, uri): |
298 self.sources.append(sourcecls(self.repo, {'uri': uri})) |
300 source = sourcecls(self.repo, {'uri': uri, 'type': 'whatever'}) |
299 self.repo.sources_by_uri[uri] = self.sources[-1] |
301 if not source.copy_based_source: |
300 setattr(self, uri, self.sources[-1]) |
302 self.sources.append(source) |
301 self.newsources += 1 |
303 self.newsources.append(source) |
|
304 self.repo.sources_by_uri[uri] = source |
|
305 setattr(self, uri, source) |
302 |
306 |
303 def tearDown(self): |
307 def tearDown(self): |
304 while self.newsources: |
308 for source in self.newsources: |
305 source = self.sources.pop(-1) |
309 if not source.copy_based_source: |
|
310 self.sources.remove(source) |
306 del self.repo.sources_by_uri[source.uri] |
311 del self.repo.sources_by_uri[source.uri] |
307 self.newsources -= 1 |
|
308 undo_monkey_patch() |
312 undo_monkey_patch() |
309 for session in self._dumb_sessions: |
313 for session in self._dumb_sessions: |
310 session._threaddata.pool = None |
314 session._threaddata.pool = None |
311 session.close() |
315 session.close() |
312 |
316 |