2 """CLI functional tests"""
8 from vpp_papi import VPPIOError
10 from framework import VppTestCase, VppTestRunner
13 class TestCLI(VppTestCase):
20 # using the framework default
21 cls.vapi_response_timeout = 5
22 super(TestCLI, cls).setUpClass()
25 def tearDownClass(cls):
26 super(TestCLI, cls).tearDownClass()
29 super(TestCLI, self).setUp()
32 super(TestCLI, self).tearDown()
34 def test_cli_retval(self):
35 """CLI inband retval"""
36 rv = self.vapi.papi.cli_inband(cmd="this command does not exist")
37 self.assertNotEqual(rv.retval, 0)
39 rv = self.vapi.papi.cli_inband(cmd="show version")
40 self.assertEqual(rv.retval, 0)
42 def test_long_cli_delay(self):
43 """Test that VppApiClient raises VppIOError if timeout.""" # noqa
44 with self.assertRaises(VPPIOError) 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
60 " CLI Test Case w/ Extended (%ssec) Vapi Timeout "
61 % cls.vapi_response_timeout
63 super(TestCLIExtendedVapiTimeout, cls).setUpClass()
66 def tearDownClass(cls):
67 super(TestCLIExtendedVapiTimeout, cls).tearDownClass()
70 super(TestCLIExtendedVapiTimeout, self).setUp()
73 super(TestCLIExtendedVapiTimeout, self).tearDown()
75 def test_long_cli_delay(self):
76 """Test that delayed result returns with extended timeout."""
77 wait_secs = self.vapi_response_timeout - 1
79 # get vpp time as float
80 start = self.vapi.papi.show_vpe_system_time(
81 _no_type_conversion=True
83 rv = self.vapi.papi.cli_inband(cmd="wait %s" % wait_secs)
84 now = self.vapi.papi.show_vpe_system_time(
85 _no_type_conversion=True
88 # assume that the overhead of the measurement is not more that .5 sec.
89 self.assertEqual(round(now - start), wait_secs)
92 if __name__ == "__main__":
93 unittest.main(testRunner=VppTestRunner)