aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/testbed/testbed_api.c14
-rw-r--r--src/testbed/testbed_api.h6
2 files changed, 14 insertions, 6 deletions
diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c
index 307960818..6894528a7 100644
--- a/src/testbed/testbed_api.c
+++ b/src/testbed/testbed_api.c
@@ -2506,13 +2506,19 @@ decide_npoc (struct GNUNET_TESTBED_Controller *c)
2506 struct GNUNET_TIME_Relative avg; 2506 struct GNUNET_TIME_Relative avg;
2507 int sd; 2507 int sd;
2508 unsigned int slot; 2508 unsigned int slot;
2509 unsigned int nvals;
2509 2510
2510 if (c->tslots_filled != c->num_parallel_connects) 2511 if (c->tslots_filled != c->num_parallel_connects)
2511 return; 2512 return;
2512 avg = GNUNET_TIME_UNIT_ZERO; 2513 avg = GNUNET_TIME_UNIT_ZERO;
2514 nvals = 0;
2513 for (slot = 0; slot < c->num_parallel_connects; slot++) 2515 for (slot = 0; slot < c->num_parallel_connects; slot++)
2516 {
2514 avg = GNUNET_TIME_relative_add (avg, c->tslots[slot].time); 2517 avg = GNUNET_TIME_relative_add (avg, c->tslots[slot].time);
2515 avg = GNUNET_TIME_relative_divide (avg, c->num_parallel_connects); 2518 nvals += c->tslots[slot].nvals;
2519 }
2520 GNUNET_assert (nvals >= c->num_parallel_connects);
2521 avg = GNUNET_TIME_relative_divide (avg, nvals);
2516 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value != avg.rel_value); 2522 GNUNET_assert (GNUNET_TIME_UNIT_FOREVER_REL.rel_value != avg.rel_value);
2517 sd = SD_deviation_factor (c->poc_sd, (unsigned int) avg.rel_value); 2523 sd = SD_deviation_factor (c->poc_sd, (unsigned int) avg.rel_value);
2518 if (GNUNET_SYSERR == sd) 2524 if (GNUNET_SYSERR == sd)
@@ -2595,12 +2601,12 @@ GNUNET_TESTBED_update_time_slot_ (struct GNUNET_TESTBED_Controller *c,
2595 void *key, 2601 void *key,
2596 struct GNUNET_TIME_Relative time) 2602 struct GNUNET_TIME_Relative time)
2597{ 2603{
2598 struct GNUNET_TIME_Relative avg;
2599 struct TimeSlot *slot; 2604 struct TimeSlot *slot;
2600 2605
2601 if (GNUNET_NO == GNUNET_TESTBED_release_time_slot_ (c, index, key)) 2606 if (GNUNET_NO == GNUNET_TESTBED_release_time_slot_ (c, index, key))
2602 return; 2607 return;
2603 slot = &c->tslots[index]; 2608 slot = &c->tslots[index];
2609 slot->nvals++;
2604 if (GNUNET_TIME_UNIT_ZERO.rel_value == slot->time.rel_value) 2610 if (GNUNET_TIME_UNIT_ZERO.rel_value == slot->time.rel_value)
2605 { 2611 {
2606 slot->time = time; 2612 slot->time = time;
@@ -2608,9 +2614,7 @@ GNUNET_TESTBED_update_time_slot_ (struct GNUNET_TESTBED_Controller *c,
2608 decide_npoc (c); 2614 decide_npoc (c);
2609 return; 2615 return;
2610 } 2616 }
2611 avg = GNUNET_TIME_relative_add (slot->time, time); 2617 slot->time = GNUNET_TIME_relative_add (slot->time, time);
2612 avg = GNUNET_TIME_relative_divide (avg, 2);
2613 slot->time = avg;
2614} 2618}
2615 2619
2616 2620
diff --git a/src/testbed/testbed_api.h b/src/testbed/testbed_api.h
index ed5b38b1d..b82c374ad 100644
--- a/src/testbed/testbed_api.h
+++ b/src/testbed/testbed_api.h
@@ -198,7 +198,11 @@ struct TimeSlot
198 * Time 198 * Time
199 */ 199 */
200 struct GNUNET_TIME_Relative time; 200 struct GNUNET_TIME_Relative time;
201 201
202 /**
203 * Number of timing values accumulated
204 */
205 unsigned int nvals;
202}; 206};
203 207
204 208