From e1887c1765ef57d50986701f7a4563f1ad7df340 Mon Sep 17 00:00:00 2001 From: Dave Wallace Date: Mon, 16 Nov 2020 18:03:53 -0500 Subject: tests: move vpp-api tests to src/vpe-api/test - Refactor make test code to be co-located with the vpp feature source code Type: test Signed-off-by: Dave Wallace Change-Id: Ic42bbd4e13606a5fdc91143ecc6452102ec337fe --- src/vpp-api/test/test_endian.py | 38 +++++++++++++++++++ src/vpp-api/test/test_vapi.py | 81 ++++++++++++++++++++++++++++++++++++++++ src/vpp-api/test/test_vpe_api.py | 55 +++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 src/vpp-api/test/test_endian.py create mode 100644 src/vpp-api/test/test_vapi.py create mode 100644 src/vpp-api/test/test_vpe_api.py (limited to 'src') diff --git a/src/vpp-api/test/test_endian.py b/src/vpp-api/test/test_endian.py new file mode 100644 index 00000000000..462ee2b6b57 --- /dev/null +++ b/src/vpp-api/test/test_endian.py @@ -0,0 +1,38 @@ +# Copyright (c) 2019. Vinci Consulting Corp. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import framework +import vpp_papi_provider + +F64_ONE = 1.0 + + +class TestEndian(framework.VppTestCase): + """TestEndian""" + + def test_f64_endian_value(self): + try: + rv = self.vapi.get_f64_endian_value(f64_one=F64_ONE) + self.assertEqual(rv.f64_one_result, F64_ONE, + "client incorrectly deserializes f64 values. " + "Expected: %r. Received: %r." % ( + F64_ONE, rv.f64_one_result)) + except vpp_papi_provider.UnexpectedApiReturnValueError: + self.fail('client incorrectly serializes f64 values.') + + def test_get_f64_increment_by_one(self): + expected = 43.0 + rv = self.vapi.get_f64_increment_by_one(f64_value=42.0) + self.assertEqual(rv.f64_value, expected, 'Expected %r, received:%r.' + % (expected, rv.f64_value)) diff --git a/src/vpp-api/test/test_vapi.py b/src/vpp-api/test/test_vapi.py new file mode 100644 index 00000000000..1a4293d7888 --- /dev/null +++ b/src/vpp-api/test/test_vapi.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +""" VAPI test """ + +import unittest +import os +import signal +from framework import VppTestCase, running_on_centos, VppTestRunner, Worker + + +class VAPITestCase(VppTestCase): + """ VAPI test """ + + @classmethod + def setUpClass(cls): + super(VAPITestCase, cls).setUpClass() + + @classmethod + def tearDownClass(cls): + super(VAPITestCase, cls).tearDownClass() + + def test_vapi_c(self): + """ run C VAPI tests """ + var = "TEST_BR" + built_root = os.getenv(var, None) + self.assertIsNotNone(built_root, + "Environment variable `%s' not set" % var) + executable = "%s/vapi_test/vapi_c_test" % built_root + worker = Worker( + [executable, "vapi client", self.shm_prefix], self.logger) + worker.start() + timeout = 60 + worker.join(timeout) + self.logger.info("Worker result is `%s'" % worker.result) + error = False + if worker.result is None: + try: + error = True + self.logger.error( + "Timeout! Worker did not finish in %ss" % timeout) + os.killpg(os.getpgid(worker.process.pid), signal.SIGTERM) + worker.join() + except: + self.logger.debug("Couldn't kill worker-spawned process") + raise + if error: + raise Exception( + "Timeout! Worker did not finish in %ss" % timeout) + self.assert_equal(worker.result, 0, "Binary test return code") + + @unittest.skipIf(running_on_centos, "Centos's gcc can't compile our C++") + def test_vapi_cpp(self): + """ run C++ VAPI tests """ + var = "TEST_BR" + built_root = os.getenv(var, None) + self.assertIsNotNone(built_root, + "Environment variable `%s' not set" % var) + executable = "%s/vapi_test/vapi_cpp_test" % built_root + worker = Worker( + [executable, "vapi client", self.shm_prefix], self.logger) + worker.start() + timeout = 120 + worker.join(timeout) + self.logger.info("Worker result is `%s'" % worker.result) + error = False + if worker.result is None: + try: + error = True + self.logger.error( + "Timeout! Worker did not finish in %ss" % timeout) + os.killpg(os.getpgid(worker.process.pid), signal.SIGTERM) + worker.join() + except: + raise Exception("Couldn't kill worker-spawned process") + if error: + raise Exception( + "Timeout! Worker did not finish in %ss" % timeout) + self.assert_equal(worker.result, 0, "Binary test return code") + + +if __name__ == '__main__': + unittest.main(testRunner=VppTestRunner) diff --git a/src/vpp-api/test/test_vpe_api.py b/src/vpp-api/test/test_vpe_api.py new file mode 100644 index 00000000000..54f7e41151b --- /dev/null +++ b/src/vpp-api/test/test_vpe_api.py @@ -0,0 +1,55 @@ +# Copyright (c) 2019. Vinci Consulting Corp. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import datetime +import time +import unittest +from framework import VppTestCase + +enable_print = False + + +class TestVpeApi(VppTestCase): + """TestVpeApi""" + + def test_log_dump_default(self): + rv = self.vapi.cli('test log notice fib entry this is a test') + rv = self.vapi.log_dump() + if enable_print: + print('\n'.join([str(v) for v in rv])) + self.assertTrue(rv) + + def test_log_dump_timestamp_0(self): + rv = self.vapi.cli('test log notice fib entry this is a test') + rv = self.vapi.log_dump(start_timestamp=0.0) + if enable_print: + print('\n'.join([str(v) for v in rv])) + self.assertTrue(rv) + + def test_log_dump_timestamp_future(self): + rv = self.vapi.cli('test log debug fib entry test') + rv = self.vapi.log_dump(start_timestamp=time.time() + 60.0) + if enable_print: + print('\n'.join([str(v) for v in rv])) + self.assertFalse(rv) + + def test_show_vpe_system_time(self): + local_start_time = datetime.datetime.now() + rv = self.vapi.show_vpe_system_time() + self.assertTrue(rv.vpe_system_time > local_start_time - + datetime.timedelta(hours=1.0), + 'system times differ by more than an hour.') + if enable_print: + print('\n'.join([str(v) for v in rv])) + print('%r %s' % (rv.vpe_system_time, + rv.vpe_system_time)) -- cgit 1.2.3-korg