-fix config, shutdown issue
[oweals/gnunet.git] / src / ats / test_ats_api_performance_monitor.c
index facb979175d22448a3368274661e2b70aab4c22d..7006154516badf57726f80ade43cb9d66cb3f4a3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  This file is part of GNUnet.
- (C) 2010,2011 Christian Grothoff (and other contributing authors)
Copyright (C) 2010,2011 Christian Grothoff (and other contributing authors)
 
  GNUnet is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published
 #include "ats.h"
 
 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
+#define WAIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
 
-static GNUNET_SCHEDULER_TaskIdentifier die_task;
+static struct GNUNET_SCHEDULER_Task * die_task;
 
 /**
  * Statistics handle
  */
-struct GNUNET_STATISTICS_Handle *stats;
+static struct GNUNET_STATISTICS_Handle *stats;
 
 /**
  * Configuration handle
  */
-struct GNUNET_CONFIGURATION_Handle *cfg;
+static struct GNUNET_CONFIGURATION_Handle *cfg;
 
 /**
  * ATS scheduling handle
@@ -52,8 +53,6 @@ static struct GNUNET_ATS_SchedulingHandle *sched_ats;
  */
 static struct GNUNET_ATS_PerformanceHandle *perf_ats;
 
-struct GNUNET_ATS_AddressListHandle* phal;
-
 static int ret;
 
 struct Address
@@ -82,9 +81,8 @@ static struct PeerContext p[2];
 static struct Address p0_addresses[2];
 static struct Address p1_addresses[2];
 
-struct GNUNET_HELLO_Address p0_ha[2];
-struct GNUNET_HELLO_Address p1_ha[2];
-struct GNUNET_HELLO_Address *s_ha[2];
+static struct GNUNET_HELLO_Address p0_ha[2];
+static struct GNUNET_HELLO_Address p1_ha[2];
 
 static void
 end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
@@ -104,6 +102,11 @@ ats_perf_cb (void *cls,
 {
   static int peer0 = GNUNET_NO;
   static int peer1 = GNUNET_NO;
+  static int done = GNUNET_NO;
+
+  if (NULL == address)
+    return;
+
   if ((GNUNET_NO == peer0) && (0 == memcmp (address, &p[0].id, sizeof (p[0].id))))
   {
     peer0 = GNUNET_YES;
@@ -112,11 +115,13 @@ ats_perf_cb (void *cls,
   {
     peer1 = GNUNET_YES;
   }
-  if ((peer0 == GNUNET_YES) && (peer1 = GNUNET_YES))
+  if ((peer0 == GNUNET_YES) && (peer1 = GNUNET_YES) && (GNUNET_NO == done))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,
         "Done\n");
+    done = GNUNET_YES;
     GNUNET_SCHEDULER_add_now (&end, NULL);
+
   }
 }
 
@@ -140,23 +145,23 @@ stat_cb(void *cls, const char *subsystem,
 }
 
 static void
-address_suggest_cb (void *cls, const struct GNUNET_HELLO_Address *address,
+address_suggest_cb (void *cls,
+                    const struct GNUNET_PeerIdentity *peer,
+                    const struct GNUNET_HELLO_Address *address,
                     struct Session *session,
                     struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
-                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
-                    const struct GNUNET_ATS_Information *atsi,
-                    uint32_t ats_count)
+                    struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
+
 {
   GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not expect suggestion callback!\n");
   GNUNET_SCHEDULER_add_now (&end_badly, NULL);
-  return;
 }
 
 
 static void
 end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  die_task = GNUNET_SCHEDULER_NO_TASK;
+  die_task = NULL;
   end ( NULL, NULL);
   ret = GNUNET_SYSERR;
 }
@@ -165,10 +170,10 @@ static void
 end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Shutting down\n");
-  if (die_task != GNUNET_SCHEDULER_NO_TASK )
+  if (die_task != NULL )
   {
     GNUNET_SCHEDULER_cancel (die_task);
-    die_task = GNUNET_SCHEDULER_NO_TASK;
+    die_task = NULL;
   }
 
   if (NULL != sched_ats)
@@ -199,8 +204,6 @@ end (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   ret = 0;
 }
 
-
-
 static void
 run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
     struct GNUNET_TESTING_Peer *peer)
@@ -216,13 +219,12 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
     GNUNET_SCHEDULER_add_now (end_badly, NULL);
   }
 
+
   stats = GNUNET_STATISTICS_create ("ats", cfg);
   GNUNET_STATISTICS_watch (stats, "ats", "# addresses", &stat_cb, NULL);
 
   /* set up peer 0 */
-  GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
-      &p[0].id.hashPubKey);
-
+  memset (&p[0].id, '1', sizeof (p[0].id));
   p0_addresses[0].plugin = "test";
   p0_addresses[0].session = NULL;
   p0_addresses[0].addr = GNUNET_strdup ("test_p0_a0");
@@ -246,9 +248,7 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Created peer 0: `%s'\n",
       GNUNET_i2s (&p[0].id));
 
-  GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
-      &p[1].id.hashPubKey);
-
+  memset (&p[1].id, '2', sizeof (p[1].id));
   p1_addresses[0].plugin = "test";
   p1_addresses[0].session = NULL;
   p1_addresses[0].addr = GNUNET_strdup ("test_p1_a0");