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:
Michael Jerris 2009-02-12 21:03:16 +00:00
parent b5c88496bf
commit ea9eaeaf44
6 changed files with 218 additions and 105 deletions

View File

@ -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 Paulo Pizarro
*
* @copyright (C) 2008 Nokia Corporation.
*/
@ -83,6 +84,18 @@ static void etsi_setup(void)
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)
{
s2_teardown_started("ETSI");
@ -239,29 +252,33 @@ START_TEST(SIP_CC_OE_CE_TI_008)
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_callstate(nua_callstate_terminated));
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));
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));
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));
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);
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_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());
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());
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());
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());
s2_free_message(invite);
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
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_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_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));
}

View File

@ -48,20 +48,28 @@
int main(int argc, char *argv[])
{
int failed = 0;
int threading;
Suite *suite = suite_create("Unit tests for Sofia-SIP UA Engine");
SRunner *runner;
Suite *suite = suite_create("Unit tests for Sofia-SIP UA Engine");
s2_tester = "check_nua";
if (getenv("CHECK_NUA_VERBOSE"))
s2_start_stop = strtoul(getenv("CHECK_NUA_VERBOSE"), NULL, 10);
s2_select_tests(getenv("CHECK_NUA_CASES"));
check_register_cases(suite);
check_session_cases(suite);
check_etsi_cases(suite);
check_simple_cases(suite);
check_register_cases(suite, threading = 0);
check_simple_cases(suite, threading = 0);
check_session_cases(suite, threading = 0);
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);

View File

@ -2,10 +2,10 @@
#include <s2check.h>
void check_session_cases(Suite *suite);
void check_register_cases(Suite *suite);
void check_etsi_cases(Suite *suite);
void check_simple_cases(Suite *suite);
void check_session_cases(Suite *suite, int threading);
void check_register_cases(Suite *suite, int threading);
void check_etsi_cases(Suite *suite, int threading);
void check_simple_cases(Suite *suite, int threading);
#endif

View File

