Skip to content

Commit 198b67a

Browse files
author
A. Jesse Jiryu Davis
committed
Reimplement test_socket_error_marks_member_down using a mock.
1 parent 01d4f93 commit 198b67a

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

test/pymongo_mocks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def get_socket(self, force=False):
4343
client = self.client
4444
host_and_port = '%s:%s' % (self.mock_host, self.mock_port)
4545
if host_and_port in client.mock_down_hosts:
46-
raise socket.timeout('mock timeout')
46+
raise socket.error('mock error')
4747

4848
assert host_and_port in (
4949
client.mock_standalones

test/test_replica_set_reconfig.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919

2020
sys.path[0:0] = [""]
2121

22-
from pymongo.errors import AutoReconnect
22+
from pymongo.errors import AutoReconnect, ConnectionFailure
23+
from pymongo import ReadPreference
2324
from test.pymongo_mocks import MockClient, MockReplicaSetClient
2425

2526

@@ -102,6 +103,26 @@ def test_replica_set_client(self):
102103
self.assertEqual(set([('b', 2)]), c.secondaries)
103104

104105

106+
class TestSocketError(unittest.TestCase):
107+
def test_socket_error_marks_member_down(self):
108+
c = MockReplicaSetClient(
109+
standalones=[],
110+
members=['a:1', 'b:2'],
111+
mongoses=[],
112+
host='a:1',
113+
replicaSet='rs')
114+
115+
self.assertEqual(2, len(c._MongoReplicaSetClient__rs_state.members))
116+
117+
# b now raises socket.error.
118+
c.mock_down_hosts.append('b:2')
119+
self.assertRaises(
120+
ConnectionFailure,
121+
c.db.collection.find_one, read_preference=ReadPreference.SECONDARY)
122+
123+
self.assertEqual(1, len(c._MongoReplicaSetClient__rs_state.members))
124+
125+
105126
class TestSecondaryAdded(unittest.TestCase):
106127
def test_client(self):
107128
c = MockClient(

0 commit comments

Comments
 (0)