def test_cmd_cleanup(self): future = datetimes.utcnow() + datetime.timedelta(days=1) pod_id_1 = self.make_pod_id(1) pod_id_2 = self.make_pod_id(2) self.create_pod_dir(pod_id_1, self.sample_config) self.create_pod_dir(pod_id_2, self.sample_config) self.assertEqual(self.list_active(), [pod_id_1, pod_id_2]) self.assertEqual(self.list_graveyard(), []) self.assertEqual(self.list_tmp(), []) ref_path = self.test_repo_path / 'ref' pods.cmd_add_ref(pod_id_1, ref_path) pods.cmd_cleanup(future) self.assertEqual(self.list_active(), [pod_id_1]) self.assertEqual(self.list_graveyard(), []) self.assertEqual(self.list_tmp(), []) ref_path.unlink() self.mock_journals.remove_journal_dir.assert_called_once_with(pod_id_2) self.mock_journals.remove_journal_dir.reset_mock() with self.using_exclusive(pods._get_pod_dir_path(pod_id_1)): pods.cmd_cleanup(future) self.assertEqual(self.list_active(), [pod_id_1]) self.assertEqual(self.list_graveyard(), []) self.assertEqual(self.list_tmp(), []) self.mock_journals.remove_journal_dir.assert_not_called() self.mock_journals.remove_journal_dir.reset_mock() pods.cmd_cleanup(future) self.assertEqual(self.list_active(), []) self.assertEqual(self.list_graveyard(), []) self.assertEqual(self.list_tmp(), []) self.mock_journals.remove_journal_dir.assert_called_once_with(pod_id_1)
def setUp(self): super().setUp() bases.cmd_init() images.cmd_init() pods.cmd_init() self.sample_pod_dir_path = pods._get_pod_dir_path(self.sample_pod_id) patcher = unittest.mock.patch.object(pods, 'journals') self.mock_journals = patcher.start() self.addCleanup(patcher.stop)
def test_repo_layout(self): for path1, path2 in ( ( pods._get_pod_repo_path(), bases.get_repo_path() / 'pods', ), ( pods._get_active_path(), pods._get_pod_repo_path() / 'active', ), ( pods._get_graveyard_path(), pods._get_pod_repo_path() / 'graveyard', ), ( pods._get_tmp_path(), pods._get_pod_repo_path() / 'tmp', ), ( pods._get_pod_dir_path(self.sample_pod_id), pods._get_active_path() / self.sample_pod_id, ), ( pods._get_id(self.sample_pod_dir_path), self.sample_pod_id, ), ( pods._get_config_path(self.sample_pod_dir_path), pods._get_active_path() / self.sample_pod_id / 'config', ), ( pods._get_orig_config_path(self.sample_pod_dir_path), pods._get_active_path() / self.sample_pod_id / 'config.orig', ), ( pods._get_deps_path(self.sample_pod_dir_path), pods._get_active_path() / self.sample_pod_id / 'deps', ), ( pods._get_work_path(self.sample_pod_dir_path), pods._get_active_path() / self.sample_pod_id / 'work', ), ( pods._get_upper_path(self.sample_pod_dir_path), pods._get_active_path() / self.sample_pod_id / 'upper', ), ( pods._get_rootfs_path(self.sample_pod_dir_path), pods._get_active_path() / self.sample_pod_id / 'rootfs', ), ): with self.subTest((path1, path2)): self.assertEqual(path1, path2)
def test_cleanup_top_dir(self): pod_id_1 = self.make_pod_id(1) pod_id_2 = self.make_pod_id(2) self.create_pod_dir(pod_id_1, self.sample_config) self.create_pod_dir(pod_id_2, self.sample_config) self.assertEqual(self.list_pod_dir_paths(), [pod_id_1, pod_id_2]) with unittest.mock.patch(pods.__name__ + '.scripts'): with locks.acquiring_exclusive(pods._get_pod_dir_path(pod_id_2)): pods._cleanup_top_dir(pods._get_active_path()) self.assertEqual(self.list_pod_dir_paths(), [pod_id_2]) pods._cleanup_top_dir(pods._get_active_path()) self.assertEqual(self.list_pod_dir_paths(), [])
def test_setup_pod_dir_barely(self): pod_dir_path = pods._get_pod_dir_path(self.sample_pod_id) pod_dir_path.mkdir() pods._setup_pod_dir_barely(pod_dir_path, self.sample_config) self.assertFalse( pods._get_config_path(self.sample_pod_dir_path).is_file() ) self.assertTrue( pods._get_orig_config_path(self.sample_pod_dir_path).is_file() ) self.assertTrue(pods._get_deps_path(self.sample_pod_dir_path).is_dir()) self.assertTrue(pods._get_work_path(self.sample_pod_dir_path).is_dir()) self.assertTrue( pods._get_upper_path(self.sample_pod_dir_path).is_dir() ) self.assertTrue( pods._get_rootfs_path(self.sample_pod_dir_path).is_dir() ) self.assertEqual( sorted(p.name for p in self.sample_pod_dir_path.iterdir()), ['config.orig', 'deps', 'rootfs', 'upper', 'work'], )
def create_pod_dir(pod_id, config): pod_dir_path = pods._get_pod_dir_path(pod_id) pod_dir_path.mkdir() pods._setup_pod_dir_barely(pod_dir_path, config) pods._pod_dir_create_config(pod_dir_path, config)