From 9f68e464edbb8bfe7cfebcdc14eb194c7747e4ad Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 22 May 2015 08:46:38 +0200 Subject: [PATCH] Trying to improve test checking on bandwidth by using max value out of last 3 instead of last value only --- tester/call_tester.c | 35 +++++++++++++++++++++------------- tester/liblinphone_tester.h | 18 +++++++++++++---- tester/multicast_call_tester.c | 8 ++++---- tester/tester.c | 17 +++++++++++++++++ 4 files changed, 57 insertions(+), 21 deletions(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 5fca67c9b..bae3ffaca 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -83,15 +83,24 @@ void call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState void call_stats_updated(LinphoneCore *lc, LinphoneCall *call, const LinphoneCallStats *lstats) { stats* counters = get_stats(lc); counters->number_of_LinphoneCallStatsUpdated++; - if (lstats->updated == LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE) { + if (lstats->updated & LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE) { counters->number_of_rtcp_received++; - } else if (lstats->updated == LINPHONE_CALL_STATS_SENT_RTCP_UPDATE) { + } + if (lstats->updated & LINPHONE_CALL_STATS_SENT_RTCP_UPDATE ) { counters->number_of_rtcp_sent++; } - counters->audio_download_bandwidth = linphone_call_get_audio_stats(call)->download_bandwidth; - counters->audio_upload_bandwidth = linphone_call_get_audio_stats(call)->upload_bandwidth; - counters->video_download_bandwidth = linphone_call_get_video_stats(call)->download_bandwidth; - counters->video_upload_bandwidth = linphone_call_get_video_stats(call)->upload_bandwidth; + if (lstats->updated & LINPHONE_CALL_STATS_PERIODICAL_UPDATE ) { + int tab_size = sizeof (counters->audio_download_bandwidth)/sizeof(int); + int index = (counters->current_bandwidth_index++) % tab_size; + + counters->current_audio_download_bandwidth = counters->audio_download_bandwidth + index; + counters->current_audio_upload_bandwidth = counters->audio_upload_bandwidth +index; + + counters->audio_download_bandwidth[index] = linphone_call_get_audio_stats(call)->download_bandwidth; + counters->audio_upload_bandwidth[index] = linphone_call_get_audio_stats(call)->upload_bandwidth; + counters->video_download_bandwidth[index] = linphone_call_get_video_stats(call)->download_bandwidth; + counters->video_upload_bandwidth[index] = linphone_call_get_video_stats(call)->upload_bandwidth; + } } @@ -3055,7 +3064,7 @@ static void multiple_early_media(void) { /*wait a bit that streams are established*/ wait_for_list(lcs,&dummy,1,6000); - BC_ASSERT_TRUE(linphone_call_get_audio_stats(pauline_call)->download_bandwidth>70); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(pauline),70,int,"%i"); BC_ASSERT_TRUE(linphone_call_get_audio_stats(marie1_call)->download_bandwidth>70); BC_ASSERT_TRUE(linphone_call_get_audio_stats(marie2_call)->download_bandwidth>70); @@ -3126,13 +3135,13 @@ void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call, MSList* BC_ASSERT_TRUE(linphone_call_get_audio_stats(call)->upload_bandwidth<5); case LinphoneMediaDirectionSendOnly: BC_ASSERT_TRUE(linphone_call_get_video_stats(call)->download_bandwidth<5); - if (audio_dir == LinphoneMediaDirectionSendOnly) BC_ASSERT_TRUE(wait_for_list(lcs,&mgr->stat.audio_upload_bandwidth,70,4000)); + if (audio_dir == LinphoneMediaDirectionSendOnly) BC_ASSERT_TRUE(wait_for_list(lcs,mgr->stat.current_audio_upload_bandwidth,70,4000)); break; case LinphoneMediaDirectionRecvOnly: BC_ASSERT_TRUE(linphone_call_get_audio_stats(call)->upload_bandwidth<5); case LinphoneMediaDirectionSendRecv: - BC_ASSERT_TRUE(wait_for_list(lcs,&mgr->stat.audio_download_bandwidth,70,4000)); - if (audio_dir == LinphoneMediaDirectionSendRecv) BC_ASSERT_TRUE(wait_for_list(lcs,&mgr->stat.audio_upload_bandwidth,70,4000)); + BC_ASSERT_TRUE(wait_for_list(lcs,mgr->stat.current_audio_download_bandwidth,70,4000)); + if (audio_dir == LinphoneMediaDirectionSendRecv) BC_ASSERT_TRUE(wait_for_list(lcs,mgr->stat.current_audio_upload_bandwidth,70,4000)); break; } } @@ -3449,8 +3458,8 @@ static void call_with_in_dialog_codec_change_base(bool_t no_sdp) { BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); BC_ASSERT_STRING_EQUAL("PCMA",linphone_payload_type_get_mime_type(linphone_call_params_get_used_audio_codec(linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))))); wait_for_until(marie->lc, pauline->lc, &dummy, 1, 5000); - BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(marie->lc))->download_bandwidth>70); - BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(marie),70,int,"%i"); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(pauline),70,int,"%i"); end_call(marie,pauline); end: @@ -3711,7 +3720,7 @@ static void call_with_paused_no_sdp_on_resume() { BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&pauline->stat.number_of_LinphoneCallStreamsRunning,2)); wait_for_until(marie->lc, pauline->lc, &dummy, 1, 3000); - BC_ASSERT_TRUE(linphone_call_get_audio_stats(call_marie)->download_bandwidth>70); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(marie),70,int,"%i"); BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); end: end_call(marie,pauline); diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 3a3d05277..7de6751ba 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -212,13 +212,18 @@ typedef struct _stats { int number_of_LinphoneCoreLogCollectionUploadStateDelivered; int number_of_LinphoneCoreLogCollectionUploadStateNotDelivered; int number_of_LinphoneCoreLogCollectionUploadStateInProgress; - int audio_download_bandwidth; - int audio_upload_bandwidth; - int video_download_bandwidth; - int video_upload_bandwidth; + int audio_download_bandwidth[3]; + int *current_audio_download_bandwidth; + int audio_upload_bandwidth[3]; + int *current_audio_upload_bandwidth; + + int video_download_bandwidth[3]; + int video_upload_bandwidth[3]; + int current_bandwidth_index; }stats; + typedef struct _LinphoneCoreManager { LinphoneCoreVTable v_table; LinphoneCore* lc; @@ -313,5 +318,10 @@ void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call, MSList* static const int audio_cmp_max_shift=20; +/* + * this function return max value in the last 3 seconds*/ +int linphone_core_manager_get_max_audio_down_bw(const LinphoneCoreManager *mgr); +int linphone_core_manager_get_max_audio_up_bw(const LinphoneCoreManager *mgr); + #endif /* LIBLINPHONE_TESTER_H_ */ diff --git a/tester/multicast_call_tester.c b/tester/multicast_call_tester.c index 5085c944c..eb1c3542a 100644 --- a/tester/multicast_call_tester.c +++ b/tester/multicast_call_tester.c @@ -53,9 +53,9 @@ static void call_multicast_base(bool_t video) { linphone_core_enable_audio_multicast(pauline->lc,TRUE); BC_ASSERT_TRUE(call(pauline,marie)); - wait_for_until(marie->lc, pauline->lc, NULL, 1, 3000); + wait_for_until(marie->lc, pauline->lc, NULL, 1, 4000); if (linphone_core_get_current_call(marie->lc)) { - BC_ASSERT_GREATER(linphone_call_get_audio_stats(linphone_core_get_current_call(marie->lc))->download_bandwidth,70,int,"%d"); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(marie),70,int,"%d"); if (video) { /*check video path*/ linphone_call_set_next_video_frame_decoded_callback(linphone_core_get_current_call(marie->lc),linphone_call_cb,marie->lc); @@ -167,10 +167,10 @@ static void early_media_with_multicast_base(bool_t video) { wait_for_list(lcs, &dummy, 1, 3000); - BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth>70); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(pauline),70,int,"%i"); BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline->lc))->download_bandwidth<90); - BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline2->lc))->download_bandwidth>70); + BC_ASSERT_GREATER(linphone_core_manager_get_max_audio_down_bw(pauline2),70,int,"%i"); BC_ASSERT_TRUE(linphone_call_get_audio_stats(linphone_core_get_current_call(pauline2->lc))->download_bandwidth<90); BC_ASSERT_TRUE(linphone_call_params_audio_multicast_enabled(linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc)))); diff --git a/tester/tester.c b/tester/tester.c index 9479abc2c..33740bd3e 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -416,3 +416,20 @@ void liblinphone_tester_add_suites() { #endif bc_tester_add_suite(&multicast_call_test_suite); } + +static bool_t linphone_core_manager_get_max_audio_bw_base(const int array[],int array_size) { + int i,result=0; + for (i=0; istat.audio_download_bandwidth + , sizeof(mgr->stat.audio_download_bandwidth)/sizeof(int)); +} +int linphone_core_manager_get_max_audio_up_bw(const LinphoneCoreManager *mgr) { + return linphone_core_manager_get_max_audio_bw_base(mgr->stat.audio_upload_bandwidth + , sizeof(mgr->stat.audio_upload_bandwidth)/sizeof(int)); +}