Add tests for network node adding/removal

This commit is contained in:
Marek Wolan
2023-08-24 10:26:17 +01:00
parent a82ffb9747
commit 4077eb3a5c
3 changed files with 60 additions and 2 deletions

View File

@@ -52,7 +52,9 @@ class NetworkContainer(SimComponent):
:type node: Node
"""
if node in self:
_LOGGER.warning(f"Can't add node {node}. It is already in the network.")
msg = f"Can't add node {node}. It is already in the network."
_LOGGER.warning(msg)
raise RuntimeWarning(msg)
self.nodes[node.uuid] = node
node.parent = self
@@ -64,7 +66,9 @@ class NetworkContainer(SimComponent):
:type node: Node
"""
if node not in self:
_LOGGER.warning(f"Can't remove node {node}. It's not in the network.")
msg = f"Can't remove node {node}. It's not in the network."
_LOGGER.warning(msg)
raise RuntimeWarning(msg)
del self.nodes[node.uuid]
del node.parent # misleading?

View File

@@ -0,0 +1,38 @@
import pytest
from primaite.simulator.network.container import NetworkContainer
from primaite.simulator.network.hardware.base import Node
def test_adding_removing_nodes():
"""Check that we can create and add a node to a network."""
net = NetworkContainer()
n1 = Node(hostname="computer")
net.add_node(n1)
assert n1.parent is net
assert n1 in net
net.remove_node(n1)
assert n1.parent is None
assert n1 not in net
def test_readding_node():
"""Check that warning is raised when readding a node."""
net = NetworkContainer()
n1 = Node(hostname="computer")
net.add_node(n1)
with pytest.raises(RuntimeWarning):
net.add_node(n1)
assert n1.parent is net
assert n1 in net
def test_removing_nonexistent_node():
"""Check that warning is raised when trying to remove a node that is not in the network."""
net = NetworkContainer()
n1 = Node(hostname="computer")
with pytest.raises(RuntimeWarning):
net.remove_node(n1)
assert n1.parent is None
assert n1 not in net

View File

@@ -0,0 +1,16 @@
import json
from primaite.simulator.network.container import NetworkContainer
def test_creating_container():
"""Check that we can create a network container"""
net = NetworkContainer()
assert net.nodes and net.links
def test_describe_state():
"""Check that we can describe network state without raising errors, and that the result is JSON serialisable."""
net = NetworkContainer()
state = net.describe_state()
json.dumps(state) # if this function call raises an error, the test fails, state was not JSON-serialisable