64 lines
2.4 KiB
Python
64 lines
2.4 KiB
Python
# © Crown-owned copyright 2025, Defence Science and Technology Laboratory UK
|
|
from primaite.simulator.network.container import Network
|
|
from primaite.simulator.network.hardware.nodes.host.computer import Computer
|
|
from primaite.simulator.network.hardware.nodes.host.host_node import NIC
|
|
from primaite.simulator.network.hardware.nodes.host.server import Server
|
|
from primaite.simulator.network.hardware.nodes.network.switch import Switch
|
|
|
|
|
|
def test_node_to_node_ping():
|
|
"""Tests two Computers are able to ping each other."""
|
|
network = Network()
|
|
|
|
client_1 = Computer(
|
|
hostname="client_1",
|
|
ip_address="192.168.1.10",
|
|
subnet_mask="255.255.255.0",
|
|
default_gateway="192.168.1.1",
|
|
start_up_duration=0,
|
|
)
|
|
client_1.power_on()
|
|
|
|
server_1 = Server(
|
|
hostname="server_1",
|
|
ip_address="192.168.1.11",
|
|
subnet_mask="255.255.255.0",
|
|
default_gateway="192.168.1.1",
|
|
start_up_duration=0,
|
|
)
|
|
server_1.power_on()
|
|
|
|
switch_1 = Switch(hostname="switch_1", start_up_duration=0)
|
|
switch_1.power_on()
|
|
|
|
network.connect(endpoint_a=client_1.network_interface[1], endpoint_b=switch_1.network_interface[1])
|
|
network.connect(endpoint_a=server_1.network_interface[1], endpoint_b=switch_1.network_interface[2])
|
|
|
|
assert client_1.ping("192.168.1.11")
|
|
|
|
|
|
def test_multi_nic():
|
|
"""Tests that Computers with multiple NICs can ping each other and the data go across the correct links."""
|
|
network = Network()
|
|
|
|
node_a = Computer(hostname="node_a", ip_address="192.168.0.10", subnet_mask="255.255.255.0", start_up_duration=0)
|
|
node_a.power_on()
|
|
|
|
node_b = Computer(hostname="node_b", ip_address="192.168.0.11", subnet_mask="255.255.255.0", start_up_duration=0)
|
|
node_b.power_on()
|
|
node_b.connect_nic(NIC(ip_address="10.0.0.12", subnet_mask="255.0.0.0"))
|
|
|
|
node_c = Computer(hostname="node_c", ip_address="10.0.0.13", subnet_mask="255.0.0.0", start_up_duration=0)
|
|
node_c.power_on()
|
|
|
|
network.connect(node_a.network_interface[1], node_b.network_interface[1])
|
|
network.connect(node_b.network_interface[2], node_c.network_interface[1])
|
|
|
|
assert node_a.ping(node_b.network_interface[1].ip_address)
|
|
|
|
assert node_c.ping(node_b.network_interface[2].ip_address)
|
|
|
|
assert not node_a.ping(node_b.network_interface[2].ip_address)
|
|
|
|
assert not node_a.ping(node_c.network_interface[1].ip_address)
|