basic log file writing functionality
authorMatthias Wachs <wachs@net.in.tum.de>
Wed, 18 Sep 2013 13:53:37 +0000 (13:53 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Wed, 18 Sep 2013 13:53:37 +0000 (13:53 +0000)
src/ats-tests/perf_ats.c
src/ats-tests/perf_ats.h
src/ats-tests/perf_ats_logging.c

index bdd306ec4abb00a4f07c4bbaf743a7e15de60442..bad7076cad1142ec772ff7426ee68180f907bf07 100644 (file)
@@ -116,6 +116,11 @@ static int test_core;
  */
 static char *solver;
 
+/**
+ * Preference string
+ */
+static char *testname;
+
 /**
  * Preference string
  */
@@ -451,7 +456,7 @@ do_benchmark ()
       mps[c_m].ats_task = GNUNET_SCHEDULER_add_now (&ats_pref_task, &mps[c_m]);
   }
   if (GNUNET_YES == logging)
-    perf_logging_start (mps, num_masters);
+    perf_logging_start (testname, mps, num_masters);
 }
 
 static void
@@ -1207,6 +1212,7 @@ main (int argc, char *argv[])
       logging = GNUNET_YES;
   }
 
+  GNUNET_asprintf (&testname, "%s_%s_%s",solver, comm_name, pref_str);
 
   if (num_slaves < num_masters)
   {
@@ -1240,6 +1246,7 @@ main (int argc, char *argv[])
   GNUNET_free(pref_str);
   GNUNET_free(conf_name);
   GNUNET_free(test_name);
+  GNUNET_free(testname);
   GNUNET_free (comm_name);
   GNUNET_free(mps);
   GNUNET_free(sps);
index b8e0f1eb78ab2055ee328713902f4a711913cb9b..01484b1f839a9949d603a74b1ac07a9f94dd01f0 100644 (file)
@@ -218,7 +218,7 @@ void
 perf_logging_stop ();
 
 void
-perf_logging_start (struct BenchmarkPeer *masters, int num_masters);
+perf_logging_start (char * testname, struct BenchmarkPeer *masters, int num_masters);
 
 
 /* end of file perf_ats.h */
index 1864e0180bd6122a1e59aa29ff81750998e140ac..ac55b167c24f273dda48cf528889917b0b7a6076 100644 (file)
@@ -33,11 +33,44 @@ static GNUNET_SCHEDULER_TaskIdentifier log_task;
 
 static struct BenchmarkPeer *peers;
 static int num_peers;
+static char *name;
+
 
 static void
 write_to_file ()
 {
+  struct GNUNET_DISK_FileHandle *f;
+  char * filename;
+
+
+  GNUNET_asprintf (&filename, "%llu_%s.data", GNUNET_TIME_absolute_get().abs_value_us,name);
+
+  f = GNUNET_DISK_file_open (filename,
+      GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE,
+      GNUNET_DISK_PERM_USER_READ | GNUNET_DISK_PERM_USER_WRITE);
+  if (NULL == f)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cannot open log file `%s'\n", filename);
+    GNUNET_free (filename);
+    return;
+  }
+
+  if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, "TEST", strlen("TEST")))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cannot write data to log file `%s'\n", filename);
+    GNUNET_free (filename);
+    return;
+  }
+
+  if (GNUNET_SYSERR == GNUNET_DISK_file_close(f))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cannot close log file `%s'\n", filename);
+    GNUNET_free (filename);
+    return;
+  }
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Data file successfully written to log file `%s'\n", filename);
+  GNUNET_free (filename);
 }
 
 static void
@@ -88,13 +121,14 @@ perf_logging_stop ()
 }
 
 void
-perf_logging_start (struct BenchmarkPeer *masters, int num_masters)
+perf_logging_start (char * testname, struct BenchmarkPeer *masters, int num_masters)
 {
   GNUNET_log(GNUNET_ERROR_TYPE_INFO,
-      _("Start logging\n"));
+      _("Start logging `%s'\n"), testname);
 
   peers = masters;
   num_peers = num_masters;
+  name = testname;
 
   /* Schedule logging task */
   log_task = GNUNET_SCHEDULER_add_now (&collect_log_task, NULL);