liblinphone_tester.h 20.9 KB
Newer Older
jehan's avatar
jehan committed
1
/*
2 3
	liblinphone_tester - liblinphone test suite
	Copyright (C) 2013  Belledonne Communications SARL
jehan's avatar
jehan committed
4

5 6 7 8
	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 2 of the License, or
	(at your option) any later version.
jehan's avatar
jehan committed
9

10 11 12 13
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.
jehan's avatar
jehan committed
14

15 16
	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
jehan's avatar
jehan committed
17 18
*/

Simon Morlat's avatar
Simon Morlat committed
19

jehan's avatar
jehan committed
20 21 22 23 24
#ifndef LIBLINPHONE_TESTER_H_
#define LIBLINPHONE_TESTER_H_



25
#include <bctoolbox/tester.h>
26
#include "linphone/core.h"
27
#include <mediastreamer2/msutils.h>
28 29 30
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
31

32 33 34 35 36 37

#ifdef _MSC_VER
#define popen _popen
#define pclose _pclose
#endif

38 39 40 41
#ifdef __cplusplus
extern "C" {
#endif

jehan's avatar
jehan committed
42 43 44 45 46 47
#ifdef __ANDROID__
extern jobject system_context;
#else
extern void *system_context;
#endif

Ronan's avatar
Ronan committed
48
extern test_suite_t account_creator_test_suite;
49
extern test_suite_t call_test_suite;
50 51 52

#if VIDEO_ENABLED
	extern test_suite_t call_video_test_suite;
53
#endif // if VIDEO_ENABLED
54

55
extern test_suite_t clonable_object_test_suite;
56
extern test_suite_t conference_event_test_suite;
Benjamin REIS's avatar
Benjamin REIS committed
57
extern test_suite_t conference_test_suite;
58
extern test_suite_t contents_test_suite;
Ronan's avatar
Ronan committed
59 60
extern test_suite_t cpim_test_suite;
extern test_suite_t dtmf_test_suite;
61
extern test_suite_t event_test_suite;
Ronan's avatar
Ronan committed
62
extern test_suite_t main_db_test_suite;
Simon Morlat's avatar
Simon Morlat committed
63
extern test_suite_t flexisip_test_suite;
64
extern test_suite_t group_chat_test_suite;
65
extern test_suite_t log_collection_test_suite;
Ronan's avatar
Ronan committed
66
extern test_suite_t message_test_suite;
67
extern test_suite_t multi_call_test_suite;
Ronan's avatar
Ronan committed
68
extern test_suite_t multicast_call_test_suite;
69
extern test_suite_t multipart_test_suite;
Ronan's avatar
Ronan committed
70 71 72 73
extern test_suite_t offeranswer_test_suite;
extern test_suite_t player_test_suite;
extern test_suite_t presence_server_test_suite;
extern test_suite_t presence_test_suite;
74
extern test_suite_t property_container_test_suite;
75
extern test_suite_t proxy_config_test_suite;
Ronan's avatar
Ronan committed
76 77 78 79 80 81 82
extern test_suite_t quality_reporting_test_suite;
extern test_suite_t register_test_suite;
extern test_suite_t remote_provisioning_test_suite;
extern test_suite_t setup_test_suite;
extern test_suite_t stun_test_suite;
extern test_suite_t tunnel_test_suite;
extern test_suite_t upnp_test_suite;
83
extern test_suite_t utils_test_suite;
Ronan's avatar
Ronan committed
84 85
extern test_suite_t video_test_suite;

86
#ifdef VCARD_ENABLED
87
	extern test_suite_t vcard_test_suite;
88
#endif
Ronan's avatar
Ronan committed
89

90
extern test_suite_t audio_bypass_suite;
jehan's avatar
jehan committed
91
#if HAVE_SIPP
92
	extern test_suite_t complex_sip_call_test_suite;
jehan's avatar
jehan committed
93
#endif
Ronan's avatar
Ronan committed
94

95
extern int manager_count;
96

Simon Morlat's avatar
Simon Morlat committed
97
extern int liblinphone_tester_ipv6_available(void);
98
extern int liblinphone_tester_ipv4_available(void);
99

100 101 102
/**
 * @brief Tells the tester whether or not to clean the accounts it has created between runs.
 * @details Setting this to 1 will not clear the list of created accounts between successive
103
 * calls to liblinphone_run_tests(). Some testing APIs call this function for *each* test,
104
 * in which case we should keep the accounts that were created for further testing.
105 106
 *
 * You are supposed to manually call liblinphone_tester_clear_account when all the tests are
107
 * finished.
108
 *
109 110 111 112
 * @param keep 1 to keep the accounts in-between runs, 0 to clear them after each run.
 */
extern void liblinphone_tester_keep_accounts( int keep );

113 114 115 116 117 118
/**
 * @brief Tells the test whether to not remove recorded audio/video files after the tests.
 * @details By default recorded files are erased after the test, unless the test is failed.
**/
void liblinphone_tester_keep_recorded_files(int keep);

119 120 121 122 123 124
/**
 * @brief Disable the automatic object leak detection. This is useful because the object leak detector prevents valgrind from seeing the leaks.
 * @details By default object leak detector is enabled.
**/
void liblinphone_tester_disable_leak_detector(int disabled);

125 126 127 128 129
/**
 * @brief Clears the created accounts during the testing session.
 */
extern void liblinphone_tester_clear_accounts(void);

130

131 132 133
extern const char* test_domain;
extern const char* auth_domain;
extern const char* test_username;
134
extern const char* test_sha_username;
135 136
extern const char* test_password;
extern const char* test_route;
137
extern const char* userhostsfile;
138
extern bool_t liblinphone_tester_keep_uuid;
139 140 141
extern bool_t liblinphone_tester_tls_support_disabled;
extern const MSAudioDiffParams audio_cmp_params;
extern const char *liblinphone_tester_mire_id;
142
extern const char *liblinphone_tester_static_image_id;
143
extern bool_t liblinphonetester_ipv6;
144
extern bool_t liblinphonetester_show_account_manager_logs;
145
extern bool_t liblinphonetester_no_account_creator;
jehan's avatar
jehan committed
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172

typedef struct _stats {
	int number_of_LinphoneRegistrationNone;
	int number_of_LinphoneRegistrationProgress ;
	int number_of_LinphoneRegistrationOk ;
	int number_of_LinphoneRegistrationCleared ;
	int number_of_LinphoneRegistrationFailed ;
	int number_of_auth_info_requested ;

	int number_of_LinphoneCallIncomingReceived;
	int number_of_LinphoneCallOutgoingInit;
	int number_of_LinphoneCallOutgoingProgress;
	int number_of_LinphoneCallOutgoingRinging;
	int number_of_LinphoneCallOutgoingEarlyMedia;
	int number_of_LinphoneCallConnected;
	int number_of_LinphoneCallStreamsRunning;
	int number_of_LinphoneCallPausing;
	int number_of_LinphoneCallPaused;
	int number_of_LinphoneCallResuming;
	int number_of_LinphoneCallRefered;
	int number_of_LinphoneCallError;
	int number_of_LinphoneCallEnd;
	int number_of_LinphoneCallPausedByRemote;
	int number_of_LinphoneCallUpdatedByRemote;
	int number_of_LinphoneCallIncomingEarlyMedia;
	int number_of_LinphoneCallUpdating;
	int number_of_LinphoneCallReleased;
173 174
	int number_of_LinphoneCallEarlyUpdatedByRemote;
	int number_of_LinphoneCallEarlyUpdating;
jehan's avatar
jehan committed
175

jehan's avatar
jehan committed
176
	int number_of_LinphoneTransferCallOutgoingInit;
177 178 179 180 181
	int number_of_LinphoneTransferCallOutgoingProgress;
	int number_of_LinphoneTransferCallOutgoingRinging;
	int number_of_LinphoneTransferCallOutgoingEarlyMedia;
	int number_of_LinphoneTransferCallConnected;
	int number_of_LinphoneTransferCallStreamsRunning;
182
	int number_of_LinphoneTransferCallError;
jehan's avatar
jehan committed
183

jehan's avatar
jehan committed
184
	int number_of_LinphoneMessageReceived;
jehan's avatar
jehan committed
185
	int number_of_LinphoneMessageReceivedWithFile;
186 187 188 189
	int number_of_LinphoneMessageExtBodyReceived;
	int number_of_LinphoneMessageInProgress;
	int number_of_LinphoneMessageDelivered;
	int number_of_LinphoneMessageNotDelivered;
190
	int number_of_LinphoneMessageUndecryptable;
Simon Morlat's avatar
Simon Morlat committed
191
	int number_of_LinphoneMessageFileTransferDone;
192
	int number_of_LinphoneMessageFileTransferError;
Ghislain MARY's avatar
Ghislain MARY committed
193 194
	int number_of_LinphoneMessageDeliveredToUser;
	int number_of_LinphoneMessageDisplayed;
195 196
	int number_of_LinphoneIsComposingActiveReceived;
	int number_of_LinphoneIsComposingIdleReceived;
197
	int progress_of_LinphoneFileTransfer;
198

199
	int number_of_LinphoneChatRoomConferenceJoined;
200 201 202
	int number_of_LinphoneChatRoomStateInstantiated;
	int number_of_LinphoneChatRoomStateCreationPending;
	int number_of_LinphoneChatRoomStateCreated;
203
	int number_of_LinphoneChatRoomStateCreationFailed;
204 205
	int number_of_LinphoneChatRoomStateTerminationPending;
	int number_of_LinphoneChatRoomStateTerminated;
206
	int number_of_LinphoneChatRoomStateTerminationFailed;
207
	int number_of_LinphoneChatRoomStateDeleted;
208

jehan's avatar
jehan committed
209
	int number_of_IframeDecoded;
jehan's avatar
jehan committed
210 211 212

	int number_of_NewSubscriptionRequest;
	int number_of_NotifyReceived;
Ghislain MARY's avatar
Ghislain MARY committed
213
	int number_of_NotifyPresenceReceived;
214
	int number_of_NotifyPresenceReceivedForUriOrTel;
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
	int number_of_LinphonePresenceActivityOffline;
	int number_of_LinphonePresenceActivityOnline;
	int number_of_LinphonePresenceActivityAppointment;
	int number_of_LinphonePresenceActivityAway;
	int number_of_LinphonePresenceActivityBreakfast;
	int number_of_LinphonePresenceActivityBusy;
	int number_of_LinphonePresenceActivityDinner;
	int number_of_LinphonePresenceActivityHoliday;
	int number_of_LinphonePresenceActivityInTransit;
	int number_of_LinphonePresenceActivityLookingForWork;
	int number_of_LinphonePresenceActivityLunch;
	int number_of_LinphonePresenceActivityMeal;
	int number_of_LinphonePresenceActivityMeeting;
	int number_of_LinphonePresenceActivityOnThePhone;
	int number_of_LinphonePresenceActivityOther;
	int number_of_LinphonePresenceActivityPerformance;
	int number_of_LinphonePresenceActivityPermanentAbsence;
	int number_of_LinphonePresenceActivityPlaying;
	int number_of_LinphonePresenceActivityPresentation;
	int number_of_LinphonePresenceActivityShopping;
	int number_of_LinphonePresenceActivitySleeping;
	int number_of_LinphonePresenceActivitySpectator;
	int number_of_LinphonePresenceActivitySteering;
	int number_of_LinphonePresenceActivityTravel;
	int number_of_LinphonePresenceActivityTV;
	int number_of_LinphonePresenceActivityUnknown;
	int number_of_LinphonePresenceActivityVacation;
	int number_of_LinphonePresenceActivityWorking;
	int number_of_LinphonePresenceActivityWorship;
244
	const LinphonePresenceModel *last_received_presence;
245

246 247
	int number_of_LinphonePresenceBasicStatusOpen;
	int number_of_LinphonePresenceBasicStatusClosed;
248

249
	int number_of_inforeceived;
250
	LinphoneInfoMessage* last_received_info_message;
jehan's avatar
jehan committed
251

252
	int number_of_LinphoneSubscriptionIncomingReceived;
253
	int number_of_LinphoneSubscriptionOutgoingProgress;
254 255 256 257
	int number_of_LinphoneSubscriptionPending;
	int number_of_LinphoneSubscriptionActive;
	int number_of_LinphoneSubscriptionTerminated;
	int number_of_LinphoneSubscriptionError;
258
	int number_of_LinphoneSubscriptionExpiring;
jehan's avatar
jehan committed
259

260 261 262 263 264
	int number_of_LinphonePublishProgress;
	int number_of_LinphonePublishOk;
	int number_of_LinphonePublishExpiring;
	int number_of_LinphonePublishError;
	int number_of_LinphonePublishCleared;
265

266 267 268
	int number_of_LinphoneConfiguringSkipped;
	int number_of_LinphoneConfiguringFailed;
	int number_of_LinphoneConfiguringSuccessful;
269 270 271

	int number_of_LinphoneCallEncryptedOn;
	int number_of_LinphoneCallEncryptedOff;
272 273
	int number_of_NetworkReachableTrue;
	int number_of_NetworkReachableFalse;
274
	int number_of_player_eof;
jehan's avatar
jehan committed
275
	LinphoneChatMessage* last_received_chat_message;
276 277

	char * dtmf_list_received;
278
	int dtmf_count;
279

280
	int number_of_LinphoneCallStatsUpdated;
281
	int number_of_rtcp_sent;
282 283
	int number_of_rtcp_received; /*total number of rtcp packet received */
	int number_of_rtcp_received_via_mux;/*number of rtcp packet received in rtcp-mux mode*/
284

285
	int number_of_video_windows_created;
286

287
	int number_of_LinphoneFileTransferDownloadSuccessful;
288 289 290
	int number_of_LinphoneCoreLogCollectionUploadStateDelivered;
	int number_of_LinphoneCoreLogCollectionUploadStateNotDelivered;
	int number_of_LinphoneCoreLogCollectionUploadStateInProgress;
291 292 293 294 295
	int audio_download_bandwidth[3];
	int audio_upload_bandwidth[3];

	int video_download_bandwidth[3];
	int video_upload_bandwidth[3];
296
	int current_bandwidth_index[2] /*audio and video only*/;
297

298
	int number_of_rtcp_generic_nack;
299
	int number_of_tmmbr_received;
300
	int last_tmmbr_value_received;
Mickaël Turnel's avatar
Mickaël Turnel committed
301
	int tmmbr_received_from_cb;
302 303 304 305 306

	int number_of_participants_added;
	int number_of_participant_admin_statuses_changed;
	int number_of_participants_removed;
	int number_of_subject_changed;
307
	int number_of_participant_devices_added;
308 309

	int number_of_SecurityLevelDowngraded;
Matthieu Tanon's avatar
Matthieu Tanon committed
310
	int number_of_ParticipantMaxDeviceCountExceeded;
311
	int number_of_EncryptionIdentityKeyChanged;
312
	int number_of_ManInTheMiddleDetected;
313 314

	int number_of_snapshot_taken;
jehan's avatar
jehan committed
315
}stats;
316

317

jehan's avatar
jehan committed
318
typedef struct _LinphoneCoreManager {
319 320
	LinphoneCoreCbs *cbs;
	LinphoneCore *lc;
jehan's avatar
jehan committed
321
	stats stat;
322
	LinphoneAddress *identity;
323 324
	LinphoneEvent *lev;
	bool_t decline_subscribe;
325
	int number_of_bcunit_error_at_creation;
326
	char *phone_alias;
327
	char *rc_path;
328
	char *database_path;
jehan's avatar
jehan committed
329 330
} LinphoneCoreManager;

331 332 333
typedef struct _LinphoneConferenceServer {
	LinphoneCoreManager base;
	LinphoneCall *first_call;
334
	LinphoneCoreCbs *cbs;
335
	LinphoneRegistrationState reg_state;
336 337
} LinphoneConferenceServer;

338 339 340
typedef struct _LinphoneCallTestParams {
	LinphoneCallParams *base;
	bool_t sdp_removal;
341
	bool_t sdp_simulate_error;
342 343
} LinphoneCallTestParams;

344

345
void liblinphone_tester_add_suites(void);
346

347
void linphone_core_manager_init(LinphoneCoreManager *mgr, const char* rc_file, const char* phone_alias);
348
void linphone_core_manager_configure (LinphoneCoreManager *mgr);
349
void linphone_core_manager_start(LinphoneCoreManager *mgr, bool_t check_for_proxies);
350 351
LinphoneCoreManager* linphone_core_manager_create2(const char* rc_file, const char* phone_alias);
LinphoneCoreManager* linphone_core_manager_create(const char* rc_file);
352
LinphoneCoreManager* linphone_core_manager_new4(const char* rc_file, int check_for_proxies, const char* phone_aliasconst, const char* contact_params, int expires);
353 354
LinphoneCoreManager* linphone_core_manager_new3(const char* rc_file, bool_t check_for_proxies, const char* phone_alias);
LinphoneCoreManager* linphone_core_manager_new2(const char* rc_file, bool_t check_for_proxies);
Simon Morlat's avatar
Simon Morlat committed
355
LinphoneCoreManager* linphone_core_manager_new(const char* rc_file);
356
void linphone_core_manager_stop(LinphoneCoreManager *mgr);
357
void linphone_core_manager_reinit(LinphoneCoreManager *mgr);
358
void linphone_core_manager_restart(LinphoneCoreManager *mgr, bool_t check_for_proxies);
359
void linphone_core_manager_uninit(LinphoneCoreManager *mgr);
360
void linphone_core_manager_wait_for_stun_resolution(LinphoneCoreManager *mgr);
jehan's avatar
jehan committed
361
void linphone_core_manager_destroy(LinphoneCoreManager* mgr);
362
void linphone_core_manager_delete_chat_room (LinphoneCoreManager *mgr, LinphoneChatRoom *cr, bctbx_list_t *coresList);
jehan's avatar
jehan committed
363 364 365 366

void reset_counters( stats* counters);

void registration_state_changed(struct _LinphoneCore *lc, LinphoneProxyConfig *cfg, LinphoneRegistrationState cstate, const char *message);
jehan's avatar
jehan committed
367
void call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *msg);
jehan's avatar
jehan committed
368
void linphone_transfer_state_changed(LinphoneCore *lc, LinphoneCall *transfered, LinphoneCallState new_call_state);
jehan's avatar
jehan committed
369
void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf);
370
void notify_presence_received_for_uri_or_tel(LinphoneCore *lc, LinphoneFriend *lf, const char *uri_or_tel, const LinphonePresenceModel *presence);
371
void message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage* message);
372 373
void file_transfer_received(LinphoneChatMessage *message, const LinphoneContent* content, const LinphoneBuffer *buffer);
LinphoneBuffer * tester_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size);
374
LinphoneBuffer * tester_memory_file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size);
375
void file_transfer_progress_indication(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t total);
376
void is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room);
377
void info_message_received(LinphoneCore *lc, LinphoneCall *call, const LinphoneInfoMessage *msg);
378
void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char *url);
379
void linphone_subscription_state_change(LinphoneCore *lc, LinphoneEvent *ev, LinphoneSubscriptionState state);
380
void linphone_publish_state_changed(LinphoneCore *lc, LinphoneEvent *ev, LinphonePublishState state);
381
void linphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content);
382
void linphone_subscribe_received(LinphoneCore *lc, LinphoneEvent *lev, const char *eventname, const LinphoneContent *content);
383
void linphone_configuration_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message);
384
void linphone_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t on, const char *authentication_token);
385
void dtmf_received(LinphoneCore *lc, LinphoneCall *call, int dtmf);
386
void call_stats_updated(LinphoneCore *lc, LinphoneCall *call, const LinphoneCallStats *stats);
387

