Example #1
0
    def test_allowed_pesize(self):
        # test allowed pesize options based on free space available
        parent_device = Mock(type="disk",
                             format=Mock(label_type="gpt",
                                         extended_partition=None))

        # only 8 MiB free space, allow only 2 and 4 MiB PE Size
        free_device = Mock(is_logical=False, size=Size("8 MiB"))
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog,
                                           device_type="lvm",
                                           parent_device=parent_device,
                                           free_device=free_device)

        pesizes = [i[0] for i in advanced_options.pesize_combo.get_model()]
        self.assertEqual(["2 MiB", "4 MiB"], pesizes)

        # enough free space, allow up to 64 MiB PE Size
        free_device = Mock(is_logical=False, size=Size("1 GiB"))
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog,
                                           device_type="lvm",
                                           parent_device=parent_device,
                                           free_device=free_device)

        pesizes = [i[0] for i in advanced_options.pesize_combo.get_model()]
        self.assertEqual(
            ["2 MiB", "4 MiB", "8 MiB", "16 MiB", "32 MiB", "64 MiB"], pesizes)
    def test_selection(self):
        # partition
        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None))
        free_device = Mock(is_logical=False)
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        advanced_options.partition_combo.set_active_id("extended")

        selection = advanced_options.get_selection()
        self.assertEqual(selection["parttype"], "extended")

        # lvm
        parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None))
        free_device = Mock(is_logical=False, size=Size("8 GiB"))
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm",
                                           parent_device=parent_device, free_device=free_device)

        advanced_options.pesize_combo.set_active_id("64 MiB")

        selection = advanced_options.get_selection()
        self.assertEqual(selection["pesize"], Size("64 MiB"))

        # mdraid
        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None))
        free_device = Mock(is_logical=False)
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="mdraid",
                                           parent_device=parent_device, free_device=free_device)

        advanced_options.chunk_combo.set_active_id("64 KiB")

        selection = advanced_options.get_selection()
        self.assertEqual(selection["chunk_size"], Size("64 KiB"))
    def test_mdraid_validation(self):
        parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None))
        free_device = Mock(is_logical=False, size=Size("8 GiB"))

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="mdraid",
                                           parent_device=parent_device, free_device=free_device)

        entry = advanced_options.chunk_combo.get_child()

        # invalid size specification
        entry.set_text("aaaaaaa")
        advanced_options.validate_user_input()
        self.error_dialog.assert_any_call(self.add_dialog, _("'{0}' is not a valid chunk size specification.").format("aaaaaaa"),
                                          not self.add_dialog.installer_mode)
        self.error_dialog.reset_mock()

        # invalid size
        entry.set_text("1 KiB")
        advanced_options.validate_user_input()
        self.error_dialog.assert_any_call(self.add_dialog, _("Chunk size must be multiple of 4 KiB."),
                                          not self.add_dialog.installer_mode)
        self.error_dialog.reset_mock()

        # valid size
        entry.set_text("64 KiB")
        advanced_options.validate_user_input()
        self.assertFalse(self.error_dialog.called)
        self.error_dialog.reset_mock()
    def test_mdraid_validation(self):
        parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None))
        free_device = Mock(is_logical=False, size=Size("8 GiB"))

        advanced_options = AdvancedOptions(
            add_dialog=self.add_dialog, device_type="mdraid", parent_device=parent_device, free_device=free_device
        )

        entry = advanced_options.chunk_combo.get_child()

        # invalid size specification
        entry.set_text("aaaaaaa")
        advanced_options.validate_user_input()
        self.error_dialog.assert_any_call(
            self.add_dialog, _("'aaaaaaa' is not a valid chunk size specification."), not self.add_dialog.installer_mode
        )
        self.error_dialog.reset_mock()

        # invalid size
        entry.set_text("1 KiB")
        advanced_options.validate_user_input()
        self.error_dialog.assert_any_call(
            self.add_dialog, _("Chunk size must be multiple of 4 KiB."), not self.add_dialog.installer_mode
        )
        self.error_dialog.reset_mock()

        # valid size
        entry.set_text("64 KiB")
        advanced_options.validate_user_input()
        self.assertFalse(self.error_dialog.called)
        self.error_dialog.reset_mock()
    def test_lvm_options(self):
        # test lvm options are displayed for lvm/lvmvg type
        parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None))
        free_device = Mock(is_logical=False, size=Size("8 GiB"))

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm",
                                           parent_device=parent_device, free_device=free_device)

        self.assertFalse(hasattr(advanced_options, "partition_combo"))
        self.assertTrue(hasattr(advanced_options, "pesize_combo"))
        self.assertFalse(hasattr(advanced_options, "chunk_combo"))

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvmvg",
                                           parent_device=parent_device, free_device=free_device)

        self.assertFalse(hasattr(advanced_options, "partition_combo"))
        self.assertTrue(hasattr(advanced_options, "pesize_combo"))
        self.assertFalse(hasattr(advanced_options, "chunk_combo"))
    def test_partition_options(self):
        # test partition options are displayed for partition type

        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None))
        free_device = Mock(is_logical=False)

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        self.assertTrue(hasattr(advanced_options, "partition_combo"))
        self.assertFalse(hasattr(advanced_options, "pesize_combo"))
        self.assertFalse(hasattr(advanced_options, "chunk_combo"))
    def test_gpt_partitions(self):
        # adding partition on gpt disk -> only "primary" type allowed
        parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None))
        free_device = Mock(is_logical=False)

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        part_types = advanced_options.partition_combo.get_model()

        self.assertEqual(len(part_types), 1)
        self.assertEqual(part_types[0][1], "primary")
    def test_extended_partition(self):
        # extended partition already exists -> allow only "primary" type

        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=Mock()))
        free_device = Mock(is_logical=False)

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        part_types = advanced_options.partition_combo.get_model()

        self.assertEqual(len(part_types), 1)
        self.assertEqual(part_types[0][1], "primary")
    def test_logical_partition(self):
        # adding partition to free space inside extended partition -> only "logical allowed"

        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=Mock()))
        free_device = Mock(is_logical=True)

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        part_types = advanced_options.partition_combo.get_model()

        self.assertEqual(len(part_types), 1)
        self.assertEqual(part_types[0][1], "logical")
Example #10
0
    def test_selection(self):
        # partition
        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None))
        free_device = Mock(is_logical=False)
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        advanced_options.partition_combo.set_active_id("extended")

        selection = advanced_options.get_selection()
        self.assertEqual(selection["parttype"], "extended")

        # lvm
        parent_device = Mock(type="disk", format=Mock(label_type="gpt", extended_partition=None))
        free_device = Mock(is_logical=False, size=Size("8 GiB"))
        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="lvm",
                                           parent_device=parent_device, free_device=free_device)

        advanced_options.pesize_combo.set_active_id("64 MiB")

        selection = advanced_options.get_selection()
        self.assertEqual(selection["pesize"], Size("64 MiB"))
    def test_normal_partition(self):
        # "standard" situation -- disk with msdos part table, no existing extended partition
        # → both "primary and extended" types should be allowed

        parent_device = Mock(type="disk", format=Mock(label_type="msdos", extended_partition=None))
        free_device = Mock(is_logical=False)

        advanced_options = AdvancedOptions(add_dialog=self.add_dialog, device_type="partition",
                                           parent_device=parent_device, free_device=free_device)

        part_types = advanced_options.partition_combo.get_model()

        self.assertEqual(len(part_types), 2)
        self.assertEqual(part_types[0][1], "primary")
        self.assertEqual(part_types[1][1], "extended")