#include "platform.h"
#include "gnunet_testing_lib.h"
-#define VERBOSE GNUNET_NO
+#define VERBOSE GNUNET_YES
-#define NUM_PEERS 10
+#define NUM_PEERS 2
/**
* How long until we give up on connecting the peers?
static int peers_left;
+static int connect_left;
+
static struct GNUNET_TESTING_PeerGroup *pg;
+static struct GNUNET_TESTING_Daemon *first;
+
+static struct GNUNET_TESTING_Daemon *last;
+
static struct GNUNET_SCHEDULER_Handle *sched;
+static void
+clean_up_task (void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ GNUNET_TESTING_daemons_stop (pg);
+ ok = 0;
+}
+
+
+static void
+notify_connect_complete(void *cls,
+ const struct GNUNET_PeerIdentity *first,
+ const struct GNUNET_PeerIdentity *second,
+ const struct GNUNET_CONFIGURATION_Handle *first_cfg,
+ const struct GNUNET_CONFIGURATION_Handle *second_cfg,
+ struct GNUNET_TESTING_Daemon *first_daemon,
+ struct GNUNET_TESTING_Daemon *second_daemon,
+ const char *emsg)
+{
+ if (NULL != emsg)
+ {
+ fprintf (stderr,
+ "Failed to connect two peers: %s\n",
+ emsg);
+ GNUNET_assert (0);
+ return;
+ }
+ connect_left--;
+ if (connect_left == 0)
+ {
+ /* FIXME: check that topology adds a few more links
+ in addition to those that were seeded */
+ /* For now, sleep so we can have the daemon do some work */
+ GNUNET_SCHEDULER_add_delayed (sched,
+ GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5),
+ &clean_up_task,
+ NULL);
+ }
+}
+
+
static void my_cb(void *cls,
const struct GNUNET_PeerIdentity *id,
const struct GNUNET_CONFIGURATION_Handle *cfg,
const char *emsg)
{
GNUNET_assert (id != NULL);
- peers_left--;
+ peers_left--;
+ if (first == NULL)
+ {
+ connect_left = NUM_PEERS;
+ first = d;
+ last = d;
+ return;
+ }
+ GNUNET_TESTING_daemons_connect (last, d, TIMEOUT,
+ ¬ify_connect_complete,
+ NULL);
if (peers_left == 0)
{
- /* FIXME: connect a few... */
- GNUNET_TESTING_daemons_stop (pg);
- ok = 0;
+ /* close circle */
+ GNUNET_TESTING_daemons_connect (d, first, TIMEOUT,
+ ¬ify_connect_complete,
+ NULL);
}
}
peers_left = NUM_PEERS;
pg = GNUNET_TESTING_daemons_start (sched, cfg,
peers_left,
- &my_cb, NULL, NULL);
+ &my_cb, NULL, NULL, NULL, NULL);
GNUNET_assert (pg != NULL);
}
#endif
NULL);
ret = check ();
- sleep (1);
+ sleep (1); /* FIXME: needed? */
GNUNET_DISK_directory_remove ("/tmp/test-gnunet-topology");
return ret;
}