Source code for tests.unit_tests.network.test_network
import pytest
from yawning_titan.exceptions import NetworkError
from yawning_titan.networks.network import Network
from yawning_titan.networks.network_db import default_18_node_network
from yawning_titan.networks.node import Node
[docs]@pytest.mark.unit_test
def test_reset_high_value_nodes_randomly():
"""Test the random setting of high value nodes in a network."""
network = default_18_node_network()
assert len(network.high_value_nodes) == 1 # starts with 1 entry node set
network.num_of_random_high_value_nodes = 3
network.reset_random_high_value_nodes()
assert len(network.high_value_nodes) == 3
# resetting hvn's overwrites the set of hvn's
network.num_of_random_high_value_nodes = 1
network.reset_random_high_value_nodes()
assert len(network.high_value_nodes) == 1
# setting too many hvn's overwrites the set number of hvn's to 15% num nodes
network.num_of_random_high_value_nodes = 18
network.reset_random_high_value_nodes()
assert len(network.high_value_nodes) == 3
[docs]@pytest.mark.unit_test
def test_reset_entry_nodes_randomly():
"""Test the random setting of high value nodes in a network."""
network = default_18_node_network()
assert len(network.entry_nodes) == 1 # starts with 1 entry node set
network.num_of_random_entry_nodes = 3
network.reset_random_entry_nodes()
assert len(network.entry_nodes) == 3
# resetting entry nodes overwrites the set of entry nodes
network.num_of_random_entry_nodes = 1
network.reset_random_entry_nodes()
assert len(network.entry_nodes) == 1
# setting too many entry nodes has no effect
network.num_of_random_entry_nodes = 18
network.reset_random_entry_nodes()
assert len(network.entry_nodes) == 18
[docs]@pytest.mark.unit_test
def test_setting_high_value_nodes_before_entry_nodes():
"""Test setting high value node before entry nodes."""
router_1 = Node()
switch_1 = Node()
switch_2 = Node()
pc_1 = Node()
pc_2 = Node()
pc_3 = Node()
pc_4 = Node()
pc_5 = Node()
pc_6 = Node()
server_1 = Node()
server_2 = Node()
network = Network(
set_random_entry_nodes=True,
num_of_random_entry_nodes=3,
set_random_high_value_nodes=True,
num_of_random_high_value_nodes=3,
set_random_vulnerabilities=True,
)
network.add_node(router_1)
network.add_node(switch_1)
network.add_node(switch_2)
network.add_node(pc_1)
network.add_node(pc_2)
network.add_node(pc_3)
network.add_node(pc_4)
network.add_node(pc_5)
network.add_node(pc_6)
network.add_node(server_1)
network.add_node(server_2)
network.add_edge(router_1, switch_1)
network.add_edge(switch_1, server_1)
network.add_edge(switch_1, pc_1)
network.add_edge(switch_1, pc_2)
network.add_edge(switch_1, pc_3)
network.add_edge(router_1, switch_2)
network.add_edge(switch_2, server_2)
network.add_edge(switch_2, pc_4)
network.add_edge(switch_2, pc_5)
network.add_edge(switch_2, pc_6)
with pytest.raises(NetworkError):
network.reset_random_high_value_nodes()