def test_lvm_selection(self): parent_device1 = self._get_parent_device() parent_device2 = self._get_parent_device() free_device1 = self._get_free_device(parent=parent_device1) free_device2 = self._get_free_device(parent=parent_device2) add_dialog = AddDialog(self.parent_window, parent_device1, free_device1, [("free", free_device1), ("free", free_device2)], self.supported_filesystems, [], True) name = "name" size1 = Size("4 GiB") size2 = Size("6 GiB") add_dialog.devices_combo.set_active_id("lvm") # select second free space add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True add_dialog.size_area.main_chooser.selected_size = size1 + size2 add_dialog.name_entry.set_text(name) selection = add_dialog.get_selection() self.assertEqual(selection.device_type, "lvm") self.assertEqual(selection.size_selection.total_size, size1 + size2) self.assertEqual(selection.filesystem, None) self.assertEqual(selection.name, name) self.assertTrue(selection.label in (None, "")) self.assertTrue(selection.mountpoint in (None, "")) self.assertFalse(selection.encrypt) self.assertTrue(selection.passphrase in (None, "")) self.assertIsNone(selection.raid_level)
def test_parents_max_size_limit(self): parent_device1 = self._get_parent_device(size=Size("8 TiB")) free_device1 = self._get_free_device(parent=parent_device1, size=parent_device1.size) # simple case -- partition add_dialog = AddDialog(self.parent_window, parent_device1, free_device1, [("free", free_device1)], self.supported_filesystems, [], True) add_dialog.devices_combo.set_active_id("partition") # select "unformatted" just to be sure there is no filesystem size limit add_dialog.filesystems_combo.set_active_id("unformatted") # partition max size should me limited to disklabel max size limit limit = parent_device1.format.parted_disk.maxPartitionLength * parent_device1.format.sector_size self.assertEqual(add_dialog.size_area.main_chooser.max_size, limit) # more complicated case -- LVM with two parents parent_device2 = self._get_parent_device(size=Size("1 GiB")) free_device2 = self._get_free_device(parent=parent_device2, size=parent_device2.size) add_dialog = AddDialog(self.parent_window, parent_device1, free_device1, [("free", free_device1), ("free", free_device2)], self.supported_filesystems, [], True) add_dialog.devices_combo.set_active_id("lvm") # select "unformatted" just to be sure there is no filesystem size limit add_dialog.filesystems_combo.set_active_id("unformatted") # select second free space add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True # LVM limit should be disklabel limit (from first parent) + 1 GiB (from second parent) limit = free_device2.size + parent_device1.format.parted_disk.maxPartitionLength * parent_device1.format.sector_size self.assertEqual(add_dialog.size_area.main_chooser.max_size, limit)
def test_lvm_selection(self): parent_device1 = self._get_parent_device() parent_device2 = self._get_parent_device() free_device1 = self._get_free_device(parent=parent_device1) free_device2 = self._get_free_device(parent=parent_device2) add_dialog = AddDialog( self.parent_window, parent_device1, free_device1, [("free", free_device1), ("free", free_device2)], [], True ) name = "name" size1 = Size("4 GiB") size2 = Size("6 GiB") add_dialog.devices_combo.set_active_id("lvm") # select second free space add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True add_dialog.size_area.main_chooser.selected_size = size1 + size2 add_dialog.name_entry.set_text(name) selection = add_dialog.get_selection() self.assertEqual(selection.device_type, "lvm") self.assertEqual(selection.size, size1 + size2) self.assertEqual(selection.filesystem, None) self.assertEqual(selection.name, name) self.assertTrue(selection.label in (None, "")) self.assertTrue(selection.mountpoint in (None, "")) self.assertFalse(selection.encrypt) self.assertTrue(selection.passphrase in (None, "")) self.assertIsNone(selection.raid_level)
def test_raid_type(self): parent_device = self._get_parent_device() free_device = self._get_free_device(parent=parent_device, size=Size("8 GiB")) add_dialog = AddDialog( self.parent_window, parent_device, free_device, [("free", free_device), ("free", self._get_free_device(size=Size("4 GiB")))], [], ) add_dialog.devices_combo.set_active_id("mdraid") self.assertEqual(len(add_dialog.parents_store), 2) # select second parent --> raid combo should be visible add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True self.assertTrue(add_dialog.raid_combo.get_visible()) self.assertEqual(add_dialog.raid_combo.get_active_id(), "linear") # linear is default value for mdraid # only 2 parents --> only "linear", "raid1" and "raid0" should be available; "raid5" needs at least 3 parents # set_active_id returns True or False based on success --> it should return False for "raid5" and True otherwise self.assertTrue(add_dialog.raid_combo.set_active_id("raid0")) self.assertTrue(add_dialog.raid_combo.set_active_id("raid1")) self.assertFalse(add_dialog.raid_combo.set_active_id("raid5")) # raid1 type is selected --> we should have 2 size areas, both with max size 4 GiB (smaller free space size) self.assertEqual(add_dialog.size_area.max_size, Size("4 GiB"))
def test_md_selection(self): parent_device1 = self._get_parent_device() parent_device2 = self._get_parent_device() free_device1 = self._get_free_device(parent=parent_device1) free_device2 = self._get_free_device(parent=parent_device2) add_dialog = AddDialog(self.parent_window, parent_device1, free_device1, [("free", free_device1), ("free", free_device2)], self.supported_filesystems, [], True) fstype = next((fs.type for fs in supported_filesystems()), None) if fstype is None: self.skipTest("No supported filesystems found.") raidtype = "raid0" size = Size("4 GiB") name = "name" add_dialog.devices_combo.set_active_id("mdraid") # select second free space add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True add_dialog._raid_chooser._combobox_raid.set_active_id(raidtype) # raid 0 --> second size area should be updated add_dialog.size_area._parent_area.choosers[0].selected_size = size add_dialog.name_entry.set_text(name) add_dialog.md_type_combo.set_active_id("partition") add_dialog.filesystems_combo.set_active_id(fstype) selection = add_dialog.get_selection() self.assertEqual(selection.device_type, "mdraid") self.assertEqual(selection.size_selection.total_size, 2 * size) self.assertEqual(selection.filesystem, fstype) self.assertEqual(selection.name, name) self.assertTrue(selection.label in (None, "")) self.assertTrue(selection.mountpoint in (None, "")) self.assertFalse(selection.encrypt) self.assertTrue(selection.passphrase in (None, "")) self.assertEqual(selection.size_selection.parents[0].parent_device, parent_device1) self.assertEqual(selection.size_selection.parents[0].selected_size, size) self.assertEqual(selection.size_selection.parents[1].parent_device, parent_device2) self.assertEqual(selection.size_selection.parents[1].selected_size, size) self.assertEqual(selection.raid_level, raidtype)
def test_md_selection(self): parent_device1 = self._get_parent_device() parent_device2 = self._get_parent_device() free_device1 = self._get_free_device(parent=parent_device1) free_device2 = self._get_free_device(parent=parent_device2) add_dialog = AddDialog( self.parent_window, parent_device1, free_device1, [("free", free_device1), ("free", free_device2)], [], True ) fstype = next((fs.type for fs in supported_filesystems()), None) if fstype is None: self.skipTest("No supported filesystems found.") raidtype = "raid0" size = Size("4 GiB") name = "name" add_dialog.devices_combo.set_active_id("mdraid") # select second free space add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True add_dialog.raid_combo.set_active_id(raidtype) # raid 0 --> second size area should be updated add_dialog.size_area.parent_area.choosers[0].selected_size = size add_dialog.name_entry.set_text(name) add_dialog.md_type_combo.set_active_id("partition") add_dialog.filesystems_combo.set_active_id(fstype) selection = add_dialog.get_selection() self.assertEqual(selection.device_type, "mdraid") self.assertEqual(selection.size, 2 * size) self.assertEqual(selection.filesystem, fstype) self.assertEqual(selection.name, name) self.assertTrue(selection.label in (None, "")) self.assertTrue(selection.mountpoint in (None, "")) self.assertFalse(selection.encrypt) self.assertTrue(selection.passphrase in (None, "")) self.assertEqual(selection.parents, [(parent_device1, size), (parent_device2, size)]) self.assertEqual(selection.raid_level, "raid0")
def test_raid_type(self): parent_device = self._get_parent_device() free_device = self._get_free_device(parent=parent_device, size=Size("8 GiB")) add_dialog = AddDialog(self.parent_window, parent_device, free_device, [("free", free_device), ("free", self._get_free_device(size=Size("4 GiB")))], []) add_dialog.devices_combo.set_active_id("mdraid") self.assertEqual(len(add_dialog.parents_store), 2) # select second parent --> raid combo should be visible add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True self.assertTrue(add_dialog._raid_chooser.get_visible()) self.assertEqual(add_dialog._raid_chooser.selected_level.name, "raid0") # linear is default value for mdraid # raid0 type is selected --> we should have 2 size areas, both with max size 4 GiB (smaller free space size) self.assertEqual(add_dialog.size_area.max_size, Size("8 GiB"))
def test_md_selection(self): parent_device1 = self._get_parent_device() parent_device2 = self._get_parent_device() free_device1 = self._get_free_device(parent=parent_device1) free_device2 = self._get_free_device(parent=parent_device2) add_dialog = AddDialog(self.parent_window, "disk", parent_device1, free_device1, [], [free_device1, free_device2], self.supported_raids, self.supported_fs, [], True) fstype = "xfs" raidtype = "raid0" size = Size("4 GiB") name = "name" add_dialog.devices_combo.set_active_id("mdraid") # select second free space add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True add_dialog.raid_combo.set_active_id(raidtype) # raid 0 --> second size area should be updated add_dialog.size_areas[0][0].selected_size = size add_dialog.name_entry.set_text(name) add_dialog.md_type_combo.set_active_id("partition") add_dialog.filesystems_combo.set_active_id(fstype) selection = add_dialog.get_selection() self.assertEqual(selection.device_type, "mdraid") self.assertEqual(selection.size, 2 * size) self.assertEqual(selection.filesystem, fstype) self.assertEqual(selection.name, name) self.assertTrue(selection.label in (None, "")) self.assertTrue(selection.mountpoint in (None, "")) self.assertFalse(selection.encrypt) self.assertTrue(selection.passphrase in (None, "")) self.assertEqual(selection.parents, [[parent_device1, size], [parent_device2, size]]) self.assertIsNone(selection.btrfs_type) self.assertEqual(selection.raid_level, "raid0")
def test_parents_selection(self): parent_device = self._get_parent_device() free_device = self._get_free_device(parent=parent_device) add_dialog = AddDialog(self.parent_window, parent_device, free_device, [("free", free_device), ("free", self._get_free_device()), ("free", self._get_free_device())], self.supported_filesystems, []) # partition -- only one parent, shouldn't be allowed to deselect it add_dialog.devices_combo.set_active_id("partition") add_dialog.on_cell_toggled(None, 0) self.assertTrue(add_dialog.parents_store[0][2]) self.assertTrue(add_dialog.parents_store[0][3]) # lvm -- allow secting other parents add_dialog.devices_combo.set_active_id("lvm") # it is not possible to the emmit toggle programmatically, we need to call the signal handler manually and # set the value in the TreeStore to True add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True self.assertTrue(add_dialog.parents_store[1][3]) # deselect second parent add_dialog.parents_store[1][2] = False add_dialog.on_cell_toggled(None, 1) self.assertFalse(add_dialog.parents_store[1][3])
def test_parents_selection(self): parent_device = self._get_parent_device() free_device = self._get_free_device(parent=parent_device) add_dialog = AddDialog( self.parent_window, parent_device, free_device, [("free", free_device), ("free", self._get_free_device()), ("free", self._get_free_device())], [], ) # partition -- only one parent, shouldn't be allowed to deselect it add_dialog.devices_combo.set_active_id("partition") add_dialog.on_cell_toggled(None, 0) self.assertTrue(add_dialog.parents_store[0][2]) self.assertTrue(add_dialog.parents_store[0][3]) # lvm -- allow secting other parents add_dialog.devices_combo.set_active_id("lvm") # it is not possible to the emmit toggle programmatically, we need to call the signal handler manually and # set the value in the TreeStore to True add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True self.assertTrue(add_dialog.parents_store[1][3]) # deselect second parent add_dialog.parents_store[1][2] = False add_dialog.on_cell_toggled(None, 1) self.assertFalse(add_dialog.parents_store[1][3])
def test_parents_selection(self): parent_device = self._get_parent_device() free_device = self._get_free_device(parent=parent_device) add_dialog = AddDialog(self.parent_window, "disk", parent_device, free_device, [], [free_device, self._get_free_device(), self._get_free_device()], self.supported_raids, self.supported_fs, []) # partition -- only one parent, shouldn't be allowed to deselect it add_dialog.devices_combo.set_active_id("partition") add_dialog.on_cell_toggled(None, 0) self.assertTrue(add_dialog.parents_store[0][2]) self.assertTrue(add_dialog.parents_store[0][3]) # lvm -- allow secting other parents add_dialog.devices_combo.set_active_id("lvm") # it is not possible to the emmit toggle programmatically, we need to call the signal handler manually and # set the value in the TreeStore to True add_dialog.on_cell_toggled(None, 1) add_dialog.parents_store[1][2] = True self.assertTrue(add_dialog.parents_store[1][3]) self.assertEqual(len(add_dialog.size_areas), 2) # two parents --> two size areas # deselect second parent add_dialog.parents_store[1][2] = False add_dialog.on_cell_toggled(None, 1) self.assertFalse(add_dialog.parents_store[1][3]) self.assertEqual(len(add_dialog.size_areas), 1) # only one size area again