diff options
author | Paul Vinciguerra <pvinci@vinciconsulting.com> | 2019-10-26 22:25:49 -0400 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2019-11-27 17:00:12 +0000 |
commit | bfd7d294d06e22f7bf809e8ac26220ebf51db683 (patch) | |
tree | 25d5796ce49f9047cee821d8b98307b909979815 /test | |
parent | 1a7ed5e3e62dfe77832022a46ee32d744a347ac5 (diff) |
vlib: add 'wait' cli command
When running exec scripts, there can be a need to wait between statements.
Type: feature
Change-Id: I2a45b390697e09fc222358c9354f28e3368a06ba
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/framework.py | 7 | ||||
-rw-r--r-- | test/test_cli.py | 48 |
2 files changed, 51 insertions, 4 deletions
diff --git a/test/framework.py b/test/framework.py index 02c56fbcfe4..24ee8692976 100644 --- a/test/framework.py +++ b/test/framework.py @@ -267,6 +267,7 @@ class VppTestCase(unittest.TestCase): extra_vpp_punt_config = [] extra_vpp_plugin_config = [] + vapi_response_timeout = 5 @property def packet_infos(self): @@ -550,11 +551,9 @@ class VppTestCase(unittest.TestCase): cls.pump_thread.daemon = True cls.pump_thread.start() if cls.debug_gdb or cls.debug_gdbserver: - read_timeout = 0 - else: - read_timeout = 5 + cls.vapi_response_timeout = 0 cls.vapi = VppPapiProvider(cls.shm_prefix, cls.shm_prefix, cls, - read_timeout) + cls.vapi_response_timeout) if cls.step: hook = hookmodule.StepHook(cls) else: diff --git a/test/test_cli.py b/test/test_cli.py index 97885b9b44e..7fa734b2231 100644 --- a/test/test_cli.py +++ b/test/test_cli.py @@ -1,7 +1,12 @@ #!/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,47 @@ 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') + + +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) |