Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions tests/advertizerIntegrationTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,17 +108,17 @@ def test_sends_hello_when_schedules_advertisement_once(self):
# Given
context = Context()
sender = RadioSender(context)
_advertizer = DefaultAdvertizer(sender)
advertizer = DefaultAdvertizer(sender)
timer = ReusableTimer()
messages = []

with ScheduledAdvertizer(_advertizer, timer) as advertizer, DishReceiver(context) as test_receiver:
with ScheduledAdvertizer(advertizer, timer) as scheduled_advertizer, DishReceiver(context) as test_receiver:
test_receiver.start(GROUP.hello())
test_receiver.register(lambda message: messages.append(message))
advertizer.start(GROUP)
scheduled_advertizer.start(GROUP)

# When
advertizer.schedule(self.SERVICE_INFO, interval=0.01, one_shot=True)
scheduled_advertizer.schedule(self.SERVICE_INFO, interval=0.01, one_shot=True)

wait_for_assertion(0.1, lambda: self.assertEqual(1, len(messages)))

Expand All @@ -129,17 +129,17 @@ def test_sends_hello_when_schedules_advertisement_periodically(self):
# Given
context = Context()
sender = RadioSender(context)
_advertizer = DefaultAdvertizer(sender)
advertizer = DefaultAdvertizer(sender)
timer = ReusableTimer()
messages = []

with ScheduledAdvertizer(_advertizer, timer) as advertizer, DishReceiver(context) as test_receiver:
with ScheduledAdvertizer(advertizer, timer) as scheduled_advertizer, DishReceiver(context) as test_receiver:
test_receiver.start(GROUP.hello())
test_receiver.register(lambda message: messages.append(message))
advertizer.start(GROUP)
scheduled_advertizer.start(GROUP)

# When
advertizer.schedule(self.SERVICE_INFO, interval=0.01)
scheduled_advertizer.schedule(self.SERVICE_INFO, interval=0.01)

# Then
wait_for_assertion(0.1, lambda: self.assertEqual(5, len(messages)))
Expand Down
16 changes: 8 additions & 8 deletions tests/discovererIntegrationTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,17 @@ def test_sends_query_when_schedules_discovery_once(self):
context = Context()
sender = RadioSender(context)
receiver = DishReceiver(context)
_discoverer = DefaultDiscoverer(sender, receiver)
discoverer = DefaultDiscoverer(sender, receiver)
timer = ReusableTimer()
messages = []

with ScheduledDiscoverer(_discoverer, timer) as discoverer, DishReceiver(context) as test_receiver:
with ScheduledDiscoverer(discoverer, timer) as scheduled_discoverer, DishReceiver(context) as test_receiver:
test_receiver.start(GROUP.query())
test_receiver.register(lambda message: messages.append(message))
discoverer.start(GROUP)
scheduled_discoverer.start(GROUP)

# When
discoverer.schedule(SERVICE_QUERY, interval=0.01, one_shot=True)
scheduled_discoverer.schedule(SERVICE_QUERY, interval=0.01, one_shot=True)

wait_for_assertion(0.1, lambda: self.assertEqual(1, len(messages)))

Expand All @@ -117,17 +117,17 @@ def test_sends_query_when_schedules_discovery_periodically(self):
context = Context()
sender = RadioSender(context)
receiver = DishReceiver(context)
_discoverer = DefaultDiscoverer(sender, receiver)
discoverer = DefaultDiscoverer(sender, receiver)
timer = ReusableTimer()
messages = []

with ScheduledDiscoverer(_discoverer, timer) as discoverer, DishReceiver(context) as test_receiver:
with ScheduledDiscoverer(discoverer, timer) as scheduled_discoverer, DishReceiver(context) as test_receiver:
test_receiver.start(GROUP.query())
test_receiver.register(lambda message: messages.append(message))
discoverer.start(GROUP)
scheduled_discoverer.start(GROUP)

# When
discoverer.schedule(SERVICE_QUERY, interval=0.01)
scheduled_discoverer.schedule(SERVICE_QUERY, interval=0.01)

# Then
wait_for_assertion(0.1, lambda: self.assertEqual(5, len(messages)))
Expand Down
34 changes: 17 additions & 17 deletions tests/dishReceiverTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,34 +23,34 @@ def setUp(self):

def test_raises_error_when_restarted(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)

with DishReceiver(context) as receiver:
receiver.start(group_access)
receiver.start(group)

# When, Then
with self.assertRaises(RuntimeError):
receiver.start(group_access)
receiver.start(group)

