diff mbox series

[rdma-core,14/19] pyverbs: Add unittests for query port

Message ID 20190224130638.31848-15-noaos@mellanox.com (mailing list archive)
State Not Applicable
Headers show
Series Pyverbs additions | expand

Commit Message

Noa Osherovich Feb. 24, 2019, 1:06 p.m. UTC
Check query_port:
- Good flow: Verify that the attributes' values are legal.
- Bad flow: Use non-exiting port and expect a failure.

Signed-off-by: Noa Osherovich <noaos@mellanox.com>
---
 pyverbs/tests/device.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
diff mbox series

Patch

diff --git a/pyverbs/tests/device.py b/pyverbs/tests/device.py
index 4a5e0a794069..492448a1526b 100644
--- a/pyverbs/tests/device.py
+++ b/pyverbs/tests/device.py
@@ -76,6 +76,43 @@  class device_test(unittest.TestCase):
                 attr_ex = ctx.query_device_ex()
                 self.verify_device_attr(attr_ex.orig_attr)
 
+    @staticmethod
+    def verify_port_attr(attr):
+        assert 'Invalid' not in d.phys_state_to_str(attr.state)
+        assert 'Invalid' not in d.translate_mtu(attr.max_mtu)
+        assert 'Invalid' not in d.translate_mtu(attr.active_mtu)
+        assert 'Invalid' not in d.width_to_str(attr.active_width)
+        assert 'Invalid' not in d.speed_to_str(attr.active_speed)
+        assert 'Invalid' not in d.translate_link_layer(attr.link_layer)
+        assert attr.max_msg_sz > 0x1000
+
+    def test_query_port(self):
+        """
+        Test ibv_query_port
+        """
+        lst = d.get_device_list()
+        for dev in lst:
+            with d.Context(name=dev.name.decode()) as ctx:
+                num_ports = ctx.query_device().phys_port_cnt
+                for p in range(num_ports):
+                    port_attr = ctx.query_port(p + 1)
+                    self.verify_port_attr(port_attr)
+
+    def test_query_port_bad_flow(self):
+        """ Verify that querying non-existing ports fails as expected """
+        lst = d.get_device_list()
+        for dev in lst:
+            with d.Context(name=dev.name.decode()) as ctx:
+                num_ports = ctx.query_device().phys_port_cnt
+                try:
+                    port = num_ports + random.randint(1, 10)
+                    ctx.query_port(port)
+                except PyverbsRDMAError as e:
+                    assert 'Failed to query port' in e.args[0]
+                    assert 'Invalid argument' in e.args[0]
+                else:
+                    raise PyverbsRDMAError('Successfully queried non-existing port {p}'.\
+                                           format(p=port))
 
 class dm_test(unittest.TestCase):
     """