#2248 - Removed redundant code and added more documentation from PR suggestions
This commit is contained in:
@@ -21,24 +21,42 @@ NetworkInterface
|
|||||||
|
|
||||||
Node
|
Node
|
||||||
====
|
====
|
||||||
|
The Node class stands as a central component in ``base.py``, acting as the superclass for all network nodes within a
|
||||||
|
PrimAITE simulation.
|
||||||
|
|
||||||
The Node class is the most crucial component defined in base.py, serving as the parent class for all nodes within a
|
|
||||||
PrimAITE network simulation.
|
|
||||||
|
|
||||||
It encapsulates the following key attributes and behaviors:
|
|
||||||
|
|
||||||
- ``hostname`` - The node's hostname on the network.
|
Node Attributes
|
||||||
- ``network_interfaces`` - Dict of NetworkInterface objects attached to the node.
|
---------------
|
||||||
- ``operating_state`` - The hardware state (on/off) of the node.
|
|
||||||
- ``sys_log`` - System log to record node events.
|
|
||||||
- ``session_manager`` - Manages user sessions on the node.
|
- **hostname**: The network hostname of the node.
|
||||||
- ``software_manager`` - Manages software and services installed on the node.
|
- **operating_state**: Indicates the current hardware state of the node.
|
||||||
- ``connect_nic()`` - Connects a NetworkInterface to the node.
|
- **network_interfaces**: Maps interface names to NetworkInterface objects on the node.
|
||||||
- ``disconnect_nic()`` - Disconnects a NetworkInterface from the node.
|
- **network_interface**: Maps port IDs to ``NetworkInterface`` objects on the node.
|
||||||
- ``receive_frame()`` - Receive and process an incoming network frame.
|
- **dns_server**: Specifies DNS servers for domain name resolution.
|
||||||
- ``apply_timestep()`` - Progresses node state for a simulation timestep.
|
- **start_up_duration**: The time it takes for the node to become fully operational after being powered on.
|
||||||
- ``power_on()`` - Powers on the node and enables NICs.
|
- **shut_down_duration**: The time required for the node to properly shut down.
|
||||||
- ``power_off()`` - Powers off the node and disables NICs.
|
- **sys_log**: A system log for recording events related to the node.
|
||||||
|
- **session_manager**: Manages user sessions within the node.
|
||||||
|
- **software_manager**: Controls the installation and management of software and services on the node.
|
||||||
|
|
||||||
|
Node Behaviours/Functions
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
|
||||||
|
- **connect_nic()**: Connects a ``NetworkInterface`` to the node for network communication.
|
||||||
|
- **disconnect_nic()**: Removes a ``NetworkInterface`` from the node.
|
||||||
|
- **receive_frame()**: Handles the processing of incoming network frames.
|
||||||
|
- **apply_timestep()**: Advances the state of the node according to the simulation timestep.
|
||||||
|
- **power_on()**: Initiates the node, enabling all connected Network Interfaces and starting all Services and
|
||||||
|
Applications, taking into account the `start_up_duration`.
|
||||||
|
- **power_off()**: Stops the node's operations, adhering to the `shut_down_duration`.
|
||||||
|
- **ping()**: Sends ICMP echo requests to a specified IP address to test connectivity.
|
||||||
|
- **has_enabled_network_interface()**: Checks if the node has any network interfaces enabled, facilitating network
|
||||||
|
communication.
|
||||||
|
- **show()**: Provides a summary of the node's current state, including network interfaces, operational status, and
|
||||||
|
other key attributes.
|
||||||
|
|
||||||
|
|
||||||
The Node class handles installation of system software, network connectivity, frame processing, system logging, and
|
The Node class handles installation of system software, network connectivity, frame processing, system logging, and
|
||||||
|
|||||||
@@ -725,10 +725,6 @@ class Node(SimComponent):
|
|||||||
self._install_system_software()
|
self._install_system_software()
|
||||||
self.set_original_state()
|
self.set_original_state()
|
||||||
|
|
||||||
# def model_post_init(self, __context: Any) -> None:
|
|
||||||
# self._install_system_software()
|
|
||||||
# self.set_original_state()
|
|
||||||
|
|
||||||
def set_original_state(self):
|
def set_original_state(self):
|
||||||
"""Sets the original state."""
|
"""Sets the original state."""
|
||||||
for software in self.software_manager.software.values():
|
for software in self.software_manager.software.values():
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ class PacketCapture:
|
|||||||
|
|
||||||
def capture_outbound(self, frame): # noqa - I'll have a circular import and cant use if TYPE_CHECKING ;(
|
def capture_outbound(self, frame): # noqa - I'll have a circular import and cant use if TYPE_CHECKING ;(
|
||||||
"""
|
"""
|
||||||
Capture an inbound Frame and log it.
|
Capture an outbound Frame and log it.
|
||||||
|
|
||||||
:param frame: The PCAP frame to capture.
|
:param frame: The PCAP frame to capture.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -52,19 +52,3 @@ def test_handling_get_request_home_page(web_server):
|
|||||||
|
|
||||||
response: HttpResponsePacket = web_server_service._handle_get_request(payload=payload)
|
response: HttpResponsePacket = web_server_service._handle_get_request(payload=payload)
|
||||||
assert response.status_code == HttpStatusCode.OK
|
assert response.status_code == HttpStatusCode.OK
|
||||||
|
|
||||||
|
|
||||||
# def test_process_http_request_get(web_server):
|
|
||||||
# payload = HttpRequestPacket(request_method=HttpRequestMethod.GET, request_url="http://domain.com/")
|
|
||||||
#
|
|
||||||
# web_server_service: WebServer = web_server.software_manager.software.get("WebServer")
|
|
||||||
#
|
|
||||||
# assert web_server_service._process_http_request(payload=payload) is True
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# def test_process_http_request_method_not_allowed(web_server):
|
|
||||||
# payload = HttpRequestPacket(request_method=HttpRequestMethod.DELETE, request_url="http://domain.com/")
|
|
||||||
#
|
|
||||||
# web_server_service: WebServer = web_server.software_manager.software.get("WebServer")
|
|
||||||
#
|
|
||||||
# assert web_server_service._process_http_request(payload=payload) is False
|
|
||||||
|
|||||||
Reference in New Issue
Block a user