def _end_start_session(cls, uid, identity): """Because of isolated versions of data in concurrent sessions we need to ensure that session will be re-started at certain hooks during locking logic """ ModelMeta.session_end() ModelMeta.session_start()
def wait_finish(uid, timeout): """Check if graph is finished Will return when no PENDING or INPROGRESS otherwise yields summary """ start_time = time.time() while start_time + timeout >= time.time(): dg = get_graph(uid) summary = Counter() summary.update({s.name: 0 for s in states}) summary.update([task.status for task in dg.nodes()]) yield summary if summary[states.PENDING.name] + summary[states.INPROGRESS.name] == 0: return else: # on db backends with snapshot isolation level and higher # updates wont be visible after start of transaction, # in order to report state correctly we will "refresh" transaction ModelMeta.session_end() ModelMeta.session_start() else: raise errors.ExecutionTimeout( 'Run %s wasnt able to finish' % uid)
def _end_start_session(cls, uid, identity): """Because of isolated versions of data in concurrent sessions we need to ensure that session will be re-started at certain hooks during locking logic """ ModelMeta.session_end() ModelMeta.session_start()
def create_all(): import sys if sys.executable.startswith(('python', )): # auto add session to only standalone python runs return from solar.dblayer.model import ModelMeta import atexit ModelMeta.session_start() atexit.register(ModelMeta.session_end)
def create_all(): import sys if sys.executable.startswith(('python', )): # auto add session to only standalone python runs return from solar.dblayer.model import ModelMeta import atexit ModelMeta.session_start() atexit.register(ModelMeta.session_end)
def create_all(): import sys if sys.executable.split('/')[-1] not in ['python', 'python2']: # auto add session to only standalone python runs return from solar.dblayer.model import ModelMeta import atexit ModelMeta.session_start() atexit.register(ModelMeta.session_end)
def create_all(): import sys if sys.executable.split('/')[-1] not in ['python', 'python2']: # auto add session to only standalone python runs return from solar.dblayer.model import ModelMeta import atexit ModelMeta.session_start() atexit.register(ModelMeta.session_end)
def test_revert_removal(): res = DBResource.from_dict('test1', {'name': 'test1', 'base_path': 'x', 'state': RESOURCE_STATE.created.name, 'meta_inputs': {'a': {'value': None, 'schema': 'str'}}}) res.inputs['a'] = '9' res.save_lazy() commited = CommitedResource.from_dict('test1', {'inputs': {'a': '9'}, 'state': 'operational'}) commited.save_lazy() resource_obj = resource.load(res.name) resource_obj.remove() ModelMeta.save_all_lazy() changes = change.stage_changes() assert len(changes) == 1 assert changes[0].diff == [['remove', '', [['a', '9']]]] operations.move_to_commited(changes[0].log_action) ModelMeta.session_start() assert DBResource._c.obj_cache == {} assert DBResource.bucket.get('test1').siblings == [] with mock.patch.object(resource, 'read_meta') as mread: mread.return_value = { 'input': {'a': {'schema': 'str!'}}, 'id': 'mocked' } change.revert(changes[0].uid) ModelMeta.save_all_lazy() assert len(DBResource.bucket.get('test1').siblings) == 1 resource_obj = resource.load('test1') assert resource_obj.args == { 'a': '9', 'location_id': '', 'transports_id': '' }
def test_revert_removal(): res = DBResource.from_dict( "test1", { "name": "test1", "base_path": "x", "state": RESOURCE_STATE.created.name, "meta_inputs": {"a": {"value": None, "schema": "str"}}, }, ) res.inputs["a"] = "9" res.save_lazy() commited = CommitedResource.from_dict("test1", {"inputs": {"a": "9"}, "state": "operational"}) commited.save_lazy() resource_obj = resource.load(res.name) resource_obj.remove() ModelMeta.save_all_lazy() changes = change.stage_changes() assert len(changes) == 1 assert changes[0].diff == [["remove", "", [["a", "9"]]]] operations.move_to_commited(changes[0].log_action) ModelMeta.session_start() assert DBResource._c.obj_cache == {} assert DBResource.bucket.get("test1").siblings == [] with mock.patch.object(resource, "read_meta") as mread: mread.return_value = {"input": {"a": {"schema": "str!"}}, "id": "mocked"} change.revert(changes[0].uid) ModelMeta.save_all_lazy() assert len(DBResource.bucket.get("test1").siblings) == 1 resource_obj = resource.load("test1") assert resource_obj.args == {"a": "9", "location_id": "", "transports_id": ""}
def pytest_runtest_call(item): ModelMeta.session_start()
def pytest_runtest_setup(item): ModelMeta.session_start()
def session_start(ctxt): log.debug('Session start ID %s', id(gevent.getcurrent())) ModelMeta.session_start()
def pytest_runtest_call(item): ModelMeta.session_end() ModelMeta.session_start()
def pytest_runtest_setup(item): ModelMeta.session_start()
def session_start(ctxt): log.debug('Session start ID %s', id(gevent.getcurrent())) ModelMeta.session_start()