Skip to content

Commit c1f6fec

Browse files
committed
Test refactoring: get_pool() and pools_from_rs_client().
1 parent cd4b609 commit c1f6fec

4 files changed

Lines changed: 31 additions & 32 deletions

File tree

test/test_legacy_connections.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from pymongo.errors import ConfigurationError
2929
from test import host, port, pair
3030
from test.test_replica_set_client import TestReplicaSetClientBase
31+
from test.utils import get_pool
3132

3233

3334
class TestConnection(unittest.TestCase):
@@ -92,8 +93,7 @@ def test_replica_set_connection(self):
9293

9394
# To preserve legacy ReplicaSetConnection's behavior, max_size should
9495
# be None. Pool should handle this without error.
95-
rs_state = c._MongoReplicaSetClient__rs_state
96-
pool = rs_state.primary_member.pool
96+
pool = get_pool(c)
9797
self.assertEqual(None, pool.max_size)
9898
c.end_request()
9999

@@ -104,7 +104,8 @@ def test_replica_set_connection(self):
104104
)._MongoReplicaSetClient__net_timeout)
105105

106106
for network_timeout in 'foo', 0, -1:
107-
self.assertRaises(ConfigurationError,
107+
self.assertRaises(
108+
ConfigurationError,
108109
ReplicaSetConnection, pair, replicaSet=self.name,
109110
network_timeout=network_timeout)
110111

test/test_replica_set_client.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
from test.utils import (
5151
delay, assertReadFrom, assertReadFromAll, read_from_which_host,
5252
remove_all_users, assertRaisesExactly, TestRequestMixin, one,
53-
server_started_with_auth)
53+
server_started_with_auth, pools_from_rs_client, get_pool)
5454

5555

5656
class TestReplicaSetClientAgainstStandalone(unittest.TestCase):
@@ -704,8 +704,8 @@ def test_socket_error_marks_member_down(self):
704704
previous_writer = c._MongoReplicaSetClient__rs_state.writer
705705

706706
def kill_sockets():
707-
for member in c._MongoReplicaSetClient__rs_state.members:
708-
for socket_info in member.pool.sockets:
707+
for pool in pools_from_rs_client(c):
708+
for socket_info in pool.sockets:
709709
socket_info.sock.close()
710710

711711
kill_sockets()
@@ -928,7 +928,7 @@ def test_operation_failure_without_request(self):
928928
# Ensure MongoReplicaSetClient doesn't close socket after it gets an
929929
# error response to getLastError. PYTHON-395.
930930
c = self._get_client(auto_start_request=False)
931-
pool = c._MongoReplicaSetClient__rs_state.get(self.primary).pool
931+
pool = get_pool(c)
932932
self.assertEqual(1, len(pool.sockets))
933933
old_sock_info = iter(pool.sockets).next()
934934
c.pymongo_test.test.drop()
@@ -948,7 +948,7 @@ def test_operation_failure_with_request(self):
948948
# error response to getLastError. PYTHON-395.
949949
c = self._get_client(auto_start_request=True)
950950
c.pymongo_test.test.find_one()
951-
pool = c._MongoReplicaSetClient__rs_state.get(self.primary).pool
951+
pool = get_pool(c)
952952

953953
# Client reserved a socket for this thread
954954
self.assertTrue(isinstance(pool._get_request_state(), SocketInfo))
@@ -973,13 +973,10 @@ def test_auto_start_request(self):
973973

974974
client = self._get_client(auto_start_request=True)
975975
self.assertTrue(client.auto_start_request)
976-
pools = [member.pool for member in
977-
client._MongoReplicaSetClient__rs_state.members]
978-
976+
pools = pools_from_rs_client(client)
979977
self.assertInRequestAndSameSock(client, pools)
980978

981-
primary_pool = \
982-
client._MongoReplicaSetClient__rs_state.get(client.primary).pool
979+
primary_pool = get_pool(client)
983980

984981
# Trigger the RSC to actually start a request on primary pool
985982
client.pymongo_test.test.find_one()
@@ -1008,9 +1005,7 @@ def test_auto_start_request(self):
10081005
client.close()
10091006

10101007
client = self._get_client()
1011-
pools = [mongo.pool for mongo in
1012-
client._MongoReplicaSetClient__rs_state.members]
1013-
1008+
pools = pools_from_rs_client(client)
10141009
self.assertNotInRequestAndDifferentSock(client, pools)
10151010
client.start_request()
10161011
self.assertInRequestAndSameSock(client, pools)
@@ -1021,8 +1016,7 @@ def test_auto_start_request(self):
10211016
def test_nested_request(self):
10221017
client = self._get_client(auto_start_request=True)
10231018
try:
1024-
pools = [member.pool for member in
1025-
client._MongoReplicaSetClient__rs_state.members]
1019+
pools = pools_from_rs_client(client)
10261020
self.assertTrue(client.in_request())
10271021

10281022
# Start and end request - we're still in "outer" original request
@@ -1064,8 +1058,7 @@ def test_nested_request(self):
10641058
def test_request_threads(self):
10651059
client = self._get_client()
10661060
try:
1067-
pools = [member.pool for member in
1068-
client._MongoReplicaSetClient__rs_state.members]
1061+
pools = pools_from_rs_client(client)
10691062
self.assertNotInRequestAndDifferentSock(client, pools)
10701063

10711064
started_request, ended_request = threading.Event(), threading.Event()

test/test_threads.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,11 @@
2323
from test.utils import (joinall, remove_all_users,
2424
server_started_with_auth, RendezvousThread)
2525
from test.test_client import get_client
26-
from pymongo.mongo_client import MongoClient
27-
from pymongo.replica_set_connection import MongoReplicaSetClient
26+
from test.utils import get_pool
2827
from pymongo.pool import SocketInfo, _closed
2928
from pymongo.errors import AutoReconnect, OperationFailure
3029

3130

32-
def get_pool(client):
33-
if isinstance(client, MongoClient):
34-
return client._MongoClient__pool
35-
elif isinstance(client, MongoReplicaSetClient):
36-
rs_state = client._MongoReplicaSetClient__rs_state
37-
return rs_state[rs_state.writer].pool
38-
else:
39-
raise TypeError(str(client))
40-
41-
4231
class AutoAuthenticateThreads(threading.Thread):
4332

4433
def __init__(self, collection, num):

test/utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,22 @@ def assertReadFromAll(testcase, rsc, members, *args, **kwargs):
270270

271271
testcase.assertEqual(members, used)
272272

273+
def get_pool(client):
274+
if isinstance(client, MongoClient):
275+
return client._MongoClient__pool
276+
elif isinstance(client, MongoReplicaSetClient):
277+
rs_state = client._MongoReplicaSetClient__rs_state
278+
return rs_state.primary_member.pool
279+
else:
280+
raise TypeError(str(client))
281+
282+
def pools_from_rs_client(client):
283+
"""Get Pool instances from a MongoReplicaSetClient or ReplicaSetConnection.
284+
"""
285+
return [
286+
member.pool for member in
287+
client._MongoReplicaSetClient__rs_state.members]
288+
273289
class TestRequestMixin(object):
274290
"""Inherit from this class and from unittest.TestCase to get some
275291
convenient methods for testing connection pools and requests

0 commit comments

Comments
 (0)