[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17647 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17647 - gnunet/src/mesh |
Date: |
Thu, 20 Oct 2011 20:20:49 +0200 |
Author: bartpolot
Date: 2011-10-20 20:20:49 +0200 (Thu, 20 Oct 2011)
New Revision: 17647
Modified:
gnunet/src/mesh/gnunet-service-mesh.c
gnunet/src/mesh/mesh_api_new.c
gnunet/src/mesh/test_mesh_small.c
gnunet/src/mesh/test_mesh_small.conf
Log:
Changed testcase to include real multicast tests
Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c 2011-10-20 17:43:13 UTC (rev
17646)
+++ gnunet/src/mesh/gnunet-service-mesh.c 2011-10-20 18:20:49 UTC (rev
17647)
@@ -1238,6 +1238,9 @@
path_info = GNUNET_malloc(sizeof(struct MeshPathInfo));
path_info->peer = peer;
path_info->t = t;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "MESH: Starting DHT GET for peer %s\n",
+ GNUNET_i2s (&id));
peer->dhtget =
GNUNET_DHT_get_start(dht_handle, /* handle */
GNUNET_TIME_UNIT_FOREVER_REL, /* timeout */
@@ -1297,6 +1300,7 @@
struct MeshPeerInfo *peer, GNUNET_PEER_Id p1,
GNUNET_PEER_Id p2);
+
/**
* Remove all paths that rely on a direct connection between p1 and p2
* from the peer itself and notify all tunnels about it.
Modified: gnunet/src/mesh/mesh_api_new.c
===================================================================
--- gnunet/src/mesh/mesh_api_new.c 2011-10-20 17:43:13 UTC (rev 17646)
+++ gnunet/src/mesh/mesh_api_new.c 2011-10-20 18:20:49 UTC (rev 17647)
@@ -1347,6 +1347,7 @@
{
if (tunnel->peers[i]->id == peer_id)
{
+ /* Peer already exists in tunnel */
GNUNET_PEER_change_rc (peer_id, -1);
GNUNET_break (0);
return;
Modified: gnunet/src/mesh/test_mesh_small.c
===================================================================
--- gnunet/src/mesh/test_mesh_small.c 2011-10-20 17:43:13 UTC (rev 17646)
+++ gnunet/src/mesh/test_mesh_small.c 2011-10-20 18:20:49 UTC (rev 17647)
@@ -55,7 +55,7 @@
/**
* Time to wait for stuff that should be rather fast
*/
-#define SHORT_TIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
+#define SHORT_TIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
/**
* DIFFERENT TESTS TO RUN
@@ -74,6 +74,10 @@
*/
static int ok;
+static int peers_in_tunnel;
+
+static int peers_responded;
+
/**
* Be verbose
*/
@@ -144,14 +148,20 @@
static struct GNUNET_TESTING_Daemon *d2;
+static struct GNUNET_TESTING_Daemon *d3;
+
static struct GNUNET_MESH_Handle *h1;
static struct GNUNET_MESH_Handle *h2;
+static struct GNUNET_MESH_Handle *h3;
+
static struct GNUNET_MESH_Tunnel *t;
static struct GNUNET_MESH_Tunnel *incoming_t;
+static struct GNUNET_MESH_Tunnel *incoming_t2;
+
static uint16_t *mesh_peers;
/**
@@ -163,14 +173,14 @@
if (emsg != NULL)
{
#if VERBOSE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Shutdown of peers failed!\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: Shutdown of
peers failed!\n");
#endif
ok--;
}
else
{
#if VERBOSE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: All peers successfully shut
down!\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: All peers
successfully shut down!\n");
#endif
}
}
@@ -180,7 +190,7 @@
shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
#if VERBOSE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Ending test.\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: Ending
test.\n");
#endif
if (disconnect_task != GNUNET_SCHEDULER_NO_TASK)
@@ -200,12 +210,17 @@
disconnect_mesh_peers (void *cls, const struct GNUNET_SCHEDULER_TaskContext
*tc)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: disconnecting mesh service of peers\n");
+ "***************** test: disconnecting mesh service of peers\n");
disconnect_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_MESH_disconnect(h1);
GNUNET_MESH_disconnect(h2);
- GNUNET_SCHEDULER_cancel (shutdown_handle);
- shutdown_handle = GNUNET_SCHEDULER_add_now(&shutdown_task, NULL);
+ if (test == MULTICAST)
+ GNUNET_MESH_disconnect(h3);
+ if (GNUNET_SCHEDULER_NO_TASK != shutdown_handle)
+ {
+ GNUNET_SCHEDULER_cancel (shutdown_handle);
+ shutdown_handle = GNUNET_SCHEDULER_add_now(&shutdown_task, NULL);
+ }
}
@@ -217,7 +232,7 @@
{
struct GNUNET_MessageHeader *msg = buf;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: tmt_rdy called\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: tmt_rdy
called\n");
if (size < sizeof(struct GNUNET_MessageHeader) || NULL == buf)
return 0;
msg->size = htons (sizeof(struct GNUNET_MessageHeader));
@@ -252,19 +267,27 @@
{
case 1L:
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Origin client got a response!\n");
+ "***************** test: Origin client got a response!\n");
ok++;
- GNUNET_MESH_tunnel_destroy (tunnel);
- GNUNET_SCHEDULER_cancel (disconnect_task);
- disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
+ peers_responded++;
+ if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
+ {
+ GNUNET_SCHEDULER_cancel (disconnect_task);
+ disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
&disconnect_mesh_peers,
NULL);
+ }
+ if (test == MULTICAST && peers_responded < 2)
+ return GNUNET_OK;
+ GNUNET_MESH_tunnel_destroy (tunnel);
break;
case 2L:
+ case 3L:
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Destination client got a message \n");
+ "***************** test: Destination client %u got a
message.\n",
+ client);
ok++;
- GNUNET_MESH_notify_transmit_ready(incoming_t,
+ GNUNET_MESH_notify_transmit_ready(tunnel,
GNUNET_NO,
0,
GNUNET_TIME_UNIT_FOREVER_REL,
@@ -272,10 +295,13 @@
sizeof(struct GNUNET_MessageHeader),
&tmt_rdy,
(void *) 1L);
- GNUNET_SCHEDULER_cancel (disconnect_task);
- disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
- &disconnect_mesh_peers,
- NULL);
+ if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
+ {
+ GNUNET_SCHEDULER_cancel (disconnect_task);
+ disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
+ &disconnect_mesh_peers,
+ NULL);
+ }
break;
default:
break;
@@ -311,14 +337,21 @@
const struct GNUNET_ATS_Information * atsi)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Incoming tunnel from %s\n",
- GNUNET_i2s(initiator));
+ "***************** test: Incoming tunnel from %s to peer %d\n",
+ GNUNET_i2s(initiator),
+ (long) cls);
ok++;
- incoming_t = tunnel;
- GNUNET_SCHEDULER_cancel (disconnect_task);
- disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
- &disconnect_mesh_peers,
- NULL);
+ if ((long) cls == 1L)
+ incoming_t = tunnel;
+ else
+ incoming_t2 = tunnel;
+ if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
+ {
+ GNUNET_SCHEDULER_cancel (disconnect_task);
+ disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
+ &disconnect_mesh_peers,
+ NULL);
+ }
return NULL;
}
@@ -338,14 +371,26 @@
long i = (long) cls;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Incoming tunnel disconnected at peer %d\n",
+ "***************** test: Incoming tunnel disconnected at peer
%d\n",
i);
if (2L == i)
ok++;
-
- GNUNET_SCHEDULER_cancel (disconnect_task);
- disconnect_task = GNUNET_SCHEDULER_add_now (&disconnect_mesh_peers, NULL);
-
+ else if (3L == i)
+ ok++;
+ else
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "***************** test: Unknown peer! %d\n",
+ i);
+ peers_in_tunnel--;
+ if (peers_in_tunnel > 0)
+ return;
+
+ if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
+ {
+ GNUNET_SCHEDULER_cancel (disconnect_task);
+ disconnect_task = GNUNET_SCHEDULER_add_now (&disconnect_mesh_peers, NULL);
+ }
+
return;
}
@@ -360,7 +405,7 @@
dh (void *cls, const struct GNUNET_PeerIdentity *peer)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: peer %s disconnected\n",
+ "***************** test: peer %s disconnected\n",
GNUNET_i2s(peer));
return;
}
@@ -379,30 +424,39 @@
{
struct GNUNET_PeerIdentity *dest;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "***************** test: peer %s connected\n",
+ GNUNET_i2s(peer));
+
+ if (0 == memcmp(&d2->id, peer, sizeof(d2->id)) && (long) cls == 1L)
+ ok++;
+ if (test == MULTICAST &&
+ 0 == memcmp(&d3->id, peer, sizeof(d3->id)) &&
+ (long) cls == 1L)
+ ok++;
switch (test)
{
case UNICAST:
dest = &d2->id;
break;
case MULTICAST:
+ peers_in_tunnel++;
+ if (peers_in_tunnel < 2)
+ return;
dest = NULL;
break;
default:
return;
}
-
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: peer %s connected\n",
- GNUNET_i2s(peer));
- if (0 == memcmp(&d2->id, peer, sizeof(d2->id)) && (long) cls == 1L)
- ok++;
if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
{
GNUNET_SCHEDULER_cancel (disconnect_task);
disconnect_task = GNUNET_SCHEDULER_add_delayed(SHORT_TIME,
&disconnect_mesh_peers,
NULL);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Sending data...\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "***************** test: Sending data...\n");
+ peers_responded = 0;
GNUNET_MESH_notify_transmit_ready(t,
GNUNET_NO,
0,
@@ -414,8 +468,8 @@
}
else
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Disconnect already run?\n");
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Aborting...\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: Disconnect
already run?\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test:
Aborting...\n");
}
return;
}
@@ -424,12 +478,20 @@
static void
do_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: test_task\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: test_task\n");
GNUNET_MESH_peer_request_connect_add(t, &d2->id);
- GNUNET_SCHEDULER_cancel (disconnect_task);
- disconnect_task = GNUNET_SCHEDULER_add_delayed(
- GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 30),
- &disconnect_mesh_peers, NULL);
+ if (test == MULTICAST)
+ {
+ GNUNET_MESH_peer_request_connect_add(t, &d3->id);
+ }
+ if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
+ {
+ GNUNET_SCHEDULER_cancel (disconnect_task);
+ disconnect_task = GNUNET_SCHEDULER_add_delayed(
+ GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 30),
+ &disconnect_mesh_peers,
+ NULL);
+ }
}
@@ -462,7 +524,7 @@
GNUNET_assert(p2 > 0);
mesh_peers[p2]++;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: %s IS a neighbor\n",
+ "***************** test: %s IS a neighbor\n",
GNUNET_i2s(second));
return;
}
@@ -474,7 +536,7 @@
GNUNET_assert(p2 > 0);
mesh_peers[p2]++;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: %s IS a neighbor\n",
+ "***************** test: %s IS a neighbor\n",
GNUNET_i2s(first));
return;
}
@@ -491,13 +553,13 @@
unsigned int i;
struct GNUNET_PeerIdentity id;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: connect_mesh_service\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test:
connect_mesh_service\n");
for (i = 1; i <= num_peers; i++)
{
GNUNET_PEER_resolve(i, &id);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: peer %s has %u conns to d1\n",
+ "***************** test: peer %s has %u conns to d1\n",
GNUNET_i2s (&id),
mesh_peers[i]);
if (mesh_peers[i] == 0)
@@ -505,20 +567,39 @@
}
GNUNET_assert (i < num_peers);
d2 = GNUNET_TESTING_daemon_get_by_id (pg, &id);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Peer searched: %s\n",
- GNUNET_i2s (&d2->id));
+ if (test == MULTICAST)
+ {
+ for (i++; i <= num_peers; i++)
+ {
+ GNUNET_PEER_resolve(i, &id);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "***************** test: peer %s has %u conns to d1\n",
+ GNUNET_i2s (&id),
+ mesh_peers[i]);
+ if (mesh_peers[i] == 0)
+ break;
+ }
+ GNUNET_assert (i < num_peers);
+ d3 = GNUNET_TESTING_daemon_get_by_id (pg, &id);
+ }
app = (GNUNET_MESH_ApplicationType) 0;
#if VERBOSE
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: connecting to mesh service of peer %s (%u)\n",
+ "***************** test: connecting to mesh service of peer %s
(%u)\n",
GNUNET_i2s (&d1->id),
mesh_peers[0]);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: connecting to mesh service of peer %s (%u)\n",
+ "***************** test: connecting to mesh service of peer %s
(%u)\n",
GNUNET_i2s (&d2->id),
i);
+ if (test == MULTICAST)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "***************** test: connecting to mesh service of peer %s
(%u)\n",
+ GNUNET_i2s (&d3->id),
+ i);
+ }
#endif
h1 = GNUNET_MESH_connect (d1->cfg,
10,
@@ -534,15 +615,18 @@
&tunnel_cleaner,
handlers,
&app);
-#if VERBOSE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: connected to mesh service of peer %s\n",
- GNUNET_i2s (&d1->id));
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: connected to mesh service of peer %s\n",
- GNUNET_i2s (&d2->id));
-#endif
+ if (test == MULTICAST)
+ {
+ h3 = GNUNET_MESH_connect (d3->cfg,
+ 10,
+ (void *) 3L,
+ &incoming_tunnel,
+ &tunnel_cleaner,
+ handlers,
+ &app);
+ }
t = GNUNET_MESH_tunnel_create (h1, NULL, &ch, &dh, (void *) 1L);
+ peers_in_tunnel = 0;
test_task =
GNUNET_SCHEDULER_add_delayed(
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 6),
@@ -566,9 +650,9 @@
if (emsg != NULL)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Peergroup callback called with error, aborting
test!\n");
+ "***************** test: Peergroup callback called with error,
aborting test!\n");
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Error from testing: `%s'\n", emsg);
+ "***************** test: Error from testing: `%s'\n", emsg);
ok--;
GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL);
return;
@@ -577,9 +661,9 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"************************************************************\n");
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Peer Group started successfully!\n");
+ "***************** test: Peer Group started successfully!\n");
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Have %u connections\n",
+ "***************** test: Have %u connections\n",
total_connections);
#endif
@@ -596,13 +680,13 @@
{
d1 = GNUNET_TESTING_daemon_get (pg, i);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: %u: %s\n",
+ "***************** test: %u: %s\n",
GNUNET_PEER_intern(&d1->id),
GNUNET_i2s (&d1->id));
}
d1 = GNUNET_TESTING_daemon_get (pg, 0);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Peer looking: %s\n",
+ "***************** test: Peer looking: %s\n",
GNUNET_i2s (&d1->id));
pid1 = GNUNET_PEER_intern(&d1->id);
mesh_peers[pid1] = 100;
@@ -648,7 +732,7 @@
else
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: Problem with new connection (%s)\n",
+ "***************** test: Problem with new connection (%s)\n",
emsg);
}
@@ -682,7 +766,7 @@
NULL);
#if VERBOSE
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Starting daemons.\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: Starting
daemons.\n");
GNUNET_CONFIGURATION_set_value_string (testing_cfg, "testing",
"use_progressbars", "YES");
#endif
@@ -801,22 +885,22 @@
};
int ok_goal;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Start\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: Start\n");
if (strstr (argv[0], "test_mesh_small_unicast") != NULL)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: UNICAST\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: UNICAST\n");
test = UNICAST;
ok_goal = 5;
}
else if (strstr (argv[0], "test_mesh_small_multicast") != NULL)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: MULTICAST\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test:
MULTICAST\n");
test = MULTICAST;
- ok_goal = 5;
+ ok_goal = 10;
}
else
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: UNKNOWN\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: UNKNOWN\n");
test = SETUP;
ok_goal = 0;
}
@@ -831,13 +915,11 @@
if (ok_goal != ok)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "test: %s FAILED! (%d/%d)\n",
- argv[0], ok, ok_goal);
+ "***************** test: FAILED! (%d/%d)\n", ok, ok_goal);
return 1;
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "test: %s success\n",
- argv[0]);
+ "***************** test: success\n");
return 0;
}
Modified: gnunet/src/mesh/test_mesh_small.conf
===================================================================
--- gnunet/src/mesh/test_mesh_small.conf 2011-10-20 17:43:13 UTC (rev
17646)
+++ gnunet/src/mesh/test_mesh_small.conf 2011-10-20 18:20:49 UTC (rev
17647)
@@ -40,8 +40,8 @@
EXTERNAL_ADDRESS = 127.0.0.1
[core]
-TOTAL_QUOTA_IN = 1024000
-TOTAL_QUOTA_OUT = 1024000
+TOTAL_QUOTA_IN = 4000000
+TOTAL_QUOTA_OUT = 4000000
AUTOSTART = YES
PORT = 10003
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17647 - gnunet/src/mesh,
gnunet <=