X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnse%2Fgnunet-nse-profiler.c;h=b8fa293d58de6faf86dcf5095a660b044eac89a9;hb=80d2de6cdc4d253c7fbc6a4bc067d856aab9cca9;hp=d55e61e6051717432913dcc75664d532188f8651;hpb=e3e29708ab1a04a7bab722d928baab7bec1b0320;p=oweals%2Fgnunet.git diff --git a/src/nse/gnunet-nse-profiler.c b/src/nse/gnunet-nse-profiler.c index d55e61e60..b8fa293d5 100644 --- a/src/nse/gnunet-nse-profiler.c +++ b/src/nse/gnunet-nse-profiler.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2011, 2012 Christian Grothoff (and other contributing authors) + Copyright (C) 2011, 2012 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** * @file nse/gnunet-nse-profiler.c @@ -83,39 +83,6 @@ struct NSEPeer }; -/** - * Context for the stats task? - */ -struct StatsContext -{ - - /** - * How many messages have peers received during the test. - */ - unsigned long long total_nse_received_messages; - - /** - * How many messages have peers send during the test (should be == received). - */ - unsigned long long total_nse_transmitted_messages; - - /** - * How many messages have travelled an edge in both directions. - */ - unsigned long long total_nse_cross; - - /** - * How many extra messages per edge (corrections) have been received. - */ - unsigned long long total_nse_extra; - - /** - * How many messages have been discarded. - */ - unsigned long long total_discarded; -}; - - /** * Operation map entry */ @@ -166,7 +133,7 @@ static int verbose; /** * Name of the file with the hosts to run the test over (configuration option) - */ + */ static char *hosts_file; /** @@ -212,7 +179,7 @@ static struct GNUNET_CONFIGURATION_Handle *testing_cfg; /** * The shutdown task */ -static GNUNET_SCHEDULER_TaskIdentifier shutdown_task_id; +static struct GNUNET_SCHEDULER_Task * shutdown_task_id; /** * Maximum number of connections to NSE services. @@ -303,11 +270,11 @@ close_monitor_connections () static void shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - shutdown_task_id = GNUNET_SCHEDULER_NO_TASK; + shutdown_task_id = NULL; if (GNUNET_YES == shutting_down) return; shutting_down = GNUNET_YES; - LOG_DEBUG ("Ending test.\n"); + LOG_DEBUG ("Ending test.\n"); close_monitor_connections (); if (NULL != data_file) { @@ -331,7 +298,7 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) static void shutdown_now () { - if (GNUNET_SCHEDULER_NO_TASK != shutdown_task_id) + if (NULL != shutdown_task_id) GNUNET_SCHEDULER_cancel (shutdown_task_id); shutdown_task_id = GNUNET_SCHEDULER_add_now (&shutdown_task, NULL); } @@ -347,7 +314,7 @@ shutdown_now () * of the size estimation values seen */ static void -handle_estimate (void *cls, +handle_estimate (void *cls, struct GNUNET_TIME_Absolute timestamp, double estimate, double std_dev) { @@ -362,11 +329,11 @@ handle_estimate (void *cls, peer, estimate, std_dev); return; } - size = GNUNET_snprintf (output_buffer, + size = GNUNET_snprintf (output_buffer, sizeof (output_buffer), "%p %llu %llu %f %f %f\n", peer, peers_running, - timestamp.abs_value, + (unsigned long long) timestamp.abs_value_us, GNUNET_NSE_log_estimate_to_n (estimate), estimate, std_dev); if (size != GNUNET_DISK_file_write (output_file, output_buffer, size)) @@ -378,7 +345,7 @@ handle_estimate (void *cls, /** * Adapter function called to establish a connection to * NSE service. - * + * * @param cls closure (the 'struct NSEPeer') * @param cfg configuration of the peer to connect to; will be available until * GNUNET_TESTBED_operation_done() is called on the operation returned @@ -398,11 +365,11 @@ nse_connect_adapter (void *cls, /** * Adapter function called to destroy a connection to * NSE service. - * + * * @param cls closure * @param op_result service handle returned from the connect adapter */ -static void +static void nse_disconnect_adapter (void *cls, void *op_result) { @@ -413,16 +380,18 @@ nse_disconnect_adapter (void *cls, /** * Callback function to process statistic values. * - * @param cls struct StatsContext + * @param cls `struct NSEPeer` * @param subsystem name of subsystem that created the statistic * @param name the name of the datum * @param value the current value - * @param is_persistent GNUNET_YES if the value is persistent, GNUNET_NO if not - * @return GNUNET_OK to continue, GNUNET_SYSERR to abort iteration + * @param is_persistent #GNUNET_YES if the value is persistent, #GNUNET_NO if not + * @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration */ static int -stat_iterator (void *cls, const char *subsystem, const char *name, - uint64_t value, int is_persistent) +stat_iterator (void *cls, + const char *subsystem, + const char *name, + uint64_t value, int is_persistent) { char *output_buffer; struct GNUNET_TIME_Absolute now; @@ -435,12 +404,15 @@ stat_iterator (void *cls, const char *subsystem, const char *name, if (0 != flag) flag = 1; size = GNUNET_asprintf (&output_buffer, "%llu %llu %u\n", - now.abs_value/1000, value, flag); + now.abs_value_us / 1000LL / 1000LL, + value, flag); if (size != GNUNET_DISK_file_write (data_file, output_buffer, size)) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Unable to write to file!\n"); + GNUNET_free (output_buffer); return GNUNET_SYSERR; } + GNUNET_free (output_buffer); return GNUNET_OK; } @@ -459,7 +431,7 @@ stat_connect_adapter (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) { struct NSEPeer *peer = cls; - + peer->sh = GNUNET_STATISTICS_create ("nse-profiler", cfg); return peer->sh; } @@ -530,18 +502,18 @@ connect_nse_service () unsigned int connections; if (0 == connection_limit) - return; + return; LOG_DEBUG ("Connecting to nse service of peers\n"); connections = 0; for (i = 0; i < num_peers_in_round[current_round]; i++) { - if ((num_peers_in_round[current_round] > connection_limit) && + if ((num_peers_in_round[current_round] > connection_limit) && (0 != (i % (num_peers_in_round[current_round] / connection_limit)))) continue; LOG_DEBUG ("Connecting to nse service of peer %d\n", i); - current_peer = GNUNET_malloc (sizeof (struct NSEPeer)); + current_peer = GNUNET_new (struct NSEPeer); current_peer->daemon = daemons[i]; - current_peer->nse_op + current_peer->nse_op = GNUNET_TESTBED_service_connect (NULL, current_peer->daemon, "nse", @@ -573,7 +545,7 @@ connect_nse_service () * @param tc scheduler context (unused) */ static void -next_round (void *cls, +next_round (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc); @@ -586,7 +558,7 @@ next_round (void *cls, * @param tc unused */ static void -finish_round (void *cls, +finish_round (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) @@ -621,7 +593,7 @@ make_oplist_entry () { struct OpListEntry *entry; - entry = GNUNET_malloc (sizeof (struct OpListEntry)); + entry = GNUNET_new (struct OpListEntry); GNUNET_CONTAINER_DLL_insert_tail (oplist_head, oplist_tail, entry); return entry; } @@ -634,12 +606,12 @@ make_oplist_entry () * @param op the operation handle * @param emsg NULL on success; otherwise an error description */ -static void +static void manage_service_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) { struct OpListEntry *entry = cls; - + GNUNET_TESTBED_operation_done (entry->op); if (NULL != emsg) { @@ -701,13 +673,13 @@ adjust_running_peers () * @param tc unused */ static void -next_round (void *cls, +next_round (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) return; LOG_DEBUG ("Disconnecting nse service of peers\n"); - current_round++; + current_round++; if (current_round == num_rounds) { /* this was the last round, terminate */ @@ -733,7 +705,7 @@ next_round (void *cls, * @param event information on what is happening */ static void -master_controller_cb (void *cls, +master_controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) { switch (event->type) @@ -754,6 +726,7 @@ master_controller_cb (void *cls, * Signature of a main function for a testcase. * * @param cls NULL + * @param h the run handle * @param num_peers_ number of peers in 'peers' * @param peers handle to peers run in the testbed. NULL upon timeout (see * GNUNET_TESTBED_test_run()). @@ -762,8 +735,9 @@ master_controller_cb (void *cls, * @param links_failed the number of overlay link connection attempts that * failed */ -static void +static void test_master (void *cls, + struct GNUNET_TESTBED_RunHandle *h, unsigned int num_peers_, struct GNUNET_TESTBED_Peer **peers, unsigned int links_succeeded, @@ -801,7 +775,7 @@ run (void *cls, char *const *args, const char *cfgfile, { char *tok; uint64_t event_mask; - unsigned int num; + unsigned int num; ok = 1; testing_cfg = GNUNET_CONFIGURATION_dup (cfg); @@ -832,7 +806,7 @@ run (void *cls, char *const *args, const char *cfgfile, return; } if ( (NULL != data_filename) && - (NULL == (data_file = + (NULL == (data_file = GNUNET_DISK_file_open (data_filename, GNUNET_DISK_OPEN_READWRITE | GNUNET_DISK_OPEN_TRUNCATE | @@ -865,7 +839,7 @@ run (void *cls, char *const *args, const char *cfgfile, NULL, /* master_controller_cb cls */ &test_master, NULL); /* test_master cls */ - shutdown_task_id = + shutdown_task_id = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, NULL); }