Skip to content

Commit 14ce733

Browse files
committed
add socket-getting utils
1 parent d324e37 commit 14ce733

3 files changed

Lines changed: 33 additions & 46 deletions

File tree

tests/unit/io/test_asyncorereactor.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -61,28 +61,6 @@ def setUp(self):
6161
if is_monkey_patched():
6262
raise unittest.SkipTest("Can't test asyncore with monkey patching")
6363

64-
def test_successful_connection(self):
65-
c = self.make_connection()
66-
67-
# let it write the OptionsMessage
68-
c.handle_write()
69-
70-
# read in a SupportedMessage response
71-
header = self.make_header_prefix(SupportedMessage)
72-
options = self.make_options_body()
73-
c.socket.recv.return_value = self.make_msg(header, options)
74-
c.handle_read()
75-
76-
# let it write out a StartupMessage
77-
c.handle_write()
78-
79-
header = self.make_header_prefix(ReadyMessage, stream_id=1)
80-
c.socket.recv.return_value = self.make_msg(header)
81-
c.handle_read()
82-
83-
self.assertTrue(c.connected_event.is_set())
84-
return c
85-
8664
def test_egain_on_buffer_size(self):
8765
# get a connection that's already fully started
8866
c = self.test_successful_connection()

tests/unit/io/test_libevreactor.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class LibevConnectionTest(unittest.TestCase, ReactorTestMixin):
4343

4444
connection_class = LibevConnection
4545
socket_attr_name = '_socket'
46+
null_handle_function_args = None, 0
4647

4748
def setUp(self):
4849
if is_monkey_patched():
@@ -64,28 +65,6 @@ def setUp(self):
6465
for p in patchers:
6566
p.start()
6667

67-
def test_successful_connection(self):
68-
c = self.make_connection()
69-
70-
# let it write the OptionsMessage
71-
c.handle_write(None, 0)
72-
73-
# read in a SupportedMessage response
74-
header = self.make_header_prefix(SupportedMessage)
75-
options = self.make_options_body()
76-
c._socket.recv.return_value = self.make_msg(header, options)
77-
c.handle_read(None, 0)
78-
79-
# let it write out a StartupMessage
80-
c.handle_write(None, 0)
81-
82-
header = self.make_header_prefix(ReadyMessage, stream_id=1)
83-
c._socket.recv.return_value = self.make_msg(header)
84-
c.handle_read(None, 0)
85-
86-
self.assertTrue(c.connected_event.is_set())
87-
return c
88-
8968
def test_egain_on_buffer_size(self):
9069
# get a connection that's already fully started
9170
c = self.test_successful_connection()

tests/unit/io/utils.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
from cassandra.connection import HEADER_DIRECTION_TO_CLIENT
1616
from cassandra.marshal import uint8_pack, uint32_pack
17-
from cassandra.protocol import write_stringmultimap, write_int, write_string
17+
from cassandra.protocol import (write_stringmultimap, write_int, write_string,
18+
SupportedMessage, ReadyMessage)
1819

1920
from six import binary_type, BytesIO
2021
from mock import Mock
@@ -151,6 +152,13 @@ def test_timer_cancellation(self):
151152
class ReactorTestMixin(object):
152153

153154
connection_class = socket_attr_name = None
155+
null_handle_function_args = ()
156+
157+
def get_socket(self, connection):
158+
return getattr(connection, self.socket_attr_name)
159+
160+
def set_socket(self, connection, obj):
161+
return setattr(connection, self.socket_attr_name, obj)
154162

155163
def make_header_prefix(self, message_class, version=2, stream_id=0):
156164
return binary_type().join(map(uint8_pack, [
@@ -164,7 +172,7 @@ def make_connection(self):
164172
c = self.connection_class('1.2.3.4', cql_version='3.0.1', connect_timeout=5)
165173
mocket = Mock()
166174
mocket.send.side_effect = lambda x: len(x)
167-
setattr(c, self.socket_attr_name, mocket)
175+
self.set_socket(c, mocket)
168176
return c
169177

170178
def make_options_body(self):
@@ -183,3 +191,25 @@ def make_error_body(self, code, msg):
183191

184192
def make_msg(self, header, body=binary_type()):
185193
return header + uint32_pack(len(body)) + body
194+
195+
def test_successful_connection(self):
196+
c = self.make_connection()
197+
198+
# let it write the OptionsMessage
199+
c.handle_write(*self.null_handle_function_args)
200+
201+
# read in a SupportedMessage response
202+
header = self.make_header_prefix(SupportedMessage)
203+
options = self.make_options_body()
204+
self.get_socket(c).recv.return_value = self.make_msg(header, options)
205+
c.handle_read(*self.null_handle_function_args)
206+
207+
# let it write out a StartupMessage
208+
c.handle_write(*self.null_handle_function_args)
209+
210+
header = self.make_header_prefix(ReadyMessage, stream_id=1)
211+
self.get_socket(c).recv.return_value = self.make_msg(header)
212+
c.handle_read(*self.null_handle_function_args)
213+
214+
self.assertTrue(c.connected_event.is_set())
215+
return c

0 commit comments

Comments
 (0)