summaryrefslogtreecommitdiff
path: root/auto_tests
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
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')
-rw-r--r--auto_tests/encryptsave_test.c48
-rw-r--r--auto_tests/file_saving_test.c37
-rw-r--r--auto_tests/file_transfer_test.c144
3 files changed, 80 insertions, 149 deletions
diff --git a/auto_tests/encryptsave_test.c b/auto_tests/encryptsave_test.c
index 365a9dbb..41a4ed5c 100644
--- a/auto_tests/encryptsave_test.c
+++ b/auto_tests/encryptsave_test.c
@@ -40,22 +40,21 @@ static void accept_friend_request(Tox *m, const uint8_t *public_key, const uint8
40 } 40 }
41} 41}
42 42
43START_TEST(test_known_kdf) 43static void test_known_kdf(void)
44{ 44{
45 unsigned char out[CRYPTO_SHARED_KEY_SIZE]; 45 unsigned char out[CRYPTO_SHARED_KEY_SIZE];
46 int res = crypto_pwhash_scryptsalsa208sha256(out, 46 int16_t res = crypto_pwhash_scryptsalsa208sha256(out,
47 CRYPTO_SHARED_KEY_SIZE, 47 CRYPTO_SHARED_KEY_SIZE,
48 pw, 48 pw,
49 pwlen, 49 pwlen,
50 test_salt, 50 test_salt,
51 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE * 8, 51 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE * 8,
52 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE); 52 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE);
53 ck_assert_msg(res != -1, "crypto function failed"); 53 ck_assert_msg(res != -1, "crypto function failed");
54 ck_assert_msg(memcmp(out, known_key, CRYPTO_SHARED_KEY_SIZE) == 0, "derived key is wrong"); 54 ck_assert_msg(memcmp(out, known_key, CRYPTO_SHARED_KEY_SIZE) == 0, "derived key is wrong");
55} 55}
56END_TEST
57 56
58START_TEST(test_save_friend) 57static void test_save_friend(void)
59{ 58{
60 Tox *tox1 = tox_new_log(nullptr, nullptr, nullptr); 59 Tox *tox1 = tox_new_log(nullptr, nullptr, nullptr);
61 Tox *tox2 = tox_new_log(nullptr, nullptr, nullptr); 60 Tox *tox2 = tox_new_log(nullptr, nullptr, nullptr);
@@ -137,9 +136,8 @@ START_TEST(test_save_friend)
137 tox_kill(tox3); 136 tox_kill(tox3);
138 tox_kill(tox4); 137 tox_kill(tox4);
139} 138}
140END_TEST
141 139
142START_TEST(test_keys) 140static void test_keys(void)
143{ 141{
144 TOX_ERR_ENCRYPTION encerr; 142 TOX_ERR_ENCRYPTION encerr;
145 TOX_ERR_DECRYPTION decerr; 143 TOX_ERR_DECRYPTION decerr;
@@ -188,31 +186,13 @@ START_TEST(test_keys)
188 tox_pass_key_free(key2); 186 tox_pass_key_free(key2);
189 tox_pass_key_free(key); 187 tox_pass_key_free(key);
190} 188}
191END_TEST
192
193static Suite *encryptsave_suite(void)
194{
195 Suite *s = suite_create("encryptsave");
196
197 DEFTESTCASE_SLOW(known_kdf, 60);
198 DEFTESTCASE_SLOW(save_friend, 20);
199 DEFTESTCASE_SLOW(keys, 30);
200
201 return s;
202}
203 189
204int main(void) 190int main(void)
205{ 191{
206 setvbuf(stdout, nullptr, _IONBF, 0); 192 setvbuf(stdout, nullptr, _IONBF, 0);
193 test_known_kdf();
194 test_save_friend();
195 test_keys();
207 196
208 Suite *encryptsave = encryptsave_suite(); 197 return 0;
209 SRunner *test_runner = srunner_create(encryptsave);
210
211 int number_failed = 0;
212 srunner_run_all(test_runner, CK_NORMAL);
213 number_failed = srunner_ntests_failed(test_runner);
214
215 srunner_free(test_runner);
216
217 return number_failed;
218} 198}
diff --git a/auto_tests/file_saving_test.c b/auto_tests/file_saving_test.c
index 0f27f1d6..a5ba7e1f 100644
--- a/auto_tests/file_saving_test.c
+++ b/auto_tests/file_saving_test.c
@@ -33,6 +33,8 @@
33 33
34#include "../testing/misc_tools.h" 34#include "../testing/misc_tools.h"
35#include "../toxcore/ccompat.h" 35#include "../toxcore/ccompat.h"
36#include "check_compat.h"
37
36#include "../toxencryptsave/toxencryptsave.h" 38#include "../toxencryptsave/toxencryptsave.h"
37 39
38static const char *pphrase = "bar"; 40static const char *pphrase = "bar";
@@ -60,11 +62,9 @@ static void save_data_encrypted(void)
60 62
61 TOX_ERR_ENCRYPTION eerr; 63 TOX_ERR_ENCRYPTION eerr;
62 64
63 if (!tox_pass_encrypt(clear, size - TOX_PASS_ENCRYPTION_EXTRA_LENGTH, (const uint8_t *)pphrase, strlen(pphrase), cipher, 65 ck_assert_msg(tox_pass_encrypt(clear, size - TOX_PASS_ENCRYPTION_EXTRA_LENGTH, (const uint8_t *)pphrase,
64 &eerr)) { 66 strlen(pphrase), cipher,
65 fprintf(stderr, "error: could not encrypt, error code %d\n", eerr); 67 &eerr), "Could not encrypt, error code %d.", eerr);
66 exit(4);
67 }
68 68
69 size_t written_value = fwrite(cipher, sizeof(*cipher), size, f); 69 size_t written_value = fwrite(cipher, sizeof(*cipher), size, f);
70 printf("written written_value = %u of %u\n", (unsigned)written_value, (unsigned)size); 70 printf("written written_value = %u of %u\n", (unsigned)written_value, (unsigned)size);
@@ -79,20 +79,18 @@ static void load_data_decrypted(void)
79{ 79{
80 FILE *f = fopen(savefile, "r"); 80 FILE *f = fopen(savefile, "r");
81 fseek(f, 0, SEEK_END); 81 fseek(f, 0, SEEK_END);
82 long size = ftell(f); 82 int64_t size = ftell(f);
83 fseek(f, 0, SEEK_SET); 83 fseek(f, 0, SEEK_SET);
84 84
85 uint8_t *cipher = (uint8_t *)malloc(size); 85 uint8_t *cipher = (uint8_t *)malloc(size);
86 uint8_t *clear = (uint8_t *)malloc(size - TOX_PASS_ENCRYPTION_EXTRA_LENGTH); 86 uint8_t *clear = (uint8_t *)malloc(size - TOX_PASS_ENCRYPTION_EXTRA_LENGTH);
87 size_t read_value = fread(cipher, sizeof(*cipher), size, f); 87 size_t read_value = fread(cipher, sizeof(*cipher), size, f);
88 printf("read read_vavue = %u of %ld\n", (unsigned)read_value, size); 88 printf("Read read_vavue = %u of %ld\n", (unsigned)read_value, size);
89 89
90 TOX_ERR_DECRYPTION derr; 90 TOX_ERR_DECRYPTION derr;
91 91
92 if (!tox_pass_decrypt(cipher, size, (const uint8_t *)pphrase, strlen(pphrase), clear, &derr)) { 92 ck_assert_msg(tox_pass_decrypt(cipher, size, (const uint8_t *)pphrase, strlen(pphrase), clear, &derr),
93 fprintf(stderr, "error: could not decrypt, error code %d\n", derr); 93 "Could not decrypt, error code %d.", derr);
94 exit(3);
95 }
96 94
97 struct Tox_Options *options = tox_options_new(nullptr); 95 struct Tox_Options *options = tox_options_new(nullptr);
98 96
@@ -106,19 +104,14 @@ static void load_data_decrypted(void)
106 104
107 tox_options_free(options); 105 tox_options_free(options);
108 106
109 if (t == nullptr) { 107 ck_assert_msg(t != nullptr, "tox_new returned the error value %d", err);
110 fprintf(stderr, "error: tox_new returned the error value %d\n", err);
111 return;
112 }
113 108
114 uint8_t readname[TOX_MAX_NAME_LENGTH]; 109 uint8_t readname[TOX_MAX_NAME_LENGTH];
115 tox_self_get_name(t, readname); 110 tox_self_get_name(t, readname);
116 readname[tox_self_get_name_size(t)] = '\0'; 111 readname[tox_self_get_name_size(t)] = '\0';
117 112
118 if (strcmp((const char *)readname, name)) { 113 ck_assert_msg(strcmp((const char *)readname, name) == 0,
119 fprintf(stderr, "error: name returned by tox_self_get_name does not match expected result\n"); 114 "name returned by tox_self_get_name does not match expected result");
120 exit(2);
121 }
122 115
123 free(cipher); 116 free(cipher);
124 free(clear); 117 free(clear);
@@ -132,11 +125,7 @@ int main(void)
132 save_data_encrypted(); 125 save_data_encrypted();
133 load_data_decrypted(); 126 load_data_decrypted();
134 127
135 int ret = remove(savefile); 128 ck_assert_msg(remove(savefile) == 0, "Could not remove the savefile.");
136
137 if (ret != 0) {
138 fprintf(stderr, "error: could not remove savefile\n");
139 }
140 129
141 return 0; 130 return 0;
142} 131}
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);