def redisdb_factory(request): """ #. Load required process fixture. #. Get redis module and config. #. Connect to redis. #. Flush database after tests. :param FixtureRequest request: fixture request object :rtype: redis.client.Redis :returns: Redis client """ get_process_fixture(request, process_fixture_name) redis, config = try_import('redis', request) redis_host = host or config.redis.host redis_port = port or config.redis.port redis_db = db or config.redis.db redis_class = redis.StrictRedis if strict else redis.Redis redis_client = redis_class( redis_host, redis_port, redis_db, decode_responses=True) request.addfinalizer(redis_client.flushall) return redis_client
def mongodb_factory(request): """ #. Get pymongo module and config. #. Get connection to mongo. #. Drop collections before and after tests. :param FixtureRequest request: fixture request object :rtype: pymongo.connection.Connection :returns: connection to mongo database """ get_process_fixture(request, process_fixture_name) pymongo, config = try_import('pymongo', request) mongo_host = host or config.mongo.host mongo_port = port or config.mongo.port mongo_conn = pymongo.Connection( mongo_host, mongo_port, ) def drop(): for db in mongo_conn.database_names(): for collection_name in mongo_conn[db].collection_names(): if collection_name != 'system.indexes': mongo_conn[db][collection_name].drop() drop() request.addfinalizer(drop) return mongo_conn
def mysqldb_fixture(request): """ #. Get config. #. Try to import MySQLdb package. #. Connect to mysql server. #. Create database. #. Use proper database. #. Drop database after tests. :param FixtureRequest request: fixture request object :rtype: MySQLdb.connections.Connection :returns: connection to database """ get_process_fixture(request, process_fixture_name) config = get_config(request) mysql_port = port or config.mysql.port mysql_host = host or config.mysql.host mysql_user = user or config.mysql.user mysql_passwd = passwd or config.mysql.password mysql_db = db or config.mysql.db unixsocket = '/tmp/mysql.{port}.sock'.format(port=mysql_port) MySQLdb, config = try_import( 'MySQLdb', request, pypi_package='MySQL-python' ) mysql_conn = MySQLdb.connect( host=mysql_host, unix_socket=unixsocket, user=mysql_user, passwd=mysql_passwd, ) mysql_conn.query( '''CREATE DATABASE {name} DEFAULT CHARACTER SET {charset} DEFAULT COLLATE {collation}''' .format( name=mysql_db, charset=charset, collation=collation ) ) mysql_conn.query('USE %s' % mysql_db) def drop_database(): mysql_conn.query('DROP DATABASE IF EXISTS %s' % mysql_db) mysql_conn.close() request.addfinalizer(drop_database) return mysql_conn
def mysqldb_fixture(request): """ #. Get config. #. Try to import MySQLdb package. #. Connect to mysql server. #. Create database. #. Use proper database. #. Drop database after tests. :param FixtureRequest request: fixture request object :rtype: MySQLdb.connections.Connection :returns: connection to database """ get_process_fixture(request, process_fixture_name) config = get_config(request) mysql_port = port or config.mysql.port mysql_host = host or config.mysql.host mysql_user = user or config.mysql.user mysql_passwd = passwd or config.mysql.password mysql_db = db or config.mysql.db unixsocket = '/tmp/mysql.{port}.sock'.format(port=mysql_port) MySQLdb, config = try_import('MySQLdb', request, pypi_package='MySQL-python') mysql_conn = MySQLdb.connect( host=mysql_host, unix_socket=unixsocket, user=mysql_user, passwd=mysql_passwd, ) mysql_conn.query('''CREATE DATABASE {name} DEFAULT CHARACTER SET {charset} DEFAULT COLLATE {collation}'''.format(name=mysql_db, charset=charset, collation=collation)) mysql_conn.query('USE %s' % mysql_db) def drop_database(): mysql_conn.query('DROP DATABASE IF EXISTS %s' % mysql_db) mysql_conn.close() request.addfinalizer(drop_database) return mysql_conn
def elasticsearch_fixture(request): """Elasticsearch client fixture.""" get_process_fixture(request, process_fixture_name) elasticsearch, _ = try_import('elasticsearch', request) client = elasticsearch.Elasticsearch(hosts=hosts) def drop_indexes(): client.indices.delete(index='*') request.addfinalizer(drop_indexes) return client
def dynamodb_factory(request): """ Connect to the local DynamoDB. :param FixtureRequest request: fixture request object :rtype: Subclass of :py:class:`~boto3.resources.base.ServiceResource` https://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Client :returns: connection to DynamoDB database """ proc_fixture = get_process_fixture(request, process_fixture_name) boto3, config = try_import('boto3', request) dynamo_db = boto3.resource( 'dynamodb', endpoint_url='http://{host}:{port}'.format( host=proc_fixture.host, port=proc_fixture.port ), # these args do not matter (we have to put something to them) region_name='us-east-1', aws_access_key_id='', aws_secret_access_key='', ) # remove all tables request.addfinalizer( lambda: [t.delete() for t in dynamo_db.tables.all()] ) return dynamo_db
def mongodb_factory(request): """ #. Get pymongo module and config. #. Get connection to mongo. #. Drop collections before and after tests. :param FixtureRequest request: fixture request object :rtype: pymongo.connection.Connection :returns: connection to mongo database """ proc_fixture = get_process_fixture(request, process_fixture_name) pymongo, _ = try_import('pymongo', request) mongo_host = proc_fixture.host mongo_port = proc_fixture.port try: client = pymongo.MongoClient except AttributeError: client = pymongo.Connection mongo_conn = client(mongo_host, mongo_port) return mongo_conn
def redisdb_factory(request): """ #. Load required process fixture. #. Get redis module and config. #. Connect to redis. #. Flush database after tests. :param FixtureRequest request: fixture request object :rtype: redis.client.Redis :returns: Redis client """ proc_fixture = get_process_fixture(request, process_fixture_name) redis, config = try_import('redis', request) redis_host = proc_fixture.host redis_port = proc_fixture.port redis_db = db or config.redis.db redis_class = redis.StrictRedis if strict else redis.Redis redis_client = redis_class( redis_host, redis_port, redis_db, decode_responses=True) request.addfinalizer(redis_client.flushall) return redis_client
def redisdb_factory(request): """ #. Load required process fixture. #. Get redis module and config. #. Connect to redis. #. Flush database after tests. :param FixtureRequest request: fixture request object :rtype: redis.client.Redis :returns: Redis client """ get_process_fixture(request, process_fixture_name) redis, config = try_import('redis', request) redis_host = host or config.redis.host redis_port = port or config.redis.port redis_db = db or config.redis.db redis_client = redis.Redis(redis_host, redis_port, redis_db) request.addfinalizer(redis_client.flushall) return redis_client
def mongodb_factory(request): """ #. Get pymongo module and config. #. Get connection to mongo. #. Drop collections before and after tests. :param FixtureRequest request: fixture request object :rtype: pymongo.connection.Connection :returns: connection to mongo database """ proc_fixture = get_process_fixture(request, process_fixture_name) pymongo, config = try_import('pymongo', request) mongo_host = proc_fixture.host mongo_port = proc_fixture.port try: client = pymongo.MongoClient except AttributeError: client = pymongo.Connection mongo_conn = client(mongo_host, mongo_port) def drop(): for db in mongo_conn.database_names(): for collection_name in mongo_conn[db].collection_names(): # Do not delete any of Mongo "system" collections if not collection_name.startswith('system.'): mongo_conn[db][collection_name].drop() drop() request.addfinalizer(drop) return mongo_conn
def mongodb_factory(request): """ #. Get pymongo module and config. #. Get connection to mongo. #. Drop collections before and after tests. :param FixtureRequest request: fixture request object :rtype: pymongo.connection.Connection :returns: connection to mongo database """ proc_fixture = get_process_fixture(request, process_fixture_name) pymongo, config = try_import("pymongo", request) mongo_host = proc_fixture.host mongo_port = proc_fixture.port try: client = pymongo.MongoClient except AttributeError: client = pymongo.Connection mongo_conn = client(mongo_host, mongo_port) def drop(): for db in mongo_conn.database_names(): for collection_name in mongo_conn[db].collection_names(): # Do not delete any of Mongo "system" collections if not collection_name.startswith("system."): mongo_conn[db][collection_name].drop() drop() request.addfinalizer(drop) return mongo_conn