f0797d130f
This patch addresses the functionality that is missing for distributed make test source files. In addition it extends the concept of colocating test source code with functional source code (eg. src/vcl/test). It also cleans up deficiencies in the make test makefiles. NOTE: Due to the way sphinx document tools work, all test, all of the make test python code is gathered using soft links into the directory: .../build-root/build-test/src Change summary: - Remove 'make test' help details from main makefile help output to reduce clutter and redundant help output - Move all generated build output to .../build-root/build-test - Move test_vcl.py as first usecase for distributed core feature make test code - Add test-wipe-all target and fix wipe targets to remove all generated files - Fix 'make test-doc' to generate module documentation for all source files - Remove unused targets in test/doc/Makefile - Fix 'make test-shell' - Fix test/ext Makefile to not generate bogus output Type: fix Fixes: a43c93f8554ad7418e31be3791b3fb71232f60ac Change-Id: Icc2ddb81d474081c3ede4548ecd7a0624651f62d Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
82 lines
2.8 KiB
Python
82 lines
2.8 KiB
Python
#!/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)
|