Merge ~raharper/curtin:fix/unittest-leak-modprobe into curtin:master

Proposed by Ryan Harper
Status: Merged
Approved by: Dan Watkins
Approved revision: f61faa49e4a5c2973cd700378bd6c77aea8c4108
Merge reported by: Server Team CI bot
Merged at revision: not available
Proposed branch: ~raharper/curtin:fix/unittest-leak-modprobe
Merge into: curtin:master
Diff against target: 101 lines (+13/-4)
1 file modified
tests/unittests/test_clear_holders.py (+13/-4)
Reviewer Review Type Date Requested Status
Dan Watkins (community) Approve
Server Team CI bot continuous-integration Approve
Review via email: mp+382717@code.launchpad.net

Commit message

Mock out zfs_supported to prevent attempting to load kernel modules

To post a comment you must log in.
Revision history for this message
Ryan Harper (raharper) wrote :

This should fix daily-ppa builds, once we fixed the first set of subp leaks, we found more.

Revision history for this message
Server Team CI bot (server-team-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Dan Watkins (oddbloke) wrote :

LGTM, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/tests/unittests/test_clear_holders.py b/tests/unittests/test_clear_holders.py
index 82b481a..480e706 100644
--- a/tests/unittests/test_clear_holders.py
+++ b/tests/unittests/test_clear_holders.py
@@ -451,6 +451,7 @@ class TestClearHolders(CiTestCase):
451 mock_block.rescan_block_devices.assert_has_calls(451 mock_block.rescan_block_devices.assert_has_calls(
452 [mock.call(devices=[self.test_blockdev])] * 2)452 [mock.call(devices=[self.test_blockdev])] * 2)
453453
454 @mock.patch('curtin.block.clear_holders.zfs')
454 @mock.patch('curtin.block.clear_holders.multipath')455 @mock.patch('curtin.block.clear_holders.multipath')
455 @mock.patch('curtin.block.clear_holders.is_swap_device')456 @mock.patch('curtin.block.clear_holders.is_swap_device')
456 @mock.patch('curtin.block.clear_holders.time')457 @mock.patch('curtin.block.clear_holders.time')
@@ -459,7 +460,7 @@ class TestClearHolders(CiTestCase):
459 def test_clear_holders_wipe_superblock_rereads_pt_oserr(self, mock_block,460 def test_clear_holders_wipe_superblock_rereads_pt_oserr(self, mock_block,
460 mock_log, m_time,461 mock_log, m_time,
461 mock_swap,462 mock_swap,
462 mock_mp):463 mock_mp, m_zfs):
463 """test clear_holders.wipe_superblock re-reads ptable handles oserr"""464 """test clear_holders.wipe_superblock re-reads ptable handles oserr"""
464 mock_swap.return_value = False465 mock_swap.return_value = False
465 mock_block.sysfs_to_devpath.return_value = self.test_blockdev466 mock_block.sysfs_to_devpath.return_value = self.test_blockdev
@@ -467,6 +468,7 @@ class TestClearHolders(CiTestCase):
467 mock_block.get_blockdev_for_partition.return_value = (468 mock_block.get_blockdev_for_partition.return_value = (
468 self.test_blockdev, None)469 self.test_blockdev, None)
469 mock_mp.multipath_supported.return_value = False470 mock_mp.multipath_supported.return_value = False
471 m_zfs.zfs_supported.return_value = False
470 mock_block.is_zfs_member.return_value = False472 mock_block.is_zfs_member.return_value = False
471 mock_block.get_sysfs_partitions.side_effect = iter([473 mock_block.get_sysfs_partitions.side_effect = iter([
472 ['p1', 'p2'], # has partitions before wipe474 ['p1', 'p2'], # has partitions before wipe
@@ -483,6 +485,7 @@ class TestClearHolders(CiTestCase):
483 [mock.call(devices=[self.test_blockdev])] * 2)485 [mock.call(devices=[self.test_blockdev])] * 2)
484 self.assertEqual(1, m_time.sleep.call_count)486 self.assertEqual(1, m_time.sleep.call_count)
485487
488 @mock.patch('curtin.block.clear_holders.zfs')
486 @mock.patch('curtin.block.clear_holders.multipath')489 @mock.patch('curtin.block.clear_holders.multipath')
487 @mock.patch('curtin.block.clear_holders.is_swap_device')490 @mock.patch('curtin.block.clear_holders.is_swap_device')
488 @mock.patch('curtin.block.clear_holders.time')491 @mock.patch('curtin.block.clear_holders.time')
@@ -491,7 +494,7 @@ class TestClearHolders(CiTestCase):
491 def test_clear_holders_mp_enabled_not_active_wipes_dev(self, mock_block,494 def test_clear_holders_mp_enabled_not_active_wipes_dev(self, mock_block,
492 mock_log, m_time,495 mock_log, m_time,
493 mock_swap,496 mock_swap,
494 mock_mpath):497 mock_mpath, m_zfs):
495 """wipe_superblock skips wiping multipath member path."""498 """wipe_superblock skips wiping multipath member path."""
496 mock_swap.return_value = False499 mock_swap.return_value = False
497 mock_block.sysfs_to_devpath.return_value = self.test_blockdev500 mock_block.sysfs_to_devpath.return_value = self.test_blockdev
@@ -500,6 +503,7 @@ class TestClearHolders(CiTestCase):
500 mock_mpath.find_mpath_id_by_path.return_value = None503 mock_mpath.find_mpath_id_by_path.return_value = None
501 mock_block.get_blockdev_for_partition.return_value = (504 mock_block.get_blockdev_for_partition.return_value = (
502 self.test_blockdev, 1)505 self.test_blockdev, 1)
506 m_zfs.zfs_supported.return_value = False
503 mock_block.is_zfs_member.return_value = False507 mock_block.is_zfs_member.return_value = False
504 mock_block.get_sysfs_partitions.side_effect = iter([508 mock_block.get_sysfs_partitions.side_effect = iter([
505 ['p1', 'p2'], # has partitions before wipe509 ['p1', 'p2'], # has partitions before wipe
@@ -510,6 +514,7 @@ class TestClearHolders(CiTestCase):
510 mock_block.sysfs_to_devpath.assert_called_with(self.test_syspath)514 mock_block.sysfs_to_devpath.assert_called_with(self.test_syspath)
511 self.assertEqual(0, mock_block.wipe_volume.call_count)515 self.assertEqual(0, mock_block.wipe_volume.call_count)
512516
517 @mock.patch('curtin.block.clear_holders.zfs')
513 @mock.patch('curtin.block.clear_holders.multipath')518 @mock.patch('curtin.block.clear_holders.multipath')
514 @mock.patch('curtin.block.clear_holders.is_swap_device')519 @mock.patch('curtin.block.clear_holders.is_swap_device')
515 @mock.patch('curtin.block.clear_holders.time')520 @mock.patch('curtin.block.clear_holders.time')
@@ -517,7 +522,7 @@ class TestClearHolders(CiTestCase):
517 @mock.patch('curtin.block.clear_holders.block')522 @mock.patch('curtin.block.clear_holders.block')
518 def test_clear_holders_mp_disabled_wipes_dev(self, mock_block, mock_log,523 def test_clear_holders_mp_disabled_wipes_dev(self, mock_block, mock_log,
519 m_time, mock_swap,524 m_time, mock_swap,
520 mock_mpath):525 mock_mpath, m_zfs):
521 """wipe_superblock wipes blockdev with multipath disabled."""526 """wipe_superblock wipes blockdev with multipath disabled."""
522 mock_swap.return_value = False527 mock_swap.return_value = False
523 mock_block.sysfs_to_devpath.return_value = self.test_blockdev528 mock_block.sysfs_to_devpath.return_value = self.test_blockdev
@@ -525,6 +530,7 @@ class TestClearHolders(CiTestCase):
525 mock_mpath.multipath_supported.return_value = False530 mock_mpath.multipath_supported.return_value = False
526 mock_block.get_blockdev_for_partition.return_value = (531 mock_block.get_blockdev_for_partition.return_value = (
527 self.test_blockdev, 1)532 self.test_blockdev, 1)
533 m_zfs.zfs_supported.return_value = False
528 mock_block.is_zfs_member.return_value = False534 mock_block.is_zfs_member.return_value = False
529 mock_block.get_sysfs_partitions.side_effect = iter([535 mock_block.get_sysfs_partitions.side_effect = iter([
530 ['p1', 'p2'], # has partitions before wipe536 ['p1', 'p2'], # has partitions before wipe
@@ -536,6 +542,7 @@ class TestClearHolders(CiTestCase):
536 mock_block.wipe_volume.assert_called_with(542 mock_block.wipe_volume.assert_called_with(
537 self.test_blockdev, exclusive=True, mode='superblock', strict=True)543 self.test_blockdev, exclusive=True, mode='superblock', strict=True)
538544
545 @mock.patch('curtin.block.clear_holders.zfs')
539 @mock.patch('curtin.block.clear_holders.get_holders')546 @mock.patch('curtin.block.clear_holders.get_holders')
540 @mock.patch('curtin.block.clear_holders.multipath')547 @mock.patch('curtin.block.clear_holders.multipath')
541 @mock.patch('curtin.block.clear_holders.is_swap_device')548 @mock.patch('curtin.block.clear_holders.is_swap_device')
@@ -546,10 +553,12 @@ class TestClearHolders(CiTestCase):
546 mock_log, m_time,553 mock_log, m_time,
547 mock_swap,554 mock_swap,
548 mock_mpath,555 mock_mpath,
549 m_get_holders):556 m_get_holders,
557 m_zfs):
550 """wipe_superblock wipes removes mp parts first and wipes dev."""558 """wipe_superblock wipes removes mp parts first and wipes dev."""
551 mock_swap.return_value = False559 mock_swap.return_value = False
552 mock_block.sysfs_to_devpath.return_value = self.test_blockdev560 mock_block.sysfs_to_devpath.return_value = self.test_blockdev
561 m_zfs.zfs_supported.return_value = False
553 mock_block.is_zfs_member.return_value = False562 mock_block.is_zfs_member.return_value = False
554 mock_block.is_extended_partition.return_value = False563 mock_block.is_extended_partition.return_value = False
555 mock_block.get_blockdev_for_partition.return_value = (564 mock_block.get_blockdev_for_partition.return_value = (

Subscribers

People subscribed via source and target branches