diff options
author | hugbubby <hugbubby@protonmail.com> | 2018-07-15 20:55:45 -0700 |
---|---|---|
committer | iphydf <iphydf@users.noreply.github.com> | 2018-07-23 15:10:22 +0000 |
commit | c4d58403f966328fb26e062b71adf05842ff3039 (patch) | |
tree | 6fd8129885666eac4595036b424c6b2e9a8439dc /auto_tests/file_transfer_test.c | |
parent | f627a26a7b1c3619ba66f84b87092ff8ba7a95b6 (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.c | 144 |
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; | |||
40 | static void tox_file_receive(Tox *tox, uint32_t friend_number, uint32_t file_number, uint32_t kind, uint64_t filesize, | 40 | static 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; | |||
114 | static void tox_file_chunk_request(Tox *tox, uint32_t friend_number, uint32_t file_number, uint64_t position, | 100 | static 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; | |||
160 | static void write_file(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, const uint8_t *data, | 138 | static 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 | ||
183 | static void file_transfer_test(void) | 157 | static 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); |