diff options
author | Valerii Ponomarov <vponomar@redhat.com> | 2018-10-31 07:24:28 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.host.prod.eng.bos.redhat.com> | 2018-10-31 07:24:28 +0000 |
commit | 123eaee2b4ff4a63cbc04380aa59b0734e95c441 (patch) | |
tree | b148f99928186022da8d473fddd0941516a6c1fc /tests/functional/common/heketi | |
parent | 0acce60125038b350deac4c640399bee482b0292 (diff) | |
parent | b9fb9d846f250c0f612aff67bc0936ea4038be6d (diff) |
Merge "[CNS-765] Read and validate heketi device info"
Diffstat (limited to 'tests/functional/common/heketi')
-rw-r--r-- | tests/functional/common/heketi/test_device_info.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/functional/common/heketi/test_device_info.py b/tests/functional/common/heketi/test_device_info.py new file mode 100644 index 00000000..2086245d --- /dev/null +++ b/tests/functional/common/heketi/test_device_info.py @@ -0,0 +1,71 @@ +from cnslibs.common import heketi_libs +from cnslibs.common import heketi_ops + + +class TestHeketiDeviceInfo(heketi_libs.HeketiClientSetupBaseClass): + + def test_heketi_devices_info_verification(self): + """Test case CNS-765""" + + # Get devices from topology info + devices_from_topology = {} + topology_info = heketi_ops.heketi_topology_info( + self.heketi_client_node, self.heketi_server_url, json=True) + self.assertTrue(topology_info) + self.assertIn('clusters', list(topology_info.keys())) + self.assertGreater(len(topology_info['clusters']), 0) + for cluster in topology_info['clusters']: + self.assertIn('nodes', list(cluster.keys())) + self.assertGreater(len(cluster['nodes']), 0) + for node in cluster['nodes']: + self.assertIn('devices', list(node.keys())) + self.assertGreater(len(node['devices']), 0) + for device in node['devices']: + # Expected keys are state, storage, id, name and bricks. + self.assertIn('id', list(device.keys())) + devices_from_topology[device['id']] = device + + # Get devices info and make sure data are consistent and complete + for device_id, device_from_t_info in devices_from_topology.items(): + device_info = heketi_ops.heketi_device_info( + self.heketi_client_node, self.heketi_server_url, + device_id, json=True) + self.assertTrue(device_info) + + # Verify 'id', 'name', 'state' and 'storage' data + for key in ('id', 'name', 'state', 'storage', 'bricks'): + self.assertIn(key, list(device_from_t_info.keys())) + self.assertIn(key, list(device_info.keys())) + self.assertEqual(device_info['id'], device_from_t_info['id']) + self.assertEqual(device_info['name'], device_from_t_info['name']) + self.assertEqual(device_info['state'], device_from_t_info['state']) + device_info_storage = device_info['storage'] + device_from_t_info_storage = device_from_t_info['storage'] + device_info_storage_keys = list(device_info_storage.keys()) + device_from_t_info_storage_keys = list( + device_from_t_info_storage.keys()) + for key in ('total', 'used', 'free'): + self.assertIn(key, device_info_storage_keys) + self.assertIn(key, device_from_t_info_storage_keys) + self.assertEqual( + device_info_storage[key], device_from_t_info_storage[key]) + self.assertIsInstance(device_info_storage[key], int) + self.assertGreater(device_info_storage[key], -1) + + # Verify 'bricks' data + self.assertEqual( + len(device_info['bricks']), len(device_from_t_info['bricks'])) + brick_match_count = 0 + for brick in device_info['bricks']: + for brick_from_t in device_from_t_info['bricks']: + if brick_from_t['id'] != brick['id']: + continue + brick_match_count += 1 + brick_from_t_keys = list(brick_from_t.keys()) + brick_keys = list(brick.keys()) + for key in ('device', 'volume', 'size', 'path', 'id', + 'node'): + self.assertIn(key, brick_from_t_keys) + self.assertIn(key, brick_keys) + self.assertEqual(brick[key], brick_from_t[key]) + self.assertEqual(brick_match_count, len(device_info['bricks'])) |