#2457 - Syncing changes made. Updates to documentation and tests

This commit is contained in:
Charlie Crane
2024-05-14 11:05:37 +01:00
parent 71684dc5f0
commit 74514e977d
6 changed files with 24 additions and 8 deletions

View File

@@ -64,10 +64,12 @@ this results in:
endpoint_a_port: 1 # port 1 on computer_1 endpoint_a_port: 1 # port 1 on computer_1
endpoint_b_hostname: switch endpoint_b_hostname: switch
endpoint_b_port: 1 # port 1 on switch endpoint_b_port: 1 # port 1 on switch
bandwidth: 100
- endpoint_a_hostname: computer_2 - endpoint_a_hostname: computer_2
endpoint_a_port: 1 # port 1 on computer_2 endpoint_a_port: 1 # port 1 on computer_2
endpoint_b_hostname: switch endpoint_b_hostname: switch
endpoint_b_port: 2 # port 2 on switch endpoint_b_port: 2 # port 2 on switch
bandwidth: 100
``ref`` ``ref``
^^^^^^^ ^^^^^^^
@@ -95,3 +97,7 @@ The ``hostname`` of the node which must be connected.
The port on ``endpoint_b_hostname`` which is to be connected to ``endpoint_a_port``. The port on ``endpoint_b_hostname`` which is to be connected to ``endpoint_a_port``.
This accepts an integer value e.g. if port 1 is to be connected, the configuration should be ``endpoint_b_port: 1`` This accepts an integer value e.g. if port 1 is to be connected, the configuration should be ``endpoint_b_port: 1``
``bandwidth``
This is an integer value specifying the allowed bandwidth across the connection.

View File

@@ -321,7 +321,7 @@ class Network(SimComponent):
:type endpoint_a: WiredNetworkInterface :type endpoint_a: WiredNetworkInterface
:param endpoint_b: The second endpoint to connect. :param endpoint_b: The second endpoint to connect.
:type endpoint_b: WiredNetworkInterface :type endpoint_b: WiredNetworkInterface
:param bandwidth: bandwidth of new link :param bandwidth: bandwidth of new link, default of 100mbps
:type bandwidth: int :type bandwidth: int
:raises RuntimeError: If any validation or runtime checks fail. :raises RuntimeError: If any validation or runtime checks fail.
""" """

View File

@@ -50,6 +50,7 @@ def create_office_lan(
num_pcs: int, num_pcs: int,
network: Optional[Network] = None, network: Optional[Network] = None,
include_router: bool = True, include_router: bool = True,
bandwidth: int = 100,
) -> Network: ) -> Network:
""" """
Creates a 2-Tier or 3-Tier office local area network (LAN). Creates a 2-Tier or 3-Tier office local area network (LAN).
@@ -109,9 +110,11 @@ def create_office_lan(
switch.power_on() switch.power_on()
network.add_node(switch) network.add_node(switch)
if num_of_switches > 1: if num_of_switches > 1:
network.connect(core_switch.network_interface[core_switch_port], switch.network_interface[24]) network.connect(
core_switch.network_interface[core_switch_port], switch.network_interface[24], bandwidth=bandwidth
)
else: else:
network.connect(router.network_interface[1], switch.network_interface[24]) network.connect(router.network_interface[1], switch.network_interface[24], bandwidth=bandwidth)
# Add PCs to the LAN and connect them to switches # Add PCs to the LAN and connect them to switches
for i in range(1, num_pcs + 1): for i in range(1, num_pcs + 1):
@@ -125,9 +128,11 @@ def create_office_lan(
# Connect the new switch to the router or core switch # Connect the new switch to the router or core switch
if num_of_switches > 1: if num_of_switches > 1:
core_switch_port += 1 core_switch_port += 1
network.connect(core_switch.network_interface[core_switch_port], switch.network_interface[24]) network.connect(
core_switch.network_interface[core_switch_port], switch.network_interface[24], bandwidth=bandwidth
)
else: else:
network.connect(router.network_interface[1], switch.network_interface[24]) network.connect(router.network_interface[1], switch.network_interface[24], bandwidth=bandwidth)
# Create and add a PC to the network # Create and add a PC to the network
pc = Computer( pc = Computer(
@@ -142,7 +147,7 @@ def create_office_lan(
# Connect the PC to the switch # Connect the PC to the switch
switch_port += 1 switch_port += 1
network.connect(switch.network_interface[switch_port], pc.network_interface[1]) network.connect(switch.network_interface[switch_port], pc.network_interface[1], bandwidth=bandwidth)
switch.network_interface[switch_port].enable() switch.network_interface[switch_port].enable()
return network return network

View File

@@ -547,7 +547,7 @@ class Link(SimComponent):
:param endpoint_a: The first NIC or SwitchPort connected to the Link. :param endpoint_a: The first NIC or SwitchPort connected to the Link.
:param endpoint_b: The second NIC or SwitchPort connected to the Link. :param endpoint_b: The second NIC or SwitchPort connected to the Link.
:param bandwidth: The bandwidth of the Link in Mbps (default is 100 Mbps). :param bandwidth: The bandwidth of the Link in Mbps.
""" """
endpoint_a: WiredNetworkInterface endpoint_a: WiredNetworkInterface
@@ -555,7 +555,7 @@ class Link(SimComponent):
endpoint_b: WiredNetworkInterface endpoint_b: WiredNetworkInterface
"The second WiredNetworkInterface connected to the Link." "The second WiredNetworkInterface connected to the Link."
bandwidth: float bandwidth: float
"The bandwidth of the Link in Mbps (default is 100 Mbps)." "The bandwidth of the Link in Mbps."
current_load: float = 0.0 current_load: float = 0.0
"The current load on the link in Mbps." "The current load on the link in Mbps."

View File

@@ -234,7 +234,9 @@ simulation:
endpoint_a_port: 1 endpoint_a_port: 1
endpoint_b_hostname: client_1 endpoint_b_hostname: client_1
endpoint_b_port: 1 endpoint_b_port: 1
bandwidth: 200
- endpoint_a_hostname: switch_1 - endpoint_a_hostname: switch_1
endpoint_a_port: 2 endpoint_a_port: 2
endpoint_b_hostname: client_2 endpoint_b_hostname: client_2
endpoint_b_port: 1 endpoint_b_port: 1
bandwidth: 200

View File

@@ -43,3 +43,6 @@ def test_basic_config():
# client 3 should not be online # client 3 should not be online
client_3: Computer = network.get_node_by_hostname("client_3") client_3: Computer = network.get_node_by_hostname("client_3")
assert client_3.operating_state == NodeOperatingState.OFF assert client_3.operating_state == NodeOperatingState.OFF
for link in network.links:
assert network.links[link].bandwidth == 200