From b9875d1ac9853ae708eb09cdf4ae5b2fda257929 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Tue, 25 Jan 2022 18:59:29 +0300 Subject: [PATCH] [Unit-tests] Replace fst_requires with fst_check in mod_sofia unit tests. Increase timeout. --- .../mod_sofia/test/sipp-based-tests.c | 472 +++++++++--------- .../mod_sofia/test/test_sofia_funcs.c | 82 +-- 2 files changed, 288 insertions(+), 266 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c b/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c index a7a380588f..33259f043f 100644 --- a/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c +++ b/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c @@ -36,6 +36,7 @@ int test_success = 0; int test_sofia_debug = 1; +static int timeout_sec = 10; static void test_wait_for_uuid(char *uuid) { @@ -258,53 +259,53 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL) sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1212121212", "sipp-scenarios/uac_telephone_event.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } + fst_check(!"sipp not found"); + } else { + test_wait_for_uuid(uuid); + if (!zstr(uuid)) { + const char *sdp_str1 = NULL, *sdp_str2 = NULL; + switch_core_session_t *session = switch_core_session_locate(uuid); + switch_channel_t *channel = switch_core_session_get_channel(session); + fst_check(channel); - test_wait_for_uuid(uuid); - if (!zstr(uuid)) { - const char *sdp_str1 = NULL, *sdp_str2 = NULL; - switch_core_session_t *session = switch_core_session_locate(uuid); - switch_channel_t *channel = switch_core_session_get_channel(session); - fst_requires(channel); + sdp_str1 = test_wait_for_chan_var(channel,"1"); + sdp_str2 = test_wait_for_chan_var(channel,"2"); - sdp_str1 = test_wait_for_chan_var(channel,"1"); - sdp_str2 = test_wait_for_chan_var(channel,"2"); + if (sdp_str1 && sdp_str2 && (strstr(sdp_str1,"telephone-event")) && (strstr(sdp_str2,"telephone-event"))){ + char *temp = NULL; + sdp_count = 1; - if (sdp_str1 && sdp_str2 && (strstr(sdp_str1,"telephone-event")) && (strstr(sdp_str2,"telephone-event"))){ - char *temp = NULL; - sdp_count = 1; + if ((temp = strstr(sdp_str2,"RTP/AVP"))) { + int count = 0, i; - if ((temp = strstr(sdp_str2,"RTP/AVP"))) { - int count = 0, i; - - for (i = 7; temp[i] != '\n' && i < 99; i++) { - /* checking for payload-type 101.*/ - if(temp[i++] == '1' && temp[i++] == '0' && temp[i++] == '1') - count++; - } - if (count > 1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicate entry of payload in SDP.\n"); - sdp_count = 0; + for (i = 7; temp[i] != '\n' && i < 99; i++) { + /* checking for payload-type 101.*/ + if(temp[i++] == '1' && temp[i++] == '0' && temp[i++] == '1') + count++; + } + if (count > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicate entry of payload in SDP.\n"); + sdp_count = 0; + } } + + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Telephone-event missing in SDP.\n"); } + switch_core_session_rwunlock(session); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Telephone-event missing in SDP.\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n"); } - switch_core_session_rwunlock(session); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n"); + fst_check(sdp_count == 1); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); } - - fst_check(sdp_count == 1); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); } FST_TEST_END() - FST_TEST_BEGIN(uac_savp_check) + FST_TEST_BEGIN(uac_savp_check) { const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); char uuid[100] = ""; @@ -313,50 +314,50 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL) sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1212121212", "sipp-scenarios/uac_savp_check.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } + fst_check(!"sipp not found"); + } else { + test_wait_for_uuid(uuid); + if (!zstr(uuid)) { + const char *sdp_str1 = NULL, *sdp_str2 = NULL; + const char *temp = NULL, *temp1 = NULL; + switch_core_session_t *session = switch_core_session_locate(uuid); + switch_channel_t *channel = switch_core_session_get_channel(session); + fst_check(channel); - test_wait_for_uuid(uuid); - if (!zstr(uuid)) { - const char *sdp_str1 = NULL, *sdp_str2 = NULL; - const char *temp = NULL, *temp1 = NULL; - switch_core_session_t *session = switch_core_session_locate(uuid); - switch_channel_t *channel = switch_core_session_get_channel(session); - fst_requires(channel); + sdp_str1 = test_wait_for_chan_var(channel,"1"); + sdp_str2 = test_wait_for_chan_var(channel,"2"); - sdp_str1 = test_wait_for_chan_var(channel,"1"); - sdp_str2 = test_wait_for_chan_var(channel,"2"); + if (sdp_str1 && sdp_str2 && (temp = strstr(sdp_str2,"RTP/SAVP")) && (temp1 = strstr(temp,"crypto"))) { + int i = 0; - if (sdp_str1 && sdp_str2 && (temp = strstr(sdp_str2,"RTP/SAVP")) && (temp1 = strstr(temp,"crypto"))) { - int i = 0; + sdp_count = 1; + for (i = 0; temp1[i]; i++) { - sdp_count = 1; - for (i = 0; temp1[i]; i++) { - - if ((temp = strstr(temp1,"RTP/SAVP"))) { - if ((temp1 = strstr(temp,"crypto"))) { - i = 0; - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Fail due to no crypto found with SAVP.\n"); - sdp_count = 0; - break; + if ((temp = strstr(temp1,"RTP/SAVP"))) { + if ((temp1 = strstr(temp,"crypto"))) { + i = 0; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Fail due to no crypto found with SAVP.\n"); + sdp_count = 0; + break; + } } + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SAVP not found in SDP.\n"); } + switch_core_session_rwunlock(session); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SAVP not found in SDP.\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n"); } - switch_core_session_rwunlock(session); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n"); + fst_check(sdp_count == 1); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); } - - fst_check(sdp_count == 1); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); } FST_TEST_END() @@ -371,40 +372,42 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL) switch_event_bind("sofia", SWITCH_EVENT_CUSTOM, NULL, event_handler, NULL); - status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1001", "sipp-scenarios/uac_digest_leak.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } + fst_check(!"sipp not found"); + } else { - fst_check(status == SWITCH_STATUS_SUCCESS); - if (!session) { - fst_requires(session); - } + fst_check(status == SWITCH_STATUS_SUCCESS); + if (!session) { + fst_check(!"no session"); + } else { + channel = switch_core_session_get_channel(session); + fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up"); - channel = switch_core_session_get_channel(session); - fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up"); + while (1) { + int ret; + switch_sleep(1000 * 1000); + ret = switch_system("pidof sipp", SWITCH_TRUE); + if (!ret) { + break; + } + } - while (1) { - int ret; - switch_sleep(1000 * 1000); - ret = switch_system("pidof sipp", SWITCH_TRUE); - if (!ret) { - break; + switch_sleep(5000 * 1000); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + + switch_core_session_rwunlock(session); + switch_sleep(1000 * 1000); + + switch_event_unbind_callback(event_handler); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); + fst_check(test_success); } } - switch_sleep(5000 * 1000); - - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - - switch_core_session_rwunlock(session); - switch_sleep(1000 * 1000); - - switch_event_unbind_callback(event_handler); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); - fst_check(test_success); test_success = 0; } FST_TEST_END() @@ -420,40 +423,41 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL) switch_event_bind("sofia", SWITCH_EVENT_CUSTOM, NULL, event_handler, NULL); - status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1001", "sipp-scenarios/uac_digest_leak-tcp.xml", "-t t1"); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } - - fst_check(status == SWITCH_STATUS_SUCCESS); - if (!session) { - fst_requires(session); - } - - channel = switch_core_session_get_channel(session); - fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up"); - - while (1) { - int ret; - switch_sleep(1000 * 1000); - ret = switch_system("pidof sipp", SWITCH_TRUE); - if (!ret) { - break; + fst_check(!"sipp not found"); + } else { + fst_check(status == SWITCH_STATUS_SUCCESS); + if (!session) { + fst_check(!"no session"); } + + channel = switch_core_session_get_channel(session); + fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up"); + + while (1) { + int ret; + switch_sleep(1000 * 1000); + ret = switch_system("pidof sipp", SWITCH_TRUE); + if (!ret) { + break; + } + } + + switch_sleep(5000 * 1000); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + + switch_core_session_rwunlock(session); + switch_sleep(1000 * 1000); + + switch_event_unbind_callback(event_handler); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); + fst_check(test_success); } - switch_sleep(5000 * 1000); - - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - - switch_core_session_rwunlock(session); - switch_sleep(1000 * 1000); - - switch_event_unbind_callback(event_handler); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); - fst_check(test_success); test_success = 0; } FST_TEST_END() @@ -476,7 +480,7 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL) if (!strchr(local_ip_v6,'[')) { ipv6 = switch_mprintf("[%s]", local_ip_v6); } - status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); if (!ipv6) { sipp_ret = start_sipp_uac(local_ip_v6, 6060, "1001", "sipp-scenarios/uac_digest_leak-ipv6.xml", "-i [::1]"); @@ -485,38 +489,38 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL) } if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } - - fst_check(status == SWITCH_STATUS_SUCCESS); - if (!session) { - fst_requires(session); - } - - channel = switch_core_session_get_channel(session); - fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up"); - - while (1) { - int ret; - switch_sleep(1000 * 1000); - ret = switch_system("pidof sipp", SWITCH_TRUE); - if (!ret) { - break; + fst_check(!"sipp not found"); + } else { + fst_check(status == SWITCH_STATUS_SUCCESS); + if (!session) { + fst_check(!"no session"); } + + channel = switch_core_session_get_channel(session); + fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up"); + + while (1) { + int ret; + switch_sleep(1000 * 1000); + ret = switch_system("pidof sipp", SWITCH_TRUE); + if (!ret) { + break; + } + } + + switch_sleep(5000 * 1000); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + + switch_core_session_rwunlock(session); + switch_sleep(1000 * 1000); + + switch_event_unbind_callback(event_handler); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); + switch_safe_free(ipv6); + fst_check(test_success); } - - switch_sleep(5000 * 1000); - - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - - switch_core_session_rwunlock(session); - switch_sleep(1000 * 1000); - - switch_event_unbind_callback(event_handler); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); - switch_safe_free(ipv6); - fst_check(test_success); skiptest: test_success = 0; } @@ -531,19 +535,20 @@ skiptest: sipp_ret = start_sipp_uas(local_ip_v4, 6080, "sipp-scenarios/uas_register.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ + fst_check(!"sipp not found"); + } else { + switch_sleep(1000 * 1000); + + register_gw(); + + switch_sleep(5000 * 1000); + + switch_event_unbind_callback(event_handler_reg_ok); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); + fst_check(test_success); } - switch_sleep(1000 * 1000); - - register_gw(); - - switch_sleep(5000 * 1000); - - switch_event_unbind_callback(event_handler_reg_ok); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); - fst_check(test_success); test_success = 0; } FST_TEST_END() @@ -557,19 +562,20 @@ skiptest: sipp_ret = start_sipp_uas(local_ip_v4, 6080, "sipp-scenarios/uas_register_403.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ + fst_check(!"sipp not found"); + } else { + switch_sleep(1000 * 1000); + + register_gw(); + + switch_sleep(5000 * 1000); + + switch_event_unbind_callback(event_handler_reg_fail); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); + fst_check(test_success); } - switch_sleep(1000 * 1000); - - register_gw(); - - switch_sleep(5000 * 1000); - - switch_event_unbind_callback(event_handler_reg_fail); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); - fst_check(test_success); test_success = 0; } FST_TEST_END() @@ -587,26 +593,29 @@ skiptest: /* check without 407 Proxy Authentication. If count not 0 fail case. */ sipp_ret = run_sipp(local_ip_v4, 5060, 6091, "1001", "sipp-scenarios/uac_subscriber.xml", auth_password, ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } - switch_sleep(100 * 1000); + fst_check(!"sipp not found"); + } else { + switch_sleep(100 * 1000); - if (switch_cache_db_get_db_handle_dsn(&dbh, dsn) == SWITCH_STATUS_SUCCESS) { - switch_cache_db_execute_sql2str(dbh, "select count(*) from sip_subscriptions where contact like \"%1001%6091%\";", (char *)&count1, 20, NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count1); - } - fst_check_string_equals(count1, "0"); + if (switch_cache_db_get_db_handle_dsn(&dbh, dsn) == SWITCH_STATUS_SUCCESS) { + switch_cache_db_execute_sql2str(dbh, "select count(*) from sip_subscriptions where contact like \"%1001%6091%\";", (char *)&count1, 20, NULL); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count1); + } + fst_check_string_equals(count1, "0"); - /* check with 407 Proxy Authentication Required. If count not 1 fail case. */ - sipp_ret = run_sipp(local_ip_v4, 5060, 6090, "1001", "sipp-scenarios/uac_407_subscriber.xml", auth_password, ""); - if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ - } - switch_sleep(100 * 1000); + /* check with 407 Proxy Authentication Required. If count not 1 fail case. */ + sipp_ret = run_sipp(local_ip_v4, 5060, 6090, "1001", "sipp-scenarios/uac_407_subscriber.xml", auth_password, ""); + if (sipp_ret < 0 || sipp_ret == 127) { + fst_check(!"sipp not found"); + } else { + switch_sleep(100 * 1000); - switch_cache_db_execute_sql2str(dbh, "select count(*) from sip_subscriptions where contact like \"%1001%6090%\";", (char *)&count, 20, NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count); - fst_check_string_equals(count, "1"); + switch_cache_db_execute_sql2str(dbh, "select count(*) from sip_subscriptions where contact like \"%1001%6090%\";", (char *)&count, 20, NULL); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count); + fst_check_string_equals(count, "1"); + + } + } /* sipp should timeout, attempt kill, just in case.*/ kill_sipp(); @@ -622,29 +631,30 @@ skiptest: sipp_ret = start_sipp_uas(local_ip_v4, 6080, "sipp-scenarios/uas_register_no_challange.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ + fst_check(!"sipp not found"); + } else { + switch_sleep(1000 * 1000); + + register_gw(); + + switch_sleep(5000 * 1000); + + /*the REGISTER with Expires 0 */ + unregister_gw(); + + switch_sleep(1000 * 1000); + + register_gw(); + + switch_sleep(1000 * 1000); + + switch_event_unbind_callback(event_handler_reg_ok); + + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); + fst_check(test_success); } - switch_sleep(1000 * 1000); - - register_gw(); - - switch_sleep(5000 * 1000); - - /*the REGISTER with Expires 0 */ - unregister_gw(); - - switch_sleep(1000 * 1000); - - register_gw(); - - switch_sleep(1000 * 1000); - - switch_event_unbind_callback(event_handler_reg_ok); - - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); - fst_check(test_success); test_success = 0; } FST_TEST_END() @@ -662,28 +672,28 @@ skiptest: sipp_ret = start_sipp_uas(local_ip_v4, inv_sipp_port, "sipp-scenarios/uas_407.xml", ""); if (sipp_ret < 0 || sipp_ret == 127) { - fst_requires(0); /* sipp not found */ + fst_check(!"sipp not found"); + } else { + switch_sleep(1000 * 1000); + to = switch_mprintf("sofia/gateway/testgw-noreg/sipp@%s:%d", local_ip_v4, inv_sipp_port); + /*originate will fail if the 407 we get from sipp is dropped due to wrong IP.*/ + status = switch_ivr_originate(NULL, &session, &cause, to, timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + /*test is considered PASSED if we get a session*/ + if (!session) { + fst_requires(session); + } + + switch_sleep(1000 * 1000); + + channel = switch_core_session_get_channel(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_core_session_rwunlock(session); + switch_safe_free(to); + /* sipp should timeout, attempt kill, just in case.*/ + kill_sipp(); } - - switch_sleep(1000 * 1000); - to = switch_mprintf("sofia/gateway/testgw-noreg/sipp@%s:%d", local_ip_v4, inv_sipp_port); - /*originate will fail if the 407 we get from sipp is dropped due to wrong IP.*/ - status = switch_ivr_originate(NULL, &session, &cause, to, 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); - fst_check(status == SWITCH_STATUS_SUCCESS); - - /*test is considered PASSED if we get a session*/ - if (!session) { - fst_requires(session); - } - - switch_sleep(1000 * 1000); - - channel = switch_core_session_get_channel(session); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(session); - switch_safe_free(to); - /* sipp should timeout, attempt kill, just in case.*/ - kill_sipp(); } FST_TEST_END() diff --git a/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c b/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c index 9d1a7d3fee..7ea194f6e4 100644 --- a/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c +++ b/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c @@ -33,6 +33,8 @@ #include #include "../mod_sofia.c" +static int timeout_sec = 10; + FST_CORE_EX_BEGIN("./conf", SCF_VG | SCF_USE_SQL) FST_MODULE_BEGIN(mod_sofia, sofia) @@ -101,14 +103,16 @@ FST_TEST_BEGIN(originate_test) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/park@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); - fst_requires(session); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/park@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_check(session); fst_check(status == SWITCH_STATUS_SUCCESS); - channel = switch_core_session_get_channel(session); - fst_requires(channel); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(session); - switch_sleep(1 * 1000 * 1000); + if (session) { + channel = switch_core_session_get_channel(session); + fst_requires(channel); + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_core_session_rwunlock(session); + switch_sleep(1 * 1000 * 1000); + } } FST_TEST_END() @@ -120,7 +124,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_no_identity) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/verifyidentity@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/verifyidentity@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status != SWITCH_STATUS_SUCCESS); fst_check(cause == SWITCH_CAUSE_NO_IDENTITY); if (session) { @@ -139,7 +143,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_bad_identity) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true,sip_h_identity=foo;info=bar}sofia/internal/verifyidentity@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true,sip_h_identity=foo;info=bar}sofia/internal/verifyidentity@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status != SWITCH_STATUS_SUCCESS); fst_check(cause == SWITCH_CAUSE_INVALID_IDENTITY); if (session) { @@ -158,7 +162,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_valid_identity_no_cert_available) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMS80MDQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMSJdfSwiaWF0IjoxNjE4Mjc5OTYzLCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMTMxMzEzMTMifQ.Cm34sISkFWYB6ohtjjJEO71Hyz4TQ5qrTDyYmCXBj-ni5Fe7IbNjmMyvY_lD_Go0u2csWQNe8n03fHSO7Z7nNw;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214321@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMS80MDQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMSJdfSwiaWF0IjoxNjE4Mjc5OTYzLCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMTMxMzEzMTMifQ.Cm34sISkFWYB6ohtjjJEO71Hyz4TQ5qrTDyYmCXBj-ni5Fe7IbNjmMyvY_lD_Go0u2csWQNe8n03fHSO7Z7nNw;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214321@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status != SWITCH_STATUS_SUCCESS); fst_check(cause == SWITCH_CAUSE_INVALID_IDENTITY); if (session) { @@ -177,13 +181,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_a) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status == SWITCH_STATUS_SUCCESS); - fst_requires(session); - channel = switch_core_session_get_channel(session); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(session); - switch_sleep(1 * 1000 * 1000); + fst_check(session); + if (session) { + channel = switch_core_session_get_channel(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_core_session_rwunlock(session); + switch_sleep(1 * 1000 * 1000); + } } FST_TEST_END() @@ -194,13 +200,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_b) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=B}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=B}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status == SWITCH_STATUS_SUCCESS); - fst_requires(session); - channel = switch_core_session_get_channel(session); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(session); - switch_sleep(1 * 1000 * 1000); + fst_check(session); + if (session) { + channel = switch_core_session_get_channel(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_core_session_rwunlock(session); + switch_sleep(1 * 1000 * 1000); + } } FST_TEST_END() @@ -211,13 +219,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_c) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=C}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=C}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status == SWITCH_STATUS_SUCCESS); - fst_requires(session); - channel = switch_core_session_get_channel(session); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(session); - switch_sleep(1 * 1000 * 1000); + fst_check(session); + if (session) { + channel = switch_core_session_get_channel(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_core_session_rwunlock(session); + switch_sleep(1 * 1000 * 1000); + } } FST_TEST_END() @@ -228,7 +238,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_verified_attest_a_expired) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMTo4MDgwL2NlcnQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMiJdfSwiaWF0IjoxNjE4MzczMTc0LCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMzliZDYzZDQtOTE1Mi00MzU0LWFkNjctNjg5NjQ2NmI4ZDI3In0.mUaikwHSOb8RVPwwMZTsqBe57MZY29CgbIqmiiEmyq9DzKZO-y4qShiIVT3serg-xHgC9SCMjUOBWaDfeXnEvA;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMTo4MDgwL2NlcnQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMiJdfSwiaWF0IjoxNjE4MzczMTc0LCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMzliZDYzZDQtOTE1Mi00MzU0LWFkNjctNjg5NjQ2NmI4ZDI3In0.mUaikwHSOb8RVPwwMZTsqBe57MZY29CgbIqmiiEmyq9DzKZO-y4qShiIVT3serg-xHgC9SCMjUOBWaDfeXnEvA;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status != SWITCH_STATUS_SUCCESS); fst_check(cause == SWITCH_CAUSE_CALL_REJECTED); if (session) { @@ -247,13 +257,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_a_date) switch_status_t status; switch_call_cause_t cause; const char *local_ip_v4 = switch_core_get_variable("local_ip_v4"); - status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231235,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214323@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231235,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214323@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_check(status == SWITCH_STATUS_SUCCESS); - fst_requires(session); - channel = switch_core_session_get_channel(session); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(session); - switch_sleep(10 * 1000 * 1000); + fst_check(session); + if (session) { + channel = switch_core_session_get_channel(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_core_session_rwunlock(session); + switch_sleep(10 * 1000 * 1000); + } } FST_TEST_END() #endif