#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_b_hostname: switch
endpoint_b_port: 1 # port 1 on switch
bandwidth: 100
- endpoint_a_hostname: computer_2
endpoint_a_port: 1 # port 1 on computer_2
endpoint_b_hostname: switch
endpoint_b_port: 2 # port 2 on switch
bandwidth: 100
``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``.
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
:param endpoint_b: The second endpoint to connect.
:type endpoint_b: WiredNetworkInterface
:param bandwidth: bandwidth of new link
:param bandwidth: bandwidth of new link, default of 100mbps
:type bandwidth: int
:raises RuntimeError: If any validation or runtime checks fail.
"""

View File

@@ -50,6 +50,7 @@ def create_office_lan(
num_pcs: int,
network: Optional[Network] = None,
include_router: bool = True,
bandwidth: int = 100,
) -> Network:
"""
Creates a 2-Tier or 3-Tier office local area network (LAN).
@@ -109,9 +110,11 @@ def create_office_lan(
switch.power_on()
network.add_node(switch)
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:
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
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
if num_of_switches > 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:
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
pc = Computer(
@@ -142,7 +147,7 @@ def create_office_lan(
# Connect the PC to the switch
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()
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_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
@@ -555,7 +555,7 @@ class Link(SimComponent):
endpoint_b: WiredNetworkInterface
"The second WiredNetworkInterface connected to the Link."
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
"The current load on the link in Mbps."

View File

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

View File

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