summaryrefslogtreecommitdiff
path: root/auto_tests/toxav_many_test.c
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2015-11-03 13:42:05 -0500
committerirungentoo <irungentoo@gmail.com>2015-11-03 13:42:05 -0500
commit6a494e2cbdd146bb13185d8220061322661a5f5a (patch)
tree6cb23bca09894cde6173bc7a362a112d72872215 /auto_tests/toxav_many_test.c
parentf435e94397feb3121ef334de6873b93adaaf01dd (diff)
Astyle.
Diffstat (limited to 'auto_tests/toxav_many_test.c')
-rw-r--r--auto_tests/toxav_many_test.c169
1 files changed, 86 insertions, 83 deletions
diff --git a/auto_tests/toxav_many_test.c b/auto_tests/toxav_many_test.c
index 9819b694..ab496024 100644
--- a/auto_tests/toxav_many_test.c
+++ b/auto_tests/toxav_many_test.c
@@ -42,29 +42,29 @@ typedef struct {
42} CallControl; 42} CallControl;
43 43
44typedef struct { 44typedef struct {
45 ToxAV* AliceAV; 45 ToxAV *AliceAV;
46 ToxAV* BobAV; 46 ToxAV *BobAV;
47 CallControl* AliceCC; 47 CallControl *AliceCC;
48 CallControl* BobCC; 48 CallControl *BobCC;
49 uint32_t friend_number; 49 uint32_t friend_number;
50} thread_data; 50} thread_data;
51 51
52/** 52/**
53 * Callbacks 53 * Callbacks
54 */ 54 */
55void t_toxav_call_cb(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *user_data) 55void t_toxav_call_cb(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled, void *user_data)
56{ 56{
57 (void) av; 57 (void) av;
58 (void) audio_enabled; 58 (void) audio_enabled;
59 (void) video_enabled; 59 (void) video_enabled;
60 60
61 printf("Handling CALL callback\n"); 61 printf("Handling CALL callback\n");
62 ((CallControl*)user_data)[friend_number].incoming = true; 62 ((CallControl *)user_data)[friend_number].incoming = true;
63} 63}
64void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data) 64void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data)
65{ 65{
66 printf("Handling CALL STATE callback: %d %p\n", state, av); 66 printf("Handling CALL STATE callback: %d %p\n", state, av);
67 ((CallControl*)user_data)[friend_number].state = state; 67 ((CallControl *)user_data)[friend_number].state = state;
68} 68}
69void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number, 69void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number,
70 uint16_t width, uint16_t height, 70 uint16_t width, uint16_t height,
@@ -102,6 +102,7 @@ void t_toxav_receive_audio_frame_cb(ToxAV *av, uint32_t friend_number,
102void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t *data, size_t length, void *userdata) 102void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t *data, size_t length, void *userdata)
103{ 103{
104 (void) userdata; 104 (void) userdata;
105
105 if (length == 7 && memcmp("gentoo", data, 7) == 0) { 106 if (length == 7 && memcmp("gentoo", data, 7) == 0) {
106 ck_assert(tox_friend_add_norequest(m, public_key, NULL) != (uint32_t) ~0); 107 ck_assert(tox_friend_add_norequest(m, public_key, NULL) != (uint32_t) ~0);
107 } 108 }
@@ -111,92 +112,93 @@ void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t
111/** 112/**
112 * Iterate helper 113 * Iterate helper
113 */ 114 */
114ToxAV* setup_av_instance(Tox* tox, CallControl *CC) 115ToxAV *setup_av_instance(Tox *tox, CallControl *CC)
115{ 116{
116 TOXAV_ERR_NEW error; 117 TOXAV_ERR_NEW error;
117 118
118 ToxAV* av = toxav_new(tox, &error); 119 ToxAV *av = toxav_new(tox, &error);
119 ck_assert(error == TOXAV_ERR_NEW_OK); 120 ck_assert(error == TOXAV_ERR_NEW_OK);
120 121
121 toxav_callback_call(av, t_toxav_call_cb, CC); 122 toxav_callback_call(av, t_toxav_call_cb, CC);
122 toxav_callback_call_state(av, t_toxav_call_state_cb, CC); 123 toxav_callback_call_state(av, t_toxav_call_state_cb, CC);
123 toxav_callback_video_receive_frame(av, t_toxav_receive_video_frame_cb, CC); 124 toxav_callback_video_receive_frame(av, t_toxav_receive_video_frame_cb, CC);
124 toxav_callback_audio_receive_frame(av, t_toxav_receive_audio_frame_cb, CC); 125 toxav_callback_audio_receive_frame(av, t_toxav_receive_audio_frame_cb, CC);
125 126
126 return av; 127 return av;
127} 128}
128void* call_thread(void* pd) 129void *call_thread(void *pd)
129{ 130{
130 ToxAV* AliceAV = ((thread_data*) pd)->AliceAV; 131 ToxAV *AliceAV = ((thread_data *) pd)->AliceAV;
131 ToxAV* BobAV = ((thread_data*) pd)->BobAV; 132 ToxAV *BobAV = ((thread_data *) pd)->BobAV;
132 CallControl* AliceCC = ((thread_data*) pd)->AliceCC; 133 CallControl *AliceCC = ((thread_data *) pd)->AliceCC;
133 CallControl* BobCC = ((thread_data*) pd)->BobCC; 134 CallControl *BobCC = ((thread_data *) pd)->BobCC;
134 uint32_t friend_number = ((thread_data*) pd)->friend_number; 135 uint32_t friend_number = ((thread_data *) pd)->friend_number;
135 136
136 137
137 memset(AliceCC, 0, sizeof(CallControl)); 138 memset(AliceCC, 0, sizeof(CallControl));
138 memset(BobCC, 0, sizeof(CallControl)); 139 memset(BobCC, 0, sizeof(CallControl));
139 140
140 { /* Call */ 141 { /* Call */
141 TOXAV_ERR_CALL rc; 142 TOXAV_ERR_CALL rc;
142 toxav_call(AliceAV, friend_number, 48, 3000, &rc); 143 toxav_call(AliceAV, friend_number, 48, 3000, &rc);
143 144
144 if (rc != TOXAV_ERR_CALL_OK) { 145 if (rc != TOXAV_ERR_CALL_OK) {
145 printf("toxav_call failed: %d\n", rc); 146 printf("toxav_call failed: %d\n", rc);
146 ck_assert(0); 147 ck_assert(0);
147 } 148 }
148 } 149 }
149 150
150 while (!BobCC->incoming) 151 while (!BobCC->incoming)
151 c_sleep(10); 152 c_sleep(10);
152 153
153 { /* Answer */ 154 { /* Answer */
154 TOXAV_ERR_ANSWER rc; 155 TOXAV_ERR_ANSWER rc;
155 toxav_answer(BobAV, 0, 8, 500, &rc); 156 toxav_answer(BobAV, 0, 8, 500, &rc);
156 157
157 if (rc != TOXAV_ERR_ANSWER_OK) { 158 if (rc != TOXAV_ERR_ANSWER_OK) {
158 printf("toxav_answer failed: %d\n", rc); 159 printf("toxav_answer failed: %d\n", rc);
159 ck_assert(0); 160 ck_assert(0);
160 } 161 }
161 } 162 }
162 163
163 c_sleep(30); 164 c_sleep(30);
164 165
165 int16_t PCM[960]; 166 int16_t PCM[960];
166 uint8_t video_y[800*600]; 167 uint8_t video_y[800 * 600];
167 uint8_t video_u[800*600 / 2]; 168 uint8_t video_u[800 * 600 / 2];
168 uint8_t video_v[800*600 / 2]; 169 uint8_t video_v[800 * 600 / 2];
169 170
170 memset(PCM, 0, sizeof(PCM)); 171 memset(PCM, 0, sizeof(PCM));
171 memset(video_y, 0, sizeof(video_y)); 172 memset(video_y, 0, sizeof(video_y));
172 memset(video_u, 0, sizeof(video_u)); 173 memset(video_u, 0, sizeof(video_u));
173 memset(video_v, 0, sizeof(video_v)); 174 memset(video_v, 0, sizeof(video_v));
174 175
175 time_t start_time = time(NULL); 176 time_t start_time = time(NULL);
176 while(time(NULL) - start_time < 4) { 177
178 while (time(NULL) - start_time < 4) {
177 toxav_iterate(AliceAV); 179 toxav_iterate(AliceAV);
178 toxav_iterate(BobAV); 180 toxav_iterate(BobAV);
179 181
180 toxav_audio_send_frame(AliceAV, friend_number, PCM, 960, 1, 48000, NULL); 182 toxav_audio_send_frame(AliceAV, friend_number, PCM, 960, 1, 48000, NULL);
181 toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL); 183 toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL);
182 184
183 toxav_video_send_frame(AliceAV, friend_number, 800, 600, video_y, video_u, video_v, NULL); 185 toxav_video_send_frame(AliceAV, friend_number, 800, 600, video_y, video_u, video_v, NULL);
184 toxav_video_send_frame(BobAV, 0, 800, 600, video_y, video_u, video_v, NULL); 186 toxav_video_send_frame(BobAV, 0, 800, 600, video_y, video_u, video_v, NULL);
185 187
186 c_sleep(10); 188 c_sleep(10);
187 } 189 }
188 190
189 { /* Hangup */ 191 { /* Hangup */
190 TOXAV_ERR_CALL_CONTROL rc; 192 TOXAV_ERR_CALL_CONTROL rc;
191 toxav_call_control(AliceAV, friend_number, TOXAV_CALL_CONTROL_CANCEL, &rc); 193 toxav_call_control(AliceAV, friend_number, TOXAV_CALL_CONTROL_CANCEL, &rc);
192 194
193 if (rc != TOXAV_ERR_CALL_CONTROL_OK) { 195 if (rc != TOXAV_ERR_CALL_CONTROL_OK) {
194 printf("toxav_call_control failed: %d %p %p\n", rc, AliceAV, BobAV); 196 printf("toxav_call_control failed: %d %p %p\n", rc, AliceAV, BobAV);
195 } 197 }
196 } 198 }
197 199
198 c_sleep(30); 200 c_sleep(30);
199 201
200 printf ("Closing thread\n"); 202 printf ("Closing thread\n");
201 pthread_exit(NULL); 203 pthread_exit(NULL);
202} 204}
@@ -204,111 +206,112 @@ void* call_thread(void* pd)
204 206
205START_TEST(test_AV_three_calls) 207START_TEST(test_AV_three_calls)
206{ 208{
207 Tox* Alice, *bootstrap, *Bobs[3]; 209 Tox *Alice, *bootstrap, *Bobs[3];
208 ToxAV* AliceAV, *BobsAV[3]; 210 ToxAV *AliceAV, *BobsAV[3];
209 211
210 CallControl AliceCC[3], BobsCC[3]; 212 CallControl AliceCC[3], BobsCC[3];
211 213
212 { 214 {
213 TOX_ERR_NEW error; 215 TOX_ERR_NEW error;
214 216
215 bootstrap = tox_new(NULL, &error); 217 bootstrap = tox_new(NULL, &error);
216 ck_assert(error == TOX_ERR_NEW_OK); 218 ck_assert(error == TOX_ERR_NEW_OK);
217 219
218 Alice = tox_new(NULL, &error); 220 Alice = tox_new(NULL, &error);
219 ck_assert(error == TOX_ERR_NEW_OK); 221 ck_assert(error == TOX_ERR_NEW_OK);
220 222
221 Bobs[0] = tox_new(NULL, &error); 223 Bobs[0] = tox_new(NULL, &error);
222 ck_assert(error == TOX_ERR_NEW_OK); 224 ck_assert(error == TOX_ERR_NEW_OK);
223 225
224 Bobs[1] = tox_new(NULL, &error); 226 Bobs[1] = tox_new(NULL, &error);
225 ck_assert(error == TOX_ERR_NEW_OK); 227 ck_assert(error == TOX_ERR_NEW_OK);
226 228
227 Bobs[2] = tox_new(NULL, &error); 229 Bobs[2] = tox_new(NULL, &error);
228 ck_assert(error == TOX_ERR_NEW_OK); 230 ck_assert(error == TOX_ERR_NEW_OK);
229 } 231 }
230 232
231 printf("Created 5 instances of Tox\n"); 233 printf("Created 5 instances of Tox\n");
232 printf("Preparing network...\n"); 234 printf("Preparing network...\n");
233 long long unsigned int cur_time = time(NULL); 235 long long unsigned int cur_time = time(NULL);
234 236
235 uint32_t to_compare = 974536; 237 uint32_t to_compare = 974536;
236 uint8_t address[TOX_ADDRESS_SIZE]; 238 uint8_t address[TOX_ADDRESS_SIZE];
237 239
238 tox_callback_friend_request(Alice, t_accept_friend_request_cb, &to_compare); 240 tox_callback_friend_request(Alice, t_accept_friend_request_cb, &to_compare);
239 tox_self_get_address(Alice, address); 241 tox_self_get_address(Alice, address);
240 242
241 243
242 ck_assert(tox_friend_add(Bobs[0], address, (uint8_t *)"gentoo", 7, NULL) != (uint32_t) ~0); 244 ck_assert(tox_friend_add(Bobs[0], address, (uint8_t *)"gentoo", 7, NULL) != (uint32_t) ~0);
243 ck_assert(tox_friend_add(Bobs[1], address, (uint8_t *)"gentoo", 7, NULL) != (uint32_t) ~0); 245 ck_assert(tox_friend_add(Bobs[1], address, (uint8_t *)"gentoo", 7, NULL) != (uint32_t) ~0);
244 ck_assert(tox_friend_add(Bobs[2], address, (uint8_t *)"gentoo", 7, NULL) != (uint32_t) ~0); 246 ck_assert(tox_friend_add(Bobs[2], address, (uint8_t *)"gentoo", 7, NULL) != (uint32_t) ~0);
245 247
246 uint8_t off = 1; 248 uint8_t off = 1;
247 249
248 while (1) { 250 while (1) {
249 tox_iterate(bootstrap); 251 tox_iterate(bootstrap);
250 tox_iterate(Alice); 252 tox_iterate(Alice);
251 tox_iterate(Bobs[0]); 253 tox_iterate(Bobs[0]);
252 tox_iterate(Bobs[1]); 254 tox_iterate(Bobs[1]);
253 tox_iterate(Bobs[2]); 255 tox_iterate(Bobs[2]);
254 256
255 if (tox_self_get_connection_status(bootstrap) && 257 if (tox_self_get_connection_status(bootstrap) &&
256 tox_self_get_connection_status(Alice) && 258 tox_self_get_connection_status(Alice) &&
257 tox_self_get_connection_status(Bobs[0]) && 259 tox_self_get_connection_status(Bobs[0]) &&
258 tox_self_get_connection_status(Bobs[1]) && 260 tox_self_get_connection_status(Bobs[1]) &&
259 tox_self_get_connection_status(Bobs[2]) && off) { 261 tox_self_get_connection_status(Bobs[2]) && off) {
260 printf("Toxes are online, took %llu seconds\n", time(NULL) - cur_time); 262 printf("Toxes are online, took %llu seconds\n", time(NULL) - cur_time);
261 off = 0; 263 off = 0;
262 } 264 }
263 265
264 if (tox_friend_get_connection_status(Alice, 0, NULL) == TOX_CONNECTION_UDP && 266 if (tox_friend_get_connection_status(Alice, 0, NULL) == TOX_CONNECTION_UDP &&
265 tox_friend_get_connection_status(Alice, 1, NULL) == TOX_CONNECTION_UDP && 267 tox_friend_get_connection_status(Alice, 1, NULL) == TOX_CONNECTION_UDP &&
266 tox_friend_get_connection_status(Alice, 2, NULL) == TOX_CONNECTION_UDP && 268 tox_friend_get_connection_status(Alice, 2, NULL) == TOX_CONNECTION_UDP &&
267 tox_friend_get_connection_status(Bobs[0], 0, NULL) == TOX_CONNECTION_UDP && 269 tox_friend_get_connection_status(Bobs[0], 0, NULL) == TOX_CONNECTION_UDP &&
268 tox_friend_get_connection_status(Bobs[1], 0, NULL) == TOX_CONNECTION_UDP && 270 tox_friend_get_connection_status(Bobs[1], 0, NULL) == TOX_CONNECTION_UDP &&
269 tox_friend_get_connection_status(Bobs[2], 0, NULL) == TOX_CONNECTION_UDP) 271 tox_friend_get_connection_status(Bobs[2], 0, NULL) == TOX_CONNECTION_UDP)
270 break; 272 break;
271 273
272 c_sleep(20); 274 c_sleep(20);
273 } 275 }
274 276
275 AliceAV = setup_av_instance(Alice, AliceCC); 277 AliceAV = setup_av_instance(Alice, AliceCC);
276 BobsAV[0] = setup_av_instance(Bobs[0], BobsCC + 0); 278 BobsAV[0] = setup_av_instance(Bobs[0], BobsCC + 0);
277 BobsAV[1] = setup_av_instance(Bobs[1], BobsCC + 1); 279 BobsAV[1] = setup_av_instance(Bobs[1], BobsCC + 1);
278 BobsAV[2] = setup_av_instance(Bobs[2], BobsCC + 2); 280 BobsAV[2] = setup_av_instance(Bobs[2], BobsCC + 2);
279 281
280 printf("Created 4 instances of ToxAV\n"); 282 printf("Created 4 instances of ToxAV\n");
281 printf("All set after %llu seconds!\n", time(NULL) - cur_time); 283 printf("All set after %llu seconds!\n", time(NULL) - cur_time);
282 284
283 thread_data tds[3]; 285 thread_data tds[3];
284 tds[0].AliceAV = AliceAV; 286 tds[0].AliceAV = AliceAV;
285 tds[0].BobAV = BobsAV[0]; 287 tds[0].BobAV = BobsAV[0];
286 tds[0].AliceCC = AliceCC + 0; 288 tds[0].AliceCC = AliceCC + 0;
287 tds[0].BobCC = BobsCC + 0; 289 tds[0].BobCC = BobsCC + 0;
288 tds[0].friend_number = 0; 290 tds[0].friend_number = 0;
289 291
290 tds[1].AliceAV = AliceAV; 292 tds[1].AliceAV = AliceAV;
291 tds[1].BobAV = BobsAV[1]; 293 tds[1].BobAV = BobsAV[1];
292 tds[1].AliceCC = AliceCC + 1; 294 tds[1].AliceCC = AliceCC + 1;
293 tds[1].BobCC = BobsCC + 1; 295 tds[1].BobCC = BobsCC + 1;
294 tds[1].friend_number = 1; 296 tds[1].friend_number = 1;
295 297
296 tds[2].AliceAV = AliceAV; 298 tds[2].AliceAV = AliceAV;
297 tds[2].BobAV = BobsAV[2]; 299 tds[2].BobAV = BobsAV[2];
298 tds[2].AliceCC = AliceCC + 2; 300 tds[2].AliceCC = AliceCC + 2;
299 tds[2].BobCC = BobsCC + 2; 301 tds[2].BobCC = BobsCC + 2;
300 tds[2].friend_number = 2; 302 tds[2].friend_number = 2;
301 303
302 pthread_t tids[3]; 304 pthread_t tids[3];
303 (void) pthread_create(tids + 0, NULL, call_thread, tds + 0); 305 (void) pthread_create(tids + 0, NULL, call_thread, tds + 0);
304 (void) pthread_create(tids + 1, NULL, call_thread, tds + 1); 306 (void) pthread_create(tids + 1, NULL, call_thread, tds + 1);
305 (void) pthread_create(tids + 2, NULL, call_thread, tds + 2); 307 (void) pthread_create(tids + 2, NULL, call_thread, tds + 2);
306 308
307 (void) pthread_detach(tids[0]); 309 (void) pthread_detach(tids[0]);
308 (void) pthread_detach(tids[1]); 310 (void) pthread_detach(tids[1]);
309 (void) pthread_detach(tids[2]); 311 (void) pthread_detach(tids[2]);
310 312
311 time_t start_time = time(NULL); 313 time_t start_time = time(NULL);
314
312 while (time(NULL) - start_time < 5) { 315 while (time(NULL) - start_time < 5) {
313 tox_iterate(Alice); 316 tox_iterate(Alice);
314 tox_iterate(Bobs[0]); 317 tox_iterate(Bobs[0]);
@@ -316,11 +319,11 @@ START_TEST(test_AV_three_calls)
316 tox_iterate(Bobs[2]); 319 tox_iterate(Bobs[2]);
317 c_sleep(20); 320 c_sleep(20);
318 } 321 }
319 322
320 (void) pthread_join(tids[0], NULL); 323 (void) pthread_join(tids[0], NULL);
321 (void) pthread_join(tids[1], NULL); 324 (void) pthread_join(tids[1], NULL);
322 (void) pthread_join(tids[2], NULL); 325 (void) pthread_join(tids[2], NULL);
323 326
324 printf ("Killing all instances\n"); 327 printf ("Killing all instances\n");
325 toxav_kill(BobsAV[0]); 328 toxav_kill(BobsAV[0]);
326 toxav_kill(BobsAV[1]); 329 toxav_kill(BobsAV[1]);
@@ -331,7 +334,7 @@ START_TEST(test_AV_three_calls)
331 tox_kill(Bobs[2]); 334 tox_kill(Bobs[2]);
332 tox_kill(Alice); 335 tox_kill(Alice);
333 tox_kill(bootstrap); 336 tox_kill(bootstrap);
334 337
335 printf("\nTest successful!\n"); 338 printf("\nTest successful!\n");
336} 339}
337END_TEST 340END_TEST
@@ -342,7 +345,7 @@ int main(int argc, char *argv[])
342{ 345{
343 (void) argc; 346 (void) argc;
344 (void) argv; 347 (void) argv;
345 348
346 test_AV_three_calls(); 349 test_AV_three_calls();
347 return 0; 350 return 0;
348} 351}
@@ -363,7 +366,7 @@ int main(int argc, char *argv[])
363{ 366{
364 (void) argc; 367 (void) argc;
365 (void) argv; 368 (void) argv;
366 369
367 Suite *tox = tox_suite(); 370 Suite *tox = tox_suite();
368 SRunner *test_runner = srunner_create(tox); 371 SRunner *test_runner = srunner_create(tox);
369 372