#2350: add num_access, num_file_deletions and num_creations to file system

This commit is contained in:
Czar Echavez
2024-03-08 11:16:27 +00:00
parent 59bbc0e733
commit e9eef2b4c0
8 changed files with 108 additions and 5 deletions

View File

@@ -1,7 +1,9 @@
import pytest
from primaite.simulator.file_system.file import File
from primaite.simulator.file_system.file_system import FileSystem
from primaite.simulator.file_system.file_type import FileType
from primaite.simulator.file_system.folder import Folder
def test_create_folder_and_file(file_system):
@@ -14,8 +16,15 @@ def test_create_folder_and_file(file_system):
assert len(file_system.get_folder("test_folder").files) == 1
assert file_system.num_file_creations == 1
assert file_system.get_folder("test_folder").get_file("test_file.txt")
file_system.apply_timestep(0)
# num file creations should reset
assert file_system.num_file_creations == 0
file_system.show(full=True)
@@ -23,24 +32,37 @@ def test_create_file_no_folder(file_system):
"""Tests that creating a file without a folder creates a folder and sets that as the file's parent."""
file = file_system.create_file(file_name="test_file.txt", size=10)
assert len(file_system.folders) is 1
assert file_system.num_file_creations == 1
assert file_system.get_folder("root").get_file("test_file.txt") == file
assert file_system.get_folder("root").get_file("test_file.txt").file_type == FileType.TXT
assert file_system.get_folder("root").get_file("test_file.txt").size == 10
file_system.apply_timestep(0)
# num file creations should reset
assert file_system.num_file_creations == 0
file_system.show(full=True)
def test_delete_file(file_system):
"""Tests that a file can be deleted."""
file_system.create_file(file_name="test_file.txt")
file = file_system.create_file(file_name="test_file.txt")
assert len(file_system.folders) == 1
assert len(file_system.get_folder("root").files) == 1
file_system.delete_file(folder_name="root", file_name="test_file.txt")
assert file.num_access == 1
assert file_system.num_file_deletions == 1
assert len(file_system.folders) == 1
assert len(file_system.get_folder("root").files) == 0
assert len(file_system.get_folder("root").deleted_files) == 1
file_system.apply_timestep(0)
# num file deletions should reset
assert file_system.num_file_deletions == 0
file_system.show(full=True)
@@ -54,6 +76,7 @@ def test_delete_non_existent_file(file_system):
# deleting should not change how many files are in folder
file_system.delete_file(folder_name="root", file_name="does_not_exist!")
assert file_system.num_file_deletions == 0
# should still only be one folder
assert len(file_system.folders) == 1
@@ -96,6 +119,7 @@ def test_create_duplicate_file(file_system):
assert len(file_system.folders) is 2
file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
assert file_system.num_file_creations == 1
assert len(file_system.get_folder("test_folder").files) == 1
@@ -103,6 +127,7 @@ def test_create_duplicate_file(file_system):
file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
assert len(file_system.get_folder("test_folder").files) == 1
assert file_system.num_file_creations == 1
file_system.show(full=True)
@@ -136,13 +161,24 @@ def test_move_file(file_system):
assert len(file_system.get_folder("src_folder").files) == 1
assert len(file_system.get_folder("dst_folder").files) == 0
assert file_system.num_file_deletions == 0
assert file_system.num_file_creations == 1
file_system.move_file(src_folder_name="src_folder", src_file_name="test_file.txt", dst_folder_name="dst_folder")
assert file_system.num_file_deletions == 1
assert file_system.num_file_creations == 2
assert file.num_access == 1
assert len(file_system.get_folder("src_folder").files) == 0
assert len(file_system.get_folder("dst_folder").files) == 1
assert file_system.get_file("dst_folder", "test_file.txt").uuid == original_uuid
file_system.apply_timestep(0)
# num file creations and deletions should reset
assert file_system.num_file_creations == 0
assert file_system.num_file_deletions == 0
file_system.show(full=True)
@@ -152,17 +188,25 @@ def test_copy_file(file_system):
file_system.create_folder(folder_name="dst_folder")
file = file_system.create_file(file_name="test_file.txt", size=10, folder_name="src_folder", real=True)
assert file_system.num_file_creations == 1
original_uuid = file.uuid
assert len(file_system.get_folder("src_folder").files) == 1
assert len(file_system.get_folder("dst_folder").files) == 0
file_system.copy_file(src_folder_name="src_folder", src_file_name="test_file.txt", dst_folder_name="dst_folder")
assert file_system.num_file_creations == 2
assert file.num_access == 1
assert len(file_system.get_folder("src_folder").files) == 1
assert len(file_system.get_folder("dst_folder").files) == 1
assert file_system.get_file("dst_folder", "test_file.txt").uuid != original_uuid
file_system.apply_timestep(0)
# num file creations should reset
assert file_system.num_file_creations == 0
file_system.show(full=True)
@@ -172,13 +216,17 @@ def test_get_file(file_system):
file1: File = file_system.create_file(file_name="test_file.txt", folder_name="test_folder")
file2: File = file_system.create_file(file_name="test_file2.txt", folder_name="test_folder")
folder.remove_file(file2)
file_system.delete_file("test_folder", "test_file2.txt")
# file 2 was accessed before being deleted
assert file2.num_access == 1
assert file_system.get_file_by_id(file_uuid=file1.uuid, folder_uuid=folder.uuid) is not None
assert file_system.get_file_by_id(file_uuid=file2.uuid, folder_uuid=folder.uuid) is None
assert file_system.get_file_by_id(file_uuid=file2.uuid, folder_uuid=folder.uuid, include_deleted=True) is not None
assert file_system.get_file_by_id(file_uuid=file2.uuid, include_deleted=True) is not None
assert file2.num_access == 1 # cannot access deleted file
file_system.delete_folder(folder_name="test_folder")
assert file_system.get_file_by_id(file_uuid=file2.uuid, include_deleted=True) is not None