summaryrefslogtreecommitdiff
path: root/auto_tests/file_transfer_test.c
diff options
context:
space:
mode:
authorhugbubby <hugbubby@protonmail.com>2018-07-15 20:55:45 -0700
committeriphydf <iphydf@users.noreply.github.com>2018-07-23 15:10:22 +0000
commitc4d58403f966328fb26e062b71adf05842ff3039 (patch)
tree6fd8129885666eac4595036b424c6b2e9a8439dc /auto_tests/file_transfer_test.c
parentf627a26a7b1c3619ba66f84b87092ff8ba7a95b6 (diff)
More fixed_width ints and incorporating file_saving_test.c
The file_saving_test.c was not included in the cmake list and thus was ignored by travis and "make check". I found this out while introducing ck_assert_msg into the integration test. Furthermore, removed some variable width integers from encryptsave_test.c, and the SRunner utilization. Implemmented ck_assert_msg, reorganized some loops, and removed some longs in file_transfer_test.c.
Diffstat (limited to 'auto_tests/file_transfer_test.c')
-rw-r--r--auto_tests/file_transfer_test.c144
1 files changed, 53 insertions, 91 deletions
diff --git a/auto_tests/file_transfer_test.c b/auto_tests/file_transfer_test.c
index 94bdb42f..9af339e5 100644
--- a/auto_tests/file_transfer_test.c
+++ b/auto_tests/file_transfer_test.c
@@ -40,29 +40,20 @@ static uint64_t file_size;
40static void tox_file_receive(Tox *tox, uint32_t friend_number, uint32_t file_number, uint32_t kind, uint64_t filesize, 40static void tox_file_receive(Tox *tox, uint32_t friend_number, uint32_t file_number, uint32_t kind, uint64_t filesize,
41 const uint8_t *filename, size_t filename_length, void *userdata) 41 const uint8_t *filename, size_t filename_length, void *userdata)
42{ 42{
43 if (kind != TOX_FILE_KIND_DATA) { 43 ck_assert_msg(kind == TOX_FILE_KIND_DATA, "bad kind");
44 ck_abort_msg("Bad kind");
45 }
46 44
47 if (!(filename_length == sizeof("Gentoo.exe") && memcmp(filename, "Gentoo.exe", sizeof("Gentoo.exe")) == 0)) { 45 ck_assert_msg(filename_length == sizeof("Gentoo.exe")
48 ck_abort_msg("Bad filename"); 46 && memcmp(filename, "Gentoo.exe", sizeof("Gentoo.exe")) == 0, "bad filename");
49 }
50 47
51 uint8_t file_id[TOX_FILE_ID_LENGTH]; 48 uint8_t file_id[TOX_FILE_ID_LENGTH];
52 49
53 if (!tox_file_get_file_id(tox, friend_number, file_number, file_id, nullptr)) { 50 ck_assert_msg(tox_file_get_file_id(tox, friend_number, file_number, file_id, nullptr), "tox_file_get_file_id error");
54 ck_abort_msg("tox_file_get_file_id error");
55 }
56 51
57 if (memcmp(file_id, file_cmp_id, TOX_FILE_ID_LENGTH) != 0) { 52 ck_assert_msg(memcmp(file_id, file_cmp_id, TOX_FILE_ID_LENGTH) == 0, "bad file_id");
58 ck_abort_msg("bad file_id");
59 }
60 53
61 uint8_t empty[TOX_FILE_ID_LENGTH] = {0}; 54 uint8_t empty[TOX_FILE_ID_LENGTH] = {0};
62 55
63 if (memcmp(empty, file_cmp_id, TOX_FILE_ID_LENGTH) == 0) { 56 ck_assert_msg(memcmp(empty, file_cmp_id, TOX_FILE_ID_LENGTH) != 0, "empty file_id");
64 ck_abort_msg("empty file_id");
65 }
66 57
67 file_size = filesize; 58 file_size = filesize;
68 59
@@ -71,28 +62,23 @@ static void tox_file_receive(Tox *tox, uint32_t friend_number, uint32_t file_num
71 62
72 TOX_ERR_FILE_SEEK err_s; 63 TOX_ERR_FILE_SEEK err_s;
73 64
74 if (!tox_file_seek(tox, friend_number, file_number, 1337, &err_s)) { 65 ck_assert_msg(tox_file_seek(tox, friend_number, file_number, 1337, &err_s), "tox_file_seek error");
75 ck_abort_msg("tox_file_seek error");
76 }
77 66
78 ck_assert_msg(err_s == TOX_ERR_FILE_SEEK_OK, "tox_file_seek wrong error"); 67 ck_assert_msg(err_s == TOX_ERR_FILE_SEEK_OK, "tox_file_seek wrong error");
68
79 } else { 69 } else {
80 sending_pos = size_recv = 0; 70 sending_pos = size_recv = 0;
81 } 71 }
82 72
83 TOX_ERR_FILE_CONTROL error; 73 TOX_ERR_FILE_CONTROL error;
84 74
85 if (tox_file_control(tox, friend_number, file_number, TOX_FILE_CONTROL_RESUME, &error)) { 75 ck_assert_msg(tox_file_control(tox, friend_number, file_number, TOX_FILE_CONTROL_RESUME, &error),
86 ++file_accepted; 76 "tox_file_control failed. %i", error);
87 } else { 77 ++file_accepted;
88 ck_abort_msg("tox_file_control failed. %i", error);
89 }
90 78
91 TOX_ERR_FILE_SEEK err_s; 79 TOX_ERR_FILE_SEEK err_s;
92 80
93 if (tox_file_seek(tox, friend_number, file_number, 1234, &err_s)) { 81 ck_assert_msg(!tox_file_seek(tox, friend_number, file_number, 1234, &err_s), "tox_file_seek no error");
94 ck_abort_msg("tox_file_seek no error");
95 }
96 82
97 ck_assert_msg(err_s == TOX_ERR_FILE_SEEK_DENIED, "tox_file_seek wrong error"); 83 ck_assert_msg(err_s == TOX_ERR_FILE_SEEK_DENIED, "tox_file_seek wrong error");
98} 84}
@@ -114,27 +100,19 @@ static bool file_sending_done;
114static void tox_file_chunk_request(Tox *tox, uint32_t friend_number, uint32_t file_number, uint64_t position, 100static void tox_file_chunk_request(Tox *tox, uint32_t friend_number, uint32_t file_number, uint64_t position,
115 size_t length, void *user_data) 101 size_t length, void *user_data)
116{ 102{
117 if (!sendf_ok) { 103 ck_assert_msg(sendf_ok, "didn't get resume control");
118 ck_abort_msg("Didn't get resume control");
119 }
120 104
121 if (sending_pos != position) { 105 ck_assert_msg(sending_pos == position, "bad position %lu", (unsigned long)position);
122 ck_abort_msg("Bad position %llu", (unsigned long long)position);
123 }
124 106
125 if (length == 0) { 107 if (length == 0) {
126 if (file_sending_done) { 108 ck_assert_msg(!file_sending_done, "file sending already done");
127 ck_abort_msg("File sending already done.");
128 }
129 109
130 file_sending_done = 1; 110 file_sending_done = 1;
131 return; 111 return;
132 } 112 }
133 113
134 if (position + length > max_sending) { 114 if (position + length > max_sending) {
135 if (m_send_reached) { 115 ck_assert_msg(!m_send_reached, "requested done file transfer");
136 ck_abort_msg("Requested done file transfer.");
137 }
138 116
139 length = max_sending - position; 117 length = max_sending - position;
140 m_send_reached = 1; 118 m_send_reached = 1;
@@ -146,9 +124,9 @@ static void tox_file_chunk_request(Tox *tox, uint32_t friend_number, uint32_t fi
146 TOX_ERR_FILE_SEND_CHUNK error; 124 TOX_ERR_FILE_SEND_CHUNK error;
147 tox_file_send_chunk(tox, friend_number, file_number, position, f_data, length, &error); 125 tox_file_send_chunk(tox, friend_number, file_number, position, f_data, length, &error);
148 126
149 if (error != TOX_ERR_FILE_SEND_CHUNK_OK) { 127
150 ck_abort_msg("Could not send chunk, error num=%d pos=%d len=%d", (int)error, (int)position, (int)length); 128 ck_assert_msg(error == TOX_ERR_FILE_SEND_CHUNK_OK,
151 } 129 "could not send chunk, error num=%d pos=%d len=%d", (int)error, (int)position, (int)length);
152 130
153 ++sending_num; 131 ++sending_num;
154 sending_pos += length; 132 sending_pos += length;
@@ -160,9 +138,7 @@ static bool file_recv;
160static void write_file(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, const uint8_t *data, 138static void write_file(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, const uint8_t *data,
161 size_t length, void *user_data) 139 size_t length, void *user_data)
162{ 140{
163 if (size_recv != position) { 141 ck_assert_msg(size_recv == position, "bad position");
164 ck_abort_msg("Bad position");
165 }
166 142
167 if (length == 0) { 143 if (length == 0) {
168 file_recv = 1; 144 file_recv = 1;
@@ -173,11 +149,9 @@ static void write_file(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uin
173 memset(f_data, num, length); 149 memset(f_data, num, length);
174 ++num; 150 ++num;
175 151
176 if (memcmp(f_data, data, length) == 0) { 152 ck_assert_msg(memcmp(f_data, data, length) == 0, "FILE_CORRUPTED");
177 size_recv += length; 153
178 } else { 154 size_recv += length;
179 ck_abort_msg("FILE_CORRUPTED");
180 }
181} 155}
182 156
183static void file_transfer_test(void) 157static void file_transfer_test(void)
@@ -233,7 +207,7 @@ static void file_transfer_test(void)
233 file_accepted = file_size = sendf_ok = size_recv = 0; 207 file_accepted = file_size = sendf_ok = size_recv = 0;
234 file_recv = 0; 208 file_recv = 0;
235 max_sending = UINT64_MAX; 209 max_sending = UINT64_MAX;
236 long long unsigned int f_time = time(nullptr); 210 uint64_t f_time = time(nullptr);
237 tox_callback_file_recv_chunk(tox3, write_file); 211 tox_callback_file_recv_chunk(tox3, write_file);
238 tox_callback_file_recv_control(tox2, file_print_control); 212 tox_callback_file_recv_control(tox2, file_print_control);
239 tox_callback_file_chunk_request(tox2, tox_file_chunk_request); 213 tox_callback_file_chunk_request(tox2, tox_file_chunk_request);
@@ -260,15 +234,13 @@ static void file_transfer_test(void)
260 tox_iterate(tox3, nullptr); 234 tox_iterate(tox3, nullptr);
261 235
262 if (file_sending_done) { 236 if (file_sending_done) {
263 if (sendf_ok && file_recv && totalf_size == file_size && size_recv == file_size && sending_pos == size_recv 237 ck_assert_msg(sendf_ok && file_recv && totalf_size == file_size && size_recv == file_size && sending_pos == size_recv
264 && file_accepted == 1) { 238 && file_accepted == 1,
265 break; 239 "Something went wrong in file transfer %u %u %u %u %u %u %lu %lu %lu",
266 } 240 sendf_ok, file_recv, totalf_size == file_size, size_recv == file_size, sending_pos == size_recv,
267 241 file_accepted == 1, (unsigned long)totalf_size, (unsigned long)size_recv,
268 ck_abort_msg("Something went wrong in file transfer %u %u %u %u %u %u %lu %lu %lu", sendf_ok, file_recv, 242 (unsigned long)sending_pos);
269 totalf_size == file_size, size_recv == file_size, sending_pos == size_recv, file_accepted == 1, 243 break;
270 (unsigned long)totalf_size, (unsigned long)size_recv,
271 (unsigned long)sending_pos);
272 } 244 }
273 245
274 uint32_t tox1_interval = tox_iteration_interval(tox1); 246 uint32_t tox1_interval = tox_iteration_interval(tox1);
@@ -290,7 +262,7 @@ static void file_transfer_test(void)
290 (unsigned long)totalf_size, (unsigned long)size_recv, 262 (unsigned long)totalf_size, (unsigned long)size_recv,
291 (unsigned long)sending_pos); 263 (unsigned long)sending_pos);
292 264
293 printf("100MiB file sent in %llu seconds\n", time(nullptr) - f_time); 265 printf("100MiB file sent in %lu seconds\n", (unsigned long)(time(nullptr) - f_time));
294 266
295 printf("Starting file streaming transfer test.\n"); 267 printf("Starting file streaming transfer test.\n");
296 268
@@ -320,23 +292,11 @@ static void file_transfer_test(void)
320 max_sending = 100 * 1024; 292 max_sending = 100 * 1024;
321 m_send_reached = 0; 293 m_send_reached = 0;
322 294
323 while (1) { 295 while (!file_sending_done) {
324 tox_iterate(tox1, nullptr); 296 tox_iterate(tox1, nullptr);
325 tox_iterate(tox2, nullptr); 297 tox_iterate(tox2, nullptr);
326 tox_iterate(tox3, nullptr); 298 tox_iterate(tox3, nullptr);
327 299
328 if (file_sending_done) {
329 if (sendf_ok && file_recv && m_send_reached && totalf_size == file_size && size_recv == max_sending
330 && sending_pos == size_recv && file_accepted == 1) {
331 break;
332 }
333
334 ck_abort_msg("Something went wrong in file transfer %u %u %u %u %u %u %u %llu %llu %llu %llu", sendf_ok, file_recv,
335 m_send_reached, totalf_size == file_size, size_recv == max_sending, sending_pos == size_recv, file_accepted == 1,
336 (unsigned long long)totalf_size, (unsigned long long)file_size,
337 (unsigned long long)size_recv, (unsigned long long)sending_pos);
338 }
339
340 uint32_t tox1_interval = tox_iteration_interval(tox1); 300 uint32_t tox1_interval = tox_iteration_interval(tox1);
341 uint32_t tox2_interval = tox_iteration_interval(tox2); 301 uint32_t tox2_interval = tox_iteration_interval(tox2);
342 uint32_t tox3_interval = tox_iteration_interval(tox3); 302 uint32_t tox3_interval = tox_iteration_interval(tox3);
@@ -344,7 +304,14 @@ static void file_transfer_test(void)
344 c_sleep(min_u32(tox1_interval, min_u32(tox2_interval, tox3_interval))); 304 c_sleep(min_u32(tox1_interval, min_u32(tox2_interval, tox3_interval)));
345 } 305 }
346 306
347 printf("Starting file 0 transfer test.\n"); 307 ck_assert_msg(sendf_ok && file_recv && m_send_reached && totalf_size == file_size && size_recv == max_sending
308 && sending_pos == size_recv && file_accepted == 1,
309 "something went wrong in file transfer %u %u %u %u %u %u %u %lu %lu %lu %lu", sendf_ok, file_recv,
310 m_send_reached, totalf_size == file_size, size_recv == max_sending, sending_pos == size_recv, file_accepted == 1,
311 (unsigned long)totalf_size, (unsigned long)file_size,
312 (unsigned long)size_recv, (unsigned long)sending_pos);
313
314 printf("starting file 0 transfer test.\n");
348 315
349 file_sending_done = 0; 316 file_sending_done = 0;
350 file_accepted = 0; 317 file_accepted = 0;
@@ -369,30 +336,25 @@ static void file_transfer_test(void)
369 ck_assert_msg(tox_file_get_file_id(tox2, 0, fnum, file_cmp_id, &gfierr), "tox_file_get_file_id failed"); 336 ck_assert_msg(tox_file_get_file_id(tox2, 0, fnum, file_cmp_id, &gfierr), "tox_file_get_file_id failed");
370 ck_assert_msg(gfierr == TOX_ERR_FILE_GET_OK, "wrong error"); 337 ck_assert_msg(gfierr == TOX_ERR_FILE_GET_OK, "wrong error");
371 338
372 while (1) { 339 while (!file_sending_done) {
373 tox_iterate(tox1, nullptr);
374 tox_iterate(tox2, nullptr);
375 tox_iterate(tox3, nullptr);
376
377 if (file_sending_done) {
378 if (sendf_ok && file_recv && totalf_size == file_size && size_recv == file_size && sending_pos == size_recv
379 && file_accepted == 1) {
380 break;
381 }
382
383 ck_abort_msg("Something went wrong in file transfer %u %u %u %u %u %u %llu %llu %llu", sendf_ok, file_recv,
384 totalf_size == file_size, size_recv == file_size, sending_pos == size_recv, file_accepted == 1,
385 (unsigned long long)totalf_size, (unsigned long long)size_recv,
386 (unsigned long long)sending_pos);
387 }
388
389 uint32_t tox1_interval = tox_iteration_interval(tox1); 340 uint32_t tox1_interval = tox_iteration_interval(tox1);
390 uint32_t tox2_interval = tox_iteration_interval(tox2); 341 uint32_t tox2_interval = tox_iteration_interval(tox2);
391 uint32_t tox3_interval = tox_iteration_interval(tox3); 342 uint32_t tox3_interval = tox_iteration_interval(tox3);
392 343
393 c_sleep(min_u32(tox1_interval, min_u32(tox2_interval, tox3_interval))); 344 c_sleep(min_u32(tox1_interval, min_u32(tox2_interval, tox3_interval)));
345
346 tox_iterate(tox1, nullptr);
347 tox_iterate(tox2, nullptr);
348 tox_iterate(tox3, nullptr);
394 } 349 }
395 350
351 ck_assert_msg(sendf_ok && file_recv && totalf_size == file_size && size_recv == file_size
352 && sending_pos == size_recv && file_accepted == 1,
353 "something went wrong in file transfer %u %u %u %u %u %u %llu %llu %llu", sendf_ok, file_recv,
354 totalf_size == file_size, size_recv == file_size, sending_pos == size_recv, file_accepted == 1,
355 (unsigned long long)totalf_size, (unsigned long long)size_recv,
356 (unsigned long long)sending_pos);
357
396 printf("file_transfer_test succeeded, took %llu seconds\n", time(nullptr) - cur_time); 358 printf("file_transfer_test succeeded, took %llu seconds\n", time(nullptr) - cur_time);
397 359
398 tox_kill(tox1); 360 tox_kill(tox1);