Commit 4855be3d authored by Ghislain MARY's avatar Ghislain MARY

Add "Forked outgoing early-media video call with inactive audio" test.

parent a3b8cf6b
......@@ -394,10 +394,101 @@ static void early_media_video_with_inactive_audio(void) {
linphone_core_manager_destroy(pauline);
}
static void forked_outgoing_early_media_video_call_with_inactive_audio_test(void) {
LinphoneCoreManager *pauline = linphone_core_manager_new("pauline_tcp_rc");
LinphoneCoreManager *marie1 = linphone_core_manager_new("marie_early_rc");
LinphoneCoreManager *marie2 = linphone_core_manager_new("marie_early_rc");
MSList *lcs = NULL;
LinphoneCallParams *pauline_params;
LinphoneCallParams *marie1_params;
LinphoneCallParams *marie2_params;
LinphoneVideoPolicy pol;
LinphoneCall *marie1_call;
LinphoneCall *marie2_call;
LinphoneCall *pauline_call;
LinphoneInfoMessage *info;
int dummy = 0;
pol.automatically_accept = 1;
pol.automatically_initiate = 1;
linphone_core_enable_video(pauline->lc, TRUE, TRUE);
linphone_core_enable_video(marie1->lc, TRUE, TRUE);
linphone_core_set_video_policy(marie1->lc, &pol);
linphone_core_enable_video(marie2->lc, TRUE, TRUE);
linphone_core_set_video_policy(marie2->lc, &pol);
linphone_core_set_audio_port_range(marie2->lc, 40200, 40300);
linphone_core_set_video_port_range(marie2->lc, 40400, 40500);
lcs = ms_list_append(lcs,marie1->lc);
lcs = ms_list_append(lcs,marie2->lc);
lcs = ms_list_append(lcs,pauline->lc);
pauline_params = linphone_core_create_default_call_parameters(pauline->lc);
linphone_call_params_enable_early_media_sending(pauline_params, TRUE);
linphone_call_params_enable_video(pauline_params, TRUE);
marie1_params = configure_for_early_media_video_receiving_with_inactive_audio(marie1);
marie2_params = configure_for_early_media_video_receiving_with_inactive_audio(marie2);
linphone_core_invite_address_with_params(pauline->lc, marie1->identity, pauline_params);
linphone_call_params_destroy(pauline_params);
CU_ASSERT_TRUE(wait_for_list(lcs, &marie1->stat.number_of_LinphoneCallIncomingEarlyMedia, 1, 3000));
CU_ASSERT_TRUE(wait_for_list(lcs, &marie2->stat.number_of_LinphoneCallIncomingEarlyMedia, 1, 3000));
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallOutgoingEarlyMedia, 1, 3000));
pauline_call = linphone_core_get_current_call(pauline->lc);
marie1_call = linphone_core_get_current_call(marie1->lc);
marie2_call = linphone_core_get_current_call(marie2->lc);
CU_ASSERT_PTR_NOT_NULL(pauline_call);
CU_ASSERT_PTR_NOT_NULL(marie1_call);
CU_ASSERT_PTR_NOT_NULL(marie2_call);
if (pauline_call && marie1_call && marie2_call) {
/* wait a bit that streams are established */
wait_for_list(lcs, &dummy, 1, 6000);
CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth == 0);
CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth == 0);
CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth == 0);
linphone_call_params_set_audio_direction(marie1_params, LinphoneMediaDirectionSendRecv);
linphone_core_accept_call_with_params(marie1->lc, linphone_core_get_current_call(marie1->lc), marie1_params);
CU_ASSERT_TRUE(wait_for_list(lcs, &marie1->stat.number_of_LinphoneCallStreamsRunning, 1, 3000));
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallStreamsRunning, 1, 3000));
/* marie2 should get her call terminated */
CU_ASSERT_TRUE(wait_for_list(lcs, &marie2->stat.number_of_LinphoneCallEnd, 1, 1000));
/*wait a bit that streams are established*/
wait_for_list(lcs, &dummy, 1, 3000);
CU_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth > 71);
CU_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth > 71);
CU_ASSERT_TRUE(linphone_call_get_video_stats(pauline_call)->download_bandwidth > 0);
CU_ASSERT_TRUE(linphone_call_get_video_stats(marie1_call)->download_bandwidth > 0);
/* send an INFO in reverse side to check that dialogs are properly established */
info = linphone_core_create_info_message(marie1->lc);
linphone_call_send_info_message(marie1_call, info);
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_inforeceived, 1, 3000));
}
linphone_core_terminate_all_calls(pauline->lc);
CU_ASSERT_TRUE(wait_for_list(lcs, &pauline->stat.number_of_LinphoneCallEnd, 1, 3000));
CU_ASSERT_TRUE(wait_for_list(lcs, &marie1->stat.number_of_LinphoneCallEnd, 1, 3000));
linphone_call_params_destroy(marie1_params);
linphone_call_params_destroy(marie2_params);
ms_list_free(lcs);
linphone_core_manager_destroy(marie1);
linphone_core_manager_destroy(marie2);
linphone_core_manager_destroy(pauline);
}
test_t video_tests[] = {
{ "Early-media video during video call", early_media_video_during_video_call_test },
{ "Two incoming early-media video calls", two_incoming_early_media_video_calls_test },
{ "Early-media video with inactive audio", early_media_video_with_inactive_audio }
{ "Early-media video with inactive audio", early_media_video_with_inactive_audio },
{ "Forked outgoing early-media video call with inactive audio", forked_outgoing_early_media_video_call_with_inactive_audio_test }
};
test_suite_t video_test_suite = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment