gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26985 - gnunet/src/testbed


From: gnunet
Subject: [GNUnet-SVN] r26985 - gnunet/src/testbed
Date: Wed, 24 Apr 2013 14:40:19 +0200

Author: harsha
Date: 2013-04-24 14:40:19 +0200 (Wed, 24 Apr 2013)
New Revision: 26985

Modified:
   gnunet/src/testbed/test_testbed_logger_api.c
Log:
- test harder by checking the data file size


Modified: gnunet/src/testbed/test_testbed_logger_api.c
===================================================================
--- gnunet/src/testbed/test_testbed_logger_api.c        2013-04-24 12:20:58 UTC 
(rev 26984)
+++ gnunet/src/testbed/test_testbed_logger_api.c        2013-04-24 12:40:19 UTC 
(rev 26985)
@@ -44,8 +44,12 @@
 /**
  * Opaque handle for the logging service
  */
-struct GNUNET_TESTBED_LOGGER_Handle *h;
+static struct GNUNET_TESTBED_LOGGER_Handle *h;
 
+static struct GNUNET_TESTING_Peer *peer;
+
+static char *search_dir;
+
 /**
  * Abort task identifier
  */
@@ -85,6 +89,7 @@
 {
   CANCEL_TASK (abort_task);
   CANCEL_TASK (write_task);
+  GNUNET_free_non_null (search_dir);
   GNUNET_SCHEDULER_shutdown ();
 }
 
@@ -100,7 +105,53 @@
 
 #define BSIZE 1024
 
+
 /**
+ * Function called to iterate over a directory.
+ *
+ * @param cls closure
+ * @param di argument to pass to "GNUNET_DISK_directory_iterator_next" to
+ *           get called on the next entry (or finish cleanly);
+ *           NULL on error (will be the last call in that case)
+ * @param filename complete filename (absolute path)
+ * @param dirname directory name (absolute path)
+ */
+static void
+iterator_cb (void *cls, struct GNUNET_DISK_DirectoryIterator *di,
+             const char *filename, const char *dirname)
+{
+  const char *fn;
+  size_t len;
+  uint64_t fs;
+  int cancel;
+
+  cancel = GNUNET_NO;
+  if (NULL == filename)
+    goto iteration_cont;
+  len = strlen (filename);
+  if (len < 5)                  /* log file: `pid'.dat */
+    goto iteration_cont;
+  fn = filename + len;
+  if (0 != strcasecmp (".dat", fn - 4))
+    goto iteration_cont;
+  if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fs,
+                                          GNUNET_NO, GNUNET_YES))
+    goto iteration_cont;
+  if ((BSIZE * 2) != fs)        /* The file size should be equal to what we
+                                   have written */
+    goto iteration_cont;
+  
+  cancel = GNUNET_YES;
+  result = GNUNET_OK;
+    
+ iteration_cont:
+  if ( (NULL != di) && 
+       (GNUNET_YES != GNUNET_DISK_directory_iterator_next (di, cancel)) )
+    return;
+  shutdown_now ();
+}
+
+/**
  * Functions of this type are called to notify a successful transmission of the
  * message to the logger service
  *
@@ -112,6 +163,10 @@
 {
   FAIL_TEST (&write_task == cls, return);
   FAIL_TEST ((BSIZE * 2) == size, return);
+  FAIL_TEST (GNUNET_OK == GNUNET_TESTING_peer_stop (peer), return);
+  FAIL_TEST (GNUNET_YES == GNUNET_DISK_directory_iterator_start
+             (GNUNET_SCHEDULER_PRIORITY_DEFAULT, search_dir,
+              &iterator_cb, NULL), return);
   result = GNUNET_OK;
   shutdown_now ();
 }
@@ -144,9 +199,13 @@
  */
 static void
 test_main (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg,
-           struct GNUNET_TESTING_Peer *peer)
+           struct GNUNET_TESTING_Peer *p)
 {
   FAIL_TEST (NULL != (h = GNUNET_TESTBED_LOGGER_connect (cfg)), return);
+  FAIL_TEST (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string
+             (cfg, "testbed-logger", "dir", &search_dir), return);
+  search_dir = GNUNET_CONFIGURATION_expand_dollar (cfg, search_dir);
+  peer = p;
   write_task = GNUNET_SCHEDULER_add_now (&do_write, NULL);
   abort_task = GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (10),
                                              &do_abort, NULL);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]