Reimplement test_socket_error_marks_member_down using a mock.
This commit is contained in:
parent
01d4f931c5
commit
198b67aee1
@ -43,7 +43,7 @@ class MockPool(Pool):
|
||||
client = self.client
|
||||
host_and_port = '%s:%s' % (self.mock_host, self.mock_port)
|
||||
if host_and_port in client.mock_down_hosts:
|
||||
raise socket.timeout('mock timeout')
|
||||
raise socket.error('mock error')
|
||||
|
||||
assert host_and_port in (
|
||||
client.mock_standalones
|
||||
|
||||
@ -19,7 +19,8 @@ import unittest
|
||||
|
||||
sys.path[0:0] = [""]
|
||||
|
||||
from pymongo.errors import AutoReconnect
|
||||
from pymongo.errors import AutoReconnect, ConnectionFailure
|
||||
from pymongo import ReadPreference
|
||||
from test.pymongo_mocks import MockClient, MockReplicaSetClient
|
||||
|
||||
|
||||
@ -102,6 +103,26 @@ class TestSecondaryRemoved(unittest.TestCase):
|
||||
self.assertEqual(set([('b', 2)]), c.secondaries)
|
||||
|
||||
|
||||
class TestSocketError(unittest.TestCase):
|
||||
def test_socket_error_marks_member_down(self):
|
||||
c = MockReplicaSetClient(
|
||||
standalones=[],
|
||||
members=['a:1', 'b:2'],
|
||||
mongoses=[],
|
||||
host='a:1',
|
||||
replicaSet='rs')
|
||||
|
||||
self.assertEqual(2, len(c._MongoReplicaSetClient__rs_state.members))
|
||||
|
||||
# b now raises socket.error.
|
||||
c.mock_down_hosts.append('b:2')
|
||||
self.assertRaises(
|
||||
ConnectionFailure,
|
||||
c.db.collection.find_one, read_preference=ReadPreference.SECONDARY)
|
||||
|
||||
self.assertEqual(1, len(c._MongoReplicaSetClient__rs_state.members))
|
||||
|
||||
|
||||
class TestSecondaryAdded(unittest.TestCase):
|
||||
def test_client(self):
|
||||
c = MockClient(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user