PYTHON-2072 Fix tests now that "counts" is not reported in map_reduce

This commit is contained in:
Shane Harvey 2019-12-12 15:01:08 -08:00
parent fc26881f01
commit 5c02f8bec4
4 changed files with 40 additions and 40 deletions

View File

@ -2079,6 +2079,8 @@ class TestCollection(IntegrationTest):
self.assertEqual(2, result.find_one({"_id": "dog"})["value"])
self.assertEqual(1, result.find_one({"_id": "mouse"})["value"])
# Create the output database.
db.client.mrtestdb.mrunittests.insert_one({})
result = db.test.map_reduce(map, reduce,
out=SON([('replace', 'mrunittests'),
('db', 'mrtestdb')
@ -2090,7 +2092,9 @@ class TestCollection(IntegrationTest):
full_result = db.test.map_reduce(map, reduce,
out='mrunittests', full_response=True)
self.assertEqual(6, full_result["counts"]["emit"])
self.assertEqual('mrunittests', full_result["result"])
if client_context.version < (4, 3):
self.assertEqual(6, full_result["counts"]["emit"])
result = db.test.map_reduce(map, reduce, out='mrunittests', limit=2)
self.assertEqual(2, result.find_one({"_id": "cat"})["value"])
@ -2111,7 +2115,9 @@ class TestCollection(IntegrationTest):
full_result = db.test.inline_map_reduce(map, reduce,
full_response=True)
self.assertEqual(6, full_result["counts"]["emit"])
self.assertEqual(3, len(full_result["results"]))
if client_context.version < (4, 3):
self.assertEqual(6, full_result["counts"]["emit"])
with self.write_concern_collection() as coll:
coll.map_reduce(map, reduce, 'output')

View File

@ -663,7 +663,10 @@ class TestCollectionWCustomType(IntegrationTest):
full_result = test.inline_map_reduce(map, reduce,
full_response=True)
self.assertEqual(3, full_result["counts"]["emit"])
result = full_result['results']
self.assertTrue(isinstance(result, list))
self.assertEqual(1, len(result))
self.assertEqual(result[0]["_id"], 'ABCD')
def test_find_one_and__w_custom_type_decoder(self):
db = self.db

View File

@ -30,9 +30,13 @@ class TestReadConcern(PyMongoTestCase):
cls.listener = OvertCommandListener()
cls.client = single_client(event_listeners=[cls.listener])
cls.db = cls.client.pymongo_test
client_context.client.pymongo_test.create_collection('coll')
@classmethod
def tearDownClass(cls):
client_context.client.pymongo_test.drop_collection('coll')
def tearDown(self):
self.db.coll.drop()
self.listener.results.clear()
def test_read_concern(self):
@ -104,12 +108,8 @@ class TestReadConcern(PyMongoTestCase):
def test_aggregate_out(self):
coll = self.db.get_collection('coll', read_concern=ReadConcern('local'))
try:
tuple(coll.aggregate([{'$match': {'field': 'value'}},
{'$out': 'output_collection'}]))
except OperationFailure:
# "ns doesn't exist"
pass
tuple(coll.aggregate([{'$match': {'field': 'value'}},
{'$out': 'output_collection'}]))
# Aggregate with $out supports readConcern MongoDB 4.2 onwards.
if client_context.version >= (4, 1):
@ -121,26 +121,18 @@ class TestReadConcern(PyMongoTestCase):
def test_map_reduce_out(self):
coll = self.db.get_collection('coll', read_concern=ReadConcern('local'))
try:
tuple(coll.map_reduce('function() { emit(this._id, this.value); }',
'function(key, values) { return 42; }',
out='output_collection'))
except OperationFailure:
# "ns doesn't exist"
pass
coll.map_reduce('function() { emit(this._id, this.value); }',
'function(key, values) { return 42; }',
out='output_collection')
self.assertNotIn('readConcern',
self.listener.results['started'][0].command)
if client_context.version.at_least(3, 1, 9, -1):
self.listener.results.clear()
try:
tuple(coll.map_reduce(
'function() { emit(this._id, this.value); }',
'function(key, values) { return 42; }',
out={'inline': 1}))
except OperationFailure:
# "ns doesn't exist"
pass
coll.map_reduce(
'function() { emit(this._id, this.value); }',
'function(key, values) { return 42; }',
out={'inline': 1})
self.assertEqual(
{'level': 'local'},
self.listener.results['started'][0].command['readConcern'])
@ -148,13 +140,9 @@ class TestReadConcern(PyMongoTestCase):
@client_context.require_version_min(3, 1, 9, -1)
def test_inline_map_reduce(self):
coll = self.db.get_collection('coll', read_concern=ReadConcern('local'))
try:
tuple(coll.inline_map_reduce(
'function() { emit(this._id, this.value); }',
'function(key, values) { return 42; }'))
except OperationFailure:
# "ns doesn't exist"
pass
tuple(coll.inline_map_reduce(
'function() { emit(this._id, this.value); }',
'function(key, values) { return 42; }'))
self.assertEqual(
{'level': 'local'},
self.listener.results['started'][0].command['readConcern'])

View File

@ -857,14 +857,17 @@ class TestCausalConsistency(unittest.TestCase):
map_reduce_exc = None
if client_context.version.at_least(4, 1, 12):
map_reduce_exc = OperationFailure
self._test_reads(
lambda coll, session: coll.map_reduce(
'function() {}', 'function() {}', 'inline', session=session),
exception=map_reduce_exc)
self._test_reads(
lambda coll, session: coll.inline_map_reduce(
'function() {}', 'function() {}', session=session),
exception=map_reduce_exc)
# SERVER-44635 The mapReduce in aggregation project added back
# support for casually consistent mapReduce.
if client_context.version < (4, 3):
self._test_reads(
lambda coll, session: coll.map_reduce(
'function() {}', 'function() {}', 'inline', session=session),
exception=map_reduce_exc)
self._test_reads(
lambda coll, session: coll.inline_map_reduce(
'function() {}', 'function() {}', session=session),
exception=map_reduce_exc)
if (not client_context.is_mongos and
not client_context.version.at_least(4, 1, 0)):
def scan(coll, session):