Beispiel #1
0
def test_data_conn():
    """
    A simple CLI command to test the Mongo and Redis connections when in a
    production environment.
    """
    if os.environ.get('FLASK_ENV', 'development') == 'production':
        disconnect_all()

        _db_name = str(os.environ.get('MONGO_APP_DB'))
        _host = os.environ.get('MONGO_HOST')
        _port = os.environ.get('MONGO_PORT')
        _username = os.environ.get('MONGO_APP_USER')
        _password = str(os.environ.get('MONGO_APP_USER_PASSWORD'))
        mongo_uri = (f'mongodb://{_username}:{_password}@{_host}:{_port}'
                     f'/?authSource=admin')
        client = connect(db=_db_name,
                         host=mongo_uri,
                         alias='default',
                         authentication_mechanism='SCRAM-SHA-1')
        db = get_db('default')

        redis_client = redis.Redis(host=os.environ.get('REDIS_HOST'),
                                   port=os.environ.get('REDIS_PORT'),
                                   password=os.environ.get('REDIS_PASSWORD'))
        print(f'MongoDB Client: \n{client}\n', file=sys.stderr)
        print(f'MongoDB Database: \n{db}\n', file=sys.stderr)
        print(f'Redis Datastore Client: \n{redis_client}\n', file=sys.stderr)
    else:
        print(
            f'This CLI command is only used for Production\nCurrent Flask ENV: '
            f'{os.environ.get("FLASK_ENV")}',
            file=sys.stderr)
Beispiel #2
0
def init_db(app=None,
            db_name=None,
            host=None,
            port=None,
            alias='default') -> MongoSingleton:
    """Make a connection to the MongoDB container and returns a singleton
    wrapper on a pymongo.MongoClient."""
    disconnect_all()

    testing = False

    if app is not None:
        db_name = app.config['MONGO_DBNAME']
        host = app.config['MONGO_HOST']
        port = int(app.config['MONGO_PORT'])
        testing = app.config['TESTING']

    if env.get('FLASK_ENV') == 'production':
        _db_name = str(env.get('MONGO_APP_DB'))
        _host = env.get('MONGO_HOST')
        _port = env.get('MONGO_PORT')
        _username = env.get('MONGO_APP_USER')
        _password = str(env.get('MONGO_APP_USER_PASSWORD'))
        mongo_uri = (f'mongodb://{_username}:{_password}@{_host}:{_port}'
                     f'/?authSource=admin')
        mongo_client = connect(_db_name,
                               host=mongo_uri,
                               alias=alias,
                               authentication_mechanism='SCRAM-SHA-1')
    else:
        if testing:
            db_name = 'arc_test'
        mongo_client = connect(db_name, host=host, port=int(port), alias=alias)

    try:
        # This is necessary to connect at least once
        get_db(alias)
    except MongoEngineConnectionError as e:
        print('MongoDB Failed to Get Database.\n Error: {}'.format(e))

    # Test to make sure the connection has been created.
    try:
        get_connection(alias)
    except MongoEngineConnectionError as e:
        print('MongoDB Failed to Connect.\n Error: {}'.format(e))

    return MongoSingleton(mongo_client)
Beispiel #3
0
 def tearDownClass(cls):
     cls._connection.drop_database(MONGO_TEST_DB)
     disconnect_all()
Beispiel #4
0
 def setUpClass(cls):
     disconnect_all()
     cls._connection = connect(db=MONGO_TEST_DB)
     cls._connection.drop_database(MONGO_TEST_DB)
     cls.db = get_db()
Beispiel #5
0
async def close_mongo():
    logger.info("Disconnecting from mongo")
    disconnect_all()
Beispiel #6
0
def shutdown_event():
    from mongoengine.connection import disconnect_all
    logger.info('Tearing down application')
    disconnect_all()
Beispiel #7
0
def mongo(request):
    connection.disconnect_all()
    db = connect('testdb', host='mongomock://localhost')
    yield db
    db.drop_database('testdb')
    db.close()
Beispiel #8
0
 def tearDownClass(cls):
     cls._conn.drop_database("mongoenginetest")
     disconnect_all()
Beispiel #9
0
 def setUpClass(cls):
     disconnect_all()
     cls._conn = connect("mongoenginetest", host="mongomock://localhost")
     cls._conn.drop_database("mongoenginetest")
Beispiel #10
0
 def tearDownClass(cls):
     cls._connection.drop_database(MONGO_TEST_DB)
     disconnect_all()
Beispiel #11
0
 def setUpClass(cls):
     disconnect_all()
     cls._connection = connect(db=MONGO_TEST_DB)
     cls._connection.drop_database(MONGO_TEST_DB)
     cls.db = get_db()