Ejemplo n.º 1
0
 def create_image_dir(image_id, metadata):
     image_dir_path = images.get_image_dir_path(image_id)
     image_dir_path.mkdir()
     jsons.dump_dataobject(
         metadata,
         images._get_metadata_path(image_dir_path),
     )
     images.get_rootfs_path(image_dir_path).mkdir()
Ejemplo n.º 2
0
 def create_image_dir(image_id, metadata, exec_relpath):
     image_dir_path = images.get_image_dir_path(image_id)
     image_dir_path.mkdir()
     jsons.dump_dataobject(
         metadata,
         images._get_metadata_path(image_dir_path),
     )
     rootfs_path = images.get_rootfs_path(image_dir_path)
     (rootfs_path / exec_relpath.parent).mkdir(parents=True)
     (rootfs_path / exec_relpath).touch()
Ejemplo n.º 3
0
    def test_add_ref_image_ids(self):

        def list_image_ids():
            return sorted(
                p.name for p in \
                pods._get_deps_path(self.sample_pod_dir_path).iterdir()
            )

        image_id_1 = self.make_image_id(1)
        image_id_2 = self.make_image_id(2)
        self.create_pod_dir(self.sample_pod_id, self.sample_config)
        self.create_image_dir(image_id_1, self.sample_metadata)
        self.create_image_dir(image_id_2, self.sample_metadata)
        self.assertEqual(list_image_ids(), [])
        self.assertEqual(
            images._get_ref_count(images.get_image_dir_path(image_id_1)), 1
        )
        self.assertEqual(
            images._get_ref_count(images.get_image_dir_path(image_id_2)), 1
        )

        config = models.PodConfig(
            name='test-pod',
            version='0.0.1',
            apps=self.sample_config.apps,
            images=[
                models.PodConfig.Image(id=image_id_1),
                models.PodConfig.Image(id=image_id_2),
            ],
        )

        new_config = pods._add_ref_image_ids(self.sample_pod_dir_path, config)
        self.assertEqual(config, new_config)
        self.assertEqual(list_image_ids(), [image_id_1, image_id_2])
        self.assertEqual(
            images._get_ref_count(images.get_image_dir_path(image_id_1)), 2
        )
        self.assertEqual(
            images._get_ref_count(images.get_image_dir_path(image_id_2)), 2
        )
Ejemplo n.º 4
0
 def setUp(self):
     super().setUp()
     self.xar_runner_script_dir_path = self.test_repo_path / 'runner-bin'
     self.xar_runner_script_dir_path.mkdir()
     bases.PARAMS.xar_runner_script_directory.unsafe_set(
         self.xar_runner_script_dir_path)
     bases.cmd_init()
     images.cmd_init()
     xars.cmd_init()
     self.sample_xar_dir_path = xars._get_xar_dir_path(self.sample_xar_name)
     self.sample_xar_runner_script_path = (self.xar_runner_script_dir_path /
                                           self.sample_xar_name)
     self.sample_image_dir_path = images.get_image_dir_path(
         self.sample_image_id)
Ejemplo n.º 5
0
 def assert_present(current_image_id, image_ids):
     self.assertTrue(self.sample_xar_dir_path.exists())
     self.assertEqual(
         xars._get_exec_path(self.sample_xar_dir_path).resolve(),
         images.get_rootfs_path(
             images.get_image_dir_path(current_image_id)) /
         self.sample_exec_relpath,
     )
     self.assertEqual(self.list_ref_image_ids(), image_ids)
     self.assertTrue(self.sample_xar_runner_script_path.exists())
     self.assertEqual(
         images._get_ref_count(image_dir_path_1),
         2 if image_id_1 in image_ids else 1,
     )
     self.assertEqual(
         images._get_ref_count(image_dir_path_2),
         2 if image_id_2 in image_ids else 1,
     )
Ejemplo n.º 6
0
    def test_xar_dir(self):
        def assert_absent():
            self.assertFalse(self.sample_xar_dir_path.exists())
            self.assertFalse(self.sample_xar_runner_script_path.exists())
            self.assertEqual(images._get_ref_count(image_dir_path_1), 1)
            self.assertEqual(images._get_ref_count(image_dir_path_2), 1)

        def assert_present(current_image_id, image_ids):
            self.assertTrue(self.sample_xar_dir_path.exists())
            self.assertEqual(
                xars._get_exec_path(self.sample_xar_dir_path).resolve(),
                images.get_rootfs_path(
                    images.get_image_dir_path(current_image_id)) /
                self.sample_exec_relpath,
            )
            self.assertEqual(self.list_ref_image_ids(), image_ids)
            self.assertTrue(self.sample_xar_runner_script_path.exists())
            self.assertEqual(
                images._get_ref_count(image_dir_path_1),
                2 if image_id_1 in image_ids else 1,
            )
            self.assertEqual(
                images._get_ref_count(image_dir_path_2),
                2 if image_id_2 in image_ids else 1,
            )

        def install_xar_dir(image_id):
            xars._install_xar_dir(self.sample_xar_dir_path, image_id,
                                  self.sample_exec_relpath)

        image_id_1 = self.make_image_id(1)
        image_dir_path_1 = images.get_image_dir_path(image_id_1)
        self.create_image_dir(
            image_id_1,
            self.sample_metadata,
            self.sample_exec_relpath,
        )
        image_id_2 = self.make_image_id(2)
        image_dir_path_2 = images.get_image_dir_path(image_id_2)
        self.create_image_dir(
            image_id_2,
            self.sample_metadata,
            self.sample_exec_relpath,
        )
        image_id_3 = self.make_image_id(3)
        pattern = r'expect.*is_file.*images/trees/%s/metadata' % image_id_3

        assert_absent()

        with self.assertRaisesRegex(AssertionError, pattern):
            install_xar_dir(image_id_3)
        assert_absent()

        install_xar_dir(image_id_1)
        assert_present(image_id_1, [image_id_1])

        with self.assertRaisesRegex(AssertionError, pattern):
            install_xar_dir(image_id_3)
        assert_present(image_id_1, [image_id_1])

        install_xar_dir(image_id_2)
        assert_present(image_id_2, [image_id_1, image_id_2])

        with self.assertRaisesRegex(AssertionError, pattern):
            install_xar_dir(image_id_3)
        assert_present(image_id_2, [image_id_1, image_id_2])

        install_xar_dir(image_id_1)
        assert_present(image_id_1, [image_id_1, image_id_2])

        with self.assertRaisesRegex(AssertionError, pattern):
            install_xar_dir(image_id_3)
        assert_present(image_id_1, [image_id_1, image_id_2])

        xars._cleanup_xar_dir(self.sample_xar_dir_path)
        assert_present(image_id_1, [image_id_1])

        xars._remove_xar_dir(self.sample_xar_dir_path)
        assert_absent()