jehan's avatar
jehan committed
388
LinphoneAddress * create_linphone_address(const char * domain);
389
LinphoneAddress * create_linphone_address_for_algo(const char * domain, const char * username);
jehan's avatar
jehan committed
390
bool_t wait_for(LinphoneCore* lc_1, LinphoneCore* lc_2,int* counter,int value);
jehan's avatar
jehan committed
391
bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms);
jehan's avatar
jehan committed
392
bool_t wait_for_until(LinphoneCore* lc_1, LinphoneCore* lc_2,int* counter,int value,int timout_ms);
393

394 395 396 397
bool_t call_with_params(LinphoneCoreManager* caller_mgr
						,LinphoneCoreManager* callee_mgr
						, const LinphoneCallParams *caller_params
						, const LinphoneCallParams *callee_params);
398 399 400 401
bool_t call_with_test_params(LinphoneCoreManager* caller_mgr
				,LinphoneCoreManager* callee_mgr
				,const LinphoneCallTestParams *caller_test_params
				,const LinphoneCallTestParams *callee_test_params);
402 403 404 405 406
bool_t call_with_params2(LinphoneCoreManager* caller_mgr
						,LinphoneCoreManager* callee_mgr
						, const LinphoneCallTestParams *caller_test_params
						, const LinphoneCallTestParams *callee_test_params
						, bool_t build_callee_params);
407

jehan's avatar
jehan committed
408
bool_t call(LinphoneCoreManager* caller_mgr,LinphoneCoreManager* callee_mgr);
409
bool_t request_video(LinphoneCoreManager* caller,LinphoneCoreManager* callee, bool_t use_accept_call_update);
410
void end_call(LinphoneCoreManager *m1, LinphoneCoreManager *m2);
411
void disable_all_audio_codecs_except_one(LinphoneCore *lc, const char *mime, int rate);
412
void disable_all_video_codecs_except_one(LinphoneCore *lc, const char *mime);
413
void disable_all_codecs(const MSList* elem, LinphoneCoreManager* call);
414
stats * get_stats(LinphoneCore *lc);
415
bool_t transport_supported(LinphoneTransportType transport);
416
LinphoneCoreManager *get_manager(LinphoneCore *lc);
Simon Morlat's avatar
Simon Morlat committed
417 418 419
const char *liblinphone_tester_get_subscribe_content(void);
const char *liblinphone_tester_get_notify_content(void);
void liblinphone_tester_chat_message_state_change(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud);
420
void liblinphone_tester_chat_message_msg_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageState state);
Simon Morlat's avatar
Simon Morlat committed
421
void liblinphone_tester_check_rtcp(LinphoneCoreManager* caller, LinphoneCoreManager* callee);
422
void liblinphone_tester_clock_start(MSTimeSpec *start);
423
bool_t liblinphone_tester_clock_elapsed(const MSTimeSpec *start, int value_ms);
424 425
void linphone_core_manager_check_accounts(LinphoneCoreManager *m);
void account_manager_destroy(void);
426
LinphoneAddress *account_manager_get_identity_with_modified_identity(const LinphoneAddress *modified_identity);
427
LinphoneCore *configure_lc_from(LinphoneCoreCbs *cbs, const char *path, const char *file, void *user_data);
428

