94 lines
3.1 KiB
Python
94 lines
3.1 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 = Computer.from_config(
|
|
config={
|
|
"type": "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 = Server.from_config(
|
|
config={
|
|
"type": "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 = Switch.from_config(config={"type": "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 = Computer.from_config(
|
|
config={
|
|
"type": "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 = Computer.from_config(
|
|
config={
|
|
"type": "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 = Computer.from_config(
|
|
config={
|
|
"type": "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)
|