summaryrefslogtreecommitdiffstats
path: root/tests/functional/common/heketi
diff options
context:
space:
mode:
authorValerii Ponomarov <vponomar@redhat.com>2018-10-03 19:01:16 +0530
committerValerii Ponomarov <vponomar@redhat.com>2018-10-25 17:57:13 +0530
commitb9fb9d846f250c0f612aff67bc0936ea4038be6d (patch)
tree1448da5fd56d62417893eb710ca57db705475e6b /tests/functional/common/heketi
parente26d267dca55f4078cb191de442a2c4870367752 (diff)
[CNS-765] Read and validate heketi device info
We expect some set of data in the heketi device info API response. So, get list of devices and check that their data satisfy our criteria. Change-Id: I984f993ad7d0adca1b9a722cf0193b6db3d486b7
Diffstat (limited to 'tests/functional/common/heketi')
-rw-r--r--tests/functional/common/heketi/test_device_info.py71
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']))