gcov / test framework: sigterm not sigkill
Otherwise, gcov data vanishes without a trace. Add a __gcov_flush() call to the unix signal handler, under #ifdef CLIB_GCOV. Add -DCLIB_GCOV to vpp_gcov_TAG_CFLAGS. Change-Id: I2726e671b26dfbe7fae88f46a8207bb2b5106884 Signed-off-by: Dave Barach <dave@barachs.net>
This commit is contained in:
Dave Barach
committed by
Paul Vinciguerra
parent
d7566cb70b
commit
ad64687e8b
@ -37,9 +37,8 @@ vpp_clang_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -fstack-protector -fPIC -Werror
|
||||
vpp_clang_TAG_CXXFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -fstack-protector -fPIC -Werror
|
||||
vpp_clang_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -fstack-protector -fPIC -Werror
|
||||
|
||||
vpp_gcov_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -fPIC -Werror -fprofile-arcs -ftest-coverage
|
||||
vpp_gcov_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -fPIC -Werror -coverage
|
||||
vpp_gcov_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DCLIB_GCOV -fPIC -Werror -fprofile-arcs -ftest-coverage
|
||||
vpp_gcov_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DCLIB_GCOV -fPIC -Werror -coverage
|
||||
|
||||
vpp_coverity_TAG_CFLAGS = -g -O2 -fPIC -Werror -D__COVERITY__
|
||||
vpp_coverity_TAG_LDFLAGS = -g -O2 -fPIC -Werror -D__COVERITY__
|
||||
|
||||
|
@ -139,6 +139,17 @@ unix_signal_handler (int signum, siginfo_t * si, ucontext_t * uc)
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CLIB_GCOV
|
||||
/*
|
||||
* Test framework sends SIGTERM, so we need to flush the
|
||||
* code coverage stats here.
|
||||
*/
|
||||
{
|
||||
void __gcov_flush (void);
|
||||
__gcov_flush ();
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Null terminate. */
|
||||
vec_add1 (syslog_msg, 0);
|
||||
|
||||
|
@ -530,7 +530,7 @@ class VppTestCase(unittest.TestCase):
|
||||
cls.vpp.poll()
|
||||
if cls.vpp.returncode is None:
|
||||
cls.logger.debug("Sending TERM to vpp")
|
||||
cls.vpp.kill()
|
||||
cls.vpp.terminate()
|
||||
cls.logger.debug("Waiting for vpp to die")
|
||||
cls.vpp.communicate()
|
||||
cls.logger.debug("Deleting class vpp attribute on %s",
|
||||
|
@ -202,7 +202,7 @@ class VCLTestCase(VppTestCase):
|
||||
if os.path.isdir('/proc/{}'.format(worker_server.process.pid)):
|
||||
self.logger.info("Killing server worker process (pid %d)" %
|
||||
worker_server.process.pid)
|
||||
os.killpg(os.getpgid(worker_server.process.pid), signal.SIGKILL)
|
||||
os.killpg(os.getpgid(worker_server.process.pid), signal.SIGTERM)
|
||||
worker_server.join()
|
||||
self.logger.info("Client worker result is `%s'" % worker_client.result)
|
||||
error = False
|
||||
|
Reference in New Issue
Block a user