gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r32140 - gnunet/src/ats-tests


From: gnunet
Subject: [GNUnet-SVN] r32140 - gnunet/src/ats-tests
Date: Fri, 31 Jan 2014 17:13:14 +0100

Author: wachs
Date: 2014-01-31 17:13:14 +0100 (Fri, 31 Jan 2014)
New Revision: 32140

Modified:
   gnunet/src/ats-tests/ats-testing-experiment.c
   gnunet/src/ats-tests/ats-testing-traffic.c
   gnunet/src/ats-tests/ats-testing.h
   gnunet/src/ats-tests/gnunet-ats-sim.c
Log:
adding linear and saw wave support for traffic generator


Modified: gnunet/src/ats-tests/ats-testing-experiment.c
===================================================================
--- gnunet/src/ats-tests/ats-testing-experiment.c       2014-01-31 15:22:57 UTC 
(rev 32139)
+++ gnunet/src/ats-tests/ats-testing-experiment.c       2014-01-31 16:13:14 UTC 
(rev 32140)
@@ -261,8 +261,8 @@
 
   if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task)
   {
+    GNUNET_SCHEDULER_cancel (e->episode_timeout_task);
     e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK;
-    GNUNET_SCHEDULER_cancel (e->episode_timeout_task);
   }
 
   e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time),

Modified: gnunet/src/ats-tests/ats-testing-traffic.c
===================================================================
--- gnunet/src/ats-tests/ats-testing-traffic.c  2014-01-31 15:22:57 UTC (rev 
32139)
+++ gnunet/src/ats-tests/ats-testing-traffic.c  2014-01-31 16:13:14 UTC (rev 
32140)
@@ -36,19 +36,26 @@
 get_delay (struct TrafficGenerator *tg)
 {
   struct GNUNET_TIME_Relative delay;
+  struct GNUNET_TIME_Relative time_delta;
+  long long int cur_rate;
+  long long int delta_rate;
+
+
   delay.rel_value_us = 0;
 
   switch (tg->type) {
     case GNUNET_ATS_TEST_TG_CONSTANT:
-      if (UINT32_MAX == tg->rate)
-        delay.rel_value_us = 0;
-      else if (tg->rate <= TEST_MESSAGE_SIZE)
-        delay.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us);
-      else
-        delay.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us / 
(tg->rate / TEST_MESSAGE_SIZE));
+      if (UINT32_MAX == tg->base_rate)
+        return GNUNET_TIME_UNIT_ZERO;
+      cur_rate = tg->base_rate;
+      return delay;
       break;
     case GNUNET_ATS_TEST_TG_LINEAR:
-      GNUNET_break (0);
+      time_delta = GNUNET_TIME_absolute_get_duration(tg->time_start);
+      time_delta.rel_value_us = time_delta.rel_value_us % 
tg->duration_period.rel_value_us;
+      delta_rate = ((double) time_delta.rel_value_us  / 
tg->duration_period.rel_value_us) *
+          (tg->max_rate - tg->base_rate);
+      cur_rate = tg->base_rate + delta_rate;
       break;
     case GNUNET_ATS_TEST_TG_RANDOM:
       GNUNET_break (0);
@@ -60,6 +67,8 @@
       return delay;
       break;
   }
+
+  delay.rel_value_us =  GNUNET_TIME_UNIT_SECONDS.rel_value_us * 
TEST_MESSAGE_SIZE / cur_rate;
   return delay;
 }
 
@@ -69,6 +78,7 @@
   struct BenchmarkPartner *p = cls;
   static char msgbuf[TEST_MESSAGE_SIZE];
   struct GNUNET_MessageHeader *msg;
+  struct GNUNET_TIME_Relative delay;
 
   if (NULL == buf)
   {
@@ -117,8 +127,11 @@
     GNUNET_break (0);
     return TEST_MESSAGE_SIZE;
   }
+  delay = get_delay (p->tg);
+  fprintf (stderr, "Delay for next transmission %llu ms\n",
+      (long long unsigned int) delay.rel_value_us / 1000);
   p->tg->next_ping_transmission = 
GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(),
-      get_delay (p->tg));
+      delay);
 
   return TEST_MESSAGE_SIZE;
 }
@@ -226,7 +239,7 @@
 
   /* Schedule next send event */
   left = GNUNET_TIME_absolute_get_remaining(p->tg->next_ping_transmission);
-  if (UINT32_MAX == p->tg->rate)
+  if (UINT32_MAX == p->tg->base_rate)
   {
     p->tg->send_task = GNUNET_SCHEDULER_add_now (&comm_schedule_send, p);
   }
@@ -246,12 +259,17 @@
  * Generate between the source master and the partner and send traffic with a
  * maximum rate.
  *
+ * @base_rate traffic base rate to send data with
+ * @max_rate  traffic maximum rate to send data with
+ * @frequency
  */
 struct TrafficGenerator *
 GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
     struct BenchmarkPartner *dest,
     enum TrafficGeneratorType type,
-    unsigned int rate,
+    long int base_rate,
+    long int max_rate,
+    struct GNUNET_TIME_Relative period,
     struct GNUNET_TIME_Relative duration)
 {
   struct TrafficGenerator * tg;
@@ -268,14 +286,17 @@
   tg->type = type;
   tg->src = src;
   tg->dest = dest;
-  tg->rate = rate;
+  tg->base_rate = base_rate;
+  tg->max_rate = max_rate;
+  tg->duration_period = period;
+  tg->time_start = GNUNET_TIME_absolute_get();
   tg->next_ping_transmission = GNUNET_TIME_UNIT_FOREVER_ABS;
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
       "Setting up traffic generator master[%u] `%s' and slave [%u] `%s' max %u 
Bips\n",
       dest->me->no, GNUNET_i2s (&dest->me->id),
       dest->dest->no, GNUNET_i2s (&dest->dest->id),
-      rate);
+      base_rate);
 
   if ( ((GNUNET_YES == top->test_core) && (NULL != dest->cth)) ||
        ((GNUNET_NO == top->test_core) && (NULL != dest->tth)) )

Modified: gnunet/src/ats-tests/ats-testing.h
===================================================================
--- gnunet/src/ats-tests/ats-testing.h  2014-01-31 15:22:57 UTC (rev 32139)
+++ gnunet/src/ats-tests/ats-testing.h  2014-01-31 16:13:14 UTC (rev 32140)
@@ -227,10 +227,14 @@
 
   struct BenchmarkPeer *src;
   struct BenchmarkPartner *dest;
-  unsigned int rate;
+
+  long int base_rate;
+  long int max_rate;
+  struct GNUNET_TIME_Relative duration_period;
+
   GNUNET_SCHEDULER_TaskIdentifier send_task;
   struct GNUNET_TIME_Absolute next_ping_transmission;
-  struct GNUNET_TIME_Relative delta;
+  struct GNUNET_TIME_Absolute time_start;
 };
 
 
@@ -540,7 +544,9 @@
 GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
     struct BenchmarkPartner *dest,
     enum TrafficGeneratorType type,
-    unsigned int rate,
+    long int base_rate,
+    long int max_rate,
+    struct GNUNET_TIME_Relative period,
     struct GNUNET_TIME_Relative duration);
 
 void

Modified: gnunet/src/ats-tests/gnunet-ats-sim.c
===================================================================
--- gnunet/src/ats-tests/gnunet-ats-sim.c       2014-01-31 15:22:57 UTC (rev 
32139)
+++ gnunet/src/ats-tests/gnunet-ats-sim.c       2014-01-31 16:13:14 UTC (rev 
32140)
@@ -208,11 +208,22 @@
       for (c_s = 0; c_s < e->num_slaves; c_s++)
       {
         /* Generate maximum traffic to all peers */
+        /*
         GNUNET_ATS_TEST_generate_traffic_start (&masters[c_m],
             &masters[c_m].partners[c_s],
             GNUNET_ATS_TEST_TG_CONSTANT,
             10000,
             GNUNET_TIME_UNIT_FOREVER_REL);
+         */
+        /*
+        GNUNET_ATS_TEST_generate_traffic_start (&masters[c_m],
+            &masters[c_m].partners[c_s],
+            GNUNET_ATS_TEST_TG_LINEAR,
+            100,
+            200,
+            GNUNET_TIME_UNIT_MINUTES,
+            GNUNET_TIME_UNIT_FOREVER_REL);
+        */
       }
   }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]