Running Net-SNMP Regression Tests under Valgrind
From Net-SNMP Wiki
Revision as of 07:25, 17 March 2011 by Bart.vanassche (Talk | contribs) (moved Running Regression Tests under Valgrind to Running Net-SNMP Regression Tests under Valgrind: SEO optimization)
Introduction
When testing changes of core Net-SNMP code one should not only test these changes functionally but one should also test these with Valgrind. Since Valgrind is a dynamic analysis tool, it is important to trigger as much Net-SNMP code as possible during testing. One way to do that is to run all Net-SNMP regression tests under Valgrind.
Additional Memcheck Suppressions
You will need the memcheck suppression patterns below in addition to those included in the Valgrind distribution. Save these in a file called e.g. net-snmp-memcheck.supp.
{ ldap1 Memcheck:Value8 ... obj:/usr/lib64/libnss_ldap-264.so obj:/usr/lib64/libnss_ldap-264.so } { ldap2 Memcheck:Param ... obj:/usr/lib64/libnss_ldap-264.so obj:/usr/lib64/libnss_ldap-264.so } { OpenSSL1 Memcheck:Leak ... fun:CRYPTO_malloc } { OpenSSL2 Memcheck:Leak ... fun:CRYPTO_realloc } { OpenSSL3 Memcheck:Value4 ... fun:generate_key fun:DH_generate_key } { OpenSSL4 Memcheck:Cond ... fun:generate_key fun:DH_generate_key } { rpmReadConfigFiles-leak Memcheck:Leak ... fun:rpmReadConfigFiles }
Running Regression Tests under Valgrind
Once you have compiled the Net-SNMP source code and once you have installed Valgrind 3.6.0 or later, the Net-SNMP regression tests can be run under Valgrind with the script below.
#!/bin/bash rm -rf /tmp/snmp-* make -s export SNMP_SAVE_TMPDIR=yes DYNAMIC_ANALYZER="$HOME/software/valgrind/vg-in-place --trace-children=yes --trace-children-skip=/usr/bin/env,/bin/sed,/bin/ls,/bin/sh --track-origins=no --leak-check=full --suppressions=$HOME/path-to-net-snmp-memcheck-suppression-file/net-snmp-memcheck.supp --gen-suppressions=all" make -s test cd testing || exit $? ./RUNFULLTESTS -g unit-tests echo echo 'Output files with Valgrind complaints:' if grep -rEl 'Invalid | uninitialised |Invalid free|Mismatched free|Source and destination overlap' /tmp/snmp-*; then exit 1 else exit 0 fi