summaryrefslogtreecommitdiff
path: root/auto_tests/toxav_basic_test.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2016-09-02 22:02:22 +0100
committeriphydf <iphydf@users.noreply.github.com>2016-09-02 22:02:22 +0100
commit33edad85827a296ace58bef119a4b112ca718f8a (patch)
tree094c6d5417c333954788050d2430ef2cad42ba77 /auto_tests/toxav_basic_test.c
parenta759ddc7ebe307e7a5ced4c89de2286c5675800d (diff)
Add a short sleep before each tox_iterate in av test.
A race condition that happens on machines with heavily used network interfaces causes tests to fail. Packets sent don't arrive on time. This sleep gives it 100 extra milliseconds. The real fix would be to wait for the event to occur and then continue, but with a "once-loop" that is tox_iterate, it's not feasible at this time.
Diffstat (limited to 'auto_tests/toxav_basic_test.c')
-rw-r--r--auto_tests/toxav_basic_test.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/auto_tests/toxav_basic_test.c b/auto_tests/toxav_basic_test.c
index 747c3aa1..2540f592 100644
--- a/auto_tests/toxav_basic_test.c
+++ b/auto_tests/toxav_basic_test.c
@@ -46,6 +46,17 @@
46#define TEST_PAUSE_RESUME_SEND 1 46#define TEST_PAUSE_RESUME_SEND 1
47 47
48 48
49#define ck_assert_call_control(a, b, c) do { \
50 TOXAV_ERR_CALL_CONTROL cc_err; \
51 bool ok = toxav_call_control(a, b, c, &cc_err); \
52 if (!ok) { \
53 printf("toxav_call_control returned error %d\n", cc_err); \
54 } \
55 ck_assert(ok); \
56 ck_assert(cc_err == TOXAV_ERR_CALL_CONTROL_OK); \
57} while (0)
58
59
49typedef struct { 60typedef struct {
50 bool incoming; 61 bool incoming;
51 uint32_t state; 62 uint32_t state;
@@ -123,6 +134,7 @@ void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t
123 */ 134 */
124int iterate_tox(Tox *bootstrap, Tox *Alice, Tox *Bob) 135int iterate_tox(Tox *bootstrap, Tox *Alice, Tox *Bob)
125{ 136{
137 c_sleep(100);
126 tox_iterate(bootstrap, NULL); 138 tox_iterate(bootstrap, NULL);
127 tox_iterate(Alice, NULL); 139 tox_iterate(Alice, NULL);
128 tox_iterate(Bob, NULL); 140 tox_iterate(Bob, NULL);
@@ -394,34 +406,34 @@ START_TEST(test_AV_flows)
394 406
395 /* Pause and Resume */ 407 /* Pause and Resume */
396 printf("Pause and Resume\n"); 408 printf("Pause and Resume\n");
397 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE, NULL)); 409 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE);
398 iterate_tox(bootstrap, Alice, Bob); 410 iterate_tox(bootstrap, Alice, Bob);
399 ck_assert(BobCC.state == 0); 411 ck_assert(BobCC.state == 0);
400 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME, NULL)); 412 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME);
401 iterate_tox(bootstrap, Alice, Bob); 413 iterate_tox(bootstrap, Alice, Bob);
402 ck_assert(BobCC.state & (TOXAV_FRIEND_CALL_STATE_SENDING_A | TOXAV_FRIEND_CALL_STATE_SENDING_V)); 414 ck_assert(BobCC.state & (TOXAV_FRIEND_CALL_STATE_SENDING_A | TOXAV_FRIEND_CALL_STATE_SENDING_V));
403 415
404 /* Mute/Unmute single */ 416 /* Mute/Unmute single */
405 printf("Mute/Unmute single\n"); 417 printf("Mute/Unmute single\n");
406 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO, NULL)); 418 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO);
407 iterate_tox(bootstrap, Alice, Bob); 419 iterate_tox(bootstrap, Alice, Bob);
408 ck_assert(BobCC.state ^ TOXAV_FRIEND_CALL_STATE_ACCEPTING_A); 420 ck_assert(BobCC.state ^ TOXAV_FRIEND_CALL_STATE_ACCEPTING_A);
409 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO, NULL)); 421 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO);
410 iterate_tox(bootstrap, Alice, Bob); 422 iterate_tox(bootstrap, Alice, Bob);
411 ck_assert(BobCC.state & TOXAV_FRIEND_CALL_STATE_ACCEPTING_A); 423 ck_assert(BobCC.state & TOXAV_FRIEND_CALL_STATE_ACCEPTING_A);
412 424
413 /* Mute/Unmute both */ 425 /* Mute/Unmute both */
414 printf("Mute/Unmute both\n"); 426 printf("Mute/Unmute both\n");
415 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO, NULL)); 427 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO);
416 iterate_tox(bootstrap, Alice, Bob); 428 iterate_tox(bootstrap, Alice, Bob);
417 ck_assert(BobCC.state ^ TOXAV_FRIEND_CALL_STATE_ACCEPTING_A); 429 ck_assert(BobCC.state ^ TOXAV_FRIEND_CALL_STATE_ACCEPTING_A);
418 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_HIDE_VIDEO, NULL)); 430 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_HIDE_VIDEO);
419 iterate_tox(bootstrap, Alice, Bob); 431 iterate_tox(bootstrap, Alice, Bob);
420 ck_assert(BobCC.state ^ TOXAV_FRIEND_CALL_STATE_ACCEPTING_V); 432 ck_assert(BobCC.state ^ TOXAV_FRIEND_CALL_STATE_ACCEPTING_V);
421 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO, NULL)); 433 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO);
422 iterate_tox(bootstrap, Alice, Bob); 434 iterate_tox(bootstrap, Alice, Bob);
423 ck_assert(BobCC.state & TOXAV_FRIEND_CALL_STATE_ACCEPTING_A); 435 ck_assert(BobCC.state & TOXAV_FRIEND_CALL_STATE_ACCEPTING_A);
424 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_SHOW_VIDEO, NULL)); 436 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_SHOW_VIDEO);
425 iterate_tox(bootstrap, Alice, Bob); 437 iterate_tox(bootstrap, Alice, Bob);
426 ck_assert(BobCC.state & TOXAV_FRIEND_CALL_STATE_ACCEPTING_V); 438 ck_assert(BobCC.state & TOXAV_FRIEND_CALL_STATE_ACCEPTING_V);
427 439
@@ -543,11 +555,11 @@ START_TEST(test_AV_flows)
543 int16_t PCM[5670]; 555 int16_t PCM[5670];
544 556
545 iterate_tox(bootstrap, Alice, Bob); 557 iterate_tox(bootstrap, Alice, Bob);
546 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE, NULL)); 558 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE);
547 iterate_tox(bootstrap, Alice, Bob); 559 iterate_tox(bootstrap, Alice, Bob);
548 ck_assert(!toxav_audio_send_frame(AliceAV, 0, PCM, 960, 1, 48000, NULL)); 560 ck_assert(!toxav_audio_send_frame(AliceAV, 0, PCM, 960, 1, 48000, NULL));
549 ck_assert(!toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL)); 561 ck_assert(!toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL));
550 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME, NULL)); 562 ck_assert_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME);
551 iterate_tox(bootstrap, Alice, Bob); 563 iterate_tox(bootstrap, Alice, Bob);
552 ck_assert(toxav_audio_send_frame(AliceAV, 0, PCM, 960, 1, 48000, NULL)); 564 ck_assert(toxav_audio_send_frame(AliceAV, 0, PCM, 960, 1, 48000, NULL));
553 ck_assert(toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL)); 565 ck_assert(toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL));