Tue Feb 10 08:10:41 CST 2009 Pekka Pessi <first.last@nokia.com>
* check_nua: run all the test cases with and without stack thread Ignore-this: e1966c560fb8e32d5a2d292e5e8dbdc0 Better detect race conditions. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11936 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
b5c88496bf
commit
ea9eaeaf44
|
@ -22,11 +22,12 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**@CFILE check_session.c
|
/**@CFILE check_etsi.c
|
||||||
*
|
*
|
||||||
* @brief NUA module tests for SIP session handling
|
* @brief ETSI test cases
|
||||||
*
|
*
|
||||||
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
|
* @author Pekka Pessi <Pekka.Pessi@nokia.com>
|
||||||
|
* @author Paulo Pizarro
|
||||||
*
|
*
|
||||||
* @copyright (C) 2008 Nokia Corporation.
|
* @copyright (C) 2008 Nokia Corporation.
|
||||||
*/
|
*/
|
||||||
|
@ -83,6 +84,18 @@ static void etsi_setup(void)
|
||||||
d2 = su_home_new(sizeof *d2); fail_if(!d2);
|
d2 = su_home_new(sizeof *d2); fail_if(!d2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void etsi_thread_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 1;
|
||||||
|
etsi_setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void etsi_threadless_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 0;
|
||||||
|
etsi_setup();
|
||||||
|
}
|
||||||
|
|
||||||
static void etsi_teardown(void)
|
static void etsi_teardown(void)
|
||||||
{
|
{
|
||||||
s2_teardown_started("ETSI");
|
s2_teardown_started("ETSI");
|
||||||
|
@ -239,29 +252,33 @@ START_TEST(SIP_CC_OE_CE_TI_008)
|
||||||
|
|
||||||
invite = invite_sent_by_nua(nh, TAG_END());
|
invite = invite_sent_by_nua(nh, TAG_END());
|
||||||
|
|
||||||
s2_respond_to(invite, d1, SIP_404_NOT_FOUND, TAG_END());
|
s2_respond_to(invite, d1, 404, "First not found", TAG_END());
|
||||||
fail_unless(s2_check_event(nua_r_invite, 404));
|
fail_unless(s2_check_event(nua_r_invite, 404));
|
||||||
fail_unless(s2_check_callstate(nua_callstate_terminated));
|
fail_unless(s2_check_callstate(nua_callstate_terminated));
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
|
|
||||||
s2_respond_to(invite, d1, SIP_404_NOT_FOUND, TAG_END());
|
s2_respond_to(invite, d1, 404, "Not found after 5 seconds", TAG_END());
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
|
|
||||||
s2_respond_to(invite, d1, SIP_404_NOT_FOUND, TAG_END());
|
s2_respond_to(invite, d1, 404, "Not found after 10 seconds", TAG_END());
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(21, s2->root);;
|
s2_fast_forward(21, s2->root);
|
||||||
|
|
||||||
s2_respond_to(invite, d1, SIP_404_NOT_FOUND, TAG_END());
|
s2_respond_to(invite, d1, 404, "Not found after 31 seconds", TAG_END());
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(1, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
|
|
||||||
s2_respond_to(invite, d1, SIP_404_NOT_FOUND, TAG_END());
|
/* Wake up nua thread and let it time out INVITE transaction */
|
||||||
|
nua_set_params(s2->nua, TAG_END());
|
||||||
|
s2_check_event(nua_r_set_params, 0);
|
||||||
|
|
||||||
|
s2_respond_to(invite, d1, 404, "Not found after 32 seconds", TAG_END());
|
||||||
s2_free_message(invite);
|
s2_free_message(invite);
|
||||||
fail_if(s2_check_request_timeout(SIP_METHOD_ACK, 500));
|
fail_if(s2_check_request_timeout(SIP_METHOD_ACK, 500));
|
||||||
|
|
||||||
|
@ -294,19 +311,24 @@ START_TEST(SIP_CC_OE_CE_TI_011_012)
|
||||||
fail_unless(s2_check_callstate(nua_callstate_ready));
|
fail_unless(s2_check_callstate(nua_callstate_ready));
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(21, s2->root);;
|
s2_fast_forward(21, s2->root);
|
||||||
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
||||||
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
fail_unless(s2_check_request(SIP_METHOD_ACK));
|
||||||
|
|
||||||
s2_fast_forward(1, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
|
|
||||||
|
/* Wake up nua thread and let it time out INVITE transaction */
|
||||||
|
nua_set_params(s2->nua, TAG_END());
|
||||||
|
s2_check_event(nua_r_set_params, 0);
|
||||||
|
|
||||||
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
respond_with_sdp(invite, d1, SIP_200_OK, TAG_END());
|
||||||
s2_free_message(invite);
|
s2_free_message(invite);
|
||||||
fail_if(s2_check_request_timeout(SIP_METHOD_ACK, 500));
|
fail_if(s2_check_request_timeout(SIP_METHOD_ACK, 500));
|
||||||
|
@ -317,10 +339,13 @@ START_TEST(SIP_CC_OE_CE_TI_011_012)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *sip_cc_oe_ce_tcase(void)
|
TCase *sip_cc_oe_ce_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("6.1 - ETSI CC OE - Call Establishment");
|
TCase *tc = tcase_create("6.1 - ETSI CC OE - Call Establishment");
|
||||||
tcase_add_checked_fixture(tc, etsi_setup, etsi_teardown);
|
|
||||||
|
void (*setup)(void) = threading ? etsi_thread_setup : etsi_threadless_setup;
|
||||||
|
|
||||||
|
tcase_add_checked_fixture(tc, setup, etsi_teardown);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, SIP_CC_OE_CE_V_019);
|
tcase_add_test(tc, SIP_CC_OE_CE_V_019);
|
||||||
tcase_add_test(tc, SIP_CC_OE_CE_TI_008);
|
tcase_add_test(tc, SIP_CC_OE_CE_TI_008);
|
||||||
|
@ -331,7 +356,7 @@ TCase *sip_cc_oe_ce_tcase(void)
|
||||||
|
|
||||||
/* ====================================================================== */
|
/* ====================================================================== */
|
||||||
|
|
||||||
void check_etsi_cases(Suite *suite)
|
void check_etsi_cases(Suite *suite, int threading)
|
||||||
{
|
{
|
||||||
suite_add_tcase(suite, sip_cc_oe_ce_tcase());
|
suite_add_tcase(suite, sip_cc_oe_ce_tcase(threading));
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,20 +48,28 @@
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int failed = 0;
|
int failed = 0;
|
||||||
|
int threading;
|
||||||
|
|
||||||
Suite *suite = suite_create("Unit tests for Sofia-SIP UA Engine");
|
|
||||||
SRunner *runner;
|
SRunner *runner;
|
||||||
|
|
||||||
|
Suite *suite = suite_create("Unit tests for Sofia-SIP UA Engine");
|
||||||
|
|
||||||
s2_tester = "check_nua";
|
s2_tester = "check_nua";
|
||||||
|
|
||||||
if (getenv("CHECK_NUA_VERBOSE"))
|
if (getenv("CHECK_NUA_VERBOSE"))
|
||||||
s2_start_stop = strtoul(getenv("CHECK_NUA_VERBOSE"), NULL, 10);
|
s2_start_stop = strtoul(getenv("CHECK_NUA_VERBOSE"), NULL, 10);
|
||||||
|
|
||||||
s2_select_tests(getenv("CHECK_NUA_CASES"));
|
s2_select_tests(getenv("CHECK_NUA_CASES"));
|
||||||
|
|
||||||
check_register_cases(suite);
|
check_register_cases(suite, threading = 0);
|
||||||
check_session_cases(suite);
|
check_simple_cases(suite, threading = 0);
|
||||||
check_etsi_cases(suite);
|
check_session_cases(suite, threading = 0);
|
||||||
check_simple_cases(suite);
|
check_etsi_cases(suite, threading = 0);
|
||||||
|
|
||||||
|
check_register_cases(suite, threading = 1);
|
||||||
|
check_session_cases(suite, threading = 1);
|
||||||
|
check_etsi_cases(suite, threading = 1);
|
||||||
|
check_simple_cases(suite, threading = 1);
|
||||||
|
|
||||||
runner = srunner_create(suite);
|
runner = srunner_create(suite);
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
#include <s2check.h>
|
#include <s2check.h>
|
||||||
|
|
||||||
void check_session_cases(Suite *suite);
|
void check_session_cases(Suite *suite, int threading);
|
||||||
void check_register_cases(Suite *suite);
|
void check_register_cases(Suite *suite, int threading);
|
||||||
void check_etsi_cases(Suite *suite);
|
void check_etsi_cases(Suite *suite, int threading);
|
||||||
void check_simple_cases(Suite *suite);
|
void check_simple_cases(Suite *suite, int threading);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,19 @@ static void register_setup(void)
|
||||||
nua = s2_nua_setup("register", TAG_END());
|
nua = s2_nua_setup("register", TAG_END());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void register_pingpong_setup(void)
|
static void register_thread_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 1;
|
||||||
|
register_setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void register_threadless_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 1;
|
||||||
|
register_setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pingpong_setup(void)
|
||||||
{
|
{
|
||||||
nua = s2_nua_setup("register with pingpong",
|
nua = s2_nua_setup("register with pingpong",
|
||||||
TPTAG_PINGPONG(20000),
|
TPTAG_PINGPONG(20000),
|
||||||
|
@ -66,6 +78,17 @@ static void register_pingpong_setup(void)
|
||||||
tport_set_params(s2->tcp.tport, TPTAG_PONG2PING(1), TAG_END());
|
tport_set_params(s2->tcp.tport, TPTAG_PONG2PING(1), TAG_END());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pingpong_thread_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 1;
|
||||||
|
pingpong_setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pingpong_threadless_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 0;
|
||||||
|
pingpong_setup();
|
||||||
|
}
|
||||||
|
|
||||||
static void register_teardown(void)
|
static void register_teardown(void)
|
||||||
{
|
{
|
||||||
|
@ -75,6 +98,17 @@ static void register_teardown(void)
|
||||||
s2_nua_teardown();
|
s2_nua_teardown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void add_register_fixtures(TCase *tc, int threading, int pingpong)
|
||||||
|
{
|
||||||
|
void (*setup)(void);
|
||||||
|
|
||||||
|
if (pingpong)
|
||||||
|
setup = threading ? pingpong_thread_setup : pingpong_threadless_setup;
|
||||||
|
else
|
||||||
|
setup = threading ? register_thread_setup : register_threadless_setup;
|
||||||
|
|
||||||
|
tcase_add_checked_fixture(tc, setup, register_teardown);
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
@ -335,7 +369,7 @@ START_TEST(register_1_2_2_2)
|
||||||
s2_free_message(m);
|
s2_free_message(m);
|
||||||
|
|
||||||
su_root_step(s2->root, 20); su_root_step(s2->root, 20);
|
su_root_step(s2->root, 20); su_root_step(s2->root, 20);
|
||||||
s2_fast_forward(120, s2->root);; /* Default keepalive interval */
|
s2_fast_forward(120, s2->root); /* Default keepalive interval */
|
||||||
mark_point();
|
mark_point();
|
||||||
|
|
||||||
m = s2_wait_for_request(SIP_METHOD_OPTIONS);
|
m = s2_wait_for_request(SIP_METHOD_OPTIONS);
|
||||||
|
@ -346,7 +380,7 @@ START_TEST(register_1_2_2_2)
|
||||||
s2_free_message(m);
|
s2_free_message(m);
|
||||||
|
|
||||||
su_root_step(s2->root, 20); su_root_step(s2->root, 20);
|
su_root_step(s2->root, 20); su_root_step(s2->root, 20);
|
||||||
s2_fast_forward(120, s2->root);; /* Default keepalive interval */
|
s2_fast_forward(120, s2->root); /* Default keepalive interval */
|
||||||
mark_point();
|
mark_point();
|
||||||
|
|
||||||
receive_natted = "received=4.255.255.10";
|
receive_natted = "received=4.255.255.10";
|
||||||
|
@ -400,7 +434,7 @@ START_TEST(register_1_2_2_3)
|
||||||
|
|
||||||
receive_natted = "received=4.255.255.10";
|
receive_natted = "received=4.255.255.10";
|
||||||
|
|
||||||
s2_fast_forward(3600, s2->root);;
|
s2_fast_forward(3600, s2->root);
|
||||||
mark_point();
|
mark_point();
|
||||||
|
|
||||||
m = s2_wait_for_request(SIP_METHOD_REGISTER);
|
m = s2_wait_for_request(SIP_METHOD_REGISTER);
|
||||||
|
@ -637,7 +671,7 @@ START_TEST(register_1_3_3_1)
|
||||||
if (!tport_is_udp(m->tport)) /* Drop UDP */
|
if (!tport_is_udp(m->tport)) /* Drop UDP */
|
||||||
break;
|
break;
|
||||||
s2_free_message(m);
|
s2_free_message(m);
|
||||||
s2_fast_forward(4, s2->root);;
|
s2_fast_forward(4, s2->root);
|
||||||
}
|
}
|
||||||
|
|
||||||
tcp = tport_ref(m->tport);
|
tcp = tport_ref(m->tport);
|
||||||
|
@ -695,7 +729,7 @@ START_TEST(register_1_3_3_1)
|
||||||
su_root_step(s2->root, 5);
|
su_root_step(s2->root, 5);
|
||||||
su_root_step(s2->root, 5);
|
su_root_step(s2->root, 5);
|
||||||
su_root_step(s2->root, 5);
|
su_root_step(s2->root, 5);
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,11 +739,12 @@ END_TEST
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
TCase *register_tcase(void)
|
TCase *register_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("1 - REGISTER");
|
TCase *tc = tcase_create("1 - REGISTER");
|
||||||
/* Each testcase is run in different process */
|
|
||||||
tcase_add_checked_fixture(tc, register_setup, register_teardown);
|
add_register_fixtures(tc, threading, 0);
|
||||||
|
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, register_1_0_1);
|
tcase_add_test(tc, register_1_0_1);
|
||||||
tcase_add_test(tc, register_1_1_1);
|
tcase_add_test(tc, register_1_1_1);
|
||||||
|
@ -727,21 +762,23 @@ TCase *register_tcase(void)
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
TCase *pingpong_tcase(void)
|
TCase *pingpong_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("1 - REGISTER with PingPong");
|
TCase *tc = tcase_create("1 - REGISTER (with PingPong)");
|
||||||
/* Each testcase is run in different process */
|
|
||||||
tcase_add_checked_fixture(tc, register_pingpong_setup, register_teardown);
|
add_register_fixtures(tc, threading, 1);
|
||||||
|
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, register_1_3_3_1);
|
tcase_add_test(tc, register_1_3_3_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
tcase_set_timeout(tc, 10);
|
tcase_set_timeout(tc, 10);
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_register_cases(Suite *suite)
|
void check_register_cases(Suite *suite, int threading)
|
||||||
{
|
{
|
||||||
suite_add_tcase(suite, register_tcase());
|
suite_add_tcase(suite, register_tcase(threading));
|
||||||
suite_add_tcase(suite, pingpong_tcase());
|
suite_add_tcase(suite, pingpong_tcase(threading));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,12 @@ static void call_setup(void)
|
||||||
s2_register_setup();
|
s2_register_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void call_thread_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 1;
|
||||||
|
call_setup();
|
||||||
|
}
|
||||||
|
|
||||||
static void call_teardown(void)
|
static void call_teardown(void)
|
||||||
{
|
{
|
||||||
s2_teardown_started("call");
|
s2_teardown_started("call");
|
||||||
|
@ -96,6 +102,15 @@ static void call_teardown(void)
|
||||||
s2_nua_teardown();
|
s2_nua_teardown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
add_call_fixtures(TCase *tc, int threading)
|
||||||
|
{
|
||||||
|
if (threading)
|
||||||
|
tcase_add_checked_fixture(tc, call_thread_setup, call_teardown);
|
||||||
|
else
|
||||||
|
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
||||||
|
}
|
||||||
|
|
||||||
static void save_sdp_to_soa(struct message *message)
|
static void save_sdp_to_soa(struct message *message)
|
||||||
{
|
{
|
||||||
sip_payload_t *pl;
|
sip_payload_t *pl;
|
||||||
|
@ -666,10 +681,10 @@ START_TEST(call_2_1_8)
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
|
||||||
TCase *invite_tcase(void)
|
TCase *invite_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("2.1 - Basic INVITE");
|
TCase *tc = tcase_create("2.1 - Basic INVITE");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, call_2_1_1);
|
tcase_add_test(tc, call_2_1_1);
|
||||||
tcase_add_test(tc, call_2_1_2_1);
|
tcase_add_test(tc, call_2_1_2_1);
|
||||||
|
@ -986,10 +1001,10 @@ START_TEST(cancel_2_2_7)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *cancel_tcase(void)
|
TCase *cancel_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("2.2 - CANCEL");
|
TCase *tc = tcase_create("2.2 - CANCEL");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
|
|
||||||
tcase_add_test(tc, cancel_2_2_1);
|
tcase_add_test(tc, cancel_2_2_1);
|
||||||
tcase_add_test(tc, cancel_2_2_2);
|
tcase_add_test(tc, cancel_2_2_2);
|
||||||
|
@ -1054,11 +1069,11 @@ START_TEST(call_2_3_1)
|
||||||
SIPTAG_REQUIRE_STR("timer"),
|
SIPTAG_REQUIRE_STR("timer"),
|
||||||
TAG_END());
|
TAG_END());
|
||||||
|
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
ack = invite_timer_round(nh, "300;refresher=uac", rr);
|
ack = invite_timer_round(nh, "300;refresher=uac", rr);
|
||||||
fail_if(ack->sip->sip_route &&
|
fail_if(ack->sip->sip_route &&
|
||||||
su_strmatch(ack->sip->sip_route->r_url->url_user, "record"));
|
su_strmatch(ack->sip->sip_route->r_url->url_user, "record"));
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
invite_timer_round(nh, "300;refresher=uac", NULL);
|
invite_timer_round(nh, "300;refresher=uac", NULL);
|
||||||
|
|
||||||
bye_by_nua(nh, TAG_END());
|
bye_by_nua(nh, TAG_END());
|
||||||
|
@ -1082,9 +1097,9 @@ START_TEST(call_2_3_2)
|
||||||
SIPTAG_REQUIRE_STR("timer"),
|
SIPTAG_REQUIRE_STR("timer"),
|
||||||
TAG_END());
|
TAG_END());
|
||||||
|
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
invite_timer_round(nh, "300", NULL);
|
invite_timer_round(nh, "300", NULL);
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
invite_timer_round(nh, "300", NULL);
|
invite_timer_round(nh, "300", NULL);
|
||||||
|
|
||||||
bye_by_nua(nh, TAG_END());
|
bye_by_nua(nh, TAG_END());
|
||||||
|
@ -1095,10 +1110,10 @@ END_TEST
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TCase *session_timer_tcase(void)
|
TCase *session_timer_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("2.3 - Session timers");
|
TCase *tc = tcase_create("2.3 - Session timers");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, call_2_3_1);
|
tcase_add_test(tc, call_2_3_1);
|
||||||
tcase_add_test(tc, call_2_3_2);
|
tcase_add_test(tc, call_2_3_2);
|
||||||
|
@ -1227,10 +1242,10 @@ START_TEST(call_2_4_2)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *invite_100rel_tcase(void)
|
TCase *invite_100rel_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("2.4 - INVITE with 100rel");
|
TCase *tc = tcase_create("2.4 - INVITE with 100rel");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, call_2_4_1);
|
tcase_add_test(tc, call_2_4_1);
|
||||||
tcase_add_test(tc, call_2_4_2);
|
tcase_add_test(tc, call_2_4_2);
|
||||||
|
@ -1459,10 +1474,10 @@ START_TEST(call_2_5_3)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *invite_precondition_tcase(void)
|
TCase *invite_precondition_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("2.5 - Call with preconditions");
|
TCase *tc = tcase_create("2.5 - Call with preconditions");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, call_2_5_1);
|
tcase_add_test(tc, call_2_5_1);
|
||||||
tcase_add_test(tc, call_2_5_2);
|
tcase_add_test(tc, call_2_5_2);
|
||||||
|
@ -1551,7 +1566,7 @@ START_TEST(call_2_6_2)
|
||||||
/* We get nua_r_invite with 100 trying (and 500 in sip->sip_status) */
|
/* We get nua_r_invite with 100 trying (and 500 in sip->sip_status) */
|
||||||
fail_unless(s2_check_event(nua_r_invite, 100));
|
fail_unless(s2_check_event(nua_r_invite, 100));
|
||||||
|
|
||||||
s2_fast_forward(10, s2->root);;
|
s2_fast_forward(10, s2->root);
|
||||||
|
|
||||||
fail_unless(s2_check_callstate(nua_callstate_calling));
|
fail_unless(s2_check_callstate(nua_callstate_calling));
|
||||||
|
|
||||||
|
@ -1605,7 +1620,7 @@ START_TEST(call_2_6_3)
|
||||||
fail_unless(s2_check_event(nua_i_ack, 200));
|
fail_unless(s2_check_event(nua_i_ack, 200));
|
||||||
fail_unless(s2_check_callstate(nua_callstate_ready));
|
fail_unless(s2_check_callstate(nua_callstate_ready));
|
||||||
|
|
||||||
s2_fast_forward(10, s2->root);;
|
s2_fast_forward(10, s2->root);
|
||||||
|
|
||||||
nua_set_hparams(nh, NUTAG_REFRESH_WITHOUT_SDP(1), TAG_END());
|
nua_set_hparams(nh, NUTAG_REFRESH_WITHOUT_SDP(1), TAG_END());
|
||||||
fail_unless(s2_check_event(nua_r_set_params, 200));
|
fail_unless(s2_check_event(nua_r_set_params, 200));
|
||||||
|
@ -1673,11 +1688,11 @@ START_TEST(call_2_6_4)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *reinvite_tcase(void)
|
TCase *reinvite_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("2.6 - re-INVITEs");
|
TCase *tc = tcase_create("2.6 - re-INVITEs");
|
||||||
|
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, call_2_6_1);
|
tcase_add_test(tc, call_2_6_1);
|
||||||
tcase_add_test(tc, call_2_6_2);
|
tcase_add_test(tc, call_2_6_2);
|
||||||
|
@ -1752,7 +1767,7 @@ START_TEST(call_3_1_2)
|
||||||
if (i == 3)
|
if (i == 3)
|
||||||
break;
|
break;
|
||||||
fail_unless(s2_check_event(nua_r_invite, 100));
|
fail_unless(s2_check_event(nua_r_invite, 100));
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
}
|
}
|
||||||
|
|
||||||
fail_unless(s2_check_event(nua_r_invite, 500));
|
fail_unless(s2_check_event(nua_r_invite, 500));
|
||||||
|
@ -1822,7 +1837,7 @@ START_TEST(call_3_2_2)
|
||||||
if (i == 3)
|
if (i == 3)
|
||||||
break;
|
break;
|
||||||
fail_unless(s2_check_event(nua_r_invite, 100));
|
fail_unless(s2_check_event(nua_r_invite, 100));
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
}
|
}
|
||||||
|
|
||||||
fail_unless(s2_check_event(nua_r_invite, 500));
|
fail_unless(s2_check_event(nua_r_invite, 500));
|
||||||
|
@ -1869,10 +1884,10 @@ START_TEST(call_3_2_3)
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
|
||||||
TCase *invite_error_tcase(void)
|
TCase *invite_error_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("3 - Call Errors");
|
TCase *tc = tcase_create("3 - Call Errors");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, call_3_1_1);
|
tcase_add_test(tc, call_3_1_1);
|
||||||
tcase_add_test(tc, call_3_1_2);
|
tcase_add_test(tc, call_3_1_2);
|
||||||
|
@ -2344,7 +2359,7 @@ START_TEST(bye_4_2_1)
|
||||||
SIPTAG_REQUIRE_STR("timer"),
|
SIPTAG_REQUIRE_STR("timer"),
|
||||||
TAG_END());
|
TAG_END());
|
||||||
|
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
invite_timer_round(nh, "300", NULL);
|
invite_timer_round(nh, "300", NULL);
|
||||||
|
|
||||||
nua_bye(nh, TAG_END());
|
nua_bye(nh, TAG_END());
|
||||||
|
@ -2357,7 +2372,7 @@ START_TEST(bye_4_2_1)
|
||||||
s2_free_message(bye);
|
s2_free_message(bye);
|
||||||
fail_unless(s2_check_event(nua_r_bye, 407));
|
fail_unless(s2_check_event(nua_r_bye, 407));
|
||||||
|
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
|
|
||||||
nua_authenticate(nh, NUTAG_AUTH("Digest:\"s2test\":abc:abc"), TAG_END());
|
nua_authenticate(nh, NUTAG_AUTH("Digest:\"s2test\":abc:abc"), TAG_END());
|
||||||
bye = s2_wait_for_request(SIP_METHOD_BYE);
|
bye = s2_wait_for_request(SIP_METHOD_BYE);
|
||||||
|
@ -2388,10 +2403,10 @@ START_TEST(bye_4_2_2)
|
||||||
SIPTAG_REQUIRE_STR("timer"),
|
SIPTAG_REQUIRE_STR("timer"),
|
||||||
TAG_END());
|
TAG_END());
|
||||||
|
|
||||||
s2_fast_forward(300, s2->root);;
|
s2_fast_forward(300, s2->root);
|
||||||
invite_timer_round(nh, "300", NULL);
|
invite_timer_round(nh, "300", NULL);
|
||||||
|
|
||||||
s2_fast_forward(140, s2->root);;
|
s2_fast_forward(140, s2->root);
|
||||||
|
|
||||||
nua_bye(nh, TAG_END());
|
nua_bye(nh, TAG_END());
|
||||||
|
|
||||||
|
@ -2403,7 +2418,7 @@ START_TEST(bye_4_2_2)
|
||||||
s2_free_message(bye);
|
s2_free_message(bye);
|
||||||
fail_unless(s2_check_event(nua_r_bye, 407));
|
fail_unless(s2_check_event(nua_r_bye, 407));
|
||||||
|
|
||||||
s2_fast_forward(160, s2->root);;
|
s2_fast_forward(160, s2->root);
|
||||||
|
|
||||||
nua_authenticate(nh, NUTAG_AUTH(s2_auth_credentials), TAG_END());
|
nua_authenticate(nh, NUTAG_AUTH(s2_auth_credentials), TAG_END());
|
||||||
bye = s2_wait_for_request(SIP_METHOD_BYE);
|
bye = s2_wait_for_request(SIP_METHOD_BYE);
|
||||||
|
@ -2418,10 +2433,10 @@ START_TEST(bye_4_2_2)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *termination_tcase(void)
|
TCase *termination_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("4 - Call Termination");
|
TCase *tc = tcase_create("4 - Call Termination");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, bye_4_1_1);
|
tcase_add_test(tc, bye_4_1_1);
|
||||||
tcase_add_test(tc, bye_4_1_2);
|
tcase_add_test(tc, bye_4_1_2);
|
||||||
|
@ -2928,11 +2943,11 @@ START_TEST(destroy_4_4_3_2)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *destroy_tcase(void)
|
static TCase *destroy_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("4.3 - Destroying Handle");
|
TCase *tc = tcase_create("4.3 - Destroying Handle");
|
||||||
|
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
add_call_fixtures(tc, threading);
|
||||||
|
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, destroy_4_3_1);
|
tcase_add_test(tc, destroy_4_3_1);
|
||||||
|
@ -3056,7 +3071,7 @@ START_TEST(options_5_1_2)
|
||||||
END_TEST
|
END_TEST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TCase *options_tcase(void)
|
TCase *options_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("5 - OPTIONS, etc");
|
TCase *tc = tcase_create("5 - OPTIONS, etc");
|
||||||
|
|
||||||
|
@ -3068,7 +3083,6 @@ TCase *options_tcase(void)
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void options_setup(void)
|
static void options_setup(void)
|
||||||
{
|
{
|
||||||
s2_nua_thread = 1;
|
s2_nua_thread = 1;
|
||||||
|
@ -3096,13 +3110,14 @@ START_TEST(empty)
|
||||||
s2_setup_logs(0);
|
s2_setup_logs(0);
|
||||||
tport_set_params(s2->master, TPTAG_LOG(0), TAG_END());
|
tport_set_params(s2->master, TPTAG_LOG(0), TAG_END());
|
||||||
}
|
}
|
||||||
|
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *empty_tcase(void)
|
TCase *empty_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("0 - Empty");
|
TCase *tc = tcase_create("0 - Empty");
|
||||||
tcase_add_checked_fixture(tc, call_setup, call_teardown);
|
|
||||||
|
add_call_fixtures(tc, threading);
|
||||||
|
|
||||||
tcase_add_test(tc, empty);
|
tcase_add_test(tc, empty);
|
||||||
|
|
||||||
return tc;
|
return tc;
|
||||||
|
@ -3110,19 +3125,19 @@ TCase *empty_tcase(void)
|
||||||
|
|
||||||
/* ====================================================================== */
|
/* ====================================================================== */
|
||||||
|
|
||||||
void check_session_cases(Suite *suite)
|
void check_session_cases(Suite *suite, int threading)
|
||||||
{
|
{
|
||||||
suite_add_tcase(suite, invite_tcase());
|
suite_add_tcase(suite, invite_tcase(threading));
|
||||||
suite_add_tcase(suite, cancel_tcase());
|
suite_add_tcase(suite, cancel_tcase(threading));
|
||||||
suite_add_tcase(suite, session_timer_tcase());
|
suite_add_tcase(suite, session_timer_tcase(threading));
|
||||||
suite_add_tcase(suite, invite_100rel_tcase());
|
suite_add_tcase(suite, invite_100rel_tcase(threading));
|
||||||
suite_add_tcase(suite, invite_precondition_tcase());
|
suite_add_tcase(suite, invite_precondition_tcase(threading));
|
||||||
suite_add_tcase(suite, reinvite_tcase());
|
suite_add_tcase(suite, reinvite_tcase(threading));
|
||||||
suite_add_tcase(suite, invite_error_tcase());
|
suite_add_tcase(suite, invite_error_tcase(threading));
|
||||||
suite_add_tcase(suite, termination_tcase());
|
suite_add_tcase(suite, termination_tcase(threading));
|
||||||
suite_add_tcase(suite, destroy_tcase());
|
suite_add_tcase(suite, destroy_tcase(threading));
|
||||||
suite_add_tcase(suite, options_tcase());
|
suite_add_tcase(suite, options_tcase(threading));
|
||||||
|
|
||||||
if (0) /* Template */
|
if (0) /* Template */
|
||||||
suite_add_tcase(suite, empty_tcase());
|
suite_add_tcase(suite, empty_tcase(threading));
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,22 @@ void s2_dialog_teardown(void)
|
||||||
s2_nua_teardown();
|
s2_nua_teardown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void simple_thread_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 1;
|
||||||
|
s2_dialog_setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void simple_threadless_setup(void)
|
||||||
|
{
|
||||||
|
s2_nua_thread = 0;
|
||||||
|
s2_dialog_setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void simple_teardown(void)
|
||||||
|
{
|
||||||
|
s2_dialog_teardown();
|
||||||
|
}
|
||||||
|
|
||||||
static char const presence_open[] =
|
static char const presence_open[] =
|
||||||
"<?xml version='1.0' encoding='UTF-8'?>\n"
|
"<?xml version='1.0' encoding='UTF-8'?>\n"
|
||||||
|
@ -290,7 +306,7 @@ START_TEST(subscribe_6_1_2)
|
||||||
s2_free_event(notify);
|
s2_free_event(notify);
|
||||||
|
|
||||||
/* Wait for refresh */
|
/* Wait for refresh */
|
||||||
s2_fast_forward(600, s2->root);;
|
s2_fast_forward(600, s2->root);
|
||||||
subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE);
|
subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE);
|
||||||
s2_respond_to(subscribe, dialog, SIP_200_OK,
|
s2_respond_to(subscribe, dialog, SIP_200_OK,
|
||||||
SIPTAG_EXPIRES_STR("600"),
|
SIPTAG_EXPIRES_STR("600"),
|
||||||
|
@ -377,7 +393,7 @@ START_TEST(subscribe_6_1_4)
|
||||||
|
|
||||||
su_home_unref((void *)dialog), dialog = su_home_new(sizeof *dialog); fail_if(!dialog);
|
su_home_unref((void *)dialog), dialog = su_home_new(sizeof *dialog); fail_if(!dialog);
|
||||||
|
|
||||||
s2_fast_forward(5, s2->root);;
|
s2_fast_forward(5, s2->root);
|
||||||
/* nua re-establishes the subscription */
|
/* nua re-establishes the subscription */
|
||||||
notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END());
|
notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END());
|
||||||
s2_free_event(notify);
|
s2_free_event(notify);
|
||||||
|
@ -391,10 +407,14 @@ START_TEST(subscribe_6_1_4)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
TCase *subscribe_tcase(void)
|
TCase *subscribe_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("6.1 - Basic SUBSCRIBE_");
|
TCase *tc = tcase_create("6.1 - Basic SUBSCRIBE_");
|
||||||
tcase_add_checked_fixture(tc, s2_dialog_setup, s2_dialog_teardown);
|
void (*simple_setup)(void);
|
||||||
|
|
||||||
|
simple_setup = threading ? simple_thread_setup : simple_threadless_setup;
|
||||||
|
tcase_add_checked_fixture(tc, simple_setup, simple_teardown);
|
||||||
|
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, subscribe_6_1_1);
|
tcase_add_test(tc, subscribe_6_1_1);
|
||||||
tcase_add_test(tc, subscribe_6_1_2);
|
tcase_add_test(tc, subscribe_6_1_2);
|
||||||
|
@ -460,7 +480,7 @@ START_TEST(fetch_6_2_3)
|
||||||
fail_unless(s2_check_substate(event, nua_substate_embryonic));
|
fail_unless(s2_check_substate(event, nua_substate_embryonic));
|
||||||
s2_free_event(event);
|
s2_free_event(event);
|
||||||
|
|
||||||
s2_fast_forward(600, s2->root);;
|
s2_fast_forward(600, s2->root);
|
||||||
|
|
||||||
event = s2_wait_for_event(nua_i_notify, 408); fail_if(!event);
|
event = s2_wait_for_event(nua_i_notify, 408); fail_if(!event);
|
||||||
fail_unless(s2_check_substate(event, nua_substate_terminated));
|
fail_unless(s2_check_substate(event, nua_substate_terminated));
|
||||||
|
@ -471,10 +491,14 @@ START_TEST(fetch_6_2_3)
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
|
||||||
TCase *fetch_tcase(void)
|
TCase *fetch_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("6.2 - Event fetch");
|
TCase *tc = tcase_create("6.2 - Event fetch");
|
||||||
tcase_add_checked_fixture(tc, s2_dialog_setup, s2_dialog_teardown);
|
void (*simple_setup)(void);
|
||||||
|
|
||||||
|
simple_setup = threading ? simple_thread_setup : simple_threadless_setup;
|
||||||
|
tcase_add_checked_fixture(tc, simple_setup, simple_teardown);
|
||||||
|
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, fetch_6_2_1);
|
tcase_add_test(tc, fetch_6_2_1);
|
||||||
tcase_add_test(tc, fetch_6_2_2);
|
tcase_add_test(tc, fetch_6_2_2);
|
||||||
|
@ -500,10 +524,14 @@ START_TEST(empty)
|
||||||
|
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
static TCase *empty_tcase(void)
|
static TCase *empty_tcase(int threading)
|
||||||
{
|
{
|
||||||
TCase *tc = tcase_create("0 - Empty");
|
TCase *tc = tcase_create("0 - Empty");
|
||||||
tcase_add_checked_fixture(tc, s2_dialog_setup, s2_dialog_teardown);
|
void (*simple_setup)(void);
|
||||||
|
|
||||||
|
simple_setup = threading ? simple_thread_setup : simple_threadless_setup;
|
||||||
|
tcase_add_checked_fixture(tc, simple_setup, simple_teardown);
|
||||||
|
|
||||||
tcase_add_test(tc, empty);
|
tcase_add_test(tc, empty);
|
||||||
|
|
||||||
return tc;
|
return tc;
|
||||||
|
@ -511,12 +539,12 @@ static TCase *empty_tcase(void)
|
||||||
|
|
||||||
/* ====================================================================== */
|
/* ====================================================================== */
|
||||||
|
|
||||||
void check_simple_cases(Suite *suite)
|
void check_simple_cases(Suite *suite, int threading)
|
||||||
{
|
{
|
||||||
suite_add_tcase(suite, subscribe_tcase());
|
suite_add_tcase(suite, subscribe_tcase(threading));
|
||||||
suite_add_tcase(suite, fetch_tcase());
|
suite_add_tcase(suite, fetch_tcase(threading));
|
||||||
|
|
||||||
if (0) /* Template */
|
if (0) /* Template */
|
||||||
suite_add_tcase(suite, empty_tcase());
|
suite_add_tcase(suite, empty_tcase(threading));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue