+ shutdown_testcase();
+}
+
+static int
+process_downloads (void *cls,
+ const char *subsystem,
+ const char *name,
+ uint64_t value,
+ int is_persistent)
+{
+ download_stats = NULL;
+ if ( (value == 2) && (learned_hostlist_downloaded == GNUNET_NO) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Peer has successfully downloaded advertised URI \n"));
+ learned_hostlist_downloaded = GNUNET_YES;
+ shutdown_testcase();
+ }
+ return GNUNET_OK;
+}
+
+static int
+process_uris_recv (void *cls,
+ const char *subsystem,
+ const char *name,
+ uint64_t value,
+ int is_persistent)
+{
+ urisrecv_stat = NULL;
+ if ( ((struct PeerContext *) cls == &learn_peer) && (value == 1) && (learned_hostlist_saved == GNUNET_NO))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Peer has successfully saved advertised URI \n"));
+ learned_hostlist_saved = GNUNET_YES;
+ }
+ return GNUNET_OK;
+}
+
+static int
+process_adv_sent (void *cls,
+ const char *subsystem,
+ const char *name,
+ uint64_t value,
+ int is_persistent)
+{
+ advsent_stat = NULL;
+ if ( (value >= 1) && (adv_sent == GNUNET_NO))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Server has successfully sent advertisement\n"));
+ adv_sent = GNUNET_YES;
+ }
+ return GNUNET_OK;
+}
+
+
+/**
+ * Check the server statistics regularly
+ */
+static void
+check_statistics (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ char *stat;
+
+ check_task = GNUNET_SCHEDULER_NO_TASK;
+ if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
+ return;
+
+ GNUNET_asprintf (&stat,
+ gettext_noop("# advertised URI `%s' downloaded"),
+ current_adv_uri);
+ if ( NULL != learn_peer.stats)
+ {
+ download_stats = GNUNET_STATISTICS_get (learn_peer.stats,
+ "hostlist",
+ stat,
+ GNUNET_TIME_UNIT_MINUTES,
+ NULL,
+ &process_downloads,
+ &learn_peer);
+
+ urisrecv_stat = GNUNET_STATISTICS_get (learn_peer.stats,
+ "hostlist",
+ gettext_noop("# advertised hostlist URIs"),
+ GNUNET_TIME_UNIT_MINUTES,
+ NULL,
+ &process_uris_recv,
+ &learn_peer);
+ }
+ GNUNET_free (stat);
+ if ( NULL != adv_peer.stats)
+ {
+ advsent_stat = GNUNET_STATISTICS_get (adv_peer.stats,
+ "hostlist",
+ gettext_noop("# hostlist advertisements send"),
+ GNUNET_TIME_UNIT_MINUTES,
+ NULL,
+ &process_adv_sent,
+ NULL);
+ }
+ check_task = GNUNET_SCHEDULER_add_delayed (sched,
+ CHECK_INTERVALL,
+ &check_statistics,
+ NULL);