PYTHON-807 Silence DeprecationWarnings in getlasterror tests.

This commit is contained in:
A. Jesse Jiryu Davis 2014-12-20 22:58:27 -06:00
parent 8e794bc8fe
commit 31b83bc0e0
3 changed files with 58 additions and 44 deletions

View File

@ -948,15 +948,19 @@ class TestCollection(unittest.TestCase):
db.test.save({"hello": "world"})
db.test.save({"hello": "mike"})
db.test.save({"hello": "world"})
self.assertFalse(db.error())
db.drop_collection("test")
db.test.create_index("hello", unique=True)
db.test.save({"hello": "world"})
db.test.save({"hello": "mike"})
db.test.save({"hello": "world"}, w=0)
self.assertTrue(db.error())
self.client.start_request()
try:
db.test.save({"hello": "world"}, w=0)
self.assertTrue(db.command('getlasterror').get('err'))
finally:
self.client.end_request()
def test_duplicate_key_error(self):
db = self.db
@ -1039,11 +1043,11 @@ class TestCollection(unittest.TestCase):
docs.append({"five": 5})
db.test.insert(docs, manipulate=False, w=0)
self.assertEqual(11000, db.error()['code'])
self.assertEqual(11000, db.command('getlasterror')['code'])
self.assertEqual(1, db.test.count())
db.test.insert(docs, manipulate=False, continue_on_error=True, w=0)
self.assertEqual(11000, db.error()['code'])
self.assertEqual(11000, db.command('getlasterror')['code'])
self.assertEqual(4, db.test.count())
db.drop_collection("test")
@ -1053,11 +1057,11 @@ class TestCollection(unittest.TestCase):
docs[2]["_id"] = oid
db.test.insert(docs, manipulate=False, w=0)
self.assertEqual(11000, db.error()['code'])
self.assertEqual(11000, db.command('getlasterror')['code'])
self.assertEqual(3, db.test.count())
db.test.insert(docs, manipulate=False, continue_on_error=True, w=0)
self.assertEqual(11000, db.error()['code'])
self.assertEqual(11000, db.command('getlasterror')['code'])
self.assertEqual(6, db.test.count())
def test_error_code(self):
@ -1095,7 +1099,7 @@ class TestCollection(unittest.TestCase):
a = {"hello": "world"}
db.test.insert(a)
db.test.insert(a, w=0)
self.assertTrue("E11000" in db.error()["err"])
self.assertTrue("E11000" in db.command('getlasterror')["err"])
self.assertRaises(OperationFailure, db.test.insert, a)
@ -1201,11 +1205,11 @@ class TestCollection(unittest.TestCase):
None, db.test.update({"_id": id}, {"$inc": {"x": 1}}, w=0))
if v19:
self.assertTrue("E11000" in db.error()["err"])
self.assertTrue("E11000" in db.command('getlasterror')["err"])
elif v113minus:
self.assertTrue(db.error()["err"].startswith("E11001"))
self.assertTrue(db.command('getlasterror')["err"].startswith("E11001"))
else:
self.assertTrue(db.error()["err"].startswith("E12011"))
self.assertTrue(db.command('getlasterror')["err"].startswith("E12011"))
self.assertRaises(OperationFailure, db.test.update,
{"_id": id}, {"$inc": {"x": 1}})
@ -1266,7 +1270,7 @@ class TestCollection(unittest.TestCase):
db.test.save({"hello": "world"})
db.test.save({"hello": "world"}, w=0)
self.assertTrue("E11000" in db.error()["err"])
self.assertTrue("E11000" in db.command('getlasterror')["err"])
self.assertRaises(OperationFailure, db.test.save,
{"hello": "world"})

View File

@ -253,36 +253,40 @@ class TestDatabase(unittest.TestCase):
if is_mongos(self.client):
raise SkipTest('getpreverror not supported by mongos')
db = self.client.pymongo_test
ctx = catch_warnings()
try:
warnings.simplefilter("ignore", DeprecationWarning)
db.reset_error_history()
self.assertEqual(None, db.error())
self.assertEqual(None, db.previous_error())
db.reset_error_history()
self.assertEqual(None, db.error())
self.assertEqual(None, db.previous_error())
db.command("forceerror", check=False)
self.assertTrue(db.error())
self.assertTrue(db.previous_error())
db.command("forceerror", check=False)
self.assertTrue(db.error())
self.assertTrue(db.previous_error())
db.command("forceerror", check=False)
self.assertTrue(db.error())
prev_error = db.previous_error()
self.assertEqual(prev_error["nPrev"], 1)
del prev_error["nPrev"]
prev_error.pop("lastOp", None)
error = db.error()
error.pop("lastOp", None)
# getLastError includes "connectionId" in recent
# server versions, getPrevError does not.
error.pop("connectionId", None)
self.assertEqual(error, prev_error)
db.command("forceerror", check=False)
self.assertTrue(db.error())
prev_error = db.previous_error()
self.assertEqual(prev_error["nPrev"], 1)
del prev_error["nPrev"]
prev_error.pop("lastOp", None)
error = db.error()
error.pop("lastOp", None)
# getLastError includes "connectionId" in recent
# server versions, getPrevError does not.
error.pop("connectionId", None)
self.assertEqual(error, prev_error)
db.test.find_one()
self.assertEqual(None, db.error())
self.assertTrue(db.previous_error())
self.assertEqual(db.previous_error()["nPrev"], 2)
db.test.find_one()
self.assertEqual(None, db.error())
self.assertTrue(db.previous_error())
self.assertEqual(db.previous_error()["nPrev"], 2)
db.reset_error_history()
self.assertEqual(None, db.error())
self.assertEqual(None, db.previous_error())
db.reset_error_history()
self.assertEqual(None, db.error())
self.assertEqual(None, db.previous_error())
finally:
ctx.exit()
def test_command(self):
db = self.client.admin
@ -331,11 +335,16 @@ class TestDatabase(unittest.TestCase):
db.test.remove({})
db.test.save({"i": 1})
db.test.update({"i": 1}, {"$set": {"i": 2}}, w=0)
self.assertTrue(db.last_status()["updatedExisting"])
ctx = catch_warnings()
try:
warnings.simplefilter("ignore", DeprecationWarning)
db.test.update({"i": 1}, {"$set": {"i": 2}}, w=0)
self.assertTrue(db.last_status()["updatedExisting"])
db.test.update({"i": 1}, {"$set": {"i": 500}}, w=0)
self.assertFalse(db.last_status()["updatedExisting"])
db.test.update({"i": 1}, {"$set": {"i": 500}}, w=0)
self.assertFalse(db.last_status()["updatedExisting"])
finally:
ctx.exit()
def test_password_digest(self):
self.assertRaises(TypeError, auth._password_digest, 5)

View File

@ -134,7 +134,8 @@ class NonUnique(MongoThread):
for _ in xrange(N):
self.client.start_request()
self.db.unique.insert({"_id": "jesse"}, w=0)
self.ut.assertNotEqual(None, self.db.error())
self.ut.assertNotEqual(None,
self.db.command('getlasterror').get('err'))
self.client.end_request()
@ -152,7 +153,7 @@ class NoRequest(MongoThread):
errors = 0
for _ in xrange(N):
self.db.unique.insert({"_id": "jesse"}, w=0)
if not self.db.error():
if not self.db.command("getlasterror").get("err"):
errors += 1
self.client.end_request()