gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r32300 - in gnunet/src/ats: . experiments


From: gnunet
Subject: [GNUnet-SVN] r32300 - in gnunet/src/ats: . experiments
Date: Tue, 11 Feb 2014 12:50:56 +0100

Author: wachs
Date: 2014-02-11 12:50:56 +0100 (Tue, 11 Feb 2014)
New Revision: 32300

Modified:
   gnunet/src/ats/experiments/example.exp
   gnunet/src/ats/gnunet-ats-solver-eval.c
   gnunet/src/ats/gnunet-ats-solver-eval.h
Log:
property enforcement


Modified: gnunet/src/ats/experiments/example.exp
===================================================================
--- gnunet/src/ats/experiments/example.exp      2014-02-11 11:22:07 UTC (rev 
32299)
+++ gnunet/src/ats/experiments/example.exp      2014-02-11 11:50:56 UTC (rev 
32300)
@@ -29,20 +29,22 @@
 # BANDWIDTH, LATENCY
 #op-1-pref = BANDWIDTH  
 
-#op-1-operation = start_set_property
-#op-1-address-id = 0
-#op-1-peer-id = 0
+op-1-operation = start_request
+op-1-peer-id = 0
+
+
+op-2-operation = start_set_property
+op-2-address-id = 0
+op-2-peer-id = 0
 # constant, linear, sinus, random
-#op-1-gen-type = random
-#op-1-base-rate= 10000
-#op-1-max-rate = 100000
-#op-1-frequency = 100 ms
+op-2-gen-type = constant
+op-2-base-rate= 10000
+op-2-max-rate = 100000
+op-2-frequency = 500 ms
 # bandwidth, latency
 # "TERMINATOR", "UTILIZATION_UP", "UTILIZATION_DOWN", 
"UTILIZATION_PAYLOAD_UP", "UTILIZATION_PAYLOAD_DOWN", "NETWORK_TYPE", "DELAY", 
"DISTANCE", "COST_WAN", "COST_LAN", "COST_WLAN"
-#op-1-property = UTILIZATION_UP  
+op-2-property = UTILIZATION_UP  
 
-op-1-operation = start_request
-op-1-peer-id = 0
 
 [episode-1]
 duration = 2 s
@@ -60,10 +62,10 @@
 op-1-peer-id = 1
 op-1-pref = BANDWIDTH  
 
-#op-2-operation = stop_set_property
-#op-2-address-id = 0
-#op-2-peer-id = 0
-#op-2-property = UTILIZATION_UP
+op-2-operation = stop_set_property
+op-2-address-id = 0
+op-2-peer-id = 0
+op-2-property = UTILIZATION_UP
 
-op-2-operation = stop_request
-op-2-peer-id = 0  
\ No newline at end of file
+op-3-operation = stop_request
+op-3-peer-id = 0  
\ No newline at end of file

Modified: gnunet/src/ats/gnunet-ats-solver-eval.c
===================================================================
--- gnunet/src/ats/gnunet-ats-solver-eval.c     2014-02-11 11:22:07 UTC (rev 
32299)
+++ gnunet/src/ats/gnunet-ats-solver-eval.c     2014-02-11 11:50:56 UTC (rev 
32300)
@@ -88,9 +88,9 @@
   struct ATS_Address *res;
   char *plugin;
   char *addr;
-  unsigned int address_id;
 };
 
+
 int find_address_it (void *cls,
                      const struct GNUNET_PeerIdentity *key,
                      void *value)
@@ -117,7 +117,18 @@
   return NULL;
 }
 
+static struct TestAddress *
+find_address_by_id (struct TestPeer *peer, int aid)
+{
+  struct TestAddress *cur;
+  for (cur = peer->addr_head; NULL != cur; cur = cur->next)
+    if (cur->aid == aid)
+      return cur;
+  return NULL;
+}
 
+
+
 /**
  * Logging
  */
@@ -253,22 +264,13 @@
 set_prop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct PropertyGenerator *pg = cls;
-  struct TestPeer *p;
   double pref_value;
   struct GNUNET_ATS_Information atsi;
 
   pg->set_task = GNUNET_SCHEDULER_NO_TASK;
 
