Add Asterisk TestSuite event hooks to support ConfBridge testing
authorMatthew Jordan <mjordan@digium.com>
Thu, 22 Dec 2011 20:44:53 +0000 (20:44 +0000)
committerMatthew Jordan <mjordan@digium.com>
Thu, 22 Dec 2011 20:44:53 +0000 (20:44 +0000)
This patch adds initial testsuite event hooks so that ConfBridge tests
can be executed in the Asterisk TestSuite.

(issue ASTERISK-19059)
........

Merged revisions 348846 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@348848 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_confbridge.c
main/app.c
main/bridging.c
main/file.c
main/say.c

index 95a025f..d5609b7 100644 (file)
@@ -57,6 +57,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "confbridge/include/confbridge.h"
 #include "asterisk/paths.h"
 #include "asterisk/manager.h"
+#include "asterisk/test.h"
 
 /*** DOCUMENTATION
     <application name="ConfBridge" language="en_US">
@@ -468,6 +469,7 @@ static int conf_stop_record(struct conference_bridge *conference_bridge)
 
                chan = ast_channel_unref(chan);
                pthread_join(thread, NULL);
+               ast_test_suite_event_notify("CONF_STOP_RECORD", "Message: stopped conference recording channel\r\nConference: %s", conference_bridge->b_profile.name);
 
                ao2_lock(conference_bridge);
        }
@@ -520,6 +522,7 @@ static int conf_start_record(struct conference_bridge *conference_bridge)
                return -1;
        }
 
+       ast_test_suite_event_notify("CONF_START_RECORD", "Message: started conference recording channel\r\nConference: %s", conference_bridge->b_profile.name);
        ao2_unlock(conference_bridge);
        return 0;
 }
@@ -1545,6 +1548,7 @@ static int action_toggle_mute(struct conference_bridge *conference_bridge,
        /* Mute or unmute yourself, note we only allow manipulation if they aren't waiting for a marked user or if marked users exist */
        if (!ast_test_flag(&conference_bridge_user->u_profile, USER_OPT_WAITMARKED) || conference_bridge->markedusers) {
                conference_bridge_user->features.mute = (!conference_bridge_user->features.mute ? 1 : 0);
+               ast_test_suite_event_notify("CONF_MUTE", "Message: participant %s %s\r\nConference: %s\r\nChannel: %s", chan->name, conference_bridge_user->features.mute ? "muted" : "unmuted", conference_bridge_user->b_profile.name, chan->name);
        }
        return ast_stream_and_wait(chan, (conference_bridge_user->features.mute ?
                conf_get_sound(CONF_SOUND_MUTED, conference_bridge_user->b_profile.sounds) :
@@ -2026,6 +2030,7 @@ static int generic_lock_unlock_helper(int lock, const char *conference)
        }
        ao2_lock(bridge);
        bridge->locked = lock;
+       ast_test_suite_event_notify("CONF_LOCK", "Message: conference %s\r\nConference: %s", bridge->locked ? "locked" : "unlocked", bridge->b_profile.name);
        ao2_unlock(bridge);
        ao2_ref(bridge, -1);
 
@@ -2058,6 +2063,7 @@ static int generic_mute_unmute_helper(int mute, const char *conference, const ch
        }
        if (participant) {
                participant->features.mute = mute;
+               ast_test_suite_event_notify("CONF_MUTE", "Message: participant %s %s\r\nConference: %s\r\nChannel: %s", participant->chan->name, participant->features.mute ? "muted" : "unmuted", bridge->b_profile.name, participant->chan->name);
        } else {
                res = -2;;
        }
index 367a783..3e3cf56 100644 (file)
@@ -183,6 +183,7 @@ enum ast_getdata_result ast_app_getdata(struct ast_channel *c, const char *promp
 
        filename = ast_strdupa(prompt);
        while ((front = strsep(&filename, "&"))) {
+               ast_test_suite_event_notify("PLAYBACK", "Message: %s\r\nChannel: %s", front, c->name);
                if (!ast_strlen_zero(front)) {
                        res = ast_streamfile(c, front, c->language);
                        if (res)
@@ -699,7 +700,7 @@ int ast_play_and_wait(struct ast_channel *chan, const char *fn)
 {
        int d = 0;
 
-       ast_test_suite_event_notify("PLAYBACK", "Message: %s", fn);
+       ast_test_suite_event_notify("PLAYBACK", "Message: %s\r\nChannel: %s", fn, chan->name);
        if ((d = ast_streamfile(chan, fn, chan->language))) {
                return d;
        }
index 5ae8617..9bc0edc 100644 (file)
@@ -41,6 +41,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/file.h"
 #include "asterisk/module.h"
 #include "asterisk/astobj2.h"
+#include "asterisk/test.h"
 
 static AST_RWLIST_HEAD_STATIC(bridge_technologies, ast_bridge_technology);
 
@@ -1510,6 +1511,7 @@ void ast_bridge_set_single_src_video_mode(struct ast_bridge *bridge, struct ast_
        cleanup_video_mode(bridge);
        bridge->video_mode.mode = AST_BRIDGE_VIDEO_MODE_SINGLE_SRC;
        bridge->video_mode.mode_data.single_src_data.chan_vsrc = ast_channel_ref(video_src_chan);
+       ast_test_suite_event_notify("BRIDGE_VIDEO_MODE", "Message: video mode set to single source\r\nVideo Mode: %d\r\nVideo Channel: %s", bridge->video_mode.mode, video_src_chan->name);
        ast_indicate(video_src_chan, AST_CONTROL_VIDUPDATE);
        ao2_unlock(bridge);
 }
@@ -1519,6 +1521,7 @@ void ast_bridge_set_talker_src_video_mode(struct ast_bridge *bridge)
        ao2_lock(bridge);
        cleanup_video_mode(bridge);
        bridge->video_mode.mode = AST_BRIDGE_VIDEO_MODE_TALKER_SRC;
+       ast_test_suite_event_notify("BRIDGE_VIDEO_MODE", "Message: video mode set to talker source\r\nVideo Mode: %d", bridge->video_mode.mode);
        ao2_unlock(bridge);
 }
 
@@ -1545,12 +1548,14 @@ void ast_bridge_update_talker_src_video_mode(struct ast_bridge *bridge, struct a
                }
                data->chan_vsrc = ast_channel_ref(chan);
                data->average_talking_energy = talker_energy;
+               ast_test_suite_event_notify("BRIDGE_VIDEO_SRC", "Message: video source updated\r\nVideo Channel: %s", data->chan_vsrc->name);
                ast_indicate(data->chan_vsrc, AST_CONTROL_VIDUPDATE);
        } else if ((data->average_talking_energy < talker_energy) && !is_keyframe) {
                ast_indicate(chan, AST_CONTROL_VIDUPDATE);
        } else if (!data->chan_vsrc && is_keyframe) {
                data->chan_vsrc = ast_channel_ref(chan);
                data->average_talking_energy = talker_energy;
+               ast_test_suite_event_notify("BRIDGE_VIDEO_SRC", "Message: video source updated\r\nVideo Channel: %s", data->chan_vsrc->name);
                ast_indicate(chan, AST_CONTROL_VIDUPDATE);
        } else if (!data->chan_old_vsrc && is_keyframe) {
                data->chan_old_vsrc = ast_channel_ref(chan);
index f273de2..1d871fd 100644 (file)
@@ -1418,7 +1418,7 @@ int ast_stream_and_wait(struct ast_channel *chan, const char *file, const char *
 {
        int res = 0;
        if (!ast_strlen_zero(file)) {
-               ast_test_suite_event_notify("PLAYBACK", "Message: %s", file);
+               ast_test_suite_event_notify("PLAYBACK", "Message: %s\r\nChannel: %s", file, chan->name);
                res = ast_streamfile(chan, file, chan->language);
                if (!res) {
                        res = ast_waitstream(chan, digits);
index 4c04b79..f5d8f8b 100644 (file)
@@ -51,6 +51,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/localtime.h"
 #include "asterisk/utils.h"
 #include "asterisk/app.h"
+#include "asterisk/test.h"
 
 /* Forward declaration */
 static int wait_file(struct ast_channel *chan, const char *ints, const char *file, const char *lang);
@@ -433,6 +434,7 @@ static int wait_file(struct ast_channel *chan, const char *ints, const char *fil
      \note Called from AGI */
 static int say_number_full(struct ast_channel *chan, int num, const char *ints, const char *language, const char *options, int audiofd, int ctrlfd)
 {
+       ast_test_suite_event_notify("SAYNUM", "Message: saying number %d\r\nNumber: %d\r\nChannel: %s", num, num, chan->name);
        if (!strncasecmp(language, "en_GB", 5)) {     /* British syntax */
           return ast_say_number_full_en_GB(chan, num, ints, language, audiofd, ctrlfd);
        } else if (!strncasecmp(language, "en", 2)) { /* English syntax */