remove_session (struct GNUNET_ATS_SchedulingHandle *sh, uint32_t session_id,
const struct GNUNET_PeerIdentity *peer)
{
+ GNUNET_assert (peer != NULL);
+ GNUNET_assert (sh != NULL);
+
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "ats-scheduling-api",
- "Remove sessionID %u from peer %s in %p\n", "ats-scheduling-api",
+ "Release sessionID %u from peer %s in %p\n",
(unsigned int) session_id, GNUNET_i2s (peer), sh);
+
if (0 == session_id)
return;
GNUNET_assert (session_id < sh->session_array_size);
if (aa == NULL)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
"Cannot suggest address for peer `%s'\n", GNUNET_i2s (peer));
return;
}
&find_address_it, &aa);
if (aa == NULL)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
"Cannot suggest address for peer `%s'\n", GNUNET_i2s (peer));
return;
}
mlp->lp_total_duration =+ duration.rel_value;
GNUNET_STATISTICS_update (mlp->stats,"# LP problem solved", 1, GNUNET_NO);
- GNUNET_STATISTICS_set (mlp->stats,"# LP execution time", duration.rel_value, GNUNET_NO);
- GNUNET_STATISTICS_set (mlp->stats,"# LP execution time average",
+ GNUNET_STATISTICS_set (mlp->stats,"# LP execution time (ms)", duration.rel_value, GNUNET_NO);
+ GNUNET_STATISTICS_set (mlp->stats,"# LP execution time average (ms)",
mlp->lp_total_duration / mlp->lp_solved, GNUNET_NO);
mlp->mlp_total_duration =+ duration.rel_value;
GNUNET_STATISTICS_update (mlp->stats,"# MLP problem solved", 1, GNUNET_NO);
- GNUNET_STATISTICS_set (mlp->stats,"# MLP execution time", duration.rel_value, GNUNET_NO);
- GNUNET_STATISTICS_set (mlp->stats,"# MLP execution time average",
+ GNUNET_STATISTICS_set (mlp->stats,"# MLP execution time (ms)", duration.rel_value, GNUNET_NO);
+ GNUNET_STATISTICS_set (mlp->stats,"# MLP execution time average (ms)",
mlp->mlp_total_duration / mlp->mlp_solved, GNUNET_NO);
/* Analyze problem status */
}
else if (GNUNET_ATS_NET_UNSPECIFIED == quotas[c])
{
- quota_out = 0;
+ quota_out = mlp->BIG_M;
}
else
{
}
else if (GNUNET_ATS_NET_UNSPECIFIED == quotas[c])
{
- quota_in = 0;
+ quota_in = mlp->BIG_M;
}
else
{
int new;
struct MLP_information *mlpi;
- GNUNET_STATISTICS_update (mlp->stats,"# LP address updates", 1, GNUNET_NO);
+ GNUNET_STATISTICS_update (mlp->stats, "# MLP address updates", 1, GNUNET_NO);
/* We add a new address */
if (address->mlp_information == NULL)
address->mlp_information = mlpi;
mlp->addr_in_problem ++;
+ GNUNET_STATISTICS_update (mlp->stats, "# addresses in MLP", 1, GNUNET_NO);
/* Check for and add peer */
struct ATS_Peer *peer = mlp_find_peer (mlp, &address->peer);
GNUNET_CONTAINER_DLL_insert (peer->head, peer->tail, address);
GNUNET_CONTAINER_DLL_insert (mlp->peer_head, mlp->peer_tail, peer);
mlp->c_p ++;
+ GNUNET_STATISTICS_update (mlp->stats, "# peers in MLP", 1, GNUNET_NO);
}
else
{
address->mlp_information = NULL;
mlp->addr_in_problem --;
+ GNUNET_STATISTICS_update (mlp->stats, "# addresses in MLP", -1, GNUNET_NO);
}
/* Remove from peer list */
GNUNET_CONTAINER_DLL_remove (mlp->peer_head, mlp->peer_tail, head);
GNUNET_free (head);
mlp->c_p --;
+ GNUNET_STATISTICS_update (mlp->stats, "# peers in MLP", -1, GNUNET_NO);
}
/* Update problem */
#define MLP_MAX_EXEC_DURATION GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 3)
#define MLP_MAX_ITERATIONS INT_MAX
+#define DEF_PEERS 10
+#define DEF_ADDRESSES_PER_PEER 5
+
+static unsigned int peers;
+static unsigned int addresses;
static int ret;
struct GNUNET_STATISTICS_Handle * stats;
-struct GNUNET_CONTAINER_MultiHashMap * addresses;
+//struct GNUNET_CONTAINER_MultiHashMap * addresses;
struct GAS_MLP_Handle *mlp;
ret = 1;
return;
#endif
- struct ATS_Address addr[10];
-
- stats = GNUNET_STATISTICS_create("ats", cfg);
- addresses = GNUNET_CONTAINER_multihashmap_create (10);
+ if (peers == 0)
+ peers = DEF_PEERS;
+ if (addresses == 0)
+ addresses = DEF_ADDRESSES_PER_PEER;
- GNUNET_CRYPTO_hash_create_random(GNUNET_CRYPTO_QUALITY_WEAK, &addr[0].peer.hashPubKey);
- addr[0].mlp_information = NULL;
- addr[0].next = NULL;
- addr[0].prev = NULL;
- addr[0].plugin = strdup ("dummy");
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Setting up %u peers with %u addresses per peer\n", peers, addresses);
- addr[1].peer = addr[0].peer;
- addr[1].mlp_information = NULL;
- addr[1].next = NULL;
- addr[1].prev = NULL;
- addr[1].plugin = strdup ("dummy2");
-
- GNUNET_CONTAINER_multihashmap_put(addresses, &addr[0].peer.hashPubKey, &addr[0], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+ GNUNET_HashCode hash;
+ //memset (&hash, '\0', sizeof (GNUNET_HashCode));
+ //hash.bits[0] = 1;
+ //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "peer %s\n", GNUNET_h2s_full (&hash));
mlp = GAS_mlp_init (cfg, NULL, MLP_MAX_EXEC_DURATION, MLP_MAX_ITERATIONS);
+ mlp->auto_solve = GNUNET_NO;
- /* Add a new address */
-#if 0
- GAS_mlp_address_update (mlp, addresses, &addr[0]);
-
- GNUNET_assert (mlp != NULL);
- GNUNET_assert (mlp->addr_in_problem == 1);
- /* Update an new address */
- 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[0].peer.hashPubKey, &addr[1], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
- GAS_mlp_address_update (mlp, addresses, &addr[1]);
- GNUNET_assert (mlp->addr_in_problem == 2);
-
- /* Delete an address */
- GNUNET_CONTAINER_multihashmap_remove (addresses, &addr[0].peer.hashPubKey, &addr[0]);
- GAS_mlp_address_delete (mlp, addresses, &addr[0]);
- GAS_mlp_address_delete (mlp, addresses, &addr[1]);
-#endif
GAS_mlp_done (mlp);
- GNUNET_free (addr[0].plugin);
- GNUNET_free (addr[1].plugin);
- GNUNET_CONTAINER_multihashmap_destroy (addresses);
- GNUNET_STATISTICS_destroy(stats, GNUNET_NO);
-
ret = 0;
return;
}
};
static struct GNUNET_GETOPT_CommandLineOption options[] = {
+ {'a', "addresses", NULL,
+ gettext_noop ("addresses per peer"), 1,
+ &GNUNET_GETOPT_set_uint, &addresses},
+ {'p', "peers", NULL,
+ gettext_noop ("peers"), 1,
+ &GNUNET_GETOPT_set_uint, &peers},
GNUNET_GETOPT_OPTION_END
};
[ats]
#DEBUG = YES
-PREFIX = valgrind --leak-check=full
+#PREFIX = valgrind --leak-check=full
AUTOSTART = YES
PORT = 12002
HOSTNAME = localhost
UNIX_MATCH_GID = YES
# Enable MLP mode (default: NO)
-MLP = YES
+MLP = NO
# Network specific inbound/outbound quotas
# LOOPBACK
LOOPBACK_QUOTA_IN = unlimited