#1947: folder/file scan now take multiple time steps to complete
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
|
||||
from primaite.simulator.file_system.file_system import File, FileSystem, FileSystemItemStatus, Folder
|
||||
from primaite.simulator.file_system.file_system import File, FileSystem, FileSystemItemHealthStatus, Folder
|
||||
from primaite.simulator.file_system.file_type import FileType
|
||||
|
||||
|
||||
@@ -146,13 +146,13 @@ def test_file_corrupt_repair(file_system):
|
||||
|
||||
file.corrupt()
|
||||
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
file.repair()
|
||||
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert folder.health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
|
||||
def test_folder_corrupt_repair(file_system):
|
||||
@@ -163,14 +163,14 @@ def test_folder_corrupt_repair(file_system):
|
||||
folder.corrupt()
|
||||
|
||||
file = folder.get_file(file_name="test_file.txt")
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
folder.repair()
|
||||
|
||||
file = folder.get_file(file_name="test_file.txt")
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert folder.health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
|
||||
def test_file_scan(file_system):
|
||||
@@ -178,43 +178,63 @@ def test_file_scan(file_system):
|
||||
folder: Folder = file_system.create_folder(folder_name="test_folder")
|
||||
file: File = file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
|
||||
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
file.corrupt()
|
||||
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
file.scan()
|
||||
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_scan(file_system):
|
||||
"""Test the ability to update visible status."""
|
||||
folder: Folder = file_system.create_folder(folder_name="test_folder")
|
||||
file: File = file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
|
||||
file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
|
||||
file_system.create_file(file_name="test_file2.txt", folder_name="test_folder")
|
||||
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
assert folder.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
file1: File = folder.get_file_by_id(file_uuid=list(folder.files)[1])
|
||||
file2: File = folder.get_file_by_id(file_uuid=list(folder.files)[0])
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
folder.corrupt()
|
||||
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
folder.scan()
|
||||
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
folder.apply_timestep(timestep=0)
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
folder.apply_timestep(timestep=1)
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
folder.apply_timestep(timestep=2)
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_simulated_file_check_hash(file_system):
|
||||
@@ -225,7 +245,7 @@ def test_simulated_file_check_hash(file_system):
|
||||
# change simulated file size
|
||||
file.sim_size = 0
|
||||
assert file.check_hash() is False
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_real_file_check_hash(file_system):
|
||||
@@ -238,7 +258,7 @@ def test_real_file_check_hash(file_system):
|
||||
f.write("get hacked scrub lol xD\n")
|
||||
|
||||
assert file.check_hash() is False
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_simulated_folder_check_hash(file_system):
|
||||
@@ -251,7 +271,7 @@ def test_simulated_folder_check_hash(file_system):
|
||||
file = folder.get_file(file_name="test_file.txt")
|
||||
file.sim_size = 0
|
||||
assert folder.check_hash() is False
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_real_folder_check_hash(file_system):
|
||||
@@ -268,7 +288,7 @@ def test_real_folder_check_hash(file_system):
|
||||
f.write("get hacked scrub lol xD\n")
|
||||
|
||||
assert folder.check_hash() is False
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Skipping until we tackle serialisation")
|
||||
|
||||
@@ -2,7 +2,7 @@ from typing import Tuple
|
||||
|
||||
import pytest
|
||||
|
||||
from primaite.simulator.file_system.file_system import File, FileSystem, FileSystemItemStatus, Folder
|
||||
from primaite.simulator.file_system.file_system import File, FileSystem, FileSystemItemHealthStatus, Folder
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
@@ -19,31 +19,51 @@ def test_file_scan_request(populated_file_system):
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
file.corrupt()
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "scan"])
|
||||
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_scan_request(populated_file_system):
|
||||
"""Test that an agent can request a folder scan."""
|
||||
fs, folder, file = populated_file_system
|
||||
fs.create_file(file_name="test_file2.txt", folder_name="test_folder")
|
||||
|
||||
file1: File = folder.get_file_by_id(file_uuid=list(folder.files)[1])
|
||||
file2: File = folder.get_file_by_id(file_uuid=list(folder.files)[0])
|
||||
|
||||
folder.corrupt()
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.visible_status == FileSystemItemStatus.GOOD
|
||||
assert file.visible_status == FileSystemItemStatus.GOOD
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "scan"])
|
||||
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.visible_status == FileSystemItemStatus.CORRUPTED
|
||||
folder.apply_timestep(timestep=0)
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
folder.apply_timestep(timestep=1)
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
folder.apply_timestep(timestep=2)
|
||||
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file1.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert file2.visible_health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_file_checkhash_request(populated_file_system):
|
||||
@@ -52,12 +72,12 @@ def test_file_checkhash_request(populated_file_system):
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "checkhash"])
|
||||
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.GOOD
|
||||
file.sim_size = 0
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "checkhash"])
|
||||
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_checkhash_request(populated_file_system):
|
||||
@@ -66,11 +86,11 @@ def test_folder_checkhash_request(populated_file_system):
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "checkhash"])
|
||||
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
assert folder.health_status == FileSystemItemHealthStatus.GOOD
|
||||
file.sim_size = 0
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "checkhash"])
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_file_repair_request(populated_file_system):
|
||||
@@ -78,10 +98,10 @@ def test_file_repair_request(populated_file_system):
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
file.corrupt()
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
fs.apply_request(request=["file", file.uuid, "repair"])
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
|
||||
def test_folder_repair_request(populated_file_system):
|
||||
@@ -89,12 +109,12 @@ def test_folder_repair_request(populated_file_system):
|
||||
fs, folder, file = populated_file_system
|
||||
|
||||
folder.corrupt()
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
fs.apply_request(request=["folder", folder.uuid, "repair"])
|
||||
assert file.status == FileSystemItemStatus.GOOD
|
||||
assert folder.status == FileSystemItemStatus.GOOD
|
||||
assert file.health_status == FileSystemItemHealthStatus.GOOD
|
||||
assert folder.health_status == FileSystemItemHealthStatus.GOOD
|
||||
|
||||
|
||||
def test_file_restore_request(populated_file_system):
|
||||
@@ -109,15 +129,15 @@ def test_file_corrupt_request(populated_file_system):
|
||||
"""Test that an agent can request a file corruption."""
|
||||
fs, folder, file = populated_file_system
|
||||
fs.apply_request(request=["file", file.uuid, "corrupt"])
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_folder_corrupt_request(populated_file_system):
|
||||
"""Test that an agent can request a folder corruption."""
|
||||
fs, folder, file = populated_file_system
|
||||
fs.apply_request(request=["folder", folder.uuid, "corrupt"])
|
||||
assert file.status == FileSystemItemStatus.CORRUPTED
|
||||
assert folder.status == FileSystemItemStatus.CORRUPTED
|
||||
assert file.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
assert folder.health_status == FileSystemItemHealthStatus.CORRUPTED
|
||||
|
||||
|
||||
def test_file_delete_request(populated_file_system):
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
from primaite.simulator.system.services.service import ServiceOperatingState
|
||||
from primaite.simulator.system.software import SoftwareHealthState
|
||||
|
||||
|
||||
def test_service_scan(service):
|
||||
"""Test that an agent can request a service scan."""
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.visible_operating_state == ServiceOperatingState.STOPPED
|
||||
assert service.health_state_visible == SoftwareHealthState.UNUSED
|
||||
|
||||
service.apply_request(["scan"])
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.visible_operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.health_state_visible == SoftwareHealthState.GOOD
|
||||
|
||||
|
||||
def test_service_stop(service):
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
from primaite.simulator.system.services.service import ServiceOperatingState
|
||||
from primaite.simulator.system.software import SoftwareHealthState
|
||||
|
||||
|
||||
def test_scan(service):
|
||||
assert service.operating_state == ServiceOperatingState.STOPPED
|
||||
assert service.visible_operating_state == ServiceOperatingState.STOPPED
|
||||
assert service.health_state_visible == SoftwareHealthState.UNUSED
|
||||
|
||||
service.start()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.visible_operating_state == ServiceOperatingState.STOPPED
|
||||
assert service.health_state_visible == SoftwareHealthState.UNUSED
|
||||
|
||||
service.scan()
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.visible_operating_state == ServiceOperatingState.RUNNING
|
||||
assert service.health_state_visible == SoftwareHealthState.GOOD
|
||||
|
||||
|
||||
def test_start_service(service):
|
||||
@@ -51,6 +52,13 @@ def test_restart(service):
|
||||
service.restart()
|
||||
assert service.operating_state == ServiceOperatingState.RESTARTING
|
||||
|
||||
timestep = 0
|
||||
while service.operating_state == ServiceOperatingState.RESTARTING:
|
||||
service.apply_timestep(timestep)
|
||||
timestep += 1
|
||||
|
||||
assert service.operating_state == ServiceOperatingState.RUNNING
|
||||
|
||||
|
||||
def test_enable_disable(service):
|
||||
service.disable()
|
||||
|
||||
Reference in New Issue
Block a user