From: Christian Grothoff Date: Sat, 25 Feb 2017 23:50:35 +0000 (+0100) Subject: fix perf_peerinfo_api FTBFS X-Git-Tag: taler-0.2.1~45 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a5899842ad354a8fde6230dc77338f7232d4881c;p=oweals%2Fgnunet.git fix perf_peerinfo_api FTBFS --- diff --git a/src/peerinfo/perf_peerinfo_api.c b/src/peerinfo/perf_peerinfo_api.c index d446cbe3f..840c85c1b 100644 --- a/src/peerinfo/perf_peerinfo_api.c +++ b/src/peerinfo/perf_peerinfo_api.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - Copyright (C) 2004, 2009, 2010 GNUnet e.V. + Copyright (C) 2004, 2009, 2010, 2017 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -22,7 +22,7 @@ * @file peerinfo/perf_peerinfo_api.c * @brief testcase for peerinfo_api.c, hopefully hammer the peerinfo service, * this performance test adds up to 5000 peers with one address each and checks - * over how many peers it can iterate before receiving a timeout after 30 seconds + * over how many peers it can iterate before receiving a timeout after 5 seconds * @author Nathan Evans */ @@ -34,8 +34,6 @@ #include "peerinfo.h" #include -#define START_SERVICE 1 - #define NUM_REQUESTS 5000 static struct GNUNET_PEERINFO_IteratorContext *ic[NUM_REQUESTS]; @@ -46,9 +44,36 @@ static unsigned int numpeers; static struct GNUNET_PeerIdentity pid; +static struct GNUNET_SCHEDULER_Task *tt; + + +static void +do_shutdown (void *cls) +{ + if (NULL != tt) + { + GNUNET_SCHEDULER_cancel (tt); + tt = NULL; + } + for (unsigned int i = 0; i < NUM_REQUESTS; i++) + if (NULL != ic[i]) + GNUNET_PEERINFO_iterate_cancel (ic[i]); + GNUNET_PEERINFO_disconnect (h); + h = NULL; +} + + +static void +do_timeout (void *cls) +{ + tt = NULL; + GNUNET_SCHEDULER_shutdown (); +} + static int -check_it (void *cls, const struct GNUNET_HELLO_Address *address, +check_it (void *cls, + const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration) { return GNUNET_OK; @@ -87,23 +112,34 @@ add_peer (size_t i) struct GNUNET_HELLO_Message *h2; memset (&pid, i, sizeof (pid)); - h2 = GNUNET_HELLO_create (&pid.public_key, &address_generator, &i, GNUNET_NO); + h2 = GNUNET_HELLO_create (&pid.public_key, + &address_generator, + &i, + GNUNET_NO); 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, const char *err_msg) +process (void *cls, + const struct GNUNET_PeerIdentity *peer, + const struct GNUNET_HELLO_Message *hello, + const char *err_msg) { - if (NULL != peer) - { - numpeers++; - if (0 && (hello != NULL)) - GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO, &check_it, NULL); + struct GNUNET_PEERINFO_IteratorContext **icp = cls; + if (NULL == peer) + { + *icp = NULL; + return; } + numpeers++; + if (0 && (NULL != hello) ) + GNUNET_HELLO_iterate_addresses (hello, + GNUNET_NO, + &check_it, + NULL); } @@ -112,32 +148,43 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, struct GNUNET_TESTING_Peer *peer) { - size_t i; - h = GNUNET_PEERINFO_connect (cfg); GNUNET_assert (h != NULL); - for (i = 0; i < NUM_REQUESTS; i++) + for (unsigned int i = 0; i < NUM_REQUESTS; i++) { add_peer (i); - ic[i] = - GNUNET_PEERINFO_iterate (h, GNUNET_YES, NULL, - GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_SECONDS, 30), &process, cls); + ic[i] = GNUNET_PEERINFO_iterate (h, + GNUNET_YES, + NULL, + &process, + &ic[i]); } + tt = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, + 5), + &do_timeout, + NULL); + GNUNET_SCHEDULER_add_shutdown (&do_shutdown, + NULL); } int -main (int argc, char *argv[]) +main (int argc, + char *argv[]) { 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, + FPRINTF (stderr, + "Received %u/%u calls before timeout\n", + numpeers, NUM_REQUESTS * NUM_REQUESTS / 2); - GAUGER ("PEERINFO", "Peerinfo lookups", numpeers / 30, "peers/s"); + GAUGER ("PEERINFO", + "Peerinfo lookups", + numpeers / 5, + "peers/s"); return 0; }