Simon Morlat's avatar
Simon Morlat committed
429
void liblinphone_tester_set_next_video_frame_decoded_cb(LinphoneCall *call);
430
void call_paused_resumed_base(bool_t multicast,bool_t with_losses);
jehan's avatar
jehan committed
431
void simple_call_base(bool_t enable_multicast_recv_side);
432
void call_base_with_configfile(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy,bool_t enable_tunnel, const char *marie_rc, const char *pauline_rc);
jehan's avatar
jehan committed
433
void call_base(LinphoneMediaEncryption mode, bool_t enable_video,bool_t enable_relay,LinphoneFirewallPolicy policy,bool_t enable_tunnel);
434 435
bool_t call_with_caller_params(LinphoneCoreManager* caller_mgr,LinphoneCoreManager* callee_mgr, const LinphoneCallParams *params);
bool_t pause_call_1(LinphoneCoreManager* mgr_1,LinphoneCall* call_1,LinphoneCoreManager* mgr_2,LinphoneCall* call_2);
436
void compare_files(const char *path1, const char *path2);
437
void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call, MSList* lcs,LinphoneMediaDirection audio_dir, LinphoneMediaDirection video_dir);
438
void _call_with_ice_base(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t caller_with_ice, bool_t callee_with_ice, bool_t random_ports, bool_t forced_relay);
439
int check_nb_media_starts(LinphoneCoreManager *caller, LinphoneCoreManager *callee, unsigned int caller_nb_media_starts, unsigned int callee_nb_media_starts);
440
void record_call(const char *filename, bool_t enableVideo, const char *video_codec);
441

