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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxx>
---
 pyverbs/tests/device.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

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):
     """
-- 
2.17.2




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux