{
switch_assert(session);
destroy++;
- switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "session destroy %d\n", destroy);
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "session destroy %d\n", destroy);
return SWITCH_STATUS_SUCCESS;
}
switch_dial_handle_destroy(&dh);
}
FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_one_leg)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ switch_dial_handle_t *dh;
+ switch_dial_leg_list_t *ll;
+ switch_dial_leg_t *leg = NULL;
+
+ switch_dial_handle_create(&dh);
+ switch_dial_handle_add_leg_list(dh, &ll);
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://1000");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+
+ status = switch_ivr_originate(NULL, &session, &cause, NULL, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, dh);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ switch_core_session_rwunlock(session);
+
+ switch_dial_handle_destroy(&dh);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_no_pre_answer)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ switch_dial_handle_t *dh;
+ switch_dial_leg_list_t *ll;
+ switch_dial_leg_t *leg = NULL;
+
+ switch_dial_handle_create(&dh);
+ switch_dial_handle_add_leg_list(dh, &ll);
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://1000");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+ switch_dial_handle_add_global_var(dh, "null_auto_answer", "2000");
+
+ status = switch_ivr_originate(NULL, &session, &cause, NULL, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, dh);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ switch_core_session_rwunlock(session);
+
+ switch_dial_handle_destroy(&dh);
+
+ fst_check_duration(3000, 500);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_exec_in_pre_answer)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ switch_dial_handle_t *dh;
+ switch_dial_leg_list_t *ll;
+ switch_dial_leg_t *leg = NULL;
+
+ switch_dial_handle_create(&dh);
+ switch_dial_handle_add_leg_list(dh, &ll);
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://1000");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+ switch_dial_handle_add_global_var(dh, "null_auto_answer", "2000");
+ switch_dial_handle_add_global_var(dh, "null_pre_answer", "true");
+
+ status = switch_ivr_originate(NULL, &session, &cause, NULL, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, dh);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ switch_core_session_rwunlock(session);
+
+ switch_dial_handle_destroy(&dh);
+
+ fst_check_duration(1000, 500);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_exec_after_answer_early_ok)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ switch_dial_handle_t *dh;
+ switch_dial_leg_list_t *ll;
+ switch_dial_leg_t *leg = NULL;
+
+ switch_dial_handle_create(&dh);
+ switch_dial_handle_add_leg_list(dh, &ll);
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://1000");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+ switch_dial_handle_add_global_var(dh, "null_auto_answer", "2000");
+ switch_dial_handle_add_global_var(dh, "null_pre_answer", "true");
+ switch_dial_handle_add_global_var(dh, "group_confirm_early_ok", "false");
+
+ status = switch_ivr_originate(NULL, &session, &cause, NULL, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, dh);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ switch_core_session_rwunlock(session);
+
+ switch_dial_handle_destroy(&dh);
+
+ fst_check_duration(3000, 500);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_exec_after_answer_ignore_early_media)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ switch_dial_handle_t *dh;
+ switch_dial_leg_list_t *ll;
+ switch_dial_leg_t *leg = NULL;
+
+ switch_dial_handle_create(&dh);
+ switch_dial_handle_add_leg_list(dh, &ll);
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://1000");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+ switch_dial_handle_add_global_var(dh, "null_auto_answer", "2000");
+ switch_dial_handle_add_global_var(dh, "null_pre_answer", "true");
+ switch_dial_handle_add_global_var(dh, "ignore_early_media", "true");
+
+ status = switch_ivr_originate(NULL, &session, &cause, NULL, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, dh);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ switch_core_session_rwunlock(session);
+
+ switch_dial_handle_destroy(&dh);
+
+ fst_check_duration(3000, 500);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_2_legs)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ switch_dial_handle_t *dh;
+ switch_dial_leg_list_t *ll;
+ switch_dial_leg_t *leg = NULL;
+
+ switch_dial_handle_create(&dh);
+ switch_dial_handle_add_leg_list(dh, &ll);
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test1");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://1000");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+
+ switch_dial_leg_list_add_leg(ll, &leg, "null/test2");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_file", "playback silence_stream://500");
+ switch_dial_handle_add_leg_var(leg, "group_confirm_key", "exec");
+
+ status = switch_ivr_originate(NULL, &session, &cause, NULL, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, dh);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ const char *name = switch_core_session_get_name(session);
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "channel %s\n", name);
+ fst_check_string_equals(name, "null/test2");
+ switch_core_session_rwunlock(session);
+
+ switch_dial_handle_destroy(&dh);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_global_var)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ const char *dialstring = "{group_confirm_file='playback silence_stream://1000',group_confirm_key=exec}null/test";
+
+ status = switch_ivr_originate(NULL, &session, &cause, dialstring, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ const char *name = switch_core_session_get_name(session);
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "channel %s\n", name);
+ fst_check_string_equals(name, "null/test");
+ switch_core_session_rwunlock(session);
+ }
+ FST_TEST_END()
+
+ FST_TEST_BEGIN(originate_test_group_confirm_local_var)
+ {
+ switch_core_session_t *session = NULL;
+ switch_channel_t *channel = NULL;
+ switch_status_t status;
+ switch_call_cause_t cause;
+ const char *dialstring = "[group_confirm_file='playback silence_stream://1000',group_confirm_key=exec]null/test1,"
+ "[group_confirm_file='playback silence_stream://500',group_confirm_key=exec]null/test2";
+
+ status = switch_ivr_originate(NULL, &session, &cause, dialstring, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
+ fst_requires(status == SWITCH_STATUS_SUCCESS);
+ fst_requires(session);
+ const char *name = switch_core_session_get_name(session);
+ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "channel %s\n", name);
+ fst_check_string_equals(name, "null/test2");
+ switch_core_session_rwunlock(session);
+ }
+ FST_TEST_END()
}
FST_SUITE_END()
}