def test_raises_error_when_fails_to_bind_socket(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.bind.side_effect = ZMQError(1, "Bind failed")
receiver = DishReceiver(context)

# When, Then
with self.assertRaises(ZMQError):
receiver.start(group_access)
receiver.start(group)

def test_closes_socket_on_exit(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)

with DishReceiver(context) as receiver:
receiver.start(group_access)
receiver.start(group)

# When

Expand All @@ -59,10 +59,10 @@ def test_closes_socket_on_exit(self):

def test_closes_socket_when_stopped(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
receiver = DishReceiver(context)
receiver.start(group_access)
receiver.start(group)

# When
receiver.stop()
Expand All @@ -72,12 +72,12 @@ def test_closes_socket_when_stopped(self):

def test_raises_error_when_fails_to_close_socket_on_stop(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.close.side_effect = [ZMQError(1, "Close failed"), None]

with DishReceiver(context) as receiver:
receiver.start(group_access)
receiver.start(group)

# When, Then
with self.assertRaises(ZMQError):
Expand Down Expand Up @@ -110,7 +110,7 @@ def test_deregisters_handler(self):

def test_calls_registered_handler_on_message(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.recv_json.return_value = SERVICE_INFO.__dict__
handler = MagicMock(spec=OnMessage)
Expand All @@ -123,14 +123,14 @@ def test_calls_registered_handler_on_message(self):
receiver.register(handler)

# When
receiver.start(group_access)
receiver.start(group)

# Then
wait_for_assertion(0.1, lambda: handler.assert_called_once_with(SERVICE_INFO.__dict__))

def test_handles_message_receive_error_gracefully(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.recv_json.side_effect = ZMQError(1, "Receive failed")
handler = MagicMock(spec=OnMessage)
Expand All @@ -143,14 +143,14 @@ def test_handles_message_receive_error_gracefully(self):
receiver.register(handler)

# When
receiver.start(group_access)
receiver.start(group)

# Then
handler.assert_not_called()

def test_handles_handler_execution_error_gracefully(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.recv_json.return_value = SERVICE_INFO.__dict__
handler = MagicMock(spec=OnMessage)
Expand All @@ -164,7 +164,7 @@ def test_handles_handler_execution_error_gracefully(self):
receiver.register(handler)

# When
receiver.start(group_access)
receiver.start(group)

# Then
wait_for_assertion(0.1, lambda: handler.assert_called_once_with(SERVICE_INFO.__dict__))
Expand Down
38 changes: 19 additions & 19 deletions tests/radioSenderTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,33 +23,33 @@ def setUp(self):

def test_raises_error_when_restarted(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)

# When, Then
with self.assertRaises(RuntimeError):
sender.start(group_access)
sender.start(group)

def test_raises_error_when_fails_to_connect_socket(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.connect.side_effect = ZMQError(1, "Connect failed")
sender = RadioSender(context)

# When, Then
with self.assertRaises(ZMQError):
sender.start(group_access)
sender.start(group)

def test_closes_socket_on_exit(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)

with RadioSender(context) as sender:
sender.start(group_access)
sender.start(group)

# When

Expand All @@ -58,10 +58,10 @@ def test_closes_socket_on_exit(self):

def test_closes_socket_when_stopped(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)

# When
sender.stop()
Expand All @@ -71,22 +71,22 @@ def test_closes_socket_when_stopped(self):

def test_raises_error_when_fails_to_close_socket_on_stop(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
context.socket.return_value.close.side_effect = ZMQError(1, "Close failed")
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)

# When, Then
with self.assertRaises(ZMQError):
sender.stop()

def test_sends_message_when_convertible_to_dict(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)

# When
sender.send(SERVICE_INFO)
Expand All @@ -96,10 +96,10 @@ def test_sends_message_when_convertible_to_dict(self):

def test_sends_message_when_type_is_dict(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)

# When
sender.send(SERVICE_INFO.__dict__)
Expand All @@ -109,10 +109,10 @@ def test_sends_message_when_type_is_dict(self):

def test_does_not_send_message_when_not_serializable(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)

# When
sender.send("not serializable message")
Expand All @@ -133,10 +133,10 @@ def test_does_not_send_message_when_not_started(self):

def test_handles_send_message_error_gracefully(self):
# Given
group_access = GROUP.hello()
group = GROUP.hello()
context = MagicMock(spec=Context)
sender = RadioSender(context)
sender.start(group_access)
sender.start(group)
context.socket.return_value.send_json.side_effect = ZMQError(1, "Send failed")

# When
Expand Down
26 changes: 7 additions & 19 deletions tests/receiverIntegrationTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

from context_logger import setup_logging
from test_utility import wait_for_assertion
from zmq import Context
from zmq import Context, RADIO

from hello import ServiceInfo, Group, DishReceiver, RadioSender
from hello import ServiceInfo, Group, DishReceiver

GROUP = Group('test-group', 'udp://239.0.0.1:5555')
SERVICE_INFO = ServiceInfo('test-service', 'test-role', {'test': 'http://localhost:8080'})
Expand All @@ -20,31 +20,19 @@ def setUpClass(cls):
def setUp(self):
print()

def test_raises_error_when_restarted(self):
# Given
group_access = GROUP.hello()
context = Context()

with DishReceiver(context) as receiver:
receiver.start(group_access)

# When, Then
with self.assertRaises(RuntimeError):
receiver.start(group_access)

def test_receives_message(self):
# Given
group_access = GROUP.hello()
context = Context()
messages = []

with DishReceiver(context) as receiver, RadioSender(context) as test_sender:
with DishReceiver(context) as receiver, context.socket(RADIO) as radio:
group = GROUP.hello()
radio.connect(group.url)
receiver.register(lambda message: messages.append(message))
receiver.start(group_access)
test_sender.start(group_access)
receiver.start(group)

# When
test_sender.send(SERVICE_INFO)
radio.send_json(SERVICE_INFO.__dict__, group=group.name)

wait_for_assertion(0.1, lambda: self.assertEqual(1, len(messages)))

Expand Down
Loading
Loading