[asterisk-dev] [Code Review] 3027: Valgrind support in TestSuite

Scott Griepentrog reviewboard at asterisk.org
Tue Dec 10 11:51:04 CST 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3027/
-----------------------------------------------------------

(Updated Dec. 10, 2013, 11:51 a.m.)


Review request for Asterisk Developers.


Changes
-------

Updated to include changes from feedback and some additional features used in support of r3056

- majority of changes relocated to Valgrind.py module
- can disable leak and unref checks
- can run with gdb for additional debug at point of bad ptr
- general pythonicization improvements


Repository: testsuite


Description
-------

This patch adds support for running Asterisk under Valgrind (say: Val-Grinned) to check for all sorts of nasty runtime bugs.  This started off with a post to asterisk-dev list by nitesh.bansal at gmail.com, and he wrote and contributed the initial version.  So if you find this useful, be sure to thank him.  Then I made extensive changes and additions, so if the code stinks, blame me.

The following has been done:

- Check runtests.py arguments for --valgrind and --valgrind-gensupp flags, pass via environ to TestCase.py
- Note previously existing instances of ast# logs to insure we only process new log/xml files
- Increase reactor timeout by x5 when valgrind enabled
- Patch to reactor_stop() to insure it does even when exceptions occur in deferred stack
- Add valgrind with correct arguments into executable path
- After run, check valgrind.xml for errors, parse and condense them into something more managable
- If -gensup mode enabled, write suppressions to logs/(test)/ast#/valgrind.supp that can be added (manually)
- A default valgrind.supp "suppressions" file is in configs/ to prevent complaints about known unfixables

Notes:

- valgrind can be triggered by argument to runtests.py, export VALGRIND=true, or in test-config.yaml
- configs/valgrind.supp will be used if found, but tests/(test)/configs/valgrind.supp will take precedence
- valgrind-gensupp mode will create example suppressions file, during which no suppressions occur


Diffs (updated)
-----

  /asterisk/trunk/runtests.py 4350 
  /asterisk/trunk/lib/python/asterisk/asterisk.py 4350 
  /asterisk/trunk/lib/python/asterisk/Valgrind.py PRE-CREATION 
  /asterisk/trunk/lib/python/asterisk/TestConfig.py 4350 
  /asterisk/trunk/lib/python/asterisk/TestCase.py 4350 
  /asterisk/trunk/configs/valgrind.supp PRE-CREATION 
  /asterisk/trunk/README.txt 4350 

Diff: https://reviewboard.asterisk.org/r/3027/diff/


Testing
-------

Tested on 64bit and 32bit CentOS, including low cpu power conditions.  Some sporadic timing issues affecting AMI/twisted operation have been seen and will be corrected.


Thanks,

Scott Griepentrog

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20131210/7da8f1ad/attachment.html>


More information about the asterisk-dev mailing list