Commit 14289196 authored by Ghislain MARY's avatar Ghislain MARY

Add possibility to assiocate tags with tests and to run the only the tests...

Add possibility to assiocate tags with tests and to run the only the tests corresponding with a specific tag with the --tag option.
parent a65aaa86
This diff is collapsed.
......@@ -80,8 +80,9 @@ static unsigned char curses = 0;
char* xml_file = "CUnitAutomated-Results.xml";
int xml_enabled = 0;
char * suite_name;
char * test_name;
char * suite_name = NULL;
char * test_name = NULL;
char * tag_name = NULL;
static long max_vm_kb = 0;
void (*tester_printf_va)(int level, const char *format, va_list args);
......@@ -93,14 +94,38 @@ void bc_tester_printf(int level, const char *format, ...) {
va_end (args);
}
int bc_tester_run_suite(test_suite_t *suite) {
int bc_tester_run_suite(test_suite_t *suite, const char *tag_name) {
int i;
CU_pSuite pSuite = CU_add_suite(suite->name, suite->before_all, suite->after_all);
for (i = 0; i < suite->nb_tests; i++) {
if (NULL == CU_add_test(pSuite, suite->tests[i].name, suite->tests[i].func)) {
return CU_get_error();
CU_pSuite pSuite;
if (tag_name != NULL) {
int j;
int nb_tests_for_tag = 0;
for (i = 0; i < suite->nb_tests; i++) {
for (j = 0; j < (sizeof(suite->tests[i].tags) / sizeof(suite->tests[i].tags[0])); j++) {
if ((suite->tests[i].tags[j] != NULL) && (strcasecmp(tag_name, suite->tests[i].tags[j]) == 0)) {
nb_tests_for_tag++;
}
}
}
if (nb_tests_for_tag > 0) {
pSuite = CU_add_suite(suite->name, suite->before_all, suite->after_all);
for (i = 0; i < suite->nb_tests; i++) {
for (j = 0; j < (sizeof(suite->tests[i].tags) / sizeof(suite->tests[i].tags[0])); j++) {
if ((suite->tests[i].tags[j] != NULL) && (strcasecmp(tag_name, suite->tests[i].tags[j]) == 0)) {
if (NULL == CU_add_test(pSuite, suite->tests[i].name, suite->tests[i].func)) {
return CU_get_error();
}
}
}
}
}
} else {
pSuite = CU_add_suite(suite->name, suite->before_all, suite->after_all);
for (i = 0; i < suite->nb_tests; i++) {
if (NULL == CU_add_test(pSuite, suite->tests[i].name, suite->tests[i].func)) {
return CU_get_error();
}
}
}
......@@ -251,7 +276,7 @@ static void test_complete_message_handler(const CU_pTest pTest, const CU_pSuite
}
#endif
int bc_tester_run_tests(const char *suite_name, const char *test_name) {
int bc_tester_run_tests(const char *suite_name, const char *test_name, const char *tag_name) {
int i;
/* initialize the CUnit test registry */
......@@ -259,7 +284,7 @@ int bc_tester_run_tests(const char *suite_name, const char *test_name) {
return CU_get_error();
for (i = 0; i < nb_test_suites; i++) {
bc_tester_run_suite(test_suite[i]);
bc_tester_run_suite(test_suite[i], tag_name);
}
#ifdef HAVE_CU_GET_SUITE
CU_set_suite_start_handler(suite_start_message_handler);
......@@ -284,13 +309,21 @@ int bc_tester_run_tests(const char *suite_name, const char *test_name) {
CU_pSuite suite;
suite=CU_get_suite(suite_name);
if (!suite) {
bc_tester_printf(bc_printf_verbosity_error, "Could not find suite '%s'. Available suites are:", suite_name);
if (tag_name != NULL) {
bc_tester_printf(bc_printf_verbosity_error, "Could not find suite '%s' or this suite has no tests with tag '%s'. Available suites are:", suite_name, tag_name);
} else {
bc_tester_printf(bc_printf_verbosity_error, "Could not find suite '%s'. Available suites are:", suite_name);
}
bc_tester_list_suites();
return -1;
} else if (test_name) {
CU_pTest test=CU_get_test_by_name(test_name, suite);
if (!test) {
bc_tester_printf(bc_printf_verbosity_error, "Could not find test '%s' in suite '%s'. Available tests are:", test_name, suite_name);
if (tag_name != NULL) {
bc_tester_printf(bc_printf_verbosity_error, "Could not find test '%s' in suite '%s' or this test is not tagged '%s'. Available tests are:", test_name, suite_name, tag_name);
} else {
bc_tester_printf(bc_printf_verbosity_error, "Could not find test '%s' in suite '%s'. Available tests are:", test_name, suite_name);
}
// do not use suite_name here, since this method is case sensitive
bc_tester_list_tests(suite->pName);
return -2;
......@@ -464,9 +497,12 @@ int bc_tester_parse_args(int argc, char **argv, int argid)
} else if (strcmp(argv[i],"--test")==0){
CHECK_ARG("--test", ++i, argc);
test_name=argv[i];
}else if (strcmp(argv[i],"--suite")==0){
} else if (strcmp(argv[i],"--suite")==0){
CHECK_ARG("--suite", ++i, argc);
suite_name=argv[i];
} else if (strcmp(argv[i], "--tag") == 0) {
CHECK_ARG("--tag", ++i, argc);
tag_name = argv[i];
} else if (strcmp(argv[i],"--list-suites")==0){
bc_tester_list_suites();
return 0;
......@@ -518,7 +554,7 @@ int bc_tester_start(const char* prog_name) {
free(xml_tmp_file);
}
ret = bc_tester_run_tests(suite_name, test_name);
ret = bc_tester_run_tests(suite_name, test_name, tag_name);
return ret;
}
......
......@@ -46,8 +46,16 @@ typedef int (*pre_post_function_t)(void);
typedef struct {
const char *name;
test_function_t func;
const char *tags[2];
} test_t;
#define TEST_NO_TAG(name, func) \
{ name, func, { NULL, NULL } }
#define TEST_ONE_TAG(name, func, tag) \
{ name, func, { tag, NULL } }
#define TEST_TWO_TAGS(name, func, tag1, tag2) \
{ name, func, { tag1, tag2 } }
typedef struct {
const char *name; /*suite name*/
pre_post_function_t
......@@ -89,8 +97,8 @@ void bc_tester_list_suites(void);
void bc_tester_list_tests(const char *suite_name);
const char * bc_tester_suite_name(int suite_index);
const char * bc_tester_test_name(const char *suite_name, int test_index);
int bc_tester_run_suite(test_suite_t *suite);
int bc_tester_run_tests(const char *suite_name, const char *test_name);
int bc_tester_run_suite(test_suite_t *suite, const char *tag_name);
int bc_tester_run_tests(const char *suite_name, const char *test_name, const char *tag_name);
int bc_tester_suite_index(const char *suite_name);
const char * bc_tester_current_suite_name(void);
const char * bc_tester_current_test_name(void);
......
......@@ -343,12 +343,12 @@ static void call_invite_200ok_without_contact_header(void) {
static test_t tests[] = {
{ "SIP UPDATE within incoming reinvite without sdp", sip_update_within_icoming_reinvite_with_no_sdp },
{ "Call with audio mline before video in sdp", call_with_audio_mline_before_video_in_sdp },
{ "Call with video mline before audio in sdp", call_with_video_mline_before_audio_in_sdp },
{ "Call with multiple audio mline in sdp", call_with_multiple_audio_mline_in_sdp },
{ "Call with multiple video mline in sdp", call_with_multiple_video_mline_in_sdp },
{ "Call invite 200ok without contact header", call_invite_200ok_without_contact_header }
TEST_NO_TAG("SIP UPDATE within incoming reinvite without sdp", sip_update_within_icoming_reinvite_with_no_sdp),
TEST_NO_TAG("Call with audio mline before video in sdp", call_with_audio_mline_before_video_in_sdp),
TEST_NO_TAG("Call with video mline before audio in sdp", call_with_video_mline_before_audio_in_sdp),
TEST_NO_TAG("Call with multiple audio mline in sdp", call_with_multiple_audio_mline_in_sdp),
TEST_NO_TAG("Call with multiple video mline in sdp", call_with_multiple_video_mline_in_sdp),
TEST_NO_TAG("Call invite 200ok without contact header", call_invite_200ok_without_contact_header)
};
test_suite_t complex_sip_call_test_suite = {
......
......@@ -163,13 +163,13 @@ static void send_dtmf_rfc2833_opus(void) {
}
test_t dtmf_tests[] = {
{ "Send DTMF using RFC2833",send_dtmf_rfc2833},
{ "Send DTMF using SIP INFO",send_dtmf_sip_info},
{ "Send DTMF sequence using RFC2833",send_dtmfs_sequence_rfc2833},
{ "Send DTMF sequence using SIP INFO",send_dtmfs_sequence_sip_info},
{ "DTMF sequence not sent if invalid call",send_dtmfs_sequence_not_ready},
{ "DTMF sequence canceled if call state changed",send_dtmfs_sequence_call_state_changed},
{ "Send DTMF using RFC2833 using Opus",send_dtmf_rfc2833_opus},
TEST_NO_TAG("Send DTMF using RFC2833",send_dtmf_rfc2833),
TEST_NO_TAG("Send DTMF using SIP INFO",send_dtmf_sip_info),
TEST_NO_TAG("Send DTMF sequence using RFC2833",send_dtmfs_sequence_rfc2833),
TEST_NO_TAG("Send DTMF sequence using SIP INFO",send_dtmfs_sequence_sip_info),
TEST_NO_TAG("DTMF sequence not sent if invalid call",send_dtmfs_sequence_not_ready),
TEST_NO_TAG("DTMF sequence canceled if call state changed",send_dtmfs_sequence_call_state_changed),
TEST_NO_TAG("Send DTMF using RFC2833 using Opus",send_dtmf_rfc2833_opus)
};
test_suite_t dtmf_test_suite = {"DTMF", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -359,15 +359,15 @@ static void publish_without_expires(void){
}
test_t event_tests[] = {
{ "Subscribe declined" , subscribe_test_declined },
{ "Subscribe terminated by subscriber", subscribe_test_terminated_by_subscriber },
{ "Subscribe with custom headers", subscribe_test_with_custom_header },
{ "Subscribe refreshed", subscribe_test_refreshed },
{ "Subscribe manually refreshed", subscribe_test_manually_refreshed },
{ "Subscribe terminated by notifier", subscribe_test_terminated_by_notifier },
{ "Publish", publish_test },
{ "Publish without expires", publish_without_expires },
{ "Publish without automatic refresh",publish_no_auto_test }
TEST_NO_TAG("Subscribe declined", subscribe_test_declined),
TEST_NO_TAG("Subscribe terminated by subscriber", subscribe_test_terminated_by_subscriber),
TEST_NO_TAG("Subscribe with custom headers", subscribe_test_with_custom_header),
TEST_NO_TAG("Subscribe refreshed", subscribe_test_refreshed),
TEST_NO_TAG("Subscribe manually refreshed", subscribe_test_manually_refreshed),
TEST_NO_TAG("Subscribe terminated by notifier", subscribe_test_terminated_by_notifier),
TEST_NO_TAG("Publish", publish_test),
TEST_NO_TAG("Publish without expires", publish_without_expires),
TEST_NO_TAG("Publish without automatic refresh",publish_no_auto_test)
};
test_suite_t event_test_suite = {"Event", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -1082,30 +1082,30 @@ static void test_list_subscribe (void) {
test_t flexisip_tests[] = {
{ "Subscribe forking", subscribe_forking },
{ "Message forking", message_forking },
{ "Message forking with unreachable recipients", message_forking_with_unreachable_recipients },
{ "Message forking with all recipients unreachable", message_forking_with_all_recipients_unreachable},
{ "Call forking", call_forking },
{ "Call forking cancelled", call_forking_cancelled },
{ "Call forking declined globaly", call_forking_declined_globaly },
{ "Call forking declined localy", call_forking_declined_localy },
{ "Call forking with urgent reply", call_forking_with_urgent_reply },
{ "Call forking with push notification (single)", call_forking_with_push_notification_single },
{ "Call forking with push notification (multiple)", call_forking_with_push_notification_multiple },
{ "Call forking not responded", call_forking_not_responded },
{ "Early-media call forking", early_media_call_forking },
{ "Call with sips", call_with_sips },
{ "Call with sips not achievable", call_with_sips_not_achievable },
{ "Call with ipv6", call_with_ipv6 },
{ "Subscribe Notify with sipp publisher", test_subscribe_notify_with_sipp_publisher },
{ "Subscribe Notify with sipp double publish", test_subscribe_notify_with_sipp_publisher_double_publish },
{ "Publish/unpublish", test_publish_unpublish },
{ "List subscribe", test_list_subscribe },
{ "File transfer message rcs to external body client", file_transfer_message_rcs_to_external_body_client },
{ "File transfer message external body to rcs client", file_transfer_message_external_body_to_rcs_client },
{ "File transfer message external body to external body client", file_transfer_message_external_body_to_external_body_client },
{ "DoS module trigger by sending a lot of chat messages", dos_module_trigger }
TEST_NO_TAG("Subscribe forking", subscribe_forking),
TEST_NO_TAG("Message forking", message_forking),
TEST_NO_TAG("Message forking with unreachable recipients", message_forking_with_unreachable_recipients),
TEST_NO_TAG("Message forking with all recipients unreachable", message_forking_with_all_recipients_unreachable),
TEST_NO_TAG("Call forking", call_forking),
TEST_NO_TAG("Call forking cancelled", call_forking_cancelled),
TEST_NO_TAG("Call forking declined globaly", call_forking_declined_globaly),
TEST_NO_TAG("Call forking declined localy", call_forking_declined_localy),
TEST_NO_TAG("Call forking with urgent reply", call_forking_with_urgent_reply),
TEST_NO_TAG("Call forking with push notification (single)", call_forking_with_push_notification_single),
TEST_NO_TAG("Call forking with push notification (multiple)", call_forking_with_push_notification_multiple),
TEST_NO_TAG("Call forking not responded", call_forking_not_responded),
TEST_NO_TAG("Early-media call forking", early_media_call_forking),
TEST_NO_TAG("Call with sips", call_with_sips),
TEST_NO_TAG("Call with sips not achievable", call_with_sips_not_achievable),
TEST_NO_TAG("Call with ipv6", call_with_ipv6),
TEST_NO_TAG("Subscribe Notify with sipp publisher", test_subscribe_notify_with_sipp_publisher),
TEST_NO_TAG("Subscribe Notify with sipp double publish", test_subscribe_notify_with_sipp_publisher_double_publish),
TEST_NO_TAG("Publish/unpublish", test_publish_unpublish),
TEST_NO_TAG("List subscribe", test_list_subscribe),
TEST_NO_TAG("File transfer message rcs to external body client", file_transfer_message_rcs_to_external_body_client),
TEST_NO_TAG("File transfer message external body to rcs client", file_transfer_message_external_body_to_rcs_client),
TEST_NO_TAG("File transfer message external body to external body client", file_transfer_message_external_body_to_external_body_client),
TEST_NO_TAG("DoS module trigger by sending a lot of chat messages", dos_module_trigger)
};
test_suite_t flexisip_test_suite = {"Flexisip", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -317,11 +317,11 @@ static void upload_collected_traces(void) {
}
test_t log_collection_tests[] = {
{ "No file when disabled", collect_files_disabled},
{ "Collect files filled when enabled", collect_files_filled},
{ "Logs collected into small file", collect_files_small_size},
{ "Logs collected when decreasing max size", collect_files_changing_size},
{ "Upload collected traces", upload_collected_traces}
TEST_NO_TAG("No file when disabled", collect_files_disabled),
TEST_NO_TAG("Collect files filled when enabled", collect_files_filled),
TEST_NO_TAG("Logs collected into small file", collect_files_small_size),
TEST_NO_TAG("Logs collected when decreasing max size", collect_files_changing_size),
TEST_NO_TAG("Upload collected traces", upload_collected_traces)
};
test_suite_t log_collection_test_suite = {"LogCollection", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -1705,54 +1705,54 @@ void file_transfer_with_http_proxy(void) {
}
test_t message_tests[] = {
{"Text message", text_message},
{"Text message within call dialog", text_message_within_call_dialog},
{"Text message with credentials from auth callback", text_message_with_credential_from_auth_callback},
{"Text message with privacy", text_message_with_privacy},
{"Text message compatibility mode", text_message_compatibility_mode},
{"Text message with ack", text_message_with_ack},
{"Text message with send error", text_message_with_send_error},
{"Text message with external body", text_message_with_external_body},
{"Transfer message", transfer_message},
{"Transfer message with http proxy", file_transfer_with_http_proxy},
{"Transfer message with upload io error", transfer_message_with_upload_io_error},
{"Transfer message with download io error", transfer_message_with_download_io_error},
{"Transfer message upload cancelled", transfer_message_upload_cancelled},
{"Transfer message download cancelled", transfer_message_download_cancelled},
{"Transfer message using external body url", file_transfer_using_external_body_url},
{"Transfer 2 messages simultaneously", file_transfer_2_messages_simultaneously},
{"Text message denied", text_message_denied},
{"Info message", info_message},
{"Info message with body", info_message_with_body},
{"IsComposing notification", is_composing_notification},
TEST_NO_TAG("Text message", text_message),
TEST_NO_TAG("Text message within call dialog", text_message_within_call_dialog),
TEST_NO_TAG("Text message with credentials from auth callback", text_message_with_credential_from_auth_callback),
TEST_NO_TAG("Text message with privacy", text_message_with_privacy),
TEST_NO_TAG("Text message compatibility mode", text_message_compatibility_mode),
TEST_NO_TAG("Text message with ack", text_message_with_ack),
TEST_NO_TAG("Text message with send error", text_message_with_send_error),
TEST_NO_TAG("Text message with external body", text_message_with_external_body),
TEST_NO_TAG("Transfer message", transfer_message),
TEST_NO_TAG("Transfer message with http proxy", file_transfer_with_http_proxy),
TEST_NO_TAG("Transfer message with upload io error", transfer_message_with_upload_io_error),
TEST_NO_TAG("Transfer message with download io error", transfer_message_with_download_io_error),
TEST_NO_TAG("Transfer message upload cancelled", transfer_message_upload_cancelled),
TEST_NO_TAG("Transfer message download cancelled", transfer_message_download_cancelled),
TEST_NO_TAG("Transfer message using external body url", file_transfer_using_external_body_url),
TEST_NO_TAG("Transfer 2 messages simultaneously", file_transfer_2_messages_simultaneously),
TEST_NO_TAG("Text message denied", text_message_denied),
TEST_NO_TAG("Info message", info_message),
TEST_NO_TAG("Info message with body", info_message_with_body),
TEST_NO_TAG("IsComposing notification", is_composing_notification),
#ifdef HAVE_LIME
{"Lime text message", lime_text_message},
{"Lime text message to non lime", lime_text_message_to_non_lime},
{"Lime transfer message", lime_transfer_message},
{"Lime transfer message without encryption", lime_transfer_message_without_encryption},
{"Lime unitary", lime_unit},
TEST_NO_TAG("Lime text message", lime_text_message),
TEST_NO_TAG("Lime text message to non lime", lime_text_message_to_non_lime),
TEST_NO_TAG("Lime transfer message", lime_transfer_message),
TEST_NO_TAG("Lime transfer message without encryption", lime_transfer_message_without_encryption),
TEST_NO_TAG("Lime unitary", lime_unit),
#endif /* HAVE_LIME */
#ifdef MSG_STORAGE_ENABLED
{"Database migration", database_migration},
{"History range", history_range},
{"History count", history_count},
TEST_NO_TAG("Database migration", database_migration),
TEST_NO_TAG("History range", history_range),
TEST_NO_TAG("History count", history_count),
#endif
{"Text status after destroying chat room", text_status_after_destroying_chat_room},
{"Transfer not sent if invalid url", file_transfer_not_sent_if_invalid_url},
{"Transfer not sent if host not found", file_transfer_not_sent_if_host_not_found},
{"Transfer not sent if url moved permanently", file_transfer_not_sent_if_url_moved_permanently},
{"Transfer io error after destroying chatroom", file_transfer_io_error_after_destroying_chatroom},
{"Real Time Text message", real_time_text_message},
{"Real Time Text conversation", real_time_text_conversation},
{"Real Time Text without audio", real_time_text_without_audio},
{"Real Time Text with srtp", real_time_text_srtp},
{"Real Time Text with ice", real_time_text_ice},
{"Real Time Text message compatibility crlf", real_time_text_message_compat_crlf},
{"Real Time Text message compatibility lf", real_time_text_message_compat_lf},
{"Real Time Text message with accented characters", real_time_text_message_accented_chars},
{"Real Time Text offer answer with different payload numbers (sender side)", real_time_text_message_different_text_codecs_payload_numbers_sender_side},
{"Real Time Text offer answer with different payload numbers (receiver side)", real_time_text_message_different_text_codecs_payload_numbers_receiver_side},
{"Real Time Text copy paste", real_time_text_copy_paste},
TEST_NO_TAG("Text status after destroying chat room", text_status_after_destroying_chat_room),
TEST_NO_TAG("Transfer not sent if invalid url", file_transfer_not_sent_if_invalid_url),
TEST_NO_TAG("Transfer not sent if host not found", file_transfer_not_sent_if_host_not_found),
TEST_NO_TAG("Transfer not sent if url moved permanently", file_transfer_not_sent_if_url_moved_permanently),
TEST_NO_TAG("Transfer io error after destroying chatroom", file_transfer_io_error_after_destroying_chatroom),
TEST_NO_TAG("Real Time Text message", real_time_text_message),
TEST_NO_TAG("Real Time Text conversation", real_time_text_conversation),
TEST_NO_TAG("Real Time Text without audio", real_time_text_without_audio),
TEST_NO_TAG("Real Time Text with srtp", real_time_text_srtp),
TEST_NO_TAG("Real Time Text with ice", real_time_text_ice),
TEST_NO_TAG("Real Time Text message compatibility crlf", real_time_text_message_compat_crlf),
TEST_NO_TAG("Real Time Text message compatibility lf", real_time_text_message_compat_lf),
TEST_NO_TAG("Real Time Text message with accented characters", real_time_text_message_accented_chars),
TEST_NO_TAG("Real Time Text offer answer with different payload numbers (sender side)", real_time_text_message_different_text_codecs_payload_numbers_sender_side),
TEST_NO_TAG("Real Time Text offer answer with different payload numbers (receiver side)", real_time_text_message_different_text_codecs_payload_numbers_receiver_side),
TEST_NO_TAG("Real Time Text copy paste", real_time_text_copy_paste),
};
test_suite_t message_test_suite = {
......
......@@ -825,22 +825,22 @@ void eject_from_3_participants_remote_conference(void) {
}
test_t multi_call_tests[] = {
{ "Call waiting indication", call_waiting_indication },
{ "Call waiting indication with privacy", call_waiting_indication_with_privacy },
{ "Incoming call accepted when outgoing call in progress", incoming_call_accepted_when_outgoing_call_in_progress},
{ "Incoming call accepted when outgoing call in outgoing ringing", incoming_call_accepted_when_outgoing_call_in_outgoing_ringing},
{ "Incoming call accepted when outgoing call in outgoing ringing early media", incoming_call_accepted_when_outgoing_call_in_outgoing_ringing_early_media},
{ "Simple conference", simple_conference },
{ "Simple conference with ICE", simple_conference_with_ice},
{ "Simple ZRTP conference with ICE",simple_zrtp_conference_with_ice},
{ "Eject from 3 participants conference", eject_from_3_participants_local_conference },
{ "Eject from 4 participants conference", eject_from_4_participants_conference },
{ "Simple call transfer", simple_call_transfer },
{ "Unattended call transfer", unattended_call_transfer },
{ "Unattended call transfer with error", unattended_call_transfer_with_error },
{ "Call transfer existing call outgoing call", call_transfer_existing_call_outgoing_call },
{ "Simple remote conference", simple_remote_conference },
{ "Eject from 3 participants in remote conference", eject_from_3_participants_remote_conference }
TEST_NO_TAG("Call waiting indication", call_waiting_indication),
TEST_NO_TAG("Call waiting indication with privacy", call_waiting_indication_with_privacy),
TEST_NO_TAG("Incoming call accepted when outgoing call in progress", incoming_call_accepted_when_outgoing_call_in_progress),
TEST_NO_TAG("Incoming call accepted when outgoing call in outgoing ringing", incoming_call_accepted_when_outgoing_call_in_outgoing_ringing),
TEST_NO_TAG("Incoming call accepted when outgoing call in outgoing ringing early media", incoming_call_accepted_when_outgoing_call_in_outgoing_ringing_early_media),
TEST_NO_TAG("Simple conference", simple_conference),
TEST_ONE_TAG("Simple conference with ICE", simple_conference_with_ice, "ICE"),
TEST_ONE_TAG("Simple ZRTP conference with ICE", simple_zrtp_conference_with_ice, "ICE"),
TEST_NO_TAG("Eject from 3 participants conference", eject_from_3_participants_local_conference),
TEST_NO_TAG("Eject from 4 participants conference", eject_from_4_participants_conference),
TEST_NO_TAG("Simple call transfer", simple_call_transfer),
TEST_NO_TAG("Unattended call transfer", unattended_call_transfer),
TEST_NO_TAG("Unattended call transfer with error", unattended_call_transfer_with_error),
TEST_NO_TAG("Call transfer existing call outgoing call", call_transfer_existing_call_outgoing_call),
TEST_NO_TAG("Simple remote conference", simple_remote_conference),
TEST_NO_TAG("Eject from 3 participants in remote conference", eject_from_3_participants_remote_conference)
};
test_suite_t multi_call_test_suite = {"Multi call", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -244,13 +244,13 @@ static void early_media_with_multicast_video(void) {
#endif
test_t multicast_call_tests[] = {
{ "Multicast audio call",call_multicast},
{ "Multicast call with pause/resume",multicast_audio_with_pause_resume},
{ "Early media multicast audio call",early_media_with_multicast_audio},
{ "Unicast incoming call with multicast activated",unicast_incoming_with_multicast_audio_on},
TEST_NO_TAG("Multicast audio call",call_multicast),
TEST_NO_TAG("Multicast call with pause/resume",multicast_audio_with_pause_resume),
TEST_NO_TAG("Early media multicast audio call",early_media_with_multicast_audio),
TEST_NO_TAG("Unicast incoming call with multicast activated",unicast_incoming_with_multicast_audio_on),
#ifdef VIDEO_ENABLED
{ "Multicast video call",call_multicast_video},
{ "Early media multicast video call",early_media_with_multicast_video},
TEST_NO_TAG("Multicast video call",call_multicast_video),
TEST_NO_TAG("Early media multicast video call",early_media_with_multicast_video),
#endif
};
......
......@@ -489,55 +489,55 @@ end:
#endif
static test_t offeranswer_tests[] = {
{ "Start with no config", start_with_no_config },
{ "Call failed because of codecs", call_failed_because_of_codecs },
{ "Simple call with different codec mappings", simple_call_with_different_codec_mappings},
{ "AVP to AVP call", avp_to_avp_call },
{ "AVP to AVPF call", avp_to_avpf_call },
{ "AVP to SAVP call", avp_to_savp_call },
{ "AVP to SAVPF call", avp_to_savpf_call },
{ "AVPF to AVP call", avpf_to_avp_call },
{ "AVPF to AVPF call", avpf_to_avpf_call },
{ "AVPF to SAVP call", avpf_to_savp_call },
{ "AVPF to SAVPF call", avpf_to_savpf_call },
{ "SAVP to AVP call", savp_to_avp_call },
{ "SAVP to AVPF call", savp_to_avpf_call },
{ "SAVP to SAVP call", savp_to_savp_call },
{ "SAVP to SAVPF call", savp_to_savpf_call },
{ "SAVPF to AVP call", savpf_to_avp_call },
{ "SAVPF to AVPF call", savpf_to_avpf_call },
{ "SAVPF to SAVP call", savpf_to_savp_call },
{ "SAVPF to SAVPF call", savpf_to_savpf_call },
{ "SAVPF/DTLS to SAVPF/DTLS call", savpf_dtls_to_savpf_dtls_call},
{ "SAVPF/DTLS to SAVPF/DTLS encryption mandatory call", savpf_dtls_to_savpf_dtls_encryption_mandatory_call},
{ "SAVPF/DTLS to SAVPF call", savpf_dtls_to_savpf_call},
{ "SAVPF/DTLS to SAVPF encryption mandatory call", savpf_dtls_to_savpf_encryption_mandatory_call},
{ "SAVPF/DTLS to AVPF call", savpf_dtls_to_avpf_call},
TEST_NO_TAG("Start with no config", start_with_no_config),
TEST_NO_TAG("Call failed because of codecs", call_failed_because_of_codecs),
TEST_NO_TAG("Simple call with different codec mappings", simple_call_with_different_codec_mappings),
TEST_NO_TAG("AVP to AVP call", avp_to_avp_call),
TEST_NO_TAG("AVP to AVPF call", avp_to_avpf_call),
TEST_NO_TAG("AVP to SAVP call", avp_to_savp_call),
TEST_NO_TAG("AVP to SAVPF call", avp_to_savpf_call),
TEST_NO_TAG("AVPF to AVP call", avpf_to_avp_call),
TEST_NO_TAG("AVPF to AVPF call", avpf_to_avpf_call),
TEST_NO_TAG("AVPF to SAVP call", avpf_to_savp_call),
TEST_NO_TAG("AVPF to SAVPF call", avpf_to_savpf_call),
TEST_NO_TAG("SAVP to AVP call", savp_to_avp_call),
TEST_NO_TAG("SAVP to AVPF call", savp_to_avpf_call),
TEST_NO_TAG("SAVP to SAVP call", savp_to_savp_call),
TEST_NO_TAG("SAVP to SAVPF call", savp_to_savpf_call),
TEST_NO_TAG("SAVPF to AVP call", savpf_to_avp_call),
TEST_NO_TAG("SAVPF to AVPF call", savpf_to_avpf_call),
TEST_NO_TAG("SAVPF to SAVP call", savpf_to_savp_call),
TEST_NO_TAG("SAVPF to SAVPF call", savpf_to_savpf_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF/DTLS call", savpf_dtls_to_savpf_dtls_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF/DTLS encryption mandatory call", savpf_dtls_to_savpf_dtls_encryption_mandatory_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF call", savpf_dtls_to_savpf_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF encryption mandatory call", savpf_dtls_to_savpf_encryption_mandatory_call),
TEST_NO_TAG("SAVPF/DTLS to AVPF call", savpf_dtls_to_avpf_call),
#ifdef VIDEO_ENABLED
{ "AVP to AVP video call", avp_to_avp_video_call },
{ "AVP to AVPF video call", avp_to_avpf_video_call },
{ "AVP to SAVP video call", avp_to_savp_video_call },
{ "AVP to SAVPF video call", avp_to_savpf_video_call },
{ "AVPF to AVP video call", avpf_to_avp_video_call },
{ "AVPF to AVPF video call", avpf_to_avpf_video_call },
{ "AVPF to SAVP video call", avpf_to_savp_video_call },
{ "AVPF to SAVPF video call", avpf_to_savpf_video_call },
{ "SAVP to AVP video call", savp_to_avp_video_call },
{ "SAVP to AVPF video call", savp_to_avpf_video_call },
{ "SAVP to SAVP video call", savp_to_savp_video_call },
{ "SAVP to SAVPF video call", savp_to_savpf_video_call },
{ "SAVPF to AVP video call", savpf_to_avp_video_call },
{ "SAVPF to AVPF video call", savpf_to_avpf_video_call },
{ "SAVPF to SAVP video call", savpf_to_savp_video_call },
{ "SAVPF to SAVPF video call", savpf_to_savpf_video_call },
{ "SAVPF/DTLS to SAVPF/DTLS video call", savpf_dtls_to_savpf_dtls_video_call},
{ "SAVPF/DTLS to SAVPF/DTLS encryption mandatory video call", savpf_dtls_to_savpf_dtls_encryption_mandatory_video_call},
{ "SAVPF/DTLS to SAVPF video call", savpf_dtls_to_savpf_video_call},
{ "SAVPF/DTLS to SAVPF encryption mandatory video call", savpf_dtls_to_savpf_encryption_mandatory_video_call},
{ "SAVPF/DTLS to AVPF call", savpf_dtls_to_avpf_video_call},
{ "Compatible AVPF features", compatible_avpf_features },
{ "Incompatible AVPF features", incompatible_avpf_features },
TEST_NO_TAG("AVP to AVP video call", avp_to_avp_video_call),
TEST_NO_TAG("AVP to AVPF video call", avp_to_avpf_video_call),
TEST_NO_TAG("AVP to SAVP video call", avp_to_savp_video_call),
TEST_NO_TAG("AVP to SAVPF video call", avp_to_savpf_video_call),
TEST_NO_TAG("AVPF to AVP video call", avpf_to_avp_video_call),
TEST_NO_TAG("AVPF to AVPF video call", avpf_to_avpf_video_call),
TEST_NO_TAG("AVPF to SAVP video call", avpf_to_savp_video_call),
TEST_NO_TAG("AVPF to SAVPF video call", avpf_to_savpf_video_call),
TEST_NO_TAG("SAVP to AVP video call", savp_to_avp_video_call),
TEST_NO_TAG("SAVP to AVPF video call", savp_to_avpf_video_call),
TEST_NO_TAG("SAVP to SAVP video call", savp_to_savp_video_call),
TEST_NO_TAG("SAVP to SAVPF video call", savp_to_savpf_video_call),
TEST_NO_TAG("SAVPF to AVP video call", savpf_to_avp_video_call),
TEST_NO_TAG("SAVPF to AVPF video call", savpf_to_avpf_video_call),
TEST_NO_TAG("SAVPF to SAVP video call", savpf_to_savp_video_call),
TEST_NO_TAG("SAVPF to SAVPF video call", savpf_to_savpf_video_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF/DTLS video call", savpf_dtls_to_savpf_dtls_video_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF/DTLS encryption mandatory video call", savpf_dtls_to_savpf_dtls_encryption_mandatory_video_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF video call", savpf_dtls_to_savpf_video_call),
TEST_NO_TAG("SAVPF/DTLS to SAVPF encryption mandatory video call", savpf_dtls_to_savpf_encryption_mandatory_video_call),
TEST_NO_TAG("SAVPF/DTLS to AVPF call", savpf_dtls_to_avpf_video_call),
TEST_NO_TAG("Compatible AVPF features", compatible_avpf_features),
TEST_NO_TAG("Incompatible AVPF features", incompatible_avpf_features)
#endif
};
......
......@@ -98,9 +98,9 @@ static void sintel_trailer_opus_vp8_test(void) {
}
test_t player_tests[] = {
{ "Sintel trailer opus/h264" , sintel_trailer_opus_h264_test },
{ "Sintel trailer pcmu/h264" , sintel_trailer_pcmu_h264_test },
{ "Sintel trailer opus/VP8" , sintel_trailer_opus_vp8_test }
TEST_NO_TAG("Sintel trailer opus/h264", sintel_trailer_opus_h264_test),
TEST_NO_TAG("Sintel trailer pcmu/h264", sintel_trailer_pcmu_h264_test),
TEST_NO_TAG("Sintel trailer opus/VP8", sintel_trailer_opus_vp8_test)
};
test_suite_t player_test_suite = {"Player", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -774,22 +774,22 @@ static void test_presence_list_subscription_expire(void) {
test_t presence_tests[] = {
{ "Simple Subscribe", simple_subscribe },
{ "Simple Publish", simple_publish },
{ "Simple Publish with expires", publish_with_expires },
/*{ "Call with presence", call_with_presence },*/
{ "Unsubscribe while subscribing", unsubscribe_while_subscribing },
{ "Presence information", presence_information },
{ "App managed presence failure", subscribe_failure_handle_by_app },
{ "Presence SUBSCRIBE forked", subscribe_presence_forked },
{ "Presence SUBSCRIBE expired", subscribe_presence_expired },
TEST_NO_TAG("Simple Subscribe", simple_subscribe),
TEST_NO_TAG("Simple Publish", simple_publish),
TEST_NO_TAG("Simple Publish with expires", publish_with_expires),
/*TEST_NO_TAG("Call with presence", call_with_presence),*/
TEST_NO_TAG("Unsubscribe while subscribing", unsubscribe_while_subscribing),
TEST_NO_TAG("Presence information", presence_information),
TEST_NO_TAG("App managed presence failure", subscribe_failure_handle_by_app),
TEST_NO_TAG("Presence SUBSCRIBE forked", subscribe_presence_forked),
TEST_NO_TAG("Presence SUBSCRIBE expired", subscribe_presence_expired),
#if USE_PRESENCE_SERVER
{ "Subscribe with late publish", test_subscribe_notify_publish },
{ "Forked subscribe with late publish", test_forked_subscribe_notify_publish },
TEST_NO_TAG("Subscribe with late publish", test_subscribe_notify_publish),
TEST_NO_TAG("Forked subscribe with late publish", test_forked_subscribe_notify_publish),
#endif
{ "Presence list", test_presence_list },
{ "Presence list (subscribe before publish)", test_presence_list_subscribe_before_publish },
{ "Presence list, subscription expiration",test_presence_list_subscription_expire}
TEST_NO_TAG("Presence list", test_presence_list),
TEST_NO_TAG("Presence list (subscribe before publish)", test_presence_list_subscribe_before_publish),
TEST_NO_TAG("Presence list, subscription expiration",test_presence_list_subscription_expire)
};
test_suite_t presence_test_suite = {"Presence", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -173,10 +173,10 @@ static void sip_uri_normalization(void) {
}
test_t proxy_config_tests[] = {
{ "Phone normalization without proxy", phone_normalization_without_proxy },
{ "Phone normalization with proxy", phone_normalization_with_proxy },
{ "Phone normalization with dial escape plus", phone_normalization_with_dial_escape_plus },
{ "SIP URI normalization", sip_uri_normalization },
TEST_NO_TAG("Phone normalization without proxy", phone_normalization_without_proxy),
TEST_NO_TAG("Phone normalization with proxy", phone_normalization_with_proxy),
TEST_NO_TAG("Phone normalization with dial escape plus", phone_normalization_with_dial_escape_plus),
TEST_NO_TAG("SIP URI normalization", sip_uri_normalization)
};
test_suite_t proxy_config_test_suite = {"Proxy config", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -424,17 +424,17 @@ static void quality_reporting_interval_report_video_and_rtt(void) {
#endif
test_t quality_reporting_tests[] = {
{ "Not used if no config", quality_reporting_not_used_without_config},
{ "Call term session report not sent if call did not start", quality_reporting_not_sent_if_call_not_started},
{ "Call term session report not sent if low bandwidth", quality_reporting_not_sent_if_low_bandwidth},
{ "Call term session report invalid if missing mandatory fields", quality_reporting_invalid_report},
{ "Call term session report sent if call ended normally", quality_reporting_at_call_termination},
{ "Interval report if interval is configured", quality_reporting_interval_report},
TEST_NO_TAG("Not used if no config", quality_reporting_not_used_without_config),
TEST_NO_TAG("Call term session report not sent if call did not start", quality_reporting_not_sent_if_call_not_started),
TEST_NO_TAG("Call term session report not sent if low bandwidth", quality_reporting_not_sent_if_low_bandwidth),
TEST_NO_TAG("Call term session report invalid if missing mandatory fields", quality_reporting_invalid_report),
TEST_NO_TAG("Call term session report sent if call ended normally", quality_reporting_at_call_termination),
TEST_NO_TAG("Interval report if interval is configured", quality_reporting_interval_report),
#ifdef VIDEO_ENABLED
{ "Interval report if interval is configured with video and realtime text", quality_reporting_interval_report_video_and_rtt},
{ "Session report sent if video stopped during call", quality_reporting_session_report_if_video_stopped},
TEST_NO_TAG("Interval report if interval is configured with video and realtime text"