def setup(request, solar_testresult): for model in ModelMeta._defined_models: model.bucket = get_bucket(None, model, ModelMeta) _connection, _ = utils.parse_database_conn(C.solar_db) if _connection.type == 'sql': def drop_tables_on_sql(): # clean only when tests not crashed if solar_testresult.rep.failed: return for model in ModelMeta._defined_models: model.bucket._sql_idx.drop_table(fail_silently=False) model.bucket._sql_model.drop_table(fail_silently=False) request.addfinalizer(drop_tables_on_sql)
try: from gevent import monkey except ImportError: pass else: from solar.dblayer.gevent_patches import patch_all patch_all() from solar.dblayer.model import ModelMeta from solar.config import C from solar.utils import parse_database_conn _connection, _connection_details = parse_database_conn(C.solar_db) if _connection.mode == 'sqlite': from solar.dblayer.sql_client import SqlClient if _connection.database == ':memory:' or _connection.database is None: opts = {'threadlocals': True, 'autocommit': False} _connection.database = ":memory:" else: opts = {'threadlocals': True, 'autocommit': False, 'pragmas': (('journal_mode', 'WAL'), ('synchronous', 'NORMAL'))} opts.update(_connection_details.toDict()) client = SqlClient( _connection.database, **opts) elif _connection.mode == 'riak':
def new(cls, data): key = '%s~%s' % (data['execution'], data['name']) return Task.from_dict(key, data) """ system log 1. one bucket for all log items 2. separate logs for stage/history (using index) 3. last log item for resource in history 4. log item in staged log for resource|action 5. keep order of history """ _connection, _connection_details = parse_database_conn(C.solar_db) if _connection.type == 'sql': class NegativeCounter(Model): count = Field(int, default=int) def next(self): self.count -= 1 self.save() return self.count else: class NegativeCounter(Model): bucket_type = C.counter_bucket_type def next(self):
def pytest_unconfigure(config): if config.getoption("clean"): db, opts = utils.parse_database_conn(C.solar_db) if db.mode == 'sqlite' and os.path.isfile(db.database): os.unlink(db.database)