test_base_diskutils.py (3304B)
1 import unittest 2 from unittest import mock 3 4 import mozunit 5 from mozharness.base.diskutils import DiskInfo, DiskSize, DiskutilsError, convert_to 6 7 8 class TestDiskutils(unittest.TestCase): 9 def test_convert_to(self): 10 # 0 is 0 regardless from_unit/to_unit 11 self.assertTrue(convert_to(size=0, from_unit="GB", to_unit="MB") == 0) 12 size = 524288 # 512 * 1024 13 # converting from/to same unit 14 self.assertTrue(convert_to(size=size, from_unit="MB", to_unit="MB") == size) 15 16 self.assertTrue(convert_to(size=size, from_unit="MB", to_unit="GB") == 512) 17 18 self.assertRaises( 19 DiskutilsError, 20 lambda: convert_to(size="a string", from_unit="MB", to_unit="MB"), 21 ) 22 self.assertRaises( 23 DiskutilsError, lambda: convert_to(size=0, from_unit="foo", to_unit="MB") 24 ) 25 self.assertRaises( 26 DiskutilsError, lambda: convert_to(size=0, from_unit="MB", to_unit="foo") 27 ) 28 29 30 class TestDiskInfo(unittest.TestCase): 31 def testDiskinfo_to(self): 32 di = DiskInfo() 33 self.assertTrue(di.unit == "bytes") 34 self.assertTrue(di.free == 0) 35 self.assertTrue(di.used == 0) 36 self.assertTrue(di.total == 0) 37 # convert to GB 38 di._to("GB") 39 self.assertTrue(di.unit == "GB") 40 self.assertTrue(di.free == 0) 41 self.assertTrue(di.used == 0) 42 self.assertTrue(di.total == 0) 43 44 45 class MockStatvfs: 46 def __init__(self): 47 self.f_bsize = 0 48 self.f_frsize = 0 49 self.f_blocks = 0 50 self.f_bfree = 0 51 self.f_bavail = 0 52 self.f_files = 0 53 self.f_ffree = 0 54 self.f_favail = 0 55 self.f_flag = 0 56 self.f_namemax = 0 57 58 59 class TestDiskSpace(unittest.TestCase): 60 @mock.patch("mozharness.base.diskutils.os") 61 def testDiskSpacePosix(self, mock_os): 62 ds = MockStatvfs() 63 mock_os.statvfs.return_value = ds 64 di = DiskSize()._posix_size("/") 65 self.assertTrue(di.unit == "bytes") 66 self.assertTrue(di.free == 0) 67 self.assertTrue(di.used == 0) 68 self.assertTrue(di.total == 0) 69 70 @mock.patch("mozharness.base.diskutils.ctypes") 71 def testDiskSpaceWindows(self, mock_ctypes): 72 mock_ctypes.windll.kernel32.GetDiskFreeSpaceExA.return_value = 0 73 mock_ctypes.windll.kernel32.GetDiskFreeSpaceExW.return_value = 0 74 di = DiskSize()._windows_size("/c/") 75 self.assertTrue(di.unit == "bytes") 76 self.assertTrue(di.free == 0) 77 self.assertTrue(di.used == 0) 78 self.assertTrue(di.total == 0) 79 80 @mock.patch("mozharness.base.diskutils.os") 81 @mock.patch("mozharness.base.diskutils.ctypes") 82 def testUnspportedPlafrom(self, mock_ctypes, mock_os): 83 mock_os.statvfs.side_effect = AttributeError("") 84 self.assertRaises(AttributeError, lambda: DiskSize()._posix_size("/")) 85 mock_ctypes.windll.kernel32.GetDiskFreeSpaceExW.side_effect = AttributeError("") 86 mock_ctypes.windll.kernel32.GetDiskFreeSpaceExA.side_effect = AttributeError("") 87 self.assertRaises(AttributeError, lambda: DiskSize()._windows_size("/")) 88 self.assertRaises( 89 DiskutilsError, lambda: DiskSize().get_size(path="/", unit="GB") 90 ) 91 92 93 if __name__ == "__main__": 94 mozunit.main()