From c011e109c1d85a7e2445e597901efc33b80c9b83 Mon Sep 17 00:00:00 2001 From: Matthew Jordan Date: Thu, 14 Feb 2013 18:46:21 +0000 Subject: [PATCH] Multiple revisions 378121,378459 ........ r378121 | kmoore | 2012-12-18 11:41:35 -0600 (Tue, 18 Dec 2012) | 14 lines Add test events for time limit-related hangups This patch adds hangup-related test events in order to support testing of time-limited bridges. This aids in testing the S() and L() bridge options. (issue SWP-4713) ........ Merged revisions 378119 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 378120 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ r378459 | kmoore | 2013-01-03 12:48:00 -0600 (Thu, 03 Jan 2013) | 10 lines Add missing test event This test event was missing from channel.c causing the dial_LS_options test to fail intermittently because of a race condition where most code paths emitted the test event but this one did not. The dial_LS_options test should stop bouncing now. ........ Merged revisions 378455 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 378121,378459 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/11.2@381447 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/channel.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/main/channel.c b/main/channel.c index da8452003b..aae9806b6c 100644 --- a/main/channel.c +++ b/main/channel.c @@ -73,6 +73,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/data.h" #include "asterisk/channel_internal.h" #include "asterisk/features.h" +#include "asterisk/test.h" /*** DOCUMENTATION ***/ @@ -602,6 +603,7 @@ int ast_check_hangup(struct ast_channel *chan) if (ast_tvdiff_ms(*ast_channel_whentohangup(chan), ast_tvnow()) > 0) /* no if hangup time has not come yet. */ return 0; ast_debug(4, "Hangup time has come: %" PRIi64 "\n", ast_tvdiff_ms(*ast_channel_whentohangup(chan), ast_tvnow())); + ast_test_suite_event_notify("HANGUP_TIME", "Channel: %s", ast_channel_name(chan)); ast_channel_softhangup_internal_flag_add(chan, AST_SOFTHANGUP_TIMEOUT); /* record event */ return 1; } @@ -3194,6 +3196,7 @@ struct ast_channel *ast_waitfor_nandfds(struct ast_channel **c, int n, int *fds, now = ast_tvnow(); diff = ast_tvsub(*ast_channel_whentohangup(c[x]), now); if (diff.tv_sec < 0 || ast_tvzero(diff)) { + ast_test_suite_event_notify("HANGUP_TIME", "Channel: %s", ast_channel_name(c[x])); /* Should already be hungup */ ast_channel_softhangup_internal_flag_add(c[x], AST_SOFTHANGUP_TIMEOUT); ast_channel_unlock(c[x]); @@ -3267,6 +3270,7 @@ struct ast_channel *ast_waitfor_nandfds(struct ast_channel **c, int n, int *fds, now = ast_tvnow(); for (x = 0; x < n; x++) { if (!ast_tvzero(*ast_channel_whentohangup(c[x])) && ast_tvcmp(*ast_channel_whentohangup(c[x]), now) <= 0) { + ast_test_suite_event_notify("HANGUP_TIME", "Channel: %s", ast_channel_name(c[x])); ast_channel_softhangup_internal_flag_add(c[x], AST_SOFTHANGUP_TIMEOUT); if (winner == NULL) { winner = c[x]; @@ -7891,6 +7895,7 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha bridge_playfile(c1, c0, config->end_sound, 0); *fo = NULL; res = 0; + ast_test_suite_event_notify("BRIDGE_TIMELIMIT", "Channel1: %s\r\nChannel2: %s", ast_channel_name(c0), ast_channel_name(c1)); break; } -- 2.47.2