# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from shutil import rmtree from tempfile import mkdtemp from sqlalchemy import ( create_engine, orm, pool, MetaData ) class TestFileSystem(object): def setup_method(self): self.path = mkdtemp('{0}'.format(self.__class__.__name__)) def teardown_method(self): rmtree(self.path, ignore_errors=True) def release_sqlite_storage(storage): """ Drops the tables and clears the session :param storage: :return: """ storage._all_api_kwargs['session'].close() MetaData(bind=storage._all_api_kwargs['engine']).drop_all() def init_inmemory_model_storage(): uri = 'sqlite:///:memory:' engine_kwargs = dict(connect_args={'check_same_thread': False}, poolclass=pool.StaticPool) engine = create_engine(uri, **engine_kwargs) session_factory = orm.sessionmaker(bind=engine) return dict(engine=engine, session=session_factory())