@ -57,7 +57,19 @@ static void register_setup(void)
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",
TPTAG_PINGPONG(20000),
@ -66,6 +78,17 @@ static void register_pingpong_setup(void)
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)
{
@ -75,6 +98,17 @@ static void register_teardown(void)
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);
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();
m = s2_wait_for_request(SIP_METHOD_OPTIONS);
@ -346,7 +380,7 @@ START_TEST(register_1_2_2_2)
s2_free_message(m);
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();
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";
s2_fast_forward(3600, s2->root);;
s2_fast_forward(3600, s2->root);
mark_point();
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 */
break;
s2_free_message(m);
s2_fast_forward(4, s2->root);;
s2_fast_forward(4, s2->root);
}
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);
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");
/* 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_1_1);
@ -727,21 +762,23 @@ TCase *register_tcase(void)
return tc;
}
TCase *pingpong_tcase(void)
TCase *pingpong_tcase(int threading)
{
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);
TCase *tc = tcase_create("1 - REGISTER (with PingPong)");
add_register_fixtures(tc, threading, 1);
{
tcase_add_test(tc, register_1_3_3_1);
}
tcase_set_timeout(tc, 10);
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, pingpong_tcase());
suite_add_tcase(suite, register_tcase(threading));
suite_add_tcase(suite, pingpong_tcase(threading));
}

View File

@ -82,6 +82,12 @@ static void call_setup(void)
s2_register_setup();
}
static void call_thread_setup(void)
{
s2_nua_thread = 1;
call_setup();
}
static void call_teardown(void)
{
s2_teardown_started("call");
@ -96,6 +102,15 @@ static void call_teardown(void)
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)
{
sip_payload_t *pl;
@ -666,10 +681,10 @@ START_TEST(call_2_1_8)
END_TEST
TCase *invite_tcase(void)
TCase *invite_tcase(int threading)
{
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_2_1);
@ -986,10 +1001,10 @@ START_TEST(cancel_2_2_7)
}
END_TEST
TCase *cancel_tcase(void)
TCase *cancel_tcase(int threading)
{
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_2);
@ -1054,11 +1069,11 @@ START_TEST(call_2_3_1)
SIPTAG_REQUIRE_STR("timer"),
TAG_END());
s2_fast_forward(300, s2->root);;
s2_fast_forward(300, s2->root);
ack = invite_timer_round(nh, "300;refresher=uac", rr);
fail_if(ack->sip->sip_route &&
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);
bye_by_nua(nh, TAG_END());
@ -1082,9 +1097,9 @@ START_TEST(call_2_3_2)
SIPTAG_REQUIRE_STR("timer"),
TAG_END());
s2_fast_forward(300, s2->root);;
s2_fast_forward(300, s2->root);
invite_timer_round(nh, "300", NULL);
s2_fast_forward(300, s2->root);;
s2_fast_forward(300, s2->root);
invite_timer_round(nh, "300", NULL);
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_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_2);
@ -1227,10 +1242,10 @@ START_TEST(call_2_4_2)
}
END_TEST
TCase *invite_100rel_tcase(void)
TCase *invite_100rel_tcase(int threading)
{
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_2);
@ -1459,10 +1474,10 @@ START_TEST(call_2_5_3)
}
END_TEST
TCase *invite_precondition_tcase(void)
TCase *invite_precondition_tcase(int threading)
{
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_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) */
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));
@ -1605,7 +1620,7 @@ START_TEST(call_2_6_3)
fail_unless(s2_check_event(nua_i_ack, 200));
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());
fail_unless(s2_check_event(nua_r_set_params, 200));
@ -1673,11 +1688,11 @@ START_TEST(call_2_6_4)
}
END_TEST
TCase *reinvite_tcase(void)
TCase *reinvite_tcase(int threading)
{
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_2);
@ -1752,7 +1767,7 @@ START_TEST(call_3_1_2)
if (i == 3)
break;
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));
@ -1822,7 +1837,7 @@ START_TEST(call_3_2_2)
if (i == 3)
break;
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));
@ -1869,10 +1884,10 @@ START_TEST(call_3_2_3)
END_TEST
TCase *invite_error_tcase(void)
TCase *invite_error_tcase(int threading)
{
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_2);
@ -2344,7 +2359,7 @@ START_TEST(bye_4_2_1)
SIPTAG_REQUIRE_STR("timer"),
TAG_END());
s2_fast_forward(300, s2->root);;
s2_fast_forward(300, s2->root);
invite_timer_round(nh, "300", NULL);
nua_bye(nh, TAG_END());
@ -2357,7 +2372,7 @@ START_TEST(bye_4_2_1)
s2_free_message(bye);
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());
bye = s2_wait_for_request(SIP_METHOD_BYE);
@ -2388,10 +2403,10 @@ START_TEST(bye_4_2_2)
SIPTAG_REQUIRE_STR("timer"),
TAG_END());
s2_fast_forward(300, s2->root);;
s2_fast_forward(300, s2->root);
invite_timer_round(nh, "300", NULL);
s2_fast_forward(140, s2->root);;
s2_fast_forward(140, s2->root);
nua_bye(nh, TAG_END());
@ -2403,7 +2418,7 @@ START_TEST(bye_4_2_2)
s2_free_message(bye);
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());
bye = s2_wait_for_request(SIP_METHOD_BYE);
@ -2418,10 +2433,10 @@ START_TEST(bye_4_2_2)
}
END_TEST
TCase *termination_tcase(void)
TCase *termination_tcase(int threading)
{
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_2);
@ -2928,11 +2943,11 @@ START_TEST(destroy_4_4_3_2)
}
END_TEST
TCase *destroy_tcase(void)
static TCase *destroy_tcase(int threading)
{
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);
@ -3056,7 +3071,7 @@ START_TEST(options_5_1_2)
END_TEST
#endif
TCase *options_tcase(void)
TCase *options_tcase(int threading)
{
TCase *tc = tcase_create("5 - OPTIONS, etc");
@ -3068,7 +3083,6 @@ TCase *options_tcase(void)
return tc;
}
static void options_setup(void)
{
s2_nua_thread = 1;
@ -3096,13 +3110,14 @@ START_TEST(empty)
s2_setup_logs(0);
tport_set_params(s2->master, TPTAG_LOG(0), TAG_END());
}
END_TEST
TCase *empty_tcase(void)
TCase *empty_tcase(int threading)
{
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);
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, cancel_tcase());
suite_add_tcase(suite, session_timer_tcase());
suite_add_tcase(suite, invite_100rel_tcase());
suite_add_tcase(suite, invite_precondition_tcase());
suite_add_tcase(suite, reinvite_tcase());
suite_add_tcase(suite, invite_error_tcase());
suite_add_tcase(suite, termination_tcase());
suite_add_tcase(suite, destroy_tcase());
suite_add_tcase(suite, options_tcase());
suite_add_tcase(suite, invite_tcase(threading));
suite_add_tcase(suite, cancel_tcase(threading));
suite_add_tcase(suite, session_timer_tcase(threading));
suite_add_tcase(suite, invite_100rel_tcase(threading));
suite_add_tcase(suite, invite_precondition_tcase(threading));
suite_add_tcase(suite, reinvite_tcase(threading));
suite_add_tcase(suite, invite_error_tcase(threading));
suite_add_tcase(suite, termination_tcase(threading));
suite_add_tcase(suite, destroy_tcase(threading));
suite_add_tcase(suite, options_tcase(threading));
if (0) /* Template */
suite_add_tcase(suite, empty_tcase());
suite_add_tcase(suite, empty_tcase(threading));
}

View File

@ -95,6 +95,22 @@ void s2_dialog_teardown(void)
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[] =
"<?xml version='1.0' encoding='UTF-8'?>\n"
@ -290,7 +306,7 @@ START_TEST(subscribe_6_1_2)
s2_free_event(notify);
/* Wait for refresh */
s2_fast_forward(600, s2->root);;
s2_fast_forward(600, s2->root);
subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE);
s2_respond_to(subscribe, dialog, SIP_200_OK,
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);
s2_fast_forward(5, s2->root);;
s2_fast_forward(5, s2->root);
/* nua re-establishes the subscription */
notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END());
s2_free_event(notify);
@ -391,10 +407,14 @@ START_TEST(subscribe_6_1_4)
}
END_TEST
TCase *subscribe_tcase(void)
TCase *subscribe_tcase(int threading)
{
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_2);
@ -460,7 +480,7 @@ START_TEST(fetch_6_2_3)
fail_unless(s2_check_substate(event, nua_substate_embryonic));
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);
fail_unless(s2_check_substate(event, nua_substate_terminated));
@ -471,10 +491,14 @@ START_TEST(fetch_6_2_3)
END_TEST
TCase *fetch_tcase(void)
TCase *fetch_tcase(int threading)
{
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_2);
@ -500,10 +524,14 @@ START_TEST(empty)
END_TEST
static TCase *empty_tcase(void)
static TCase *empty_tcase(int threading)
{
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);
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, fetch_tcase());
suite_add_tcase(suite, subscribe_tcase(threading));
suite_add_tcase(suite, fetch_tcase(threading));
if (0) /* Template */
suite_add_tcase(suite, empty_tcase());
suite_add_tcase(suite, empty_tcase(threading));
}