X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_cli.py;h=a1ffbac81d81bace6c86ab97fab5df4cc667670e;hb=7c0eb56f4;hp=d3e69e924b58731e3357b4d38563353d30ad65cb;hpb=72d8758fdc2266b9f4cd53063da2d23f0855c1df;p=vpp.git diff --git a/test/test_cli.py b/test/test_cli.py index d3e69e924b5..a1ffbac81d8 100644 --- a/test/test_cli.py +++ b/test/test_cli.py @@ -1,7 +1,12 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """CLI functional tests""" +import datetime +import time import unittest + +from vpp_papi import vpp_transport_shmem + from framework import VppTestCase, VppTestRunner @@ -11,6 +16,8 @@ class TestCLI(VppTestCase): @classmethod def setUpClass(cls): + # using the framework default + cls.vapi_response_timeout = 5 super(TestCLI, cls).setUpClass() @classmethod @@ -31,6 +38,52 @@ class TestCLI(VppTestCase): rv = self.vapi.papi.cli_inband(cmd='show version') self.assertEqual(rv.retval, 0) + def test_long_cli_delay(self): + """ Test that VppApiClient raises VppTransportShmemIOError if timeout.""" # noqa + with self.assertRaises( + vpp_transport_shmem.VppTransportShmemIOError) as ctx: + rv = self.vapi.papi.cli_inband(cmd='wait 10') + + def test_long_cli_delay_override(self): + """ Test per-command _timeout option.""" # noqa + rv = self.vapi.papi.cli_inband(cmd='wait 10', _timeout=15) + self.assertEqual(rv.retval, 0) + + +class TestCLIExtendedVapiTimeout(VppTestCase): + maxDiff = None + + @classmethod + def setUpClass(cls): + cls.vapi_response_timeout = 15 + cls.__doc__ = " CLI Test Case w/ Extended (%ssec) Vapi Timeout " \ + % cls.vapi_response_timeout + super(TestCLIExtendedVapiTimeout, cls).setUpClass() + + @classmethod + def tearDownClass(cls): + super(TestCLIExtendedVapiTimeout, cls).tearDownClass() + + def setUp(self): + super(TestCLIExtendedVapiTimeout, self).setUp() + + def tearDown(self): + super(TestCLIExtendedVapiTimeout, self).tearDown() + + def test_long_cli_delay(self): + """ Test that delayed result returns with extended timeout.""" + wait_secs = self.vapi_response_timeout - 1 + + # get vpp time as float + start = self.vapi.papi.show_vpe_system_time( + _no_type_conversion=True).vpe_system_time + rv = self.vapi.papi.cli_inband(cmd='wait %s' % wait_secs) + now = self.vapi.papi.show_vpe_system_time( + _no_type_conversion=True).vpe_system_time + + # assume that the overhead of the measurement is not more that .5 sec. + self.assertEqual(round(now - start), wait_secs) + if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)