tests: replace pycodestyle with black
[vpp.git] / test / test_cli.py
1 #!/usr/bin/env python3
2 """CLI functional tests"""
3
4 import datetime
5 import time
6 import unittest
7
8 from vpp_papi import VPPIOError
9
10 from framework import VppTestCase, VppTestRunner
11
12
13 class TestCLI(VppTestCase):
14     """CLI Test Case"""
15
16     maxDiff = None
17
18     @classmethod
19     def setUpClass(cls):
20         # using the framework default
21         cls.vapi_response_timeout = 5
22         super(TestCLI, cls).setUpClass()
23
24     @classmethod
25     def tearDownClass(cls):
26         super(TestCLI, cls).tearDownClass()
27
28     def setUp(self):
29         super(TestCLI, self).setUp()
30
31     def tearDown(self):
32         super(TestCLI, self).tearDown()
33
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)
38
39         rv = self.vapi.papi.cli_inband(cmd="show version")
40         self.assertEqual(rv.retval, 0)
41
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")
46
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)
51
52
53 class TestCLIExtendedVapiTimeout(VppTestCase):
54     maxDiff = None
55
56     @classmethod
57     def setUpClass(cls):
58         cls.vapi_response_timeout = 15
59         cls.__doc__ = (
60             " CLI Test Case w/ Extended (%ssec) Vapi Timeout "
61             % cls.vapi_response_timeout
62         )
63         super(TestCLIExtendedVapiTimeout, cls).setUpClass()
64
65     @classmethod
66     def tearDownClass(cls):
67         super(TestCLIExtendedVapiTimeout, cls).tearDownClass()
68
69     def setUp(self):
70         super(TestCLIExtendedVapiTimeout, self).setUp()
71
72     def tearDown(self):
73         super(TestCLIExtendedVapiTimeout, self).tearDown()
74
75     def test_long_cli_delay(self):
76         """Test that delayed result returns with extended timeout."""
77         wait_secs = self.vapi_response_timeout - 1
78
79         # get vpp time as float
80         start = self.vapi.papi.show_vpe_system_time(
81             _no_type_conversion=True
82         ).vpe_system_time
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
86         ).vpe_system_time
87
88         # assume that the overhead of the measurement is not more that .5 sec.
89         self.assertEqual(round(now - start), wait_secs)
90
91
92 if __name__ == "__main__":
93     unittest.main(testRunner=VppTestRunner)