def test_clean_up_priority_list_3_dcms(self): with mock.patch.object(DataCleaner, 'scan_dir'), \ mock.patch.object(DataCleaner, '_get_file_stats') as mock_files, \ mock.patch.object(DataCleaner, '_get_current_time') as mock_time: # test that 1. dcm files are removed on a whole mock_files.return_value = [ ('folder1/0001.dcm', 0, 10), ('folder1/0002.dcm', 0, 10), ('folder1/0003.dcm', 0, 10), ('folder1/0004.dcm', 0, 10), ('folder2/0001.dcm', 10, 10), ('folder2/0002.dcm', 10, 10), ('folder2/folder3/file1.nii', 10, 10), ('folder3/0001.dcm', 5, 10), ('folder3/0002.dcm', 5, 10), ('folder3/t.db', 10, 10), ] mock_time.return_value = 20 dc_instance = DataCleaner( folder='', folder_size_soft_limit=1.0 * 55 / 1024 / 1024, folder_size_hard_limit=1.0 * 55 / 1024 / 1024, max_data_seconds=-1, whitelist=[], priority_list=['*.dcm']) removed = dc_instance.clean_up(dry_run=True) self.assertEqual([('folder1/0001.dcm', 0, 10), ('folder1/0002.dcm', 0, 10), ('folder1/0003.dcm', 0, 10), ('folder1/0004.dcm', 0, 10), ('folder3/0001.dcm', 5, 10), ('folder3/0002.dcm', 5, 10)], removed)
def test_soft_hard_limit_2(self): with mock.patch.object(DataCleaner, 'scan_dir'), \ mock.patch.object(DataCleaner, '_get_file_stats') as mock_files, \ mock.patch.object(DataCleaner, '_get_current_time') as mock_time: mock_files.return_value = [('file1', 15, 30), ('file2', 5, 10), ('file3', 11, 30), ('file4', 13, 30)] mock_time.return_value = 20 dc_instance = DataCleaner( folder='', folder_size_soft_limit=1.0 * 40 / 1024 / 1028, folder_size_hard_limit=1.0 * 110 / 1024 / 1028, max_data_seconds=-1, whitelist=[''], priority_list=['file*']) removed = dc_instance.clean_up(dry_run=True) self.assertEqual([], removed)
def test_do_not_clean_young_files(self): with mock.patch.object(DataCleaner, 'scan_dir'), \ mock.patch.object(DataCleaner, '_get_file_stats') as mock_files, \ mock.patch.object(DataCleaner, '_get_current_time') as mock_time: mock_files.return_value = [('file1', 15, 30), ('file2', 5, 10), ('file3', 11, 30), ('file4', 13, 30)] mock_time.return_value = 20 # file2 is 15 seconds old # file4 is 7 seconds old dc_instance = DataCleaner(folder='', folder_size_soft_limit=1024 * 1024, folder_size_hard_limit=1024 * 1024, max_data_seconds=10, whitelist=['file1', 'file3'], blacklist=['file*'], min_data_seconds=8) removed = dc_instance.clean_up(dry_run=True) self.assertEqual([('file2', 5, 10)], removed)
def test_clean_up_priority_list_2(self): with mock.patch.object(DataCleaner, 'scan_dir'), \ mock.patch.object(DataCleaner, '_get_file_stats') as mock_files, \ mock.patch.object(DataCleaner, '_get_current_time') as mock_time: # test that 1. files not in priority_list are not removed # (t.db not removed) # 2. files removed are in the order of the priority list # (old*.nii removed first) # 3. files on the whitelist are not removed # (not removing file1.nii and file3.nii) # 4. stop the removing process early if size requirements met # (0004.dcm not removed) mock_files.return_value = [ ('folder1/0001.png', 0, 10), ('folder1/0002.png', 0, 10), ('folder1/0003.png', 0, 10), ('folder1/0004.png', 0, 10), ('folder1/folder2/file1.nii', 10, 30), ('folder1/folder2/old_file2.nii', 10, 30), ('folder1/folder2/old_file3.nii', 10, 30), ('folder1/folder2/file4.nii', 10, 30), ('folder2/t.db', 10, 40), ] mock_time.return_value = 20 dc_instance = DataCleaner( folder='', folder_size_soft_limit=1.0 * 115 / 1024 / 1024, folder_size_hard_limit=1.0 * 115 / 1024 / 1024, max_data_seconds=-1, whitelist=['*file1.nii', '*file3.nii'], priority_list=['*old*.nii', '*nii', '*.png', 'file*']) removed = dc_instance.clean_up(dry_run=True) # TODO file should be ideally deleted only once self.assertEqual([('folder1/folder2/old_file2.nii', 10, 30), ('folder1/folder2/file4.nii', 10, 30), ('folder1/folder2/old_file2.nii', 10, 30)], removed)