aboutsummaryrefslogtreecommitdiffstats
path: root/src/vpp-api
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2020-11-16 18:03:53 -0500
committerPaul Vinciguerra <pvinci@vinciconsulting.com>2020-11-17 00:47:31 +0000
commite1887c1765ef57d50986701f7a4563f1ad7df340 (patch)
tree96bb14265439c74fb6361519b4dea5d73d06e433 /src/vpp-api
parent634c2939491decc3ebab727ecea7f7056bc208e1 (diff)
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 <dwallacelf@gmail.com> Change-Id: Ic42bbd4e13606a5fdc91143ecc6452102ec337fe
Diffstat (limited to 'src/vpp-api')
-rw-r--r--src/vpp-api/test/test_endian.py38
-rw-r--r--src/vpp-api/test/test_vapi.py81
-rw-r--r--src/vpp-api/test/test_vpe_api.py55
3 files changed, 174 insertions, 0 deletions
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))