2 """CLI functional tests"""
8 from vpp_papi import vpp_transport_shmem
10 from framework import VppTestCase, VppTestRunner
13 class TestCLI(VppTestCase):
19 # using the framework default
20 cls.vapi_response_timeout = 5
21 super(TestCLI, cls).setUpClass()
24 def tearDownClass(cls):
25 super(TestCLI, cls).tearDownClass()
28 super(TestCLI, self).setUp()
31 super(TestCLI, self).tearDown()
33 def test_cli_retval(self):
34 """ CLI inband retval """
35 rv = self.vapi.papi.cli_inband(cmd='this command does not exist')
36 self.assertNotEqual(rv.retval, 0)
38 rv = self.vapi.papi.cli_inband(cmd='show version')
39 self.assertEqual(rv.retval, 0)
41 def test_long_cli_delay(self):
42 """ Test that VppApiClient raises VppTransportShmemIOError if timeout.""" # noqa
43 with self.assertRaises(
44 vpp_transport_shmem.VppTransportShmemIOError) as ctx:
45 rv = self.vapi.papi.cli_inband(cmd='wait 10')
47 def test_long_cli_delay_override(self):
48 """ Test per-command _timeout option.""" # noqa
49 rv = self.vapi.papi.cli_inband(cmd='wait 10', _timeout=15)
50 self.assertEqual(rv.retval, 0)
53 class TestCLIExtendedVapiTimeout(VppTestCase):
58 cls.vapi_response_timeout = 15
59 cls.__doc__ = " CLI Test Case w/ Extended (%ssec) Vapi Timeout " \
60 % cls.vapi_response_timeout
61 super(TestCLIExtendedVapiTimeout, cls).setUpClass()
64 def tearDownClass(cls):
65 super(TestCLIExtendedVapiTimeout, cls).tearDownClass()
68 super(TestCLIExtendedVapiTimeout, self).setUp()
71 super(TestCLIExtendedVapiTimeout, self).tearDown()
73 def test_long_cli_delay(self):
74 """ Test that delayed result returns with extended timeout."""
75 wait_secs = self.vapi_response_timeout - 1
77 # get vpp time as float
78 start = self.vapi.papi.show_vpe_system_time(
79 _no_type_conversion=True).vpe_system_time
80 rv = self.vapi.papi.cli_inband(cmd='wait %s' % wait_secs)
81 now = self.vapi.papi.show_vpe_system_time(
82 _no_type_conversion=True).vpe_system_time
84 # assume that the overhead of the measurement is not more that .5 sec.
85 self.assertEqual(round(now - start), wait_secs)
88 if __name__ == '__main__':
89 unittest.main(testRunner=VppTestRunner)