[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19834 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19834 - gnunet/src/ats |
Date: |
Fri, 17 Feb 2012 14:49:24 +0100 |
Author: wachs
Date: 2012-02-17 14:49:24 +0100 (Fri, 17 Feb 2012)
New Revision: 19834
Modified:
gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
gnunet/src/ats/test_ats_mlp.c
Log:
- logging, testing and result extraction
Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c 2012-02-17 12:04:24 UTC
(rev 19833)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c 2012-02-17 13:49:24 UTC
(rev 19834)
@@ -223,7 +223,7 @@
mlp_term_hook (void *info, const char *s)
{
/* Not needed atm struct MLP_information *mlp = info; */
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%s", s);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%s", s);
return 1;
}
@@ -603,14 +603,14 @@
if (index != GNUNET_SYSERR)
{
value = (double) addr->ats[index].value;
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Quality %i with ATS property
`%s' has index %i in addresses ats information has value %f\n", c,
mlp_ats_to_string(mlp->q[c]), index, (double) addr->ats[index].value);
-#endif
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Quality %i with ATS property
`%s' has index %i in addresses ats information has value %f\n", c,
mlp_ats_to_string(mlp->q[c]), index, (double) addr->ats[index].value);
+
}
-#if DEBUG_ATS
+
else
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Quality %i with ATS property
`%s' not existing\n", c, mlp_ats_to_string(mlp->q[c]), index);
-#endif
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Quality %i with ATS property
`%s' not existing\n", c, mlp_ats_to_string(mlp->q[c]), index);
+
mlpi = addr->mlp_information;
mlpi->r_q[c] = mlp->r_q[c];
@@ -819,7 +819,7 @@
else
{
/* Problem was ill-defined, no way to handle that */
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
"ats-mlp",
"Solving LP problem failed: %i %s\n", res, mlp_solve_to_string(res));
return GNUNET_SYSERR;
@@ -848,7 +848,7 @@
/* Problem was ill-defined, no way to handle that */
default:
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
"ats-mlp",
"Solving LP problem failed, no solution: %s\n",
mlp_status_to_string(res));
return GNUNET_SYSERR;
@@ -896,7 +896,7 @@
else
{
/* Problem was ill-defined, no way to handle that */
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
"ats-mlp",
"Solving MLP problem failed: %s\n", mlp_solve_to_string(res));
return GNUNET_SYSERR;
@@ -923,7 +923,7 @@
/* Problem was ill-defined, no way to handle that */
default:
- GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
"ats-mlp",
"Solving MLP problem failed, %s\n\n", mlp_status_to_string(res));
return GNUNET_SYSERR;
@@ -945,9 +945,9 @@
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
-#if DEBUG_ATS
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Scheduled problem solving\n");
-#endif
+
if (mlp->addr_in_problem != 0)
GAS_mlp_solve_problem(mlp);
}
@@ -964,10 +964,10 @@
{
int res;
mlp->last_execution = GNUNET_TIME_absolute_get ();
-#if DEBUG_ATS
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Problem solving\n");
-#endif
+
#if WRITE_MLP
char * name;
static int i;
@@ -987,9 +987,9 @@
if (res != GNUNET_OK)
{
-#if DEBUG_ATS
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "LP Problem solving failed\n");
-#endif
+
return GNUNET_SYSERR;
}
@@ -1002,18 +1002,41 @@
# endif
if (res != GNUNET_OK)
{
-#if DEBUG_ATS
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "MLP Problem solving failed\n");
-#endif
+
return GNUNET_SYSERR;
}
-#if DEBUG_ATS
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Problem solved\n");
-#endif
-
/* Process result */
+ struct ATS_Peer *p = NULL;
+ struct ATS_Address *a = NULL;
+ struct MLP_information *mlpi = NULL;
+ for (p = mlp->peer_head; p != NULL; p = p->next)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s'\n", GNUNET_i2s (&p->id));
+ for (a = p->head; a != NULL; a = a->next)
+ {
+ double b = 0.0;
+ double n = 0.0;
+
+ mlpi = a->mlp_information;
+
+ b = glp_mip_col_val(mlp->prob, mlpi->c_b);
+ n = glp_mip_col_val(mlp->prob, mlpi->c_n);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tAddress %f %f\n", n, b);
+
+ }
+
+ }
+
+
+
+
if (mlp->mlp_task != GNUNET_SCHEDULER_NO_TASK)
{
GNUNET_SCHEDULER_cancel(mlp->mlp_task);
@@ -1145,20 +1168,21 @@
/* Init LP solving parameters */
glp_init_smcp(&mlp->control_param_lp);
+
+ mlp->control_param_lp.msg_lev = GLP_MSG_OFF;
#if VERBOSE_GLPK
mlp->control_param_lp.msg_lev = GLP_MSG_ALL;
-#else
- mlp->control_param_lp.msg_lev = GLP_MSG_OFF;
#endif
+
mlp->control_param_lp.it_lim = max_iterations;
mlp->control_param_lp.tm_lim = max_duration.rel_value;
/* Init MLP solving parameters */
glp_init_iocp(&mlp->control_param_mlp);
+
+ mlp->control_param_mlp.msg_lev = GLP_MSG_OFF;
#if VERBOSE_GLPK
mlp->control_param_mlp.msg_lev = GLP_MSG_ALL;
-#else
- mlp->control_param_mlp.msg_lev = GLP_MSG_OFF;
#endif
mlp->control_param_mlp.tm_lim = max_duration.rel_value;
@@ -1225,10 +1249,10 @@
struct ATS_Peer *peer = mlp_find_peer (mlp, &address->peer);
if (peer == NULL)
{
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Adding new peer `%s'\n",
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding new peer `%s'\n",
GNUNET_i2s (&address->peer));
-#endif
+
peer = GNUNET_malloc (sizeof (struct ATS_Peer));
peer->head = NULL;
peer->tail = NULL;
@@ -1249,19 +1273,19 @@
}
else
{
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Adding address to peer `%s'\n",
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding address to peer `%s'\n",
GNUNET_i2s (&address->peer));
-#endif
+
GNUNET_CONTAINER_DLL_insert (peer->head, peer->tail, address);
}
}
else
{
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Updating existing address to peer
`%s'\n",
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Updating existing address to peer
`%s'\n",
GNUNET_i2s (&address->peer));
-#endif
+
mlpi = address->mlp_information;
int c;
for (c = 0; c < GNUNET_ATS_QualityPropertiesCount; c++)
@@ -1271,13 +1295,13 @@
{
if (mlpi->q[c] == (double) address->ats[index].value)
break;
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Updating address for peer `%s'
value `%s'from %f to %f\n",
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Updating address for peer `%s'
value `%s'from %f to %f\n",
GNUNET_i2s (&address->peer),
mlp_ats_to_string(mlp->q[c]),
mlpi->q[c],
(double) address->ats[index].value);
-#endif
+
switch (mlp->q[c])
{
case GNUNET_ATS_QUALITY_NET_DELAY:
@@ -1302,18 +1326,18 @@
/* Get the index if matrix row of quality */
for (c2 = 1; c2 <= cols; c2++ )
{
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Existing element column %i :
%f\n",
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Existing element column %i :
%f\n",
ind[c2], val[c2]);
-#endif
+
if ((mlpi->c_b == ind[c2]) && (val[c2] != mlpi->q[c]))
{
/* Update the value */
val[c2] = mlpi->q[c];
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New element column %i :
%f\n",
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New element column %i :
%f\n",
ind[c2], val[c2]);
-#endif
+
}
}
@@ -1364,16 +1388,16 @@
/* Remove from peer list */
struct ATS_Peer *head = mlp_find_peer (mlp, &address->peer);
GNUNET_assert (head != NULL);
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Deleting address for `%s'\n",
GNUNET_i2s (&address->peer));
-#endif
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deleting address for `%s'\n",
GNUNET_i2s (&address->peer));
+
GNUNET_CONTAINER_DLL_remove (head->head, head->tail, address);
if ((head->head == NULL) && (head->tail == NULL))
{
/* No address for peer left, remove peer */
-#if DEBUG_ATS
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Deleting peer `%s'\n", GNUNET_i2s
(&address->peer));
-#endif
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deleting peer `%s'\n", GNUNET_i2s
(&address->peer));
+
GNUNET_CONTAINER_DLL_remove (mlp->peer_head, mlp->peer_tail, head);
GNUNET_free (head);
mlp->c_p --;
Modified: gnunet/src/ats/test_ats_mlp.c
===================================================================
--- gnunet/src/ats/test_ats_mlp.c 2012-02-17 12:04:24 UTC (rev 19833)
+++ gnunet/src/ats/test_ats_mlp.c 2012-02-17 13:49:24 UTC (rev 19834)
@@ -78,50 +78,76 @@
addresses = GNUNET_CONTAINER_multihashmap_create (10);
- /* Creating address 1 */
- GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK,
&addr[0].peer.hashPubKey);
+ mlp = GAS_mlp_init (cfg, NULL, MLP_MAX_EXEC_DURATION, MLP_MAX_ITERATIONS);
+ mlp->auto_solve = GNUNET_NO;
+
+ struct GNUNET_PeerIdentity p[10];
+
+ /* Creating peer 1 */
+ GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK,
&p[0].hashPubKey);
+ /* Creating peer 2 */
+ GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK,
&p[1].hashPubKey);
+
+ /* Creating peer 1 address 1 */
+ addr[0].peer.hashPubKey = p[0].hashPubKey;
struct GNUNET_ATS_Information a1_ats[3];
set_ats (&a1_ats[0], GNUNET_ATS_QUALITY_NET_DISTANCE, 1);
set_ats (&a1_ats[1], GNUNET_ATS_QUALITY_NET_DELAY, 32);
set_ats (&a1_ats[2], GNUNET_ATS_ARRAY_TERMINATOR, 0);
create_address (&addr[0], "dummy", 3, &a1_ats[0]);
- GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK,
&addr[1].peer.hashPubKey);
+
+ /* Creating peer 1 address 2 */
+ addr[1].peer.hashPubKey = p[0].hashPubKey;
struct GNUNET_ATS_Information a2_ats[3];
set_ats (&a2_ats[0], GNUNET_ATS_ARRAY_TERMINATOR, 0);
set_ats (&a2_ats[1], GNUNET_ATS_QUALITY_NET_DELAY, 32);
set_ats (&a2_ats[2], GNUNET_ATS_QUALITY_NET_DISTANCE, 1);
-
create_address (&addr[1], "dummy2", 3, &a2_ats[0]);
+ /* Creating peer 2 address 1 */
+ addr[2].peer.hashPubKey = p[1].hashPubKey;
+ struct GNUNET_ATS_Information a3_ats[3];
+ set_ats (&a3_ats[0], GNUNET_ATS_ARRAY_TERMINATOR, 0);
+ set_ats (&a3_ats[1], GNUNET_ATS_QUALITY_NET_DELAY, 32);
+ set_ats (&a3_ats[2], GNUNET_ATS_QUALITY_NET_DISTANCE, 1);
+ create_address (&addr[2], "dummy3", 3, &a3_ats[0]);
+
GNUNET_CONTAINER_multihashmap_put(addresses, &addr[0].peer.hashPubKey,
&addr[0], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
- mlp = GAS_mlp_init (cfg, NULL, MLP_MAX_EXEC_DURATION, MLP_MAX_ITERATIONS);
- mlp->auto_solve = GNUNET_NO;
-
- /* Add a new address */
+ /* Add peer 1 address 1 */
GAS_mlp_address_update (mlp, addresses, &addr[0]);
GNUNET_assert (mlp != NULL);
GNUNET_assert (mlp->addr_in_problem == 1);
- /* Update an new address */
+ /* Update an peer 1 address 1 */
set_ats (&a1_ats[1], GNUNET_ATS_QUALITY_NET_DELAY, 20);
GAS_mlp_address_update (mlp, addresses, &addr[0]);
GNUNET_assert (mlp->addr_in_problem == 1);
- /* Add a second address for same peer */
- GNUNET_CONTAINER_multihashmap_put(addresses, &addr[1].peer.hashPubKey,
&addr[1], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+ /* Add peer 1 address 2 */
+ GNUNET_CONTAINER_multihashmap_put(addresses, &addr[0].peer.hashPubKey,
&addr[1], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
GAS_mlp_address_update (mlp, addresses, &addr[1]);
GNUNET_assert (mlp->addr_in_problem == 2);
+ /* Add peer 2 address 1 */
+ GNUNET_CONTAINER_multihashmap_put(addresses, &addr[2].peer.hashPubKey,
&addr[2], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+ GAS_mlp_address_update (mlp, addresses, &addr[2]);
+ GNUNET_assert (mlp->addr_in_problem == 3);
+
GNUNET_assert (GNUNET_OK == GAS_mlp_solve_problem(mlp));
/* Delete an address */
GNUNET_CONTAINER_multihashmap_remove (addresses, &addr[0].peer.hashPubKey,
&addr[0]);
GAS_mlp_address_delete (mlp, addresses, &addr[0]);
+ GNUNET_CONTAINER_multihashmap_remove (addresses, &addr[1].peer.hashPubKey,
&addr[1]);
GAS_mlp_address_delete (mlp, addresses, &addr[1]);
+ GNUNET_CONTAINER_multihashmap_remove (addresses, &addr[2].peer.hashPubKey,
&addr[2]);
+ GAS_mlp_address_delete (mlp, addresses, &addr[2]);
+ GNUNET_assert (mlp->addr_in_problem == 0);
+
GAS_mlp_done (mlp);
GNUNET_free (addr[0].plugin);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19834 - gnunet/src/ats,
gnunet <=