#2606: altered so that the request is done in file system + also completing access request
This commit is contained in:
@@ -63,6 +63,37 @@ class FileSystem(SimComponent):
|
||||
request_type=RequestType(func=self._delete_manager),
|
||||
)
|
||||
|
||||
self._create_manager = RequestManager()
|
||||
self._create_manager.add_request(
|
||||
name="file",
|
||||
request_type=RequestType(
|
||||
func=lambda request, context: RequestResponse.from_bool(
|
||||
bool(self.create_file(folder_name=request[0], file_name=request[1]))
|
||||
)
|
||||
),
|
||||
)
|
||||
self._create_manager.add_request(
|
||||
name="folder",
|
||||
request_type=RequestType(
|
||||
func=lambda request, context: RequestResponse.from_bool(
|
||||
bool(self.create_folder(folder_name=request[0]))
|
||||
)
|
||||
),
|
||||
)
|
||||
rm.add_request(
|
||||
name="create",
|
||||
request_type=RequestType(func=self._create_manager),
|
||||
)
|
||||
|
||||
rm.add_request(
|
||||
name="access",
|
||||
request_type=RequestType(
|
||||
func=lambda request, context: RequestResponse.from_bool(
|
||||
self.access_file(folder_name=request[0], file_name=request[1])
|
||||
)
|
||||
),
|
||||
)
|
||||
|
||||
self._restore_manager = RequestManager()
|
||||
self._restore_manager.add_request(
|
||||
name="file",
|
||||
@@ -494,3 +525,28 @@ class FileSystem(SimComponent):
|
||||
return False
|
||||
|
||||
return folder.restore_file(file_name=file_name)
|
||||
|
||||
def access_file(self, folder_name: str, file_name: str) -> bool:
|
||||
"""
|
||||
Access a file.
|
||||
|
||||
Used by agents to simulate a file being accessed.
|
||||
|
||||
:param: folder_name: name of the folder where the file is stored
|
||||
:type: folder_name: str
|
||||
|
||||
:param: file_name: name of the file to access
|
||||
:type: file_name: str
|
||||
"""
|
||||
folder = self.get_folder(folder_name=folder_name)
|
||||
|
||||
if folder:
|
||||
file = folder.get_file(file_name=file_name)
|
||||
|
||||
if file:
|
||||
file.num_access += 1
|
||||
return True
|
||||
else:
|
||||
self.sys_log.error(f"Unable to access file that does not exist. (file name: {file_name})")
|
||||
|
||||
return False
|
||||
|
||||
@@ -61,12 +61,6 @@ class Folder(FileSystemItemABC):
|
||||
func=lambda request, context: RequestResponse.from_bool(self.remove_file_by_name(file_name=request[0]))
|
||||
),
|
||||
)
|
||||
rm.add_request(
|
||||
name="create",
|
||||
request_type=RequestType(
|
||||
func=lambda request, context: RequestResponse.from_bool(self.create_file(file_name=request[0]))
|
||||
),
|
||||
)
|
||||
self._file_request_manager = RequestManager()
|
||||
rm.add_request(
|
||||
name="file",
|
||||
|
||||
@@ -15,6 +15,31 @@ from primaite.simulator.network.transmission.transport_layer import Port
|
||||
from tests.conftest import TestApplication, TestService
|
||||
|
||||
|
||||
def test_successful_node_file_system_creation_request(example_network):
|
||||
"""Tests that the file system requests."""
|
||||
client_1 = example_network.get_node_by_hostname("client_1")
|
||||
assert client_1.file_system.get_file(folder_name="root", file_name="test.txt") is None
|
||||
|
||||
response = example_network.apply_request(["node", "client_1", "file_system", "create", "file", "", "test.txt"])
|
||||
|
||||
assert response
|
||||
assert client_1.file_system.get_file(folder_name="root", file_name="test.txt")
|
||||
|
||||
assert client_1.file_system.get_folder(folder_name="test_folder") is None
|
||||
|
||||
response = example_network.apply_request(["node", "client_1", "file_system", "create", "folder", "test_folder"])
|
||||
|
||||
assert response
|
||||
assert client_1.file_system.get_folder(folder_name="test_folder")
|
||||
|
||||
assert client_1.file_system.get_file(folder_name="root", file_name="test.txt").num_access == 0
|
||||
|
||||
response = example_network.apply_request(["node", "client_1", "file_system", "access", "root", "test.txt"])
|
||||
|
||||
assert response
|
||||
assert client_1.file_system.get_file(folder_name="root", file_name="test.txt").num_access == 1
|
||||
|
||||
|
||||
def test_successful_application_requests(example_network):
|
||||
net = example_network
|
||||
|
||||
|
||||
Reference in New Issue
Block a user