diff --git a/tests/test_cdr.c b/tests/test_cdr.c index 1b484d84cdb98695df0e661536e4f319656d2791..7e1dcb00c860be97a355edbbc1bf32cb87f52292 100644 --- a/tests/test_cdr.c +++ b/tests/test_cdr.c @@ -46,6 +46,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/bridge_basic.h" #include "asterisk/stasis_channels.h" #include "asterisk/stasis_bridges.h" +#include "asterisk/format_cache.h" #define EPSILON 0.001 @@ -231,10 +232,24 @@ static void clear_mock_cdr_backend(void) ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ } while (0) +/*! \brief Set ulaw format on channel */ +#define SET_FORMATS(chan) do {\ + struct ast_format_cap *caps;\ + caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);\ + ast_format_cap_append(caps, ast_format_ulaw, 0);\ + ast_channel_nativeformats_set((chan), caps);\ + ast_channel_set_writeformat((chan), ast_format_ulaw);\ + ast_channel_set_rawwriteformat((chan), ast_format_ulaw);\ + ast_channel_set_readformat((chan), ast_format_ulaw);\ + ast_channel_set_rawreadformat((chan), ast_format_ulaw);\ + ao2_ref(caps, -1);\ +} while (0) + /*! \brief Create a \ref test_cdr_chan_tech for Alice, and set the expected * CDR records' linkedid and uniqueid. */ #define CREATE_ALICE_CHANNEL(channel_var, caller_id, expected_record) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, "100", "Alice", "100", "100", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Alice"); \ + SET_FORMATS((channel_var));\ ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ @@ -245,6 +260,7 @@ static void clear_mock_cdr_backend(void) * CDR records' linkedid and uniqueid. */ #define CREATE_BOB_CHANNEL(channel_var, caller_id, expected_record) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, "200", "Bob", "200", "200", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Bob"); \ + SET_FORMATS((channel_var));\ ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ @@ -255,6 +271,7 @@ static void clear_mock_cdr_backend(void) * CDR records' linkedid and uniqueid. */ #define CREATE_CHARLIE_CHANNEL(channel_var, caller_id, expected_record) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, "300", "Charlie", "300", "300", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Charlie"); \ + SET_FORMATS((channel_var));\ ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ @@ -265,6 +282,7 @@ static void clear_mock_cdr_backend(void) * CDR records' linkedid and uniqueid. */ #define CREATE_DAVID_CHANNEL(channel_var, caller_id, expected_record) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, "400", "David", "400", "400", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/David"); \ + SET_FORMATS((channel_var));\ ast_channel_set_caller((channel_var), (caller_id), NULL); \ ast_copy_string((expected_record)->uniqueid, ast_channel_uniqueid((channel_var)), sizeof((expected_record)->uniqueid)); \ ast_copy_string((expected_record)->linkedid, ast_channel_linkedid((channel_var)), sizeof((expected_record)->linkedid)); \ @@ -583,6 +601,7 @@ AST_TEST_DEFINE(test_cdr_outbound_bridged_call) ast_test_validate(test, !ast_bridge_impart(bridge, chan_alice, NULL, NULL, AST_BRIDGE_IMPART_CHAN_DEPARTABLE)); chan_bob = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_alice, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_bob); ast_channel_unlock(chan_bob); ast_copy_string(bob_expected.linkedid, ast_channel_linkedid(chan_bob), sizeof(bob_expected.linkedid)); ast_copy_string(bob_expected.uniqueid, ast_channel_uniqueid(chan_bob), sizeof(bob_expected.uniqueid)); @@ -1173,6 +1192,7 @@ AST_TEST_DEFINE(test_cdr_dial_unanswered) EMULATE_APP_DATA(chan_caller, 1, "Dial", "CDRTestChannel/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1235,6 +1255,7 @@ AST_TEST_DEFINE(test_cdr_dial_busy) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1296,6 +1317,7 @@ AST_TEST_DEFINE(test_cdr_dial_congestion) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1357,6 +1379,7 @@ AST_TEST_DEFINE(test_cdr_dial_unavailable) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1419,6 +1442,7 @@ AST_TEST_DEFINE(test_cdr_dial_caller_cancel) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1521,16 +1545,19 @@ AST_TEST_DEFINE(test_cdr_dial_parallel_failed) /* Outbound channels are created */ chan_bob = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_bob); ast_channel_unlock(chan_bob); ast_set_flag(ast_channel_flags(chan_bob), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_bob, 0, "AppDial", "(Outgoing Line)"); chan_charlie = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "300", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Charlie"); + SET_FORMATS(chan_charlie); ast_channel_unlock(chan_charlie); ast_set_flag(ast_channel_flags(chan_charlie), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_charlie, 0, "AppDial", "(Outgoing Line)"); chan_david = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "400", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/David"); + SET_FORMATS(chan_charlie); ast_channel_unlock(chan_david); ast_set_flag(ast_channel_flags(chan_david), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_david, 0, "AppDial", "(Outgoing Line)"); @@ -1637,6 +1664,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_no_bridge) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); COPY_IDS(chan_callee, &bob_expected_one); @@ -1705,6 +1733,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_twoparty_bridge_a) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1781,6 +1810,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_twoparty_bridge_b) EMULATE_APP_DATA(chan_caller, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, "200", NULL, NULL, NULL, chan_caller, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_callee); ast_channel_unlock(chan_callee); ast_set_flag(ast_channel_flags(chan_callee), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_callee, 0, "AppDial", "(Outgoing Line)"); @@ -1940,6 +1970,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_multiparty) EMULATE_APP_DATA(chan_alice, 1, "Dial", CHANNEL_TECH_NAME "/Bob"); chan_bob = ast_channel_alloc(0, AST_STATE_DOWN, "200", "Bob", "200", "200", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Bob"); + SET_FORMATS(chan_bob); ast_channel_unlock(chan_bob); ast_set_flag(ast_channel_flags(chan_bob), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_bob, 0, "AppDial", "(Outgoing Line)"); @@ -1954,6 +1985,7 @@ AST_TEST_DEFINE(test_cdr_dial_answer_multiparty) ast_copy_string(charlie_expected_two.linkedid, ast_channel_linkedid(chan_alice), sizeof(charlie_expected_two.linkedid)); chan_david = ast_channel_alloc(0, AST_STATE_DOWN, "400", "David", "400", "400", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/David"); + SET_FORMATS(chan_david); ast_channel_unlock(chan_david); ast_set_flag(ast_channel_flags(chan_david), AST_FLAG_OUTGOING); EMULATE_APP_DATA(chan_david, 0, "AppDial", "(Outgoing Line)"); diff --git a/tests/test_cel.c b/tests/test_cel.c index 017c48b47cd0807b51d5ca5f3621c8fa3a58c5cb..937a0cf270b9f3073def104d397d8d4e3e69a002 100644 --- a/tests/test_cel.c +++ b/tests/test_cel.c @@ -206,9 +206,23 @@ static void do_sleep(void) /*! \brief David's Caller ID */ #define DAVID_CALLERID { .id.name.str = "David", .id.name.valid = 1, .id.number.str = "400", .id.number.valid = 1, } +/*! \brief Set ulaw format on channel */ +#define SET_FORMATS(chan) do {\ + struct ast_format_cap *caps;\ + caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);\ + ast_format_cap_append(caps, ast_format_ulaw, 0);\ + ast_channel_nativeformats_set((chan), caps);\ + ast_channel_set_writeformat((chan), ast_format_ulaw);\ + ast_channel_set_rawwriteformat((chan), ast_format_ulaw);\ + ast_channel_set_readformat((chan), ast_format_ulaw);\ + ast_channel_set_rawreadformat((chan), ast_format_ulaw);\ + ao2_ref(caps, -1);\ +} while (0) + /*! \brief Create a \ref test_cel_chan_tech for Alice. */ #define CREATE_ALICE_CHANNEL(channel_var, caller_id) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, (caller_id)->id.number.str, (caller_id)->id.name.str, "100", "100", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Alice"); \ + SET_FORMATS((channel_var));\ APPEND_EVENT(channel_var, AST_CEL_CHANNEL_START, NULL, NULL); \ ast_channel_unlock((channel_var)); \ } while (0) @@ -216,6 +230,7 @@ static void do_sleep(void) /*! \brief Create a \ref test_cel_chan_tech for Bob. */ #define CREATE_BOB_CHANNEL(channel_var, caller_id) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, (caller_id)->id.number.str, (caller_id)->id.name.str, "200", "200", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Bob"); \ + SET_FORMATS((channel_var));\ APPEND_EVENT(channel_var, AST_CEL_CHANNEL_START, NULL, NULL); \ ast_channel_unlock((channel_var)); \ } while (0) @@ -223,6 +238,7 @@ static void do_sleep(void) /*! \brief Create a \ref test_cel_chan_tech for Charlie. */ #define CREATE_CHARLIE_CHANNEL(channel_var, caller_id) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, (caller_id)->id.number.str, (caller_id)->id.name.str, "300", "300", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/Charlie"); \ + SET_FORMATS((channel_var));\ APPEND_EVENT(channel_var, AST_CEL_CHANNEL_START, NULL, NULL); \ ast_channel_unlock((channel_var)); \ } while (0) @@ -230,6 +246,7 @@ static void do_sleep(void) /*! \brief Create a \ref test_cel_chan_tech for David. */ #define CREATE_DAVID_CHANNEL(channel_var, caller_id) do { \ (channel_var) = ast_channel_alloc(0, AST_STATE_DOWN, (caller_id)->id.number.str, (caller_id)->id.name.str, "400", "400", "default", NULL, NULL, 0, CHANNEL_TECH_NAME "/David"); \ + SET_FORMATS((channel_var));\ APPEND_EVENT(channel_var, AST_CEL_CHANNEL_START, NULL, NULL); \ ast_channel_unlock((channel_var)); \ } while (0) @@ -738,6 +755,7 @@ AST_TEST_DEFINE(test_cel_single_multiparty_bridge) #define START_DIALED_FULL(caller, callee, number, name) do { \ callee = ast_channel_alloc(0, AST_STATE_DOWN, NULL, NULL, number, NULL, NULL, NULL, caller, 0, CHANNEL_TECH_NAME "/" name); \ + SET_FORMATS(callee);\ ast_channel_unlock(callee); \ if (append_expected_event(callee, AST_CEL_CHANNEL_START, NULL, NULL, NULL)) { \ return AST_TEST_FAIL; \