diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-10-14 13:23:17 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-10-14 13:23:17 +0000 |
commit | e1bdd0f567da500d8ae723837b2c1e99bf992d4f (patch) | |
tree | 5cf22c5e1b48c20b1c951fe5da71e72ec2b8a925 /src/testbed | |
parent | 4f541bbf6b5767cbba4e6702c6a79bc8a3f1132e (diff) | |
download | gnunet-e1bdd0f567da500d8ae723837b2c1e99bf992d4f.tar.gz gnunet-e1bdd0f567da500d8ae723837b2c1e99bf992d4f.zip |
Random graph topology
Diffstat (limited to 'src/testbed')
-rw-r--r-- | src/testbed/test_testbed_api_topology.c | 7 | ||||
-rw-r--r-- | src/testbed/testbed_api_topology.c | 27 |
2 files changed, 27 insertions, 7 deletions
diff --git a/src/testbed/test_testbed_api_topology.c b/src/testbed/test_testbed_api_topology.c index 27f508cd9..9679e0cdb 100644 --- a/src/testbed/test_testbed_api_topology.c +++ b/src/testbed/test_testbed_api_topology.c | |||
@@ -31,7 +31,7 @@ | |||
31 | /** | 31 | /** |
32 | * Number of peers we want to start | 32 | * Number of peers we want to start |
33 | */ | 33 | */ |
34 | #define NUM_PEERS 5 | 34 | #define NUM_PEERS 100 |
35 | 35 | ||
36 | /** | 36 | /** |
37 | * Array of peers | 37 | * Array of peers |
@@ -85,7 +85,7 @@ controller_event_cb (void *cls, | |||
85 | { | 85 | { |
86 | case GNUNET_TESTBED_ET_CONNECT: | 86 | case GNUNET_TESTBED_ET_CONNECT: |
87 | overlay_connects++; | 87 | overlay_connects++; |
88 | if ((NUM_PEERS - 1) == overlay_connects) | 88 | if ((NUM_PEERS) == overlay_connects) |
89 | { | 89 | { |
90 | result = GNUNET_OK; | 90 | result = GNUNET_OK; |
91 | GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); | 91 | GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); |
@@ -125,7 +125,8 @@ test_master (void *cls, unsigned int num_peers, | |||
125 | peers = peers_; | 125 | peers = peers_; |
126 | overlay_connects = 0; | 126 | overlay_connects = 0; |
127 | op = GNUNET_TESTBED_overlay_configure_topology (NULL, NUM_PEERS, peers, | 127 | op = GNUNET_TESTBED_overlay_configure_topology (NULL, NUM_PEERS, peers, |
128 | GNUNET_TESTBED_TOPOLOGY_LINE); | 128 | GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI, |
129 | NUM_PEERS); | ||
129 | GNUNET_assert (NULL != op); | 130 | GNUNET_assert (NULL != op); |
130 | } | 131 | } |
131 | 132 | ||
diff --git a/src/testbed/testbed_api_topology.c b/src/testbed/testbed_api_topology.c index f7aa2ed5b..05537e2e1 100644 --- a/src/testbed/testbed_api_topology.c +++ b/src/testbed/testbed_api_topology.c | |||
@@ -225,7 +225,7 @@ GNUNET_TESTBED_overlay_configure_topology_va (void *op_cls, | |||
225 | struct TopologyContext *tc; | 225 | struct TopologyContext *tc; |
226 | struct GNUNET_TESTBED_Operation *op; | 226 | struct GNUNET_TESTBED_Operation *op; |
227 | struct GNUNET_TESTBED_Controller *c; | 227 | struct GNUNET_TESTBED_Controller *c; |
228 | unsigned int p; | 228 | unsigned int cnt; |
229 | 229 | ||
230 | if (num_peers < 2) | 230 | if (num_peers < 2) |
231 | return NULL; | 231 | return NULL; |
@@ -238,10 +238,29 @@ GNUNET_TESTBED_overlay_configure_topology_va (void *op_cls, | |||
238 | tc->link_array_size = num_peers - 1; | 238 | tc->link_array_size = num_peers - 1; |
239 | tc->link_array = GNUNET_malloc (sizeof (struct OverlayLink) * | 239 | tc->link_array = GNUNET_malloc (sizeof (struct OverlayLink) * |
240 | tc->link_array_size); | 240 | tc->link_array_size); |
241 | for (p=1; p < num_peers; p++) | 241 | for (cnt=1; cnt < num_peers; cnt++) |
242 | { | ||
243 | tc->link_array[cnt-1].A = cnt-1; | ||
244 | tc->link_array[cnt-1].B = cnt; | ||
245 | } | ||
246 | break; | ||
247 | case GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI: | ||
248 | tc->link_array_size = va_arg (va, unsigned int); | ||
249 | tc->link_array = GNUNET_malloc (sizeof (struct OverlayLink) * | ||
250 | tc->link_array_size); | ||
251 | for (cnt = 0; cnt < tc->link_array_size; cnt++) | ||
242 | { | 252 | { |
243 | tc->link_array[p-1].A = p-1; | 253 | uint32_t A_rand; |
244 | tc->link_array[p-1].B = p; | 254 | uint32_t B_rand; |
255 | |||
256 | do { | ||
257 | A_rand = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, | ||
258 | num_peers); | ||
259 | B_rand = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, | ||
260 | num_peers); | ||
261 | } while (A_rand == B_rand); | ||
262 | tc->link_array[cnt].A = A_rand; | ||
263 | tc->link_array[cnt].B = B_rand; | ||
245 | } | 264 | } |
246 | break; | 265 | break; |
247 | default: | 266 | default: |