X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fpeerinfo%2Fperf_peerinfo_api.c;h=a1e309d649580d610b1f60a36ee86b19878c332f;hb=9e44a0d455ddf7d5f8e2a2a36776e6dfd627e265;hp=eea2eb97325b1f40975366379eb227815a658051;hpb=721e49caeea6ba5073f8bc5c6c08359295c02bb5;p=oweals%2Fgnunet.git diff --git a/src/peerinfo/perf_peerinfo_api.c b/src/peerinfo/perf_peerinfo_api.c index eea2eb973..a1e309d64 100755 --- a/src/peerinfo/perf_peerinfo_api.c +++ b/src/peerinfo/perf_peerinfo_api.c @@ -19,49 +19,36 @@ */ /** - * @file peerinfo/test_peerinfo_hammer.c + * @file peerinfo/perf_peerinfo_api.c * @brief testcase for peerinfo_api.c, hopefully hammer the peerinfo service * @author Nathan Evans */ #include "platform.h" #include "gnunet_hello_lib.h" -#include "gnunet_getopt_lib.h" -#include "gnunet_os_lib.h" +#include "gnunet_util_lib.h" +#include "gnunet_testing_lib-new.h" #include "gnunet_peerinfo_service.h" -#include "gnunet_program_lib.h" -#include "gnunet_time_lib.h" #include "peerinfo.h" +#include #define START_SERVICE 1 #define NUM_REQUESTS 5000 -static struct GNUNET_SCHEDULER_Handle *sched; - -static const struct GNUNET_CONFIGURATION_Handle *cfg; - static struct GNUNET_PEERINFO_IteratorContext *ic[NUM_REQUESTS]; static struct GNUNET_PEERINFO_Handle *h; static unsigned int numpeers; +static struct GNUNET_PeerIdentity pid; + + static int -check_it (void *cls, - const char *tname, - struct GNUNET_TIME_Absolute expiration, - const void *addr, uint16_t addrlen) +check_it (void *cls, const struct GNUNET_HELLO_Address *address, + struct GNUNET_TIME_Absolute expiration) { -#if DEBUG - if (addrlen > 0) - { - fprintf (stderr, - "name: %s, addr: %s\n", - tname, - (const char*) addr); - } -#endif return GNUNET_OK; } @@ -71,19 +58,22 @@ address_generator (void *cls, size_t max, void *buf) { size_t *agc = cls; size_t ret; - char *address; + char *caddress; + struct GNUNET_HELLO_Address address; if (*agc == 0) return 0; - GNUNET_asprintf(&address, "Address%d", *agc); - - ret = GNUNET_HELLO_add_address ("peerinfotest", - GNUNET_TIME_relative_to_absolute - (GNUNET_TIME_UNIT_HOURS), - address, strlen(address) + 1, - buf, max); - GNUNET_free (address); + GNUNET_asprintf (&caddress, "Address%d", *agc); + address.peer = pid; + address.address_length = strlen (caddress) + 1; + address.address = caddress; + address.transport_name = "peerinfotest"; + ret = + GNUNET_HELLO_add_address (&address, + GNUNET_TIME_relative_to_absolute + (GNUNET_TIME_UNIT_HOURS), buf, max); + GNUNET_free (caddress); *agc = 0; return ret; } @@ -93,127 +83,61 @@ static void add_peer (size_t i) { struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; - struct GNUNET_PeerIdentity pid; struct GNUNET_HELLO_Message *h2; - size_t agc; - agc = 2; memset (&pkey, i, sizeof (pkey)); GNUNET_CRYPTO_hash (&pkey, sizeof (pkey), &pid.hashPubKey); h2 = GNUNET_HELLO_create (&pkey, &address_generator, &i); - GNUNET_PEERINFO_add_peer (h, h2); + GNUNET_PEERINFO_add_peer (h, h2, NULL, NULL); GNUNET_free (h2); } static void -process (void *cls, - const struct GNUNET_PeerIdentity *peer, - const struct GNUNET_HELLO_Message *hello) +process (void *cls, const struct GNUNET_PeerIdentity *peer, + const struct GNUNET_HELLO_Message *hello, const char *err_msg) { - if (peer == NULL) - { -#if DEBUG - fprintf(stderr, "Process received NULL response\n"); -#endif - } - else - { -#if DEBUG - fprintf(stderr, "Processed a peer\n"); -#endif - numpeers++; - if (0 && (hello != NULL)) - GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO, &check_it, NULL); - - } + if (NULL != peer) + { + numpeers++; + if (0 && (hello != NULL)) + GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO, &check_it, NULL); + + } } static void -run (void *cls, - struct GNUNET_SCHEDULER_Handle *s, - char *const *args, - const char *cfgfile, - const struct GNUNET_CONFIGURATION_Handle *c) +run (void *cls, + const struct GNUNET_CONFIGURATION_Handle *cfg) { size_t i; - sched = s; - cfg = c; - h = GNUNET_PEERINFO_connect (sched, cfg); + + h = GNUNET_PEERINFO_connect (cfg); GNUNET_assert (h != NULL); for (i = 0; i < NUM_REQUESTS; i++) - { - add_peer (i); - ic[i] = GNUNET_PEERINFO_iterate (h, - NULL, - GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_SECONDS, 30), - &process, cls); - } -} - -static int -check () -{ - int ok = 0; - char *const argv[] = { "test-peerinfo-hammer", - "-c", - "test_peerinfo_api_data.conf", -#if DEBUG_PEERINFO - "-L", "DEBUG", -#endif - NULL - }; -#if START_SERVICE - GNUNET_OS_Process *proc; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - proc = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-peerinfo", - "gnunet-service-peerinfo", -#if DEBUG_PEERINFO - "-L", "DEBUG", -#endif - "-c", "test_peerinfo_api_data.conf", NULL); -#endif - GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, - argv, "perf-peerinfo-api", "nohelp", - options, &run, &ok); - fprintf (stderr, - "Received %u/%u calls before timeout\n", - numpeers, - NUM_REQUESTS * NUM_REQUESTS / 2); -#if START_SERVICE - if (0 != GNUNET_OS_process_kill (proc, SIGTERM)) - { - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); - ok = 1; - } - GNUNET_OS_process_wait (proc); - GNUNET_OS_process_close (proc); - proc = NULL; - -#endif - return ok; + { + add_peer (i); + ic[i] = + GNUNET_PEERINFO_iterate (h, NULL, + GNUNET_TIME_relative_multiply + (GNUNET_TIME_UNIT_SECONDS, 30), &process, cls); + } } int main (int argc, char *argv[]) { - int ret = 0; - - GNUNET_log_setup ("perf_peerinfo_api", -#if DEBUG_PEERINFO - "DEBUG", -#else - "ERROR", -#endif - NULL); - ret = check (); - GNUNET_DISK_directory_remove ("/tmp/test-gnunet-peerinfo"); - return ret; + if (0 != GNUNET_TESTING_service_run ("perf-gnunet-peerinfo", + "peerinfo", + "test_peerinfo_api_data.conf", + &run, NULL)) + return 1; + FPRINTF (stderr, "Received %u/%u calls before timeout\n", numpeers, + NUM_REQUESTS * NUM_REQUESTS / 2); + GAUGER ("PEERINFO", "Peerinfo lookups", numpeers / 30, "peers/s"); + return 0; } /* end of perf_peerinfo_api.c */