summaryrefslogtreecommitdiff
path: root/auto_tests/dht_test.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2018-08-09 23:53:39 +0000
committeriphydf <iphydf@users.noreply.github.com>2018-08-16 21:01:38 +0000
commit54066f338f185f2fbd6694d9a4877f42cbfa21c8 (patch)
treee056e50af1009bf373c040812e46cd1de8de9979 /auto_tests/dht_test.c
parent31ea1aa06e59d24d5196b17be9a7105d85c25080 (diff)
Reduce the number of times `unix_time_update` is called.
Reduced by, e.g.: * `file_transfer_test`: 33% of the `clock_gettime` calls. * `tox_many_test`: 53% of the `clock_gettime` calls. Other tests will see similar improvements. Real world applications will be closer to 40-50% improvement, since tox_many_test has 100 nodes, while file_transfer_test has 2 nodes.
Diffstat (limited to 'auto_tests/dht_test.c')
-rw-r--r--auto_tests/dht_test.c57
1 files changed, 20 insertions, 37 deletions
diff --git a/auto_tests/dht_test.c b/auto_tests/dht_test.c
index 8b96f09a..2f273727 100644
--- a/auto_tests/dht_test.c
+++ b/auto_tests/dht_test.c
@@ -389,21 +389,19 @@ static void test_addto_lists(IP ip)
389 logger_kill(log); 389 logger_kill(log);
390} 390}
391 391
392START_TEST(test_addto_lists_ipv4) 392static void test_addto_lists_ipv4(void)
393{ 393{
394 IP ip; 394 IP ip;
395 ip_init(&ip, 0); 395 ip_init(&ip, 0);
396 test_addto_lists(ip); 396 test_addto_lists(ip);
397} 397}
398END_TEST
399 398
400START_TEST(test_addto_lists_ipv6) 399static void test_addto_lists_ipv6(void)
401{ 400{
402 IP ip; 401 IP ip;
403 ip_init(&ip, 1); 402 ip_init(&ip, 1);
404 test_addto_lists(ip); 403 test_addto_lists(ip);
405} 404}
406END_TEST
407 405
408#define DHT_DEFAULT_PORT (TOX_PORT_DEFAULT + 1000) 406#define DHT_DEFAULT_PORT (TOX_PORT_DEFAULT + 1000)
409 407
@@ -580,7 +578,7 @@ static void test_list_main(void)
580} 578}
581 579
582 580
583START_TEST(test_list) 581static void test_list(void)
584{ 582{
585 uint8_t i; 583 uint8_t i;
586 584
@@ -588,7 +586,6 @@ START_TEST(test_list)
588 test_list_main(); 586 test_list_main();
589 } 587 }
590} 588}
591END_TEST
592 589
593static void ip_callback(void *data, int32_t number, IP_Port ip_port) 590static void ip_callback(void *data, int32_t number, IP_Port ip_port)
594{ 591{
@@ -596,13 +593,15 @@ static void ip_callback(void *data, int32_t number, IP_Port ip_port)
596 593
597#define NUM_DHT_FRIENDS 20 594#define NUM_DHT_FRIENDS 20
598 595
599START_TEST(test_DHT_test) 596static void test_DHT_test(void)
600{ 597{
601 uint32_t to_comp = 8394782; 598 uint32_t to_comp = 8394782;
602 DHT *dhts[NUM_DHT]; 599 DHT *dhts[NUM_DHT];
603 Logger *logs[NUM_DHT]; 600 Logger *logs[NUM_DHT];
604 uint32_t index[NUM_DHT]; 601 uint32_t index[NUM_DHT];
605 602
603 unix_time_update();
604
606 uint32_t i, j; 605 uint32_t i, j;
607 606
608 for (i = 0; i < NUM_DHT; ++i) { 607 for (i = 0; i < NUM_DHT; ++i) {
@@ -664,6 +663,7 @@ loop_top:
664 } 663 }
665 664
666 for (i = 0; i < NUM_DHT; ++i) { 665 for (i = 0; i < NUM_DHT; ++i) {
666 unix_time_update();
667 networking_poll(dhts[i]->net, nullptr); 667 networking_poll(dhts[i]->net, nullptr);
668 do_dht(dhts[i]); 668 do_dht(dhts[i]);
669 } 669 }
@@ -678,9 +678,8 @@ loop_top:
678 logger_kill(logs[i]); 678 logger_kill(logs[i]);
679 } 679 }
680} 680}
681END_TEST
682 681
683START_TEST(test_dht_create_packet) 682static void test_dht_create_packet(void)
684{ 683{
685 uint8_t plain[100] = {0}; 684 uint8_t plain[100] = {0};
686 uint8_t pkt[1 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE + sizeof(plain) + CRYPTO_MAC_SIZE]; 685 uint8_t pkt[1 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE + sizeof(plain) + CRYPTO_MAC_SIZE];
@@ -697,7 +696,6 @@ START_TEST(test_dht_create_packet)
697 696
698 printf("Create Packet Successful!\n"); 697 printf("Create Packet Successful!\n");
699} 698}
700END_TEST
701 699
702#define MAX_COUNT 3 700#define MAX_COUNT 3
703 701
@@ -750,7 +748,7 @@ static void random_ip(IP_Port *ipp, int family)
750 748
751#define PACKED_NODES_SIZE (SIZE_IPPORT + CRYPTO_PUBLIC_KEY_SIZE) 749#define PACKED_NODES_SIZE (SIZE_IPPORT + CRYPTO_PUBLIC_KEY_SIZE)
752 750
753START_TEST(test_dht_node_packing) 751static void test_dht_node_packing(void)
754{ 752{
755 const uint16_t length = MAX_COUNT * PACKED_NODES_SIZE; 753 const uint16_t length = MAX_COUNT * PACKED_NODES_SIZE;
756 uint8_t *data = (uint8_t *)malloc(length); 754 uint8_t *data = (uint8_t *)malloc(length);
@@ -789,38 +787,23 @@ START_TEST(test_dht_node_packing)
789 787
790 free(data); 788 free(data);
791} 789}
792END_TEST
793
794static Suite *dht_suite(void)
795{
796 Suite *s = suite_create("DHT");
797 DEFTESTCASE(dht_create_packet);
798 DEFTESTCASE(dht_node_packing);
799
800 DEFTESTCASE_SLOW(list, 20);
801 DEFTESTCASE_SLOW(DHT_test, 50);
802
803 if (enable_broken_tests) {
804 DEFTESTCASE(addto_lists_ipv4);
805 DEFTESTCASE(addto_lists_ipv6);
806 }
807
808 return s;
809}
810 790
811int main(void) 791int main(void)
812{ 792{
813 setvbuf(stdout, nullptr, _IONBF, 0); 793 setvbuf(stdout, nullptr, _IONBF, 0);
814 794
815 Suite *dht = dht_suite(); 795 unix_time_update();
816 SRunner *test_runner = srunner_create(dht);
817 796
818 uint8_t number_failed = 0; 797 test_dht_create_packet();
819 //srunner_set_fork_status(test_runner, CK_NOFORK); 798 test_dht_node_packing();
820 srunner_run_all(test_runner, CK_NORMAL);
821 number_failed = srunner_ntests_failed(test_runner);
822 799
823 srunner_free(test_runner); 800 test_list();
801 test_DHT_test();
802
803 if (enable_broken_tests) {
804 test_addto_lists_ipv4();
805 test_addto_lists_ipv6();
806 }
824 807
825 return number_failed; 808 return 0;
826} 809}