-  if (NULL == (p = find_peer_by_id (pg->peer)))
-  {
-    GNUNET_break (0);
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        "Setting property generation for unknown peer %u\n", pg->peer);
-    return;
-  }
-
   if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains_value (sh->addresses,
-      &p->peer_id, pg->address))
+      &pg->test_peer->peer_id, pg->test_address->ats_addr))
   {
     GNUNET_break (0);
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -289,7 +291,8 @@
 
   /* set performance here! */
   sh->env.sf.s_bulk_start (sh->solver);
-  GAS_normalization_normalize_property (sh->addresses, pg->address, &atsi, 1);
+  GAS_normalization_normalize_property (sh->addresses,
+      pg->test_address->ats_addr, &atsi, 1);
   sh->env.sf.s_bulk_stop (sh->solver);
 
 
@@ -356,7 +359,8 @@
 struct PropertyGenerator *
 GNUNET_ATS_solver_generate_property_start (unsigned int peer,
     unsigned int address_id,
-    struct ATS_Address *ats_address,
+    struct TestPeer *test_peer,
+    struct TestAddress *test_address,
     enum GeneratorType type,
     long int base_value,
     long int value_rate,
@@ -370,7 +374,8 @@
   GNUNET_CONTAINER_DLL_insert (prop_gen_head, prop_gen_tail, pg);
   pg->type = type;
   pg->peer = peer;
-  pg->address = ats_address;
+  pg->test_address = test_address;
+  pg->test_peer = test_peer;
   pg->address_id = address_id;
   pg->ats_property = ats_property;
   pg->base_value = base_value;
@@ -1616,30 +1621,42 @@
   return aa;
 }
 
+
+
 static void
 enforce_add_address (struct GNUNET_ATS_TEST_Operation *op)
 {
-  struct ATS_Address *addr;
   struct TestPeer *p;
+  struct TestAddress *a;
 
   if (NULL == (p = find_peer_by_id (op->peer_id)))
   {
     p = GNUNET_new (struct TestPeer);
     p->id = op->peer_id;
-    memset (&p->peer_id, '0', sizeof (p->peer_id));
+    memset (&p->peer_id, op->peer_id, sizeof (p->peer_id));
     GNUNET_CONTAINER_DLL_insert (peer_head, peer_tail, p);
   }
 
-  addr = create_ats_address (&p->peer_id, op->plugin, op->address,
+  if (NULL != (a = find_address_by_id (p, op->address_id)))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Duplicate address %u for peer %u\n",
+        op->address_id, op->peer_id);
+  }
+
+  a = GNUNET_new (struct TestAddress);
+  a->aid = op->address_id;
+  a->ats_addr = create_ats_address (&p->peer_id, op->plugin, op->address,
       strlen (op->address) + 1, op->address_session);
+  memset (&p->peer_id, op->peer_id, sizeof (p->peer_id));
+  GNUNET_CONTAINER_DLL_insert (p->addr_head, p->addr_tail, a);
 
-  GNUNET_CONTAINER_multipeermap_put (sh->addresses, &p->peer_id, addr,
-      GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+  GNUNET_CONTAINER_multipeermap_put (sh->addresses, &p->peer_id, a->ats_addr,
+    GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Adding address %u for peer %u\n",
-      op->address_id, op->peer_id);
+    op->address_id, op->peer_id);
 
-  sh->env.sf.s_add (sh->solver, addr, op->address_network);
+  sh->env.sf.s_add (sh->solver, a->ats_addr, op->address_network);
 
 }
 
@@ -1648,6 +1665,7 @@
 enforce_del_address (struct GNUNET_ATS_TEST_Operation *op)
 {
   struct TestPeer *p;
+  struct TestAddress *a;
   struct AddressLookupCtx ctx;
 
   if (NULL == (p = find_peer_by_id (op->peer_id)))
@@ -1671,6 +1689,15 @@
     return;
   }
 
+  if (NULL == (a = find_address_by_id (p, op->address_id)))
+  {
+    GNUNET_break (0);
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+        "Deleting address for unknown peer %u\n", op->peer_id);
+    return;
+  }
+  GNUNET_CONTAINER_DLL_remove (p->addr_head, p->addr_tail, a);
+
   GNUNET_CONTAINER_multipeermap_remove (sh->addresses, &p->peer_id, ctx.res);
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Removing address %u for peer %u\n",
@@ -1685,15 +1712,15 @@
 enforce_start_property (struct GNUNET_ATS_TEST_Operation *op)
 {
   struct PropertyGenerator *pg;
+  struct TestPeer *p;
+  struct TestAddress *a;
+
   if (NULL != (pg = find_prop_gen (op->peer_id, op->address_id, 
op->prop_type)))
   {
     GNUNET_ATS_solver_generate_property_stop (pg);
     GNUNET_free (pg);
   }
 
-  struct TestPeer *p;
-  struct AddressLookupCtx ctx;
-
   if (NULL == (p = find_peer_by_id (op->peer_id)))
   {
     GNUNET_break (0);
@@ -1702,23 +1729,17 @@
     return;
   }
 
-  ctx.plugin = op->plugin;
-  ctx.addr = op->address;
-  ctx.res = NULL;
-  GNUNET_CONTAINER_multipeermap_get_multiple (sh->addresses, &p->peer_id,
-      find_address_it, &ctx);
-  if (NULL == ctx.res)
+  if (NULL == (a = find_address_by_id (p, op->address_id)))
   {
     GNUNET_break (0);
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-        "Starting property generation for unknown address for peer %u\n",
-        op->peer_id);
+        "Setting proprterty for unknown address %u\n", op->peer_id);
     return;
   }
 
   GNUNET_ATS_solver_generate_property_start (op->peer_id,
     op->address_id,
-    ctx.res,
+    p, a,
     op->gen_type,
     op->base_rate,
     op->max_rate,
@@ -2419,7 +2440,6 @@
   {
     next = cur->next;
     GNUNET_CONTAINER_DLL_remove (peer_head, peer_tail, cur);
-    GNUNET_break (0);
     GNUNET_CONTAINER_multipeermap_iterate (sh->env.addresses, &free_all_it, 
NULL);
 
     GNUNET_free (cur);

Modified: gnunet/src/ats/gnunet-ats-solver-eval.h
===================================================================
--- gnunet/src/ats/gnunet-ats-solver-eval.h     2014-02-11 11:22:07 UTC (rev 
32299)
+++ gnunet/src/ats/gnunet-ats-solver-eval.h     2014-02-11 11:50:56 UTC (rev 
32300)
@@ -90,9 +90,21 @@
 
   int id;
   struct GNUNET_PeerIdentity peer_id;
+
+  struct TestAddress *addr_head;
+  struct TestAddress *addr_tail;
 };
 
 
+struct TestAddress
+{
+  struct TestAddress *next;
+  struct TestAddress *prev;
+
+  int aid;
+  struct ATS_Address *ats_addr;
+};
+
 struct Episode;
 
 struct Experiment;
@@ -202,7 +214,8 @@
   unsigned int peer;
   unsigned int address_id;
 
-  struct ATS_Address *address;
+  struct TestPeer *test_peer;
+  struct TestAddress *test_address;
   uint32_t ats_property;
 
   long int base_value;




reply via email to

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