Skip to content

Commit

Permalink
Refactor bbmcast tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mraspaud committed Apr 23, 2024
1 parent ce0f72e commit 8351a86
Showing 1 changed file with 40 additions and 2 deletions.
42 changes: 40 additions & 2 deletions posttroll/tests/test_bbmcast.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import random
from socket import SO_BROADCAST, SOL_SOCKET, error
from threading import Thread
import os

import pytest

Expand All @@ -47,18 +48,24 @@ def test_mcast_sender_works_with_valid_addresses():

socket.close()

def test_mcast_sender_uses_broadcast_for_0s():
"""Test mcast_sender uses broadcast for 0.0.0.0."""
mcgroup = "0.0.0.0"
socket, group = bbmcast.mcast_sender(mcgroup)
assert group == "<broadcast>"
assert socket.getsockopt(SOL_SOCKET, SO_BROADCAST) == 1
socket.close()

def test_mcast_sender_uses_broadcast_for_255s():
"""Test mcast_sender uses broadcast for 255.255.255.255."""
mcgroup = "255.255.255.255"
socket, group = bbmcast.mcast_sender(mcgroup)
assert group == "<broadcast>"
assert socket.getsockopt(SOL_SOCKET, SO_BROADCAST) == 1
socket.close()

def test_mcast_sender_raises_for_invalit_adresses():
"""Test mcast_sender uses broadcast for 0.0.0.0."""
mcgroup = (str(random.randint(0, 223)) + "." +
str(random.randint(0, 255)) + "." +
str(random.randint(0, 255)) + "." +
Expand Down Expand Up @@ -111,7 +118,11 @@ def test_mcast_receiver_works_with_valid_addresses():
bbmcast.mcast_receiver(mcport, mcgroup)


def test_mcast_send_recv(reraise):
@pytest.mark.skipif(
os.getenv("DISABLED_MULTICAST") != None,
reason="Multicast tests disabled.",
)
def test_multicast_roundtrip(reraise):
"""Test sending and receiving a multicast message."""
mcgroup = bbmcast.DEFAULT_MC_GROUP
mcport = 5555
Expand All @@ -120,8 +131,8 @@ def test_mcast_send_recv(reraise):
message = "Ho Ho Ho!"

def check_message(sock, message):
data, _ = sock.recvfrom(1024)
with reraise:
data, _ = sock.recvfrom(1024)
assert data.decode() == message

snd_socket, snd_group = bbmcast.mcast_sender(mcgroup)
Expand All @@ -135,6 +146,32 @@ def check_message(sock, message):
rec_socket.close()
snd_socket.close()


def test_broadcast_roundtrip(reraise):
"""Test sending and receiving a broadcast message."""
mcgroup = "0.0.0.0"
mcport = 5555
rec_socket, rec_group = bbmcast.mcast_receiver(mcport, mcgroup)

message = "Ho Ho Ho!"

def check_message(sock, message):
with reraise:
data, _ = sock.recvfrom(1024)
assert data.decode() == message

snd_socket, snd_group = bbmcast.mcast_sender(mcgroup)

thr = Thread(target=check_message, args=(rec_socket, message))
thr.start()

snd_socket.sendto(message.encode(), (mcgroup, mcport))

thr.join()
rec_socket.close()
snd_socket.close()


def test_posttroll_mc_group_is_used():
"""Test that configured mc_group is used."""
from posttroll import config
Expand All @@ -144,6 +181,7 @@ def test_posttroll_mc_group_is_used():
socket.close()
assert group == "226.0.0.13"


def test_pytroll_mc_group_is_deprecated(monkeypatch):
"""Test that PYTROLL_MC_GROUP is used but pending deprecation."""
other_group = "226.0.0.13"
Expand Down

0 comments on commit 8351a86

Please sign in to comment.