Author: sgriepentrog Date: Tue Nov 18 09:48:55 2014 New Revision: 5942 URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=5942 Log: testsuite: add basic valgrind support
This adds very basic support for running Asterisk instances under Valgrind, which is convenient for manual test runs but does not yet include parsing the output for failures. 1) Testsuite CLI flag '-V' enables valgrind: ./runtests -V -t tests/test... 2) Valgrind output is picked up by error logging and shown after test run. 3) Works with multiple Asterisk instances. Reviewboard: https://reviewboard.asterisk.org/r/4090/ Modified: asterisk/trunk/lib/python/asterisk/asterisk.py asterisk/trunk/lib/python/asterisk/test_case.py asterisk/trunk/runtests.py Modified: asterisk/trunk/lib/python/asterisk/asterisk.py URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/asterisk.py?view=diff&rev=5942&r1=5941&r2=5942 ============================================================================== --- asterisk/trunk/lib/python/asterisk/asterisk.py (original) +++ asterisk/trunk/lib/python/asterisk/asterisk.py Tue Nov 18 09:48:55 2014 @@ -332,7 +332,7 @@ def __wait_fully_booted_error(cli_command): """Errback for CLI command waitfullybooted""" - if time.time() - self.__start_asterisk_time > 5: + if time.time() - self.__start_asterisk_time > 90: msg = "Asterisk core waitfullybooted for %s failed" % self.host LOGGER.error(msg) self._start_deferred.errback(Exception(msg)) @@ -350,6 +350,14 @@ "-f", "-g", "-q", "-m", "-n", "-C", "%s" % os.path.join(self.astetcdir, "asterisk.conf") ] + + if os.getenv("VALGRIND_ENABLE") == "true": + valgrind_path = test_suite_utils.which('valgrind') + if valgrind_path: + cmd = [valgrind_path] + cmd + else: + LOGGER.error('Valgrind not found') + # Make the start/stop deferreds - this method will return # the start deferred, and pass the stop deferred to the AsteriskProtocol @@ -455,7 +463,7 @@ else: # Schedule a kill. If we don't gracefully shut down Asterisk, this # will ensure that the test is stopped. - self._stop_cancel_tokens.append(reactor.callLater(10, __send_kill)) + self._stop_cancel_tokens.append(reactor.callLater(200, __send_kill)) # Start by asking to stop gracefully. __send_stop_gracefully() Modified: asterisk/trunk/lib/python/asterisk/test_case.py URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/test_case.py?view=diff&rev=5942&r1=5941&r2=5942 ============================================================================== --- asterisk/trunk/lib/python/asterisk/test_case.py (original) +++ asterisk/trunk/lib/python/asterisk/test_case.py Tue Nov 18 09:48:55 2014 @@ -137,6 +137,9 @@ self._ami_callbacks = [] self._pcap_callbacks = [] self._stop_deferred = None + + if os.getenv("VALGRIND_ENABLE") == "true": + self.reactor_timeout *= 20 # Pull additional configuration from YAML config if possible if test_config: Modified: asterisk/trunk/runtests.py URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/runtests.py?view=diff&rev=5942&r1=5941&r2=5942 ============================================================================== --- asterisk/trunk/runtests.py (original) +++ asterisk/trunk/runtests.py Tue Nov 18 09:48:55 2014 @@ -497,6 +497,9 @@ parser.add_option("-n", "--dry-run", action="store_true", dest="dry_run", default=False, help="Only show which tests would be run.") + parser.add_option("-V", "--valgrind", action="store_true", + dest="valgrind", default=False, + help="Run Asterisk under Valgrind") (options, args) = parser.parse_args(argv) ast_version = AsteriskVersion(options.version) @@ -516,6 +519,9 @@ if options.list_tags: test_suite.list_tags() return 0 + + if options.valgrind: + os.environ["VALGRIND_ENABLE"] = "true" print "Running tests for Asterisk %s ...\n" % str(ast_version) -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits
