[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r33080 - in gnunet/src/ats: . experiments
From: |
gnunet |
Subject: |
[GNUnet-SVN] r33080 - in gnunet/src/ats: . experiments |
Date: |
Tue, 15 Apr 2014 16:27:54 +0200 |
Author: wachs
Date: 2014-04-15 16:27:54 +0200 (Tue, 15 Apr 2014)
New Revision: 33080
Modified:
gnunet/src/ats/experiments/example.exp
gnunet/src/ats/gnunet-ats-solver-eval.c
gnunet/src/ats/gnunet-ats-solver-eval.h
Log:
advanced logging
Modified: gnunet/src/ats/experiments/example.exp
===================================================================
--- gnunet/src/ats/experiments/example.exp 2014-04-15 14:07:21 UTC (rev
33079)
+++ gnunet/src/ats/experiments/example.exp 2014-04-15 14:27:54 UTC (rev
33080)
@@ -10,7 +10,7 @@
# operations = address_add, address_del, start_set_property,
stop_set_property,
# start_set_preference, stop_preference, start_request, stop_request
-duration = 5 s
+duration = 0
op-0-operation = address_add
op-0-address-id = 0
op-0-peer-id = 0
Modified: gnunet/src/ats/gnunet-ats-solver-eval.c
===================================================================
--- gnunet/src/ats/gnunet-ats-solver-eval.c 2014-04-15 14:07:21 UTC (rev
33079)
+++ gnunet/src/ats/gnunet-ats-solver-eval.c 2014-04-15 14:27:54 UTC (rev
33080)
@@ -122,6 +122,16 @@
return NULL;
}
+static struct TestPeer *
+find_peer_by_pid (const struct GNUNET_PeerIdentity *pid)
+{
+ struct TestPeer *cur;
+ for (cur = peer_head; NULL != cur; cur = cur->next)
+ if (0 == memcmp (&cur->peer_id, pid, sizeof (struct GNUNET_PeerIdentity)))
+ return cur;
+ return NULL;
+}
+
static struct TestAddress *
find_address_by_id (struct TestPeer *peer, int aid)
{
@@ -133,7 +143,19 @@
}
+static struct TestAddress *
+find_address_by_ats_address (struct TestPeer *p, struct ATS_Address *addr)
+{
+ struct TestAddress *cur;
+ for (cur = p->addr_head; NULL != cur; cur = cur->next)
+ if ((0 == strcmp(cur->ats_addr->plugin, addr->plugin)) &&
+ (cur->ats_addr->addr_len == addr->addr_len) &&
+ (0 == memcmp (cur->ats_addr->addr, addr->addr, addr->addr_len)))
+ return cur;
+ return NULL;
+}
+
/**
* Logging
*/
@@ -142,15 +164,60 @@
GNUNET_ATS_solver_logging_now (struct LoggingHandle *l)
{
struct LoggingTimeStep *lts;
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Logging\n");
+ struct TestPeer *cur;
+ struct TestAddress *cur_addr;
+ struct LoggingPeer *log_p;
+ struct LoggingAddress *log_a;
+ int c;
lts = GNUNET_new (struct LoggingTimeStep);
+ GNUNET_CONTAINER_DLL_insert_tail(l->head, l->tail, lts);
lts->timestamp = GNUNET_TIME_absolute_get();
+ if (NULL == lts->prev)
+ lts->delta = GNUNET_TIME_UNIT_ZERO;
+ else
+ lts->delta = GNUNET_TIME_absolute_get_duration(lts->prev->timestamp);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Logging %llu, delta %llu\n",
+ lts->timestamp.abs_value_us, lts->delta.rel_value_us);
+
+
/* Store logging data here */
+ for (cur = peer_head; NULL != cur; cur = cur->next)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Logging peer id %u\n", cur->peer_id);
- GNUNET_CONTAINER_DLL_insert_tail(l->head, l->tail, lts);
+ log_p = GNUNET_new (struct LoggingPeer);
+ log_p->id = cur->id;
+ log_p->peer_id = cur->peer_id;
+ for (c = 0; c < GNUNET_ATS_PreferenceCount; c++)
+ {
+ log_p->pref_norm[c] = cur->pref_norm[c];
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "\t %s = %.2f\n",
GNUNET_ATS_print_preference_type(c), log_p->pref_norm[c]);
+ }
+ GNUNET_CONTAINER_DLL_insert_tail(lts->head, lts->tail, log_p);
+ for (cur_addr = cur->addr_head; NULL != cur_addr; cur_addr =
cur_addr->next)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Logging peer id %u address %u\n",
cur->peer_id, cur_addr->aid);
+ log_a = GNUNET_new (struct LoggingAddress);
+ log_a->aid = cur_addr->aid;
+ log_a->active = cur_addr->ats_addr->active;
+ log_a->used = cur_addr->ats_addr->used;
+ log_a->assigned_bw_in = cur_addr->ats_addr->assigned_bw_in;
+ log_a->assigned_bw_out = cur_addr->ats_addr->assigned_bw_out;
+ for (c = 0; c < GNUNET_ATS_PropertyCount; c++)
+ {
+ log_a->prop_norm[c] = cur_addr->prop_norm[c];
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "\t %s = %.2f\n",
GNUNET_ATS_print_property_type(c), log_a->prop_norm[c]);
+ }
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "\t Active = %i\n", log_a->active);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "\t BW in = %llu\n",
ntohl(log_a->assigned_bw_in.value__));
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "\t BW out = %llu\n",
ntohl(log_a->assigned_bw_out.value__));
+
+ GNUNET_CONTAINER_DLL_insert_tail(log_p->addr_head, log_p->addr_tail,
log_a);
+ }
+ }
}
static void
@@ -173,12 +240,8 @@
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Start logging every %s\n",
GNUNET_STRINGS_relative_time_to_string(freq, GNUNET_NO));
-
- /* Iterate over peers */
-
l->log_freq = freq;
l->logging_task = GNUNET_SCHEDULER_add_now (&logging_task, l);
-
return l;
}
@@ -197,29 +260,78 @@
GNUNET_ATS_solver_logging_eval (struct LoggingHandle *l)
{
struct LoggingTimeStep *lts;
+ struct LoggingPeer *log_p;
+ struct LoggingAddress *log_a;
+ int c;
for (lts = l->head; NULL != lts; lts = lts->next)
{
- fprintf (stderr, "Log %llu: \n", (long long unsigned int)
lts->timestamp.abs_value_us);
+ fprintf (stderr, "Log %llu %llu: \n",
+ (long long unsigned int) lts->timestamp.abs_value_us,
+ (long long unsigned int) lts->delta.rel_value_us);
+
+ for (log_p = lts->head; NULL != log_p; log_p = log_p->next)
+ {
+ fprintf (stderr,"\tLogging peer id %u\n", log_p->id);
+ for (c = 0; c < GNUNET_ATS_PreferenceCount; c++)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "\t %s = %.2f\n",
GNUNET_ATS_print_preference_type(c), log_p->pref_norm[c]);
+ }
+
+ for (log_a = log_p->addr_head; NULL != log_a; log_a = log_a->next)
+ {
+ fprintf (stderr, "\tPeer id %u address %u: %u %u %u\n",
+ log_p->id, log_a->aid, log_a->active,
+ ntohl(log_a->assigned_bw_in.value__),
+ ntohl(log_a->assigned_bw_out.value__));
+
+ for (c = 0; c < GNUNET_ATS_PropertyCount; c++)
+ {
+ fprintf(stderr, "\t %s = %.2f\n", GNUNET_ATS_print_property_type(c),
log_a->prop_norm[c]);
+ }
+ }
+ }
}
}
void
GNUNET_ATS_solver_logging_free (struct LoggingHandle *l)
{
- struct LoggingTimeStep *cur;
- struct LoggingTimeStep *next;
+ struct LoggingTimeStep *lts_cur;
+ struct LoggingTimeStep *lts_next;
+ struct LoggingPeer *log_p_cur;
+ struct LoggingPeer *log_p_next;
+ struct LoggingAddress *log_a_cur;
+ struct LoggingAddress *log_a_next;
if (GNUNET_SCHEDULER_NO_TASK != l->logging_task)
GNUNET_SCHEDULER_cancel (l->logging_task);
l->logging_task = GNUNET_SCHEDULER_NO_TASK;
- next = l->head;
- while (NULL != (cur = next))
+ lts_next = l->head;
+ while (NULL != (lts_cur = lts_next))
{
- next = cur->next;
- GNUNET_CONTAINER_DLL_remove (l->head, l->tail, cur);
- GNUNET_free (cur);
+ lts_next = lts_cur->next;
+ GNUNET_CONTAINER_DLL_remove (l->head, l->tail, lts_cur);
+
+ log_p_next = lts_cur->head;
+ while (NULL != (log_p_cur = log_p_next))
+ {
+ log_p_next = log_p_cur->next;
+
+ log_a_next = log_p_cur->addr_head;
+ while (NULL != (log_a_cur = log_a_next))
+ {
+ log_a_next = log_a_cur->next;
+ GNUNET_CONTAINER_DLL_remove (log_p_cur->addr_head,
log_p_cur->addr_tail, log_a_cur);
+ GNUNET_free (log_a_cur);
+ }
+
+ GNUNET_CONTAINER_DLL_remove (lts_cur->head, lts_cur->tail, log_p_cur);
+ GNUNET_free (log_p_cur);
+ }
+
+ GNUNET_free (lts_cur);
}
GNUNET_free (l);
@@ -294,6 +406,8 @@
set_prop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PropertyGenerator *pg = cls;
+ struct TestPeer *p;
+ struct TestAddress *a;
double pref_value;
struct GNUNET_ATS_Information atsi;
@@ -308,6 +422,18 @@
pg->peer, pg->address_id);
return;
}
+ if (NULL == (p = find_peer_by_id (pg->peer)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Setting property generation for unknown peer %u\n",
+ pg->peer);
+ }
+ if (NULL == (a = find_address_by_id (p, pg->address_id)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Setting property generation for unknown peer %u\n",
+ pg->peer);
+ }
pref_value = get_property (pg);
@@ -316,7 +442,6 @@
pg->peer, pg->address_id,
GNUNET_ATS_print_property_type (pg->ats_property), pref_value);
-
atsi.type = htonl (pg->ats_property);
atsi.value = htonl ((uint32_t) pref_value);
@@ -326,17 +451,6 @@
pg->test_address->ats_addr, &atsi, 1);
sh->env.sf.s_bulk_stop (sh->solver);
- switch (pg->ats_property) {
- case GNUNET_ATS_PREFERENCE_BANDWIDTH:
- //p->pref_bandwidth = pref_value;
- break;
- case GNUNET_ATS_PREFERENCE_LATENCY:
- //p->pref_delay = pref_value;
- break;
- default:
- break;
- }
-
pg->set_task = GNUNET_SCHEDULER_add_delayed (pg->frequency,
&set_prop_task, pg);
@@ -863,7 +977,7 @@
}
GNUNET_free (op_name);
- fprintf (stderr,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found operation %s: [%llu:%llu] address `%s' plugin `%s' \n",
"ADD_ADDRESS", o->peer_id, o->address_id, o->address, o->plugin);
@@ -951,7 +1065,7 @@
}
GNUNET_free (op_name);
- fprintf (stderr,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found operation %s: [%llu:%llu] address `%s' plugin `%s' \n",
"DEL_ADDRESS", o->peer_id, o->address_id, o->address, o->plugin);
@@ -1130,7 +1244,7 @@
GNUNET_free (pref);
GNUNET_free (op_name);
- fprintf (stderr,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found operation %s: [%llu:%llu]: %s = %llu\n",
"START_SET_PREFERENCE", o->peer_id, o->address_id,
GNUNET_ATS_print_preference_type(o->pref_type), o->base_rate);
@@ -1194,7 +1308,7 @@
GNUNET_free (pref);
GNUNET_free (op_name);
- fprintf (stderr,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found operation %s: [%llu:%llu]: %s\n",
"STOP_SET_PREFERENCE", o->peer_id, o->address_id,
GNUNET_ATS_print_preference_type(o->pref_type));
@@ -1363,7 +1477,7 @@
GNUNET_free (prop);
GNUNET_free (op_name);
- fprintf (stderr,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found operation %s: [%llu:%llu] %s = %llu\n",
"START_SET_PROPERTY", o->peer_id, o->address_id,
GNUNET_ATS_print_property_type (o->prop_type), o->base_rate);
@@ -1429,7 +1543,7 @@
GNUNET_free (pref);
GNUNET_free (op_name);
- fprintf (stderr,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Found operation %s: [%llu:%llu] %s\n",
"STOP_SET_PROPERTY", o->peer_id, o->address_id,
GNUNET_ATS_print_property_type (o->prop_type));
@@ -1495,7 +1609,7 @@
char *op;
int op_counter = 0;
int res;
- fprintf (stderr, "Parsing episode %u\n",cur->id);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "=== Parsing episode %u\n",cur->id);
GNUNET_asprintf(&sec_name, "episode-%u", cur->id);
while (1)
@@ -1599,7 +1713,6 @@
if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_time(cfg,
sec_name, "duration", &e_duration))
{
- fprintf (stderr, "Missing duration in episode %u \n",e_counter);
GNUNET_free (sec_name);
break;
}
@@ -1615,7 +1728,7 @@
return GNUNET_SYSERR;
}
- fprintf (stderr, "Found episode %u with duration %s \n",
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Found episode %u with duration %s \n",
e_counter,
GNUNET_STRINGS_relative_time_to_string(cur->duration, GNUNET_YES));
@@ -1712,6 +1825,8 @@
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Adding address %u for peer %u\n",
op->address_id, op->peer_id);
+
+
sh->env.sf.s_add (sh->solver, a->ats_addr, op->address_network);
}
@@ -1721,6 +1836,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)))
@@ -1744,7 +1860,7 @@
return;
}
- if (NULL == (find_address_by_id (p, op->address_id)))
+ if (NULL == (a =find_address_by_id (p, op->address_id)))
{
GNUNET_break (0);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1752,6 +1868,9 @@
return;
}
+ GNUNET_CONTAINER_DLL_remove(p->addr_head, p->addr_tail, a);
+ GNUNET_free (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",
@@ -1872,7 +1991,6 @@
{
}
-
}
static void
@@ -1995,13 +2113,13 @@
e->experiment_timeout_task = GNUNET_SCHEDULER_add_delayed (e->max_duration,
&timeout_experiment, e);
-
/* Start */
if (NULL == e->start)
{
GNUNET_break (0);
return;
}
+
e->cur = e->start;
fprintf (stderr, "Running episode %u with timeout %s\n",
e->cur->id,
@@ -2059,7 +2177,7 @@
return NULL;
}
else
- fprintf (stderr, "Experiment name: `%s'\n", e->name);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment name: `%s'\n", e->name);
if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_filename (cfg,
"experiment",
"cfg_file", &e->cfg_file))
@@ -2070,7 +2188,7 @@
}
else
{
- fprintf (stderr, "Experiment configuration: `%s'\n", e->cfg_file);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment configuration: `%s'\n",
e->cfg_file);
e->cfg = GNUNET_CONFIGURATION_create();
if (GNUNET_SYSERR == GNUNET_CONFIGURATION_load (e->cfg, e->cfg_file))
{
@@ -2089,7 +2207,7 @@
return NULL;
}
else
- fprintf (stderr, "Experiment logging frequency: `%s'\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment logging frequency: `%s'\n",
GNUNET_STRINGS_relative_time_to_string (e->log_freq, GNUNET_YES));
if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_time(cfg, "experiment",
@@ -2100,7 +2218,7 @@
return NULL;
}
else
- fprintf (stderr, "Experiment duration: `%s'\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment duration: `%s'\n",
GNUNET_STRINGS_relative_time_to_string (e->max_duration, GNUNET_YES));
if (GNUNET_SYSERR == load_episodes (e, cfg))
@@ -2111,7 +2229,7 @@
fprintf (stderr, "Failed to load experiment\n");
return NULL;
}
- fprintf (stderr, "Loaded %u episodes with total duration %s\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Loaded %u episodes with total duration
%s\n",
e->num_episodes,
GNUNET_STRINGS_relative_time_to_string (e->total_duration, GNUNET_YES));
@@ -2293,56 +2411,56 @@
switch (op)
{
case GAS_OP_SOLVE_START:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s' `%s'\n", "GAS_OP_SOLVE_START",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL", add_info);
return;
case GAS_OP_SOLVE_STOP:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n", "GAS_OP_SOLVE_STOP",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL", add_info);
return;
case GAS_OP_SOLVE_SETUP_START:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n",
"GAS_OP_SOLVE_SETUP_START",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_SETUP_STOP:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n", "GAS_OP_SOLVE_SETUP_STOP",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_MLP_LP_START:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n", "GAS_OP_SOLVE_LP_START",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_MLP_LP_STOP:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n", "GAS_OP_SOLVE_LP_STOP",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_MLP_MLP_START:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n", "GAS_OP_SOLVE_MLP_START",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_MLP_MLP_STOP:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n", "GAS_OP_SOLVE_MLP_STOP",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_UPDATE_NOTIFICATION_START:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n",
"GAS_OP_SOLVE_UPDATE_NOTIFICATION_START",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
case GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP:
- GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Solver notifies `%s' with result `%s'\n",
"GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP",
(GAS_STAT_SUCCESS == stat) ? "SUCCESS" : "FAIL");
return;
@@ -2354,6 +2472,7 @@
static void
solver_bandwidth_changed_cb (void *cls, struct ATS_Address *address)
{
+ GNUNET_break (0);
if ( (0 == ntohl (address->assigned_bw_out.value__)) &&
(0 == ntohl (address->assigned_bw_in.value__)) )
{
@@ -2388,6 +2507,28 @@
}
static void
+set_updated_property ( struct ATS_Address *address, uint32_t type, double
prop_rel)
+{
+ struct TestPeer *p;
+ struct TestAddress *a;
+
+ if (NULL == (p = find_peer_by_pid (&address->peer)))
+ {
+ GNUNET_break (0);
+ return;
+ }
+
+ if (NULL == (a = find_address_by_ats_address (p, address)))
+ {
+ GNUNET_break (0);
+ return;
+ }
+ a->prop_norm[type] = prop_rel;
+ sh->env.sf.s_address_update_property (sh->solver, address, type, 0,
prop_rel);
+}
+
+
+static void
normalized_property_changed_cb (void *cls, struct ATS_Address *address,
uint32_t type, double prop_rel)
{
@@ -2396,10 +2537,27 @@
GNUNET_ATS_print_property_type (type), GNUNET_i2s (&address->peer),
prop_rel);
- sh->env.sf.s_address_update_property (sh->solver, address, type, 0,
prop_rel);
+ set_updated_property (address, type, prop_rel);
}
+static void
+set_updated_preference (const struct GNUNET_PeerIdentity *peer,
+ enum GNUNET_ATS_PreferenceKind kind,
+ double pref_rel)
+{
+ struct TestPeer *p;
+ if (NULL == (p = find_peer_by_pid (peer)))
+ {
+ GNUNET_break (0);
+ return;
+ }
+
+ p->pref_norm[kind] = pref_rel;
+ sh->env.sf.s_pref (sh->solver, peer, kind, pref_rel);
+}
+
+
static void
normalized_preference_changed_cb (void *cls,
const struct GNUNET_PeerIdentity *peer,
@@ -2411,7 +2569,7 @@
GNUNET_ATS_print_preference_type (kind), GNUNET_i2s (peer),
pref_rel);
- sh->env.sf.s_pref (sh->solver, peer, kind, pref_rel);
+ set_updated_preference(peer, kind, pref_rel);
}
@@ -2619,6 +2777,7 @@
}
/* load experiment */
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "=== Loading experiment\n");
e = GNUNET_ATS_solvers_experimentation_load (opt_exp_file);
if (NULL == e)
{
@@ -2629,6 +2788,7 @@
}
/* load solver */
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "=== Loading solver\n");
sh = GNUNET_ATS_solvers_solver_start (solver);
if (NULL == sh)
{
@@ -2639,9 +2799,11 @@
}
/* start logging */
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "=== Start logging \n");
l = GNUNET_ATS_solver_logging_start (e->log_freq);
/* run experiment */
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "=== Running experiment \n");
GNUNET_ATS_solvers_experimentation_run (e, episode_done_cb,
experiment_done_cb);
Modified: gnunet/src/ats/gnunet-ats-solver-eval.h
===================================================================
--- gnunet/src/ats/gnunet-ats-solver-eval.h 2014-04-15 14:07:21 UTC (rev
33079)
+++ gnunet/src/ats/gnunet-ats-solver-eval.h 2014-04-15 14:27:54 UTC (rev
33080)
@@ -90,10 +90,42 @@
struct LoggingTimeStep *prev;
struct LoggingTimeStep *next;
+ struct LoggingPeer *head;
+ struct LoggingPeer *tail;
+
struct GNUNET_TIME_Absolute timestamp;
+ struct GNUNET_TIME_Relative delta;
};
+struct LoggingPeer
+{
+ struct LoggingPeer *prev;
+ struct LoggingPeer *next;
+ int id;
+ struct GNUNET_PeerIdentity peer_id;
+ double pref_norm[GNUNET_ATS_PreferenceCount];
+
+ struct LoggingAddress *addr_head;
+ struct LoggingAddress *addr_tail;
+};
+
+
+struct LoggingAddress
+{
+ struct LoggingAddress *next;
+ struct LoggingAddress *prev;
+
+ int aid;
+ int active;
+ int used;
+ struct GNUNET_BANDWIDTH_Value32NBO assigned_bw_in;
+ struct GNUNET_BANDWIDTH_Value32NBO assigned_bw_out;
+
+ double prop_norm[GNUNET_ATS_PropertyCount];
+};
+
+
struct TestPeer
{
struct TestPeer *prev;
@@ -101,6 +133,7 @@
int id;
struct GNUNET_PeerIdentity peer_id;
+ double pref_norm[GNUNET_ATS_PreferenceCount];
struct TestAddress *addr_head;
struct TestAddress *addr_tail;
@@ -114,6 +147,8 @@
int aid;
struct ATS_Address *ats_addr;
+
+ double prop_norm[GNUNET_ATS_PropertyCount];
};
struct Episode;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r33080 - in gnunet/src/ats: . experiments,
gnunet <=