mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-07 05:53:06 +00:00
better test in case of io error
This commit is contained in:
parent
61f0f0bcd0
commit
7a6d1c2946
5 changed files with 73 additions and 0 deletions
|
|
@ -440,6 +440,7 @@ Sal * sal_init(){
|
|||
belle_sip_provider_add_sip_listener(sal->prov,sal->listener);
|
||||
sal->tls_verify=TRUE;
|
||||
sal->tls_verify_cn=TRUE;
|
||||
sal->refresher_retry_after=60000; /*default value in ms*/
|
||||
return sal;
|
||||
}
|
||||
void sal_set_user_pointer(Sal *sal, void *user_data){
|
||||
|
|
@ -872,3 +873,9 @@ belle_sip_response_t* sal_create_response_from_request ( Sal* sal, belle_sip_req
|
|||
belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp),BELLE_SIP_HEADER(sal->user_agent));
|
||||
return resp;
|
||||
}
|
||||
void sal_set_refresher_retry_after(Sal *sal,int value) {
|
||||
sal->refresher_retry_after=value;
|
||||
}
|
||||
int sal_get_refresher_retry_after(const Sal *sal) {
|
||||
return sal->refresher_retry_after;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ struct Sal{
|
|||
bool_t tls_verify;
|
||||
bool_t tls_verify_cn;
|
||||
bool_t use_dates;
|
||||
int refresher_retry_after; /*retry after value for refresher*/
|
||||
};
|
||||
|
||||
typedef enum SalOpState {
|
||||
|
|
|
|||
|
|
@ -451,6 +451,7 @@ int sal_op_send_and_create_refresher(SalOp* op,belle_sip_request_t* req, int exp
|
|||
if ((op->refresher = belle_sip_client_transaction_create_refresher(op->pending_client_trans))) {
|
||||
belle_sip_refresher_enable_nat_helper(op->refresher,op->base.root->nat_helper_enabled);
|
||||
belle_sip_refresher_set_listener(op->refresher,listener,op);
|
||||
belle_sip_refresher_set_retry_after(op->refresher,op->base.root->refresher_retry_after);
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -606,6 +606,9 @@ void __sal_op_free(SalOp *b);
|
|||
LINPHONE_PUBLIC void sal_set_send_error(Sal *sal,int value);
|
||||
/*1 for no error*/
|
||||
LINPHONE_PUBLIC void sal_set_recv_error(Sal *sal,int value);
|
||||
/*refresher retry after value in ms*/
|
||||
LINPHONE_PUBLIC void sal_set_refresher_retry_after(Sal *sal,int value);
|
||||
LINPHONE_PUBLIC int sal_get_refresher_retry_after(const Sal *sal);
|
||||
/*enable contact fixing*/
|
||||
void sal_nat_helper_enable(Sal *sal,bool_t enable);
|
||||
bool_t sal_nat_helper_enabled(Sal *sal);
|
||||
|
|
|
|||
|
|
@ -383,6 +383,65 @@ static void io_recv_error(){
|
|||
linphone_core_manager_destroy(mgr);
|
||||
}
|
||||
|
||||
static void io_recv_error_retry_immediatly(){
|
||||
LinphoneCoreManager *mgr;
|
||||
LinphoneCore* lc;
|
||||
int register_ok;
|
||||
stats* counters ;
|
||||
int number_of_udp_proxy=0;
|
||||
|
||||
|
||||
mgr=configure_lcm();
|
||||
lc=mgr->lc;
|
||||
counters = get_stats(lc);
|
||||
register_ok=counters->number_of_LinphoneRegistrationOk;
|
||||
number_of_udp_proxy=get_number_of_udp_proxy(lc);
|
||||
sal_set_recv_error(lc->sal, 0);
|
||||
|
||||
CU_ASSERT_TRUE(wait_for(lc,NULL,&counters->number_of_LinphoneRegistrationProgress,2*(register_ok-number_of_udp_proxy) /*because 1 udp*/));
|
||||
CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,0)
|
||||
sal_set_recv_error(lc->sal, 1); /*reset*/
|
||||
|
||||
CU_ASSERT_TRUE(wait_for(lc,lc,&counters->number_of_LinphoneRegistrationOk,2*(register_ok-number_of_udp_proxy)));
|
||||
|
||||
linphone_core_manager_destroy(mgr);
|
||||
}
|
||||
|
||||
static void io_recv_error_late_recovery(){
|
||||
LinphoneCoreManager *mgr;
|
||||
LinphoneCore* lc;
|
||||
int register_ok;
|
||||
stats* counters ;
|
||||
int number_of_udp_proxy=0;
|
||||
MSList* lcs;
|
||||
|
||||
mgr=linphone_core_manager_new2( "multi_account_lrc",FALSE); /*to make sure iterates are not call yet*/
|
||||
lc=mgr->lc;
|
||||
sal_set_refresher_retry_after(lc->sal,1000);
|
||||
counters=&mgr->stat;
|
||||
CU_ASSERT_TRUE(wait_for(mgr->lc,mgr->lc,&counters->number_of_LinphoneRegistrationOk,ms_list_size(linphone_core_get_proxy_config_list(mgr->lc))));
|
||||
|
||||
|
||||
counters = get_stats(lc);
|
||||
register_ok=counters->number_of_LinphoneRegistrationOk;
|
||||
number_of_udp_proxy=get_number_of_udp_proxy(lc);
|
||||
/*simulate a general socket error*/
|
||||
sal_set_recv_error(lc->sal, 0);
|
||||
sal_set_send_error(lc->sal, -1);
|
||||
|
||||
CU_ASSERT_TRUE(wait_for(lc,NULL,&counters->number_of_LinphoneRegistrationProgress,(register_ok-number_of_udp_proxy)+register_ok /*because 1 udp*/));
|
||||
CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,0)
|
||||
|
||||
CU_ASSERT_TRUE(wait_for_list(lcs=ms_list_append(NULL,lc),&counters->number_of_LinphoneRegistrationFailed,(register_ok-number_of_udp_proxy),sal_get_refresher_retry_after(lc->sal)+1000));
|
||||
|
||||
sal_set_recv_error(lc->sal, 1); /*reset*/
|
||||
sal_set_send_error(lc->sal, 0);
|
||||
|
||||
CU_ASSERT_TRUE(wait_for_list(lcs=ms_list_append(NULL,lc),&counters->number_of_LinphoneRegistrationOk,register_ok-number_of_udp_proxy +register_ok,sal_get_refresher_retry_after(lc->sal)+1000));
|
||||
|
||||
linphone_core_manager_destroy(mgr);
|
||||
}
|
||||
|
||||
static void io_recv_error_without_active_register(){
|
||||
LinphoneCoreManager *mgr;
|
||||
LinphoneCore* lc;
|
||||
|
|
@ -516,6 +575,8 @@ test_t register_tests[] = {
|
|||
{ "Transport change", transport_change },
|
||||
{ "Network state change", network_state_change },
|
||||
{ "Io recv error", io_recv_error },
|
||||
{ "Io recv error with recovery", io_recv_error_retry_immediatly},
|
||||
{ "Io recv error with late recovery", io_recv_error_late_recovery},
|
||||
{ "Io recv error without active registration", io_recv_error_without_active_register}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue