aboutsummaryrefslogtreecommitdiff
path: root/src/testbed
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-10-14 13:23:17 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-10-14 13:23:17 +0000
commite1bdd0f567da500d8ae723837b2c1e99bf992d4f (patch)
tree5cf22c5e1b48c20b1c951fe5da71e72ec2b8a925 /src/testbed
parent4f541bbf6b5767cbba4e6702c6a79bc8a3f1132e (diff)
downloadgnunet-e1bdd0f567da500d8ae723837b2c1e99bf992d4f.tar.gz
gnunet-e1bdd0f567da500d8ae723837b2c1e99bf992d4f.zip
Random graph topology
Diffstat (limited to 'src/testbed')
-rw-r--r--src/testbed/test_testbed_api_topology.c7
-rw-r--r--src/testbed/testbed_api_topology.c27
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: