aboutsummaryrefslogtreecommitdiff
path: root/src/testbed
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2013-01-02 16:03:25 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2013-01-02 16:03:25 +0000
commit3def510831309a5a0a5f50a2250911d6b592a87e (patch)
tree7664327942b8cceb6b5156e7b77ed7e3bb7587b7 /src/testbed
parent6e039e765c89bf477a8c657f59297d12d3858ce5 (diff)
downloadgnunet-3def510831309a5a0a5f50a2250911d6b592a87e.tar.gz
gnunet-3def510831309a5a0a5f50a2250911d6b592a87e.zip
weigh all readings equally
Diffstat (limited to 'src/testbed')
-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