mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Added a assoc test.
Changed default assoc so that it behaves correctly.
This commit is contained in:
parent
3d2707748c
commit
245a1511e6
|
@ -57,6 +57,70 @@ START_TEST(test_basics)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_fillup)
|
||||
{
|
||||
/* TODO: real test */
|
||||
int i, j;
|
||||
uint8_t id[CLIENT_ID_SIZE];
|
||||
//uint32_t a = current_time();
|
||||
uint32_t a = 2710106197;
|
||||
srand(a);
|
||||
for(i = 0; i < CLIENT_ID_SIZE; ++i) {
|
||||
id[i] = rand();
|
||||
}
|
||||
Assoc *assoc = new_Assoc(6, 15, id);
|
||||
ck_assert_msg(assoc != NULL, "failed to create default assoc");
|
||||
struct entry {
|
||||
uint8_t id[CLIENT_ID_SIZE];
|
||||
IPPTs ippts_send;
|
||||
IP_Port ipp_recv;
|
||||
};
|
||||
unsigned int fail = 0;
|
||||
struct entry entries[128];
|
||||
struct entry closest[8];
|
||||
for(j = 0; j < 128; ++j) {
|
||||
|
||||
for(i = 0; i < CLIENT_ID_SIZE; ++i) {
|
||||
entries[j].id[i] = rand();
|
||||
}
|
||||
IP_Port ipp;
|
||||
ipp.ip.family = AF_INET;
|
||||
ipp.ip.ip4.uint32 = rand();
|
||||
ipp.port = rand();
|
||||
entries[j].ippts_send.ip_port = ipp;
|
||||
entries[j].ippts_send.timestamp = unix_time();
|
||||
ipp.ip.ip4.uint32 = rand();
|
||||
ipp.port = rand();
|
||||
entries[j].ipp_recv = ipp;
|
||||
if (j % 16 == 0) {
|
||||
memcpy(entries[j].id, id, CLIENT_ID_SIZE - 30);
|
||||
memcpy(&closest[j/16], &entries[j], sizeof(struct entry));
|
||||
|
||||
}
|
||||
uint8_t res = Assoc_add_entry(assoc, entries[j].id, &entries[j].ippts_send, &entries[j].ipp_recv, 1);
|
||||
ck_assert_msg(res == 1, "failed to store entry: expected %u, got %u, j = %u", 1, res, j);
|
||||
}
|
||||
int good = 0;
|
||||
Assoc_close_entries close_entries;
|
||||
memset(&close_entries, 0, sizeof(close_entries));
|
||||
close_entries.count = 8;
|
||||
close_entries.count_good = 8;
|
||||
close_entries.wanted_id = id;
|
||||
|
||||
Client_data *entri[close_entries.count];
|
||||
close_entries.result = entri;
|
||||
|
||||
uint8_t found = Assoc_get_close_entries(assoc, &close_entries);
|
||||
ck_assert_msg(found == 8, "get_close_entries(): expected %u, got %u", 1, found);
|
||||
for (i = 0; i < 8; ++i) {
|
||||
for (j = 0; j < 8; ++j) {
|
||||
if (id_equal(entri[j]->client_id, closest[i].id))
|
||||
++good;
|
||||
}
|
||||
}ck_assert_msg(good == 8, "Entries found were not the closest ones. Only %u/8 were.", good);
|
||||
//printf("good: %u %u %u\n", good, a, ((uint32_t)current_time() - a));
|
||||
}
|
||||
END_TEST
|
||||
|
||||
#define DEFTESTCASE(NAME) \
|
||||
TCase *tc_##NAME = tcase_create(#NAME); \
|
||||
|
@ -72,12 +136,13 @@ Suite *Assoc_suite(void)
|
|||
Suite *s = suite_create("Assoc");
|
||||
|
||||
DEFTESTCASE(basics);
|
||||
|
||||
DEFTESTCASE(fillup);
|
||||
return s;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unix_time_update();
|
||||
Suite *Assoc = Assoc_suite();
|
||||
SRunner *test_runner = srunner_create(Assoc);
|
||||
|
||||
|
|
|
@ -845,7 +845,7 @@ Assoc *new_Assoc_default(uint8_t *public_id)
|
|||
{
|
||||
/* original 8, 251 averages to ~32k entries... probably the whole DHT :D
|
||||
* 320 entries is fine, hopefully */
|
||||
return new_Assoc(6, 5, public_id);
|
||||
return new_Assoc(6, 15, public_id);
|
||||
}
|
||||
|
||||
/* own client_id, assocs for this have to be ignored */
|
||||
|
|
Loading…
Reference in New Issue
Block a user