Merge pull request #1878 from edx/dhm/pymongo_client
Upgrade pymongo usage from deprecated connection to client
This commit is contained in:
@@ -1604,7 +1604,7 @@ class ContentStoreTest(ModuleStoreTestCase):
|
||||
data = parse_json(resp)
|
||||
self.assertRegexpMatches(
|
||||
data['locator'],
|
||||
r"^MITx.999.Robot_Super_Course/branch/draft/block/chapter([0-9]|[a-f]){3}$"
|
||||
r"^MITx.999.Robot_Super_Course/branch/draft/block/chapter([0-9]|[a-f]){3,}$"
|
||||
)
|
||||
|
||||
def test_capa_module(self):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from pymongo import Connection
|
||||
import pymongo
|
||||
import gridfs
|
||||
from gridfs.errors import NoFile
|
||||
|
||||
@@ -24,8 +24,14 @@ class MongoContentStore(ContentStore):
|
||||
:param collection: ignores but provided for consistency w/ other doc_store_config patterns
|
||||
"""
|
||||
logging.debug('Using MongoDB for static content serving at host={0} db={1}'.format(host, db))
|
||||
|
||||
_db = Connection(host=host, port=port, **kwargs)[db]
|
||||
_db = pymongo.database.Database(
|
||||
pymongo.MongoClient(
|
||||
host=host,
|
||||
port=port,
|
||||
**kwargs
|
||||
),
|
||||
db
|
||||
)
|
||||
|
||||
if user is not None and password is not None:
|
||||
_db.authenticate(user, password)
|
||||
|
||||
@@ -274,25 +274,29 @@ class MongoModuleStore(ModuleStoreWriteBase):
|
||||
"""
|
||||
Create & open the connection, authenticate, and provide pointers to the collection
|
||||
"""
|
||||
self.collection = pymongo.connection.Connection(
|
||||
host=host,
|
||||
port=port,
|
||||
tz_aware=tz_aware,
|
||||
**kwargs
|
||||
)[db][collection]
|
||||
self.database = pymongo.database.Database(
|
||||
pymongo.MongoClient(
|
||||
host=host,
|
||||
port=port,
|
||||
tz_aware=tz_aware,
|
||||
**kwargs
|
||||
),
|
||||
db
|
||||
)
|
||||
self.collection = self.database[collection]
|
||||
|
||||
if user is not None and password is not None:
|
||||
self.collection.database.authenticate(user, password)
|
||||
self.database.authenticate(user, password)
|
||||
|
||||
do_connection(**doc_store_config)
|
||||
|
||||
# Force mongo to report errors, at the expense of performance
|
||||
self.collection.safe = True
|
||||
self.collection.write_concern = {'w': 1}
|
||||
|
||||
# Force mongo to maintain an index over _id.* that is in the same order
|
||||
# that is used when querying by a location
|
||||
self.collection.ensure_index(
|
||||
zip(('_id.' + field for field in Location._fields), repeat(1))
|
||||
zip(('_id.' + field for field in Location._fields), repeat(1)),
|
||||
)
|
||||
|
||||
if default_class is not None:
|
||||
|
||||
@@ -55,7 +55,7 @@ def mongo_store_config(data_dir):
|
||||
'DOC_STORE_CONFIG': {
|
||||
'host': 'localhost',
|
||||
'db': 'test_xmodule',
|
||||
'collection': 'modulestore_%s' % uuid4().hex,
|
||||
'collection': 'modulestore{0}'.format(uuid4().hex[:5]),
|
||||
},
|
||||
'OPTIONS': {
|
||||
'default_class': 'xmodule.raw_module.RawDescriptor',
|
||||
@@ -86,7 +86,7 @@ def draft_mongo_store_config(data_dir):
|
||||
'DOC_STORE_CONFIG': {
|
||||
'host': 'localhost',
|
||||
'db': 'test_xmodule',
|
||||
'collection': 'modulestore_%s' % uuid4().hex,
|
||||
'collection': 'modulestore{0}'.format(uuid4().hex[:5]),
|
||||
},
|
||||
'OPTIONS': modulestore_options
|
||||
}
|
||||
@@ -121,7 +121,7 @@ def studio_store_config(data_dir):
|
||||
store_config = {
|
||||
'host': 'localhost',
|
||||
'db': 'test_xmodule',
|
||||
'collection': 'modulestore_%s' % uuid4().hex,
|
||||
'collection': 'modulestore{0}'.format(uuid4().hex[:5]),
|
||||
}
|
||||
options = {
|
||||
'default_class': 'xmodule.raw_module.RawDescriptor',
|
||||
|
||||
@@ -20,7 +20,7 @@ class TestLocationMapper(unittest.TestCase):
|
||||
modulestore_options = {
|
||||
'host': 'localhost',
|
||||
'db': 'test_xmodule',
|
||||
'collection': 'modulestore{0}'.format(uuid.uuid4().hex),
|
||||
'collection': 'modulestore{0}'.format(uuid.uuid4().hex[:5]),
|
||||
}
|
||||
|
||||
# pylint: disable=W0142
|
||||
|
||||
@@ -21,7 +21,7 @@ from xmodule.modulestore.mixed import MixedModuleStore
|
||||
|
||||
HOST = 'localhost'
|
||||
PORT = 27017
|
||||
DB = 'test_mongo_%s' % uuid4().hex
|
||||
DB = 'test_mongo_%s' % uuid4().hex[:5]
|
||||
COLLECTION = 'modulestore'
|
||||
FS_ROOT = DATA_DIR
|
||||
DEFAULT_CLASS = 'xmodule.raw_module.RawDescriptor'
|
||||
@@ -69,7 +69,11 @@ class TestMixedModuleStore(object):
|
||||
"""
|
||||
Set up the database for testing
|
||||
"""
|
||||
cls.connection = pymongo.connection.Connection(HOST, PORT)
|
||||
cls.connection = pymongo.MongoClient(
|
||||
host=HOST,
|
||||
port=PORT,
|
||||
tz_aware=True,
|
||||
)
|
||||
cls.connection.drop_database(DB)
|
||||
cls.fake_location = Location(['i4x', 'foo', 'bar', 'vertical', 'baz'])
|
||||
cls.import_org, cls.import_course, cls.import_run = IMPORT_COURSEID.split('/')
|
||||
|
||||
@@ -20,7 +20,7 @@ from xmodule.modulestore.xml_importer import import_from_xml, perform_xlint
|
||||
from xmodule.contentstore.mongo import MongoContentStore
|
||||
|
||||
from xmodule.modulestore.tests.test_modulestore import check_path_to_location
|
||||
from IPython.testing.nose_assert_methods import assert_in, assert_not_in
|
||||
from IPython.testing.nose_assert_methods import assert_in
|
||||
from xmodule.exceptions import NotFoundError
|
||||
from xmodule.modulestore.exceptions import InsufficientSpecificationError
|
||||
|
||||
@@ -28,7 +28,7 @@ log = logging.getLogger(__name__)
|
||||
|
||||
HOST = 'localhost'
|
||||
PORT = 27017
|
||||
DB = 'test_mongo_%s' % uuid4().hex
|
||||
DB = 'test_mongo_%s' % uuid4().hex[:5]
|
||||
COLLECTION = 'modulestore'
|
||||
FS_ROOT = DATA_DIR # TODO (vshnayder): will need a real fs_root for testing load_item
|
||||
DEFAULT_CLASS = 'xmodule.raw_module.RawDescriptor'
|
||||
@@ -39,7 +39,11 @@ class TestMongoModuleStore(object):
|
||||
'''Tests!'''
|
||||
@classmethod
|
||||
def setupClass(cls):
|
||||
cls.connection = pymongo.connection.Connection(HOST, PORT)
|
||||
cls.connection = pymongo.MongoClient(
|
||||
host=HOST,
|
||||
port=PORT,
|
||||
tz_aware=True,
|
||||
)
|
||||
cls.connection.drop_database(DB)
|
||||
|
||||
# NOTE: Creating a single db for all the tests to save time. This
|
||||
@@ -50,8 +54,8 @@ class TestMongoModuleStore(object):
|
||||
|
||||
@classmethod
|
||||
def teardownClass(cls):
|
||||
cls.connection = pymongo.connection.Connection(HOST, PORT)
|
||||
cls.connection.drop_database(DB)
|
||||
if cls.connection:
|
||||
cls.connection.drop_database(DB)
|
||||
|
||||
@staticmethod
|
||||
def initdb():
|
||||
|
||||
@@ -33,7 +33,7 @@ class TestOrphan(unittest.TestCase):
|
||||
split_course_id = 'test_org.test_course.runid'
|
||||
|
||||
def setUp(self):
|
||||
self.db_config['collection'] = 'modulestore{0}'.format(uuid.uuid4().hex)
|
||||
self.db_config['collection'] = 'modulestore{0}'.format(uuid.uuid4().hex[:5])
|
||||
|
||||
self.userid = random.getrandbits(32)
|
||||
super(TestOrphan, self).setUp()
|
||||
|
||||
@@ -34,7 +34,7 @@ class TestPublish(unittest.TestCase):
|
||||
}
|
||||
|
||||
def setUp(self):
|
||||
self.db_config['collection'] = 'modulestore{0}'.format(uuid.uuid4().hex)
|
||||
self.db_config['collection'] = 'modulestore{0}'.format(uuid.uuid4().hex[:5])
|
||||
|
||||
self.old_mongo = MongoModuleStore(self.db_config, **self.modulestore_options)
|
||||
self.draft_mongo = DraftMongoModuleStore(self.db_config, **self.modulestore_options)
|
||||
|
||||
@@ -31,7 +31,7 @@ class TestMigration(unittest.TestCase):
|
||||
db_config = {
|
||||
'host': 'localhost',
|
||||
'db': 'test_xmodule',
|
||||
'collection': 'modulestore{0}'.format(uuid.uuid4().hex),
|
||||
'collection': 'modulestore{0}'.format(uuid.uuid4().hex[:5]),
|
||||
}
|
||||
|
||||
modulestore_options = {
|
||||
|
||||
@@ -32,7 +32,7 @@ class SplitModuleTest(unittest.TestCase):
|
||||
DOC_STORE_CONFIG = {
|
||||
'host': 'localhost',
|
||||
'db': 'test_xmodule',
|
||||
'collection': 'modulestore{0}'.format(uuid.uuid4().hex),
|
||||
'collection': 'modulestore{0}'.format(uuid.uuid4().hex[:5]),
|
||||
}
|
||||
modulestore_options = {
|
||||
'default_class': 'xmodule.raw_module.RawDescriptor',
|
||||
|
||||
Reference in New Issue
Block a user