PYTHON-2072 Fix tests now that "counts" is not reported in map_reduce
This commit is contained in:
parent
fc26881f01
commit
5c02f8bec4
@ -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')
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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'])
|
||||
|
||||
@ -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):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user