From: Matthias Wachs Date: Tue, 19 Mar 2013 14:53:27 +0000 (+0000) Subject: changes X-Git-Tag: initial-import-from-subversion-38251~9581 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f78df915ad04751636a01a4a34ab36eb65209845;p=oweals%2Fgnunet.git changes --- diff --git a/src/ats/gnunet-service-ats_performance.c b/src/ats/gnunet-service-ats_performance.c index b757ede62..e82613471 100644 --- a/src/ats/gnunet-service-ats_performance.c +++ b/src/ats/gnunet-service-ats_performance.c @@ -531,6 +531,7 @@ GAS_handle_performance_update (struct GNUNET_PeerIdentity *peer, { struct PerformanceClient *cur; struct PerformanceMonitorClient *curm; + struct MonitorResponseMessage *mrm; for (cur = pc_head; NULL != cur; cur = cur->next) for (curm = cur->pm_head; NULL != curm; curm = curm->next) { @@ -561,7 +562,10 @@ GAS_handle_monitor (void *cls, msg_size = ntohs (message->size); if (msg_size < sizeof (struct MonitorMessage)) - return; + { + GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); + return; + } id = ntohl (mm->id); op = ntohl (mm->op); @@ -576,6 +580,7 @@ GAS_handle_monitor (void *cls, if (NULL != res) { GNUNET_break (0); + GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); return; /* Duplicate*/ } res = GNUNET_malloc (sizeof (struct PerformanceMonitorClient)); @@ -592,6 +597,7 @@ GAS_handle_monitor (void *cls, if (NULL == res) { GNUNET_break (0); + GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); return; /* Not existing */ } GNUNET_CONTAINER_DLL_remove (pc->pm_head, pc->pm_tail, res); @@ -603,9 +609,10 @@ GAS_handle_monitor (void *cls, else { GNUNET_break (0); + GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); return; } - + GNUNET_SERVER_receive_done (client, GNUNET_OK); } diff --git a/src/ats/test_ats_api_performance_monitor.c b/src/ats/test_ats_api_performance_monitor.c index eebe23749..e89b46b04 100644 --- a/src/ats/test_ats_api_performance_monitor.c +++ b/src/ats/test_ats_api_performance_monitor.c @@ -28,10 +28,11 @@ #include "gnunet_testing_lib.h" #include "ats.h" -#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10) - +#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 20) +#define SHUTDOWN_CORRECT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5) static GNUNET_SCHEDULER_TaskIdentifier die_task; +static GNUNET_SCHEDULER_TaskIdentifier stage_task; struct GNUNET_CONFIGURATION_Handle *cfg; @@ -45,6 +46,11 @@ static int ret; static void end_now (int res) { + if (GNUNET_SCHEDULER_NO_TASK != stage_task) + { + GNUNET_SCHEDULER_cancel (stage_task); + stage_task = GNUNET_SCHEDULER_NO_TASK; + } if (GNUNET_SCHEDULER_NO_TASK != die_task) { GNUNET_SCHEDULER_cancel (die_task); @@ -73,6 +79,31 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) end_now (1); } +static void +next_stage (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + static int stage_counter = 0; + + stage_task = GNUNET_SCHEDULER_NO_TASK; + if (0 == stage_counter) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Stop performance monitoring\n"); + + GNUNET_ATS_performance_monitor_stop (phm); + phm = NULL; + + stage_task = GNUNET_SCHEDULER_add_delayed (SHUTDOWN_CORRECT, &next_stage, NULL); + stage_counter++; + return; + } + else + { + end_now (0); + } +} + + + static void perf_mon_cb (void *cls, @@ -99,11 +130,7 @@ run (void *cls, phm = GNUNET_ATS_performance_monitor_start (ph, &perf_mon_cb, &ret); GNUNET_assert (NULL != phm); -// GNUNET_ATS_performance_monitor_stop (phm); - - //GNUNET_ATS_performance_done (ph); -// ph = NULL; - //end_now (0); + stage_task = GNUNET_SCHEDULER_add_delayed (SHUTDOWN_CORRECT, &next_stage, NULL); }