Esempio n. 1
0
    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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
    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(), [])
Esempio n. 5
0
 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'],
     )
Esempio n. 6
0
 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)