Skip to content

Commit 5c02f8b

Browse files
committed
PYTHON-2072 Fix tests now that "counts" is not reported in map_reduce
1 parent fc26881 commit 5c02f8b

File tree

4 files changed

+40
-40
lines changed

4 files changed

+40
-40
lines changed

test/test_collection.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -2079,6 +2079,8 @@ def test_map_reduce(self):
20792079
self.assertEqual(2, result.find_one({"_id": "dog"})["value"])
20802080
self.assertEqual(1, result.find_one({"_id": "mouse"})["value"])
20812081

2082+
# Create the output database.
2083+
db.client.mrtestdb.mrunittests.insert_one({})
20822084
result = db.test.map_reduce(map, reduce,
20832085
out=SON([('replace', 'mrunittests'),
20842086
('db', 'mrtestdb')
@@ -2090,7 +2092,9 @@ def test_map_reduce(self):
20902092

20912093
full_result = db.test.map_reduce(map, reduce,
20922094
out='mrunittests', full_response=True)
2093-
self.assertEqual(6, full_result["counts"]["emit"])
2095+
self.assertEqual('mrunittests', full_result["result"])
2096+
if client_context.version < (4, 3):
2097+
self.assertEqual(6, full_result["counts"]["emit"])
20942098

20952099
result = db.test.map_reduce(map, reduce, out='mrunittests', limit=2)
20962100
self.assertEqual(2, result.find_one({"_id": "cat"})["value"])
@@ -2111,7 +2115,9 @@ def test_map_reduce(self):
21112115

21122116
full_result = db.test.inline_map_reduce(map, reduce,
21132117
full_response=True)
2114-
self.assertEqual(6, full_result["counts"]["emit"])
2118+
self.assertEqual(3, len(full_result["results"]))
2119+
if client_context.version < (4, 3):
2120+
self.assertEqual(6, full_result["counts"]["emit"])
21152121

21162122
with self.write_concern_collection() as coll:
21172123
coll.map_reduce(map, reduce, 'output')

test/test_custom_types.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,10 @@ def test_map_reduce_w_custom_type(self):
663663

664664
full_result = test.inline_map_reduce(map, reduce,
665665
full_response=True)
666-
self.assertEqual(3, full_result["counts"]["emit"])
666+
result = full_result['results']
667+
self.assertTrue(isinstance(result, list))
668+
self.assertEqual(1, len(result))
669+
self.assertEqual(result[0]["_id"], 'ABCD')
667670

668671
def test_find_one_and__w_custom_type_decoder(self):
669672
db = self.db

test/test_read_concern.py

+17-29
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,13 @@ def setUpClass(cls):
3030
cls.listener = OvertCommandListener()
3131
cls.client = single_client(event_listeners=[cls.listener])
3232
cls.db = cls.client.pymongo_test
33+
client_context.client.pymongo_test.create_collection('coll')
34+
35+
@classmethod
36+
def tearDownClass(cls):
37+
client_context.client.pymongo_test.drop_collection('coll')
3338

3439
def tearDown(self):
35-
self.db.coll.drop()
3640
self.listener.results.clear()
3741

3842
def test_read_concern(self):
@@ -104,12 +108,8 @@ def test_command_cursor(self):
104108

105109
def test_aggregate_out(self):
106110
coll = self.db.get_collection('coll', read_concern=ReadConcern('local'))
107-
try:
108-
tuple(coll.aggregate([{'$match': {'field': 'value'}},
109-
{'$out': 'output_collection'}]))
110-
except OperationFailure:
111-
# "ns doesn't exist"
112-
pass
111+
tuple(coll.aggregate([{'$match': {'field': 'value'}},
112+
{'$out': 'output_collection'}]))
113113

114114
# Aggregate with $out supports readConcern MongoDB 4.2 onwards.
115115
if client_context.version >= (4, 1):
@@ -121,40 +121,28 @@ def test_aggregate_out(self):
121121

122122
def test_map_reduce_out(self):
123123
coll = self.db.get_collection('coll', read_concern=ReadConcern('local'))
124-
try:
125-
tuple(coll.map_reduce('function() { emit(this._id, this.value); }',
126-
'function(key, values) { return 42; }',
127-
out='output_collection'))
128-
except OperationFailure:
129-
# "ns doesn't exist"
130-
pass
124+
coll.map_reduce('function() { emit(this._id, this.value); }',
125+
'function(key, values) { return 42; }',
126+
out='output_collection')
131127
self.assertNotIn('readConcern',
132128
self.listener.results['started'][0].command)
133129

134130
if client_context.version.at_least(3, 1, 9, -1):
135131
self.listener.results.clear()
136-
try:
137-
tuple(coll.map_reduce(
138-
'function() { emit(this._id, this.value); }',
139-
'function(key, values) { return 42; }',
140-
out={'inline': 1}))
141-
except OperationFailure:
142-
# "ns doesn't exist"
143-
pass
132+
coll.map_reduce(
133+
'function() { emit(this._id, this.value); }',
134+
'function(key, values) { return 42; }',
135+
out={'inline': 1})
144136
self.assertEqual(
145137
{'level': 'local'},
146138
self.listener.results['started'][0].command['readConcern'])
147139

148140
@client_context.require_version_min(3, 1, 9, -1)
149141
def test_inline_map_reduce(self):
150142
coll = self.db.get_collection('coll', read_concern=ReadConcern('local'))
151-
try:
152-
tuple(coll.inline_map_reduce(
153-
'function() { emit(this._id, this.value); }',
154-
'function(key, values) { return 42; }'))
155-
except OperationFailure:
156-
# "ns doesn't exist"
157-
pass
143+
tuple(coll.inline_map_reduce(
144+
'function() { emit(this._id, this.value); }',
145+
'function(key, values) { return 42; }'))
158146
self.assertEqual(
159147
{'level': 'local'},
160148
self.listener.results['started'][0].command['readConcern'])

test/test_session.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -857,14 +857,17 @@ def test_reads(self):
857857
map_reduce_exc = None
858858
if client_context.version.at_least(4, 1, 12):
859859
map_reduce_exc = OperationFailure
860-
self._test_reads(
861-
lambda coll, session: coll.map_reduce(
862-
'function() {}', 'function() {}', 'inline', session=session),
863-
exception=map_reduce_exc)
864-
self._test_reads(
865-
lambda coll, session: coll.inline_map_reduce(
866-
'function() {}', 'function() {}', session=session),
867-
exception=map_reduce_exc)
860+
# SERVER-44635 The mapReduce in aggregation project added back
861+
# support for casually consistent mapReduce.
862+
if client_context.version < (4, 3):
863+
self._test_reads(
864+
lambda coll, session: coll.map_reduce(
865+
'function() {}', 'function() {}', 'inline', session=session),
866+
exception=map_reduce_exc)
867+
self._test_reads(
868+
lambda coll, session: coll.inline_map_reduce(
869+
'function() {}', 'function() {}', session=session),
870+
exception=map_reduce_exc)
868871
if (not client_context.is_mongos and
869872
not client_context.version.at_least(4, 1, 0)):
870873
def scan(coll, session):

0 commit comments

Comments
 (0)