442 443 444 445
/*
 * 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);
446 447 448
int linphone_core_manager_get_mean_audio_down_bw(const LinphoneCoreManager *mgr);
int linphone_core_manager_get_mean_audio_up_bw(const LinphoneCoreManager *mgr);

449
void video_call_base_2(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy,LinphoneMediaEncryption mode, bool_t callee_video_enabled, bool_t caller_video_enabled);
450

451
void liblinphone_tester_before_each(void);
452
void liblinphone_tester_after_each(void);
453 454
void liblinphone_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args));
void liblinphone_tester_uninit(void);
455
int liblinphone_tester_set_log_file(const char *filename);
456
bool_t check_ice(LinphoneCoreManager* caller, LinphoneCoreManager* callee, LinphoneIceState state);
457

458

459
LinphoneConferenceServer* linphone_conference_server_new(const char *rc_file, bool_t do_registration);
460 461
void linphone_conference_server_destroy(LinphoneConferenceServer *conf_srv);

462 463
LinphoneAddress * linphone_core_manager_resolve(LinphoneCoreManager *mgr, const LinphoneAddress *source);
FILE *sip_start(const char *senario, const char* dest_username, const char *passwd, LinphoneAddress* dest_addres);
jehan's avatar
jehan committed
464

465
void early_media_without_sdp_in_200_base( bool_t use_video, bool_t use_ice );
466
void linphone_conf_event_notify(LinphoneEvent *lev);
467 468 469 470

#ifdef __cplusplus
};
#endif
471 472

#endif /* LIBLINPHONE_TESTER_H_ */