(no commit message)
authorMatthias Wachs <wachs@net.in.tum.de>
Wed, 6 Apr 2011 11:59:48 +0000 (11:59 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Wed, 6 Apr 2011 11:59:48 +0000 (11:59 +0000)
src/transport/gnunet-service-transport.c
src/transport/test_transport_ats.c

index 50d14996691e9b7341b41fabf9cd29d557d6eeeb..cb029a02107aa2636cb7fd5462cab3a4d5832f19 100644 (file)
@@ -6242,11 +6242,15 @@ static int ats_solve_problem (int max_it, int max_dur , double D, double U, doub
                        {
                                if (VERBOSE_ATS) GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "[%i][%i] `%s' %s %s %f\n", c, t->col_index, GNUNET_h2s(&peers[c].peer.hashPubKey), t->plugin->short_name, glp_get_col_name(prob,t->col_index), bw);
                                if (check ==GNUNET_YES)
+                               {
+                                       glp_write_sol(prob, "invalid_solution.mlp");
+                                       GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Invalid solution, check invalid_solution.mlp");
+                                       GNUNET_STATISTICS_update (stats, "ATS invalid solutions", 1, GNUNET_NO);
                                        error = GNUNET_YES;
+                               }
                                if (check ==GNUNET_NO)
                                        check = GNUNET_YES;
                        }
-                       GNUNET_assert (error != GNUNET_YES);
                        t = t->next;
                }
        }
index fa2bb407b69b5ed604c486d8a2fe9550b99c7a51..ac10ba1c888375c4907dd624053be3f7f822f1ab 100644 (file)
@@ -26,7 +26,7 @@
 #include "gnunet_scheduler_lib.h"
 #include "gauger.h"
 
-#define VERBOSE GNUNET_YES
+#define VERBOSE GNUNET_NO
 
 #define NUM_PEERS 11
 #define MEASUREMENTS 5
@@ -70,6 +70,7 @@ struct GNUNET_STATISTICS_GetHandle * s_time;
 struct GNUNET_STATISTICS_GetHandle * s_peers;
 struct GNUNET_STATISTICS_GetHandle * s_mechs;
 struct GNUNET_STATISTICS_GetHandle * s_duration;
+struct GNUNET_STATISTICS_GetHandle * s_invalid;
 
 /**
  * Check whether peers successfully shut down.
@@ -136,7 +137,6 @@ static void shutdown_peers()
                s_duration = NULL;
        }
 
-
     GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL);
 }
 
@@ -180,6 +180,20 @@ int stats_cb (void *cls,
                           uint64_t value,
                           int is_persistent)
 {
+
+       if (0 == strcmp (name,"ATS invalid solutions"))
+       {
+               if (stats_task != GNUNET_SCHEDULER_NO_TASK)
+               {
+                       GNUNET_SCHEDULER_cancel(stats_task);
+                       stats_task = GNUNET_SCHEDULER_NO_TASK;
+               }
+               GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"MLP produced invalid %llu result(s)!\n", value);
+               shutdown_peers();
+               return GNUNET_SYSERR;
+       }
+
+
        if (0 == strcmp (name,"ATS solution"))
        {
                s_solution = NULL;
@@ -235,6 +249,7 @@ int stats_cb (void *cls,
                                fprintf(stderr, "..");
 
                                results[r_index].timestamp = value;
+                               return GNUNET_SYSERR;
                        }
                        //GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "[%i] ATS solution: %s %llu \n", r_index, name, value);
                }
@@ -280,6 +295,8 @@ stats_get_task (void *cls,
        s_duration = GNUNET_STATISTICS_get (stats, "transport","ATS duration", TIMEOUT, NULL, &stats_cb, NULL);
        s_peers = GNUNET_STATISTICS_get (stats, "transport", "ATS peers", TIMEOUT, NULL, &stats_cb, NULL);
        s_mechs = GNUNET_STATISTICS_get (stats, "transport", "ATS mechanisms", TIMEOUT, NULL, &stats_cb, NULL);
+       s_mechs = GNUNET_STATISTICS_get (stats, "transport", "ATS invalid solutions", TIMEOUT, NULL, &stats_cb, NULL);
+
 
        stats_task = GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 250), &stats_get_task, NULL);
 }
@@ -376,7 +393,7 @@ daemon_start_cb (void *cls,
     {
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                   "Too many peers failed, ending test!\n");
-      GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL);
+      shutdown_peers();
       ok = 1;
     }
 }
@@ -435,6 +452,7 @@ main (int argc, char *argv[])
                     "WARNING",
 #endif
                     NULL);
+  GNUNET_DISK_directory_remove ("/tmp/test-gnunet-testing");
 
   peers = NUM_PEERS;
   if (argc >= 2)