Correct inconsistent behavior on unavailable usage data

fixes QubesOS/qubes-issues#5463
This commit is contained in:
Marta Marczykowska-Górecka 2019-11-15 17:45:09 +01:00
parent fcb74d70f8
commit 783832adde
No known key found for this signature in database
GPG Key ID: 9A752C30B26FD04B
2 changed files with 36 additions and 4 deletions

View File

@ -801,10 +801,13 @@ class Pool:
Contains data_usage for usage in bytes and data_size for pool Contains data_usage for usage in bytes and data_size for pool
size; other implementations may add more implementation-specific size; other implementations may add more implementation-specific
detail""" detail"""
return { result = {}
'data_usage': self.usage, if self.usage is not None:
'data_size': self.size result['data_usage'] = self.usage
} if self.size is not None:
result['data_size'] = self.size
return result
def _not_implemented(self, method_name): def _not_implemented(self, method_name):
''' Helper for emitting helpful `NotImplementedError` exceptions ''' ''' Helper for emitting helpful `NotImplementedError` exceptions '''

View File

@ -165,3 +165,32 @@ class TC_00_Pool(QubesTestCase):
self.loop.run_until_complete(vm.create_on_disk(pool=pool)) self.loop.run_until_complete(vm.create_on_disk(pool=pool))
with self.assertRaises(qubes.exc.QubesPoolInUseError): with self.assertRaises(qubes.exc.QubesPoolInUseError):
self.loop.run_until_complete(self.app.remove_pool(pool_name)) self.loop.run_until_complete(self.app.remove_pool(pool_name))
def test_006_pool_usage_qubespool(self):
qubes_pool = self.app.get_pool('varlibqubes')
usage_details = qubes_pool.usage_details
self.assertIsNotNone(usage_details['data_size'],
"Data size incorrectly reported as None")
self.assertIsNotNone(usage_details['data_usage'],
"Data usage incorrectly reported as None")
def test_007_pool_kernels_usage(self):
pool_name = 'kernels_test_pools'
dir_path = '/tmp/{}'.format(pool_name)
pool = self.loop.run_until_complete(
self.app.add_pool(name=pool_name,
driver='linux-kernel',
dir_path=dir_path))
self.assertTrue(self.assertPoolExists(pool_name))
qubes_pool = self.app.get_pool(pool_name)
usage_details = qubes_pool.usage_details
self.assertEqual(usage_details,
{},
"Kernels pool should not report usage details.")
self.loop.run_until_complete(self.app.remove_pool(pool_name))