Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
GDYendell committed Jun 7, 2016
1 parent 95acfe9 commit a3b1a77
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 73 deletions.
1 change: 1 addition & 0 deletions malcolm/wscomms/wsclientcomms.py
Expand Up @@ -26,6 +26,7 @@ def __init__(self, name, process, url):
# TODO: Are we starting one or more IOLoops here?
self.loop = IOLoop.current()
self.conn = websocket_connect(url, on_message_callback=self.on_message)
self._loop_spawned = None

def on_message(self, message):
"""
Expand Down
108 changes: 54 additions & 54 deletions tests/test_wscomms/test_wsclientcomms.py
Expand Up @@ -14,81 +14,81 @@ class TestWSServerComms(unittest.TestCase):
def setUp(self):
self.p = MagicMock()

@patch('malcolm.wscomms.wsclientcomms.Application')
@patch('malcolm.wscomms.wsclientcomms.websocket_connect')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_init(self, _, app_mock):
self.WS = WSClientComms("TestWebSocket", self.p, 1)
def test_init(self, ioloop_mock, connect_mock):
self.WS = WSClientComms("TestWebSocket", self.p, "test/url")

self.assertEqual("TestWebSocket", self.WS.name)
self.assertEqual(self.p, self.WS.process)
self.assertEqual(app_mock(), self.WS.WSApp)

@patch('malcolm.wscomms.wsclientcomms.Application.listen')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_setup(self, ioloop_mock, listen_mock):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock

self.WS = WSClientComms("TestWebSocket", self.p, 1)

listen_mock.assert_called_once_with(1)
self.assertEqual("test/url", self.WS.url)
self.assertEqual(ioloop_mock.current(), self.WS.loop)
self.assertEqual(self.WS.process,
self.WS.WSApp.handlers[0][1][0].handler_class.process)

@patch('malcolm.wscomms.wsclientcomms.Application.listen')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_start(self, ioloop_mock, _):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock
self.WS = WSClientComms("TestWebSocket", self.p, 1)
self.WS.start_recv_loop()

loop_mock.start.assert_called_once_with()

@patch('malcolm.wscomms.wsclientcomms.Application.listen')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_stop(self, ioloop_mock, _):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock
self.WS = WSClientComms("TestWebSocket", self.p, 1)
self.WS.stop_recv_loop()

loop_mock.stop.assert_called_once_with()
connect_mock.assert_called_once_with(self.WS.url, on_message_callback=self.WS.on_message)
self.assertEqual(connect_mock(), self.WS.conn)
self.assertIsNone(self.WS._loop_spawned)

@patch('malcolm.wscomms.wsclientcomms.Response')
@patch('malcolm.wscomms.wsclientcomms.json')
@patch('malcolm.wscomms.wsclientcomms.Application.listen')
@patch('malcolm.wscomms.wsclientcomms.websocket_connect')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_MWSH_on_message(self, _, _1, json_mock, response_mock):
self.WS = WSClientComms("TestWebSocket", self.p, 1)
def test_on_message(self, _, _1, json_mock, response_mock):
self.WS = WSClientComms("TestWebSocket", self.p, "test/url")

message_dict = dict(name="TestMessage")
json_mock.loads.return_value = message_dict

response = MagicMock()
response.context = self.WS.WSApp.handlers[0][1][0].handler_class
response.id_ = 1
response_mock.from_dict.return_value = response
request_mock = MagicMock()
self.WS.requests[1] = request_mock

m = MagicMock()
MWSH = MalcolmWebSocketHandler(m, m)
self.WS.WSApp.handlers[0][1][0].handler_class.on_message(
MWSH, "TestMessage")
self.WS.on_message("TestMessage")

json_mock.loads.assert_called_once_with("TestMessage",
object_pairs_hook=OrderedDict())
object_pairs_hook=OrderedDict)
response_mock.from_dict.assert_called_once_with(message_dict)
self.p.q.put.assert_called_once_with(response)
request_mock.response_queue.put.assert_called_once_with(response)

@patch('malcolm.wscomms.wsclientcomms.json')
@patch('malcolm.wscomms.wsclientcomms.Application.listen')
@patch('malcolm.wscomms.wsclientcomms.websocket_connect')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_send_to_server(self, _, connect_mock, json_mock):
self.WS = WSClientComms("TestWebSocket", self.p, "test/url")
result_mock = MagicMock()
connect_mock().result.return_value = result_mock
dumps_mock = MagicMock()
json_mock.dumps.return_value = dumps_mock

request_mock = MagicMock()
self.WS.send_to_server(request_mock)

json_mock.dumps.assert_called_once_with(request_mock.to_dict())
result_mock.write_message.assert_called_once_with(dumps_mock)

@patch('malcolm.wscomms.wsclientcomms.websocket_connect')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_start(self, ioloop_mock, _):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock
self.WS = WSClientComms("TestWebSocket", self.p, "test/url")
spawn_mock = MagicMock()
self.WS.process.spawn.return_value = spawn_mock

self.WS.start_recv_loop()

self.WS.process.spawn.assert_called_once_with(loop_mock.start)
self.assertEqual(spawn_mock, self.WS._loop_spawned)

@patch('malcolm.wscomms.wsclientcomms.websocket_connect')
@patch('malcolm.wscomms.wsclientcomms.IOLoop')
def test_send_to_client(self, _, _2, json_mock):
self.WS = WSClientComms("TestWebSocket", self.p, 1)
def test_stop(self, ioloop_mock, _):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock

response_mock = MagicMock()
self.WS.send_to_server(response_mock)
self.WS = WSClientComms("TestWebSocket", self.p, "test/url")
self.WS._loop_spawned = MagicMock()
self.WS.stop_recv_loop()

json_mock.dumps.assert_called_once_with(response_mock.to_dict())
response_mock.context.write_message.assert_called_once_with(
json_mock.dumps())
loop_mock.add_callback.assert_called_once_with(ioloop_mock.current().stop)
self.WS._loop_spawned.wait.assert_called_once_with()
36 changes: 17 additions & 19 deletions tests/test_wscomms/test_wsservercomms.py
Expand Up @@ -15,29 +15,25 @@ class TestWSServerComms(unittest.TestCase):
def setUp(self):
self.p = MagicMock()

@patch('malcolm.wscomms.wsservercomms.Application')
@patch('malcolm.wscomms.wsservercomms.HTTPServer')
@patch('malcolm.wscomms.wsservercomms.IOLoop')
def test_init(self, _, app_mock):
def test_init(self, ioloop_mock, server_mock):
self.WS = WSServerComms("TestWebSocket", self.p, 1)

self.assertEqual("TestWebSocket", self.WS.name)
self.assertEqual(self.p, self.WS.process)
self.assertEqual(app_mock(), self.WS.WSApp)
self.assertIsNone(self.WS._loop_spawned)
self.assertEqual(server_mock(), self.WS.server)
self.assertEqual(ioloop_mock.current(), self.WS.loop)

@patch('malcolm.wscomms.wsservercomms.Application.listen')
@patch('malcolm.wscomms.wsservercomms.HTTPServer.listen')
@patch('malcolm.wscomms.wsservercomms.IOLoop')
def test_setup(self, ioloop_mock, listen_mock):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock

def test_listen_called(self, ioloop_mock, listen_mock):
self.WS = WSServerComms("TestWebSocket", self.p, 1)

listen_mock.assert_called_once_with(1)
self.assertEqual(ioloop_mock.current(), self.WS.loop)
self.assertEqual(self.WS,
self.WS.WSApp.handlers[0][1][0].handler_class.servercomms)

@patch('malcolm.wscomms.wsservercomms.Application.listen')
@patch('malcolm.wscomms.wsservercomms.HTTPServer.listen')
@patch('malcolm.wscomms.wsservercomms.IOLoop')
def test_start(self, _, _2):
spawn_mock = MagicMock()
Expand All @@ -48,22 +44,24 @@ def test_start(self, _, _2):

self.assertEqual(spawn_mock, self.WS._loop_spawned)

@patch('malcolm.wscomms.wsservercomms.Application.listen')
@patch('malcolm.wscomms.wsservercomms.HTTPServer')
@patch('malcolm.wscomms.wsservercomms.IOLoop')
def test_stop(self, ioloop_mock, _):
def test_stop(self, ioloop_mock, server_mock):
loop_mock = MagicMock()
ioloop_mock.current.return_value = loop_mock

self.WS = WSServerComms("TestWebSocket", self.p, 1)
self.WS._loop_spawned = MagicMock()
self.WS.stop_recv_loop()

loop_mock.add_callback.assert_called_once_with(loop_mock.stop)
call_args = [call[0][0] for call in loop_mock.add_callback.call_args_list]
self.assertIn(server_mock().stop, call_args)
self.assertIn(ioloop_mock.current().stop, call_args)
self.WS._loop_spawned.wait.assert_called_once_with()

@patch('malcolm.wscomms.wsservercomms.Request')
@patch('malcolm.wscomms.wsservercomms.json')
@patch('malcolm.wscomms.wsservercomms.Application.listen')
@patch('malcolm.wscomms.wsservercomms.HTTPServer.listen')
@patch('malcolm.wscomms.wsservercomms.IOLoop')
def test_MWSH_on_message(self, _, _1, json_mock, request_mock):
self.WS = WSServerComms("TestWebSocket", self.p, 1)
Expand All @@ -72,12 +70,12 @@ def test_MWSH_on_message(self, _, _1, json_mock, request_mock):
json_mock.loads.return_value = message_dict

request = MagicMock()
request.context = self.WS.WSApp.handlers[0][1][0].handler_class
request.context = self.WS.server.request_callback.handlers[0][1][0].handler_class
request_mock.from_dict.return_value = request

m = MagicMock()
MWSH = MalcolmWebSocketHandler(m, m)
self.WS.WSApp.handlers[0][1][0].handler_class.on_message(
self.WS.server.request_callback.handlers[0][1][0].handler_class.on_message(
MWSH, "TestMessage")

json_mock.loads.assert_called_once_with("TestMessage",
Expand All @@ -86,7 +84,7 @@ def test_MWSH_on_message(self, _, _1, json_mock, request_mock):
self.p.handle_request.assert_called_once_with(request)

@patch('malcolm.wscomms.wsservercomms.json')
@patch('malcolm.wscomms.wsservercomms.Application.listen')
@patch('malcolm.wscomms.wsservercomms.HTTPServer.listen')
@patch('malcolm.wscomms.wsservercomms.IOLoop')
def test_send_to_client(self, _, _2, json_mock):
self.WS = WSServerComms("TestWebSocket", self.p, 1)
Expand Down

0 comments on commit a3b1a77

Please sign in to comment.