Added many test and fixed various warnings

This commit is contained in:
mannol
2015-04-30 00:40:30 +02:00
parent d8c34f4ffa
commit b2b11f0fba
6 changed files with 182 additions and 31 deletions
+5 -5
View File
@@ -21,8 +21,8 @@ AUTOTEST_LDADD = \
if BUILD_AV
TESTS += toxav_basic_test #toxav_many_test
check_PROGRAMS += toxav_basic_test #toxav_many_test
TESTS += toxav_basic_test toxav_many_test
check_PROGRAMS += toxav_basic_test toxav_many_test
AUTOTEST_LDADD += libtoxav.la
endif
@@ -90,11 +90,11 @@ toxav_basic_test_CFLAGS = $(AUTOTEST_CFLAGS)
toxav_basic_test_LDADD = $(AUTOTEST_LDADD) $(AV_LIBS)
#toxav_many_test_SOURCES = ../auto_tests/toxav_many_test.c
toxav_many_test_SOURCES = ../auto_tests/toxav_many_test.c
#toxav_many_test_CFLAGS = $(AUTOTEST_CFLAGS)
toxav_many_test_CFLAGS = $(AUTOTEST_CFLAGS)
#toxav_many_test_LDADD = $(AUTOTEST_LDADD)
toxav_many_test_LDADD = $(AUTOTEST_LDADD)
endif
endif
+13
View File
@@ -49,11 +49,19 @@ typedef struct {
*/
void t_toxav_call_cb(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *user_data)
{
(void) av;
(void) friend_number;
(void) audio_enabled;
(void) video_enabled;
printf("Handling CALL callback\n");
((CallControl*)user_data)->incoming = true;
}
void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data)
{
(void) av;
(void) friend_number;
printf("Handling CALL STATE callback: %d\n", state);
((CallControl*)user_data)->state = state;
}
@@ -92,6 +100,8 @@ void t_toxav_receive_audio_frame_cb(ToxAV *av, uint32_t friend_number,
}
void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t *data, size_t length, void *userdata)
{
(void) userdata;
if (length == 7 && memcmp("gentoo", data, 7) == 0) {
assert(tox_friend_add_norequest(m, public_key, NULL) != (uint32_t) ~0);
}
@@ -433,6 +443,9 @@ Suite *tox_suite(void)
}
int main(int argc, char *argv[])
{
(void) argc;
(void) argv;
Suite *tox = tox_suite();
SRunner *test_runner = srunner_create(tox);
+149 -19
View File
@@ -31,22 +31,34 @@
typedef struct {
bool incoming;
uint32_t state;
} CallControl;
typedef struct {
ToxAV* AliceAV;
ToxAV* BobAV;
CallControl* AliceCC;
CallControl* BobCC;
uint32_t friend_number;
} thread_data;
/**
* Callbacks
*/
void t_toxav_call_cb(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *user_data)
{
(void) av;
(void) audio_enabled;
(void) video_enabled;
printf("Handling CALL callback\n");
((CallControl*)user_data)->incoming = true;
((CallControl*)user_data)[friend_number].incoming = true;
}
void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data)
{
(void) av;
printf("Handling CALL STATE callback: %d\n", state);
((CallControl*)user_data)->state = state;
((CallControl*)user_data)[friend_number].state = state;
}
void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number,
uint16_t width, uint16_t height,
@@ -83,6 +95,7 @@ void t_toxav_receive_audio_frame_cb(ToxAV *av, uint32_t friend_number,
}
void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t *data, size_t length, void *userdata)
{
(void) userdata;
if (length == 7 && memcmp("gentoo", data, 7) == 0) {
assert(tox_friend_add_norequest(m, public_key, NULL) != (uint32_t) ~0);
}
@@ -106,11 +119,82 @@ ToxAV* setup_av_instance(Tox* tox, CallControl *CC)
return av;
}
void* call_thread(ToxAV* Alice, ToxAV* Bob)
void* call_thread(void* pd)
{
ToxAV* AliceAV = ((thread_data*) pd)->AliceAV;
ToxAV* BobAV = ((thread_data*) pd)->BobAV;
CallControl* AliceCC = ((thread_data*) pd)->AliceCC;
CallControl* BobCC = ((thread_data*) pd)->BobCC;
uint32_t friend_number = ((thread_data*) pd)->friend_number;
memset(AliceCC, 0, sizeof(CallControl));
memset(BobCC, 0, sizeof(CallControl));
{ /* Call */
TOXAV_ERR_CALL rc;
toxav_call(AliceAV, friend_number, 48, 3000, &rc);
if (rc != TOXAV_ERR_CALL_OK) {
printf("toxav_call failed: %d\n", rc);
exit(1);
}
}
while (!BobCC->incoming)
c_sleep(10);
{ /* Answer */
TOXAV_ERR_ANSWER rc;
toxav_answer(BobAV, 0, 8, 500, &rc);
if (rc != TOXAV_ERR_ANSWER_OK) {
printf("toxav_answer failed: %d\n", rc);
exit(1);
}
}
c_sleep(30);
int16_t PCM[960];
uint8_t video_y[800*600];
uint8_t video_u[800*600 / 2];
uint8_t video_v[800*600 / 2];
memset(PCM, 0, sizeof(PCM));
memset(video_y, 0, sizeof(video_y));
memset(video_u, 0, sizeof(video_u));
memset(video_v, 0, sizeof(video_v));
time_t start_time = time(NULL);
while(time(NULL) - start_time < 9) {
toxav_iterate(AliceAV);
toxav_iterate(BobAV);
toxav_send_audio_frame(AliceAV, friend_number, PCM, 960, 1, 48000, NULL);
toxav_send_audio_frame(BobAV, 0, PCM, 960, 1, 48000, NULL);
toxav_send_video_frame(AliceAV, friend_number, 800, 600, video_y, video_u, video_v, NULL);
toxav_send_video_frame(BobAV, 0, 800, 600, video_y, video_u, video_v, NULL);
c_sleep(10);
}
{ /* Hangup */
TOXAV_ERR_CALL_CONTROL rc;
toxav_call_control(AliceAV, friend_number, TOXAV_CALL_CONTROL_CANCEL, &rc);
if (rc != TOXAV_ERR_CALL_CONTROL_OK) {
printf("toxav_call_control failed: %d\n", rc);
exit(1);
}
}
c_sleep(30);
pthread_exit(NULL);
}
START_TEST(test_AV_three_calls)
{
Tox* Alice, *bootstrap, *Bobs[3];
@@ -118,7 +202,6 @@ START_TEST(test_AV_three_calls)
CallControl AliceCC[3], BobsCC[3];
int i = 0;
{
TOX_ERR_NEW error;
@@ -128,10 +211,14 @@ START_TEST(test_AV_three_calls)
Alice = tox_new(NULL, NULL, 0, &error);
assert(error == TOX_ERR_NEW_OK);
for (; i < 3; i ++) {
BobsAV[i] = tox_new(NULL, NULL, 0, &error);
assert(error == TOX_ERR_NEW_OK);
}
Bobs[0] = tox_new(NULL, NULL, 0, &error);
assert(error == TOX_ERR_NEW_OK);
Bobs[1] = tox_new(NULL, NULL, 0, &error);
assert(error == TOX_ERR_NEW_OK);
Bobs[2] = tox_new(NULL, NULL, 0, &error);
assert(error == TOX_ERR_NEW_OK);
}
printf("Created 5 instances of Tox\n");
@@ -178,25 +265,65 @@ START_TEST(test_AV_three_calls)
c_sleep(20);
}
AliceAV = setup_av_instance(Alice, &AliceCC);
BobsAV[0] = setup_av_instance(Bobs[0], &BobsCC[0]);
BobsAV[1] = setup_av_instance(Bobs[1], &BobsCC[1]);
BobsAV[2] = setup_av_instance(Bobs[2], &BobsCC[2]);
AliceAV = setup_av_instance(Alice, AliceCC);
BobsAV[0] = setup_av_instance(Bobs[0], BobsCC + 0);
BobsAV[1] = setup_av_instance(Bobs[1], BobsCC + 1);
BobsAV[2] = setup_av_instance(Bobs[2], BobsCC + 2);
printf("Created 4 instances of ToxAV\n");
printf("All set after %llu seconds!\n", time(NULL) - cur_time);
thread_data tds[3];
tds[0].AliceAV = AliceAV;
tds[0].BobAV = BobsAV[0];
tds[0].AliceCC = AliceCC + 0;
tds[0].BobCC = BobsCC + 0;
tds[0].friend_number = 0;
tds[1].AliceAV = AliceAV;
tds[1].BobAV = BobsAV[1];
tds[1].AliceCC = AliceCC + 1;
tds[1].BobCC = BobsCC + 1;
tds[1].friend_number = 1;
tox_kill(bootstrap);
tox_kill(Alice);
toxav_kill(AliceAV);
tds[2].AliceAV = AliceAV;
tds[2].BobAV = BobsAV[2];
tds[2].AliceCC = AliceCC + 2;
tds[2].BobCC = BobsCC + 2;
tds[2].friend_number = 2;
for (i = 0; i < 3; i ++) {
tox_kill(Bobs[i]);
toxav_kill(BobsAV[i]);
pthread_t tids[3];
(void) pthread_create(tids + 0, NULL, call_thread, tds + 0);
(void) pthread_create(tids + 1, NULL, call_thread, tds + 1);
(void) pthread_create(tids + 2, NULL, call_thread, tds + 2);
(void) pthread_detach(tids[0]);
(void) pthread_detach(tids[1]);
(void) pthread_detach(tids[2]);
time_t start_time = time(NULL);
while (time(NULL) - start_time < 10) {
tox_iterate(Alice);
tox_iterate(Bobs[0]);
tox_iterate(Bobs[1]);
tox_iterate(Bobs[2]);
c_sleep(20);
}
(void) pthread_join(tids[0], NULL);
(void) pthread_join(tids[1], NULL);
(void) pthread_join(tids[2], NULL);
toxav_kill(BobsAV[0]);
toxav_kill(BobsAV[1]);
toxav_kill(BobsAV[2]);
toxav_kill(AliceAV);
tox_kill(Bobs[0]);
tox_kill(Bobs[1]);
tox_kill(Bobs[2]);
tox_kill(Alice);
tox_kill(bootstrap);
printf("\nTest successful!\n");
}
END_TEST
@@ -218,6 +345,9 @@ Suite *tox_suite(void)
int main(int argc, char *argv[])
{
(void) argc;
(void) argv;
Suite *tox = tox_suite();
SRunner *test_runner = srunner_create(tox);
+1 -1
View File
@@ -526,7 +526,7 @@ MSICall *new_call ( MSISession *session, uint32_t friend_number )
session->calls = tmp;
/* Set fields in between to null */
int32_t i = session->calls_tail + 1;
uint32_t i = session->calls_tail + 1;
for (; i < friend_number; i ++)
session->calls[i] = NULL;
+8 -1
View File
@@ -243,7 +243,8 @@ int rtp_send_data ( RTPSession *session, const uint8_t *data, uint16_t length, b
uint8_t parsed[MAX_RTP_SIZE];
uint8_t *it;
RTPHeader header[1] = {0};
RTPHeader header[1];
memset(header, 0, sizeof(header));
ADD_FLAG_VERSION ( header, session->version );
ADD_FLAG_PADDING ( header, session->padding );
@@ -463,6 +464,9 @@ uint8_t *parse_ext_header_out ( const RTPExtHeader *header, uint8_t *payload )
}
int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data, uint16_t length, void* object )
{
(void) m;
(void) friendnumber;
RTPSession *session = object;
if ( !session || length < 13 || length > MAX_RTP_SIZE ) {
@@ -553,6 +557,9 @@ int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data
}
int handle_rtcp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data, uint16_t length, void* object )
{
(void) m;
(void) friendnumber;
if (length < 9)
return -1;
+6 -5
View File
@@ -224,7 +224,7 @@ void toxav_iterate(ToxAV* av)
}
uint64_t start = current_time_monotonic();
uint32_t rc = 500;
int32_t rc = 500;
ToxAVCall* i = av->calls[av->calls_head];
for (; i; i = i->next) {
@@ -292,7 +292,7 @@ void toxav_iterate(ToxAV* av)
if (i->msi_call->self_capabilities & msi_CapRVideo &&
i->msi_call->peer_capabilities & msi_CapSVideo)
rc = MIN(i->video.second->lcfd, rc);
rc = MIN(i->video.second->lcfd, (uint32_t) rc);
uint32_t fid = i->friend_number;
@@ -821,7 +821,7 @@ bool toxav_send_video_frame(ToxAV* av, uint32_t friend_number, uint16_t width, u
}
}
if (call->vba.end_time == ~0)
if (call->vba.end_time == (uint64_t) ~0)
call->vba.end_time = current_time_monotonic() + BITRATE_CHANGE_TESTING_TIME_MS;
}
@@ -921,7 +921,7 @@ bool toxav_send_audio_frame(ToxAV* av, uint32_t friend_number, const int16_t* pc
rc = TOXAV_ERR_SEND_FRAME_RTP_FAILED;
}
if (call->aba.end_time == ~0)
if (call->aba.end_time == (uint64_t) ~0)
call->aba.end_time = current_time_monotonic() + BITRATE_CHANGE_TESTING_TIME_MS;
}
}
@@ -1056,6 +1056,7 @@ bool audio_bit_rate_invalid(uint32_t bit_rate)
bool video_bit_rate_invalid(uint32_t bit_rate)
{
(void) bit_rate;
/* TODO: If anyone knows the answer to this one please fill it up */
return false;
}
@@ -1123,7 +1124,7 @@ ToxAVCall* call_new(ToxAV* av, uint32_t friend_number, TOXAV_ERR_CALL* error)
av->calls = tmp;
/* Set fields in between to null */
int32_t i = av->calls_tail + 1;
uint32_t i = av->calls_tail + 1;
for (; i < friend_number; i ++)
av->calls[i] = NULL;