expand GNUNET_OS_ProjectData API to also enable de-duplcation of logic for --help
[oweals/gnunet.git] / src / util / test_disk.c
index 8b485edc51adc181c022b956c62a4c50b91ce029..560b6710eeecd02d456cd8ec1af7e4318bf66ba7 100644 (file)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet.
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2003, 2005, 2006, 2009 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2001, 2002, 2003, 2005, 2006, 2009 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
 */
 
 /**
@@ -24,9 +24,7 @@
  * @author Christian Grothoff
  */
 #include "platform.h"
  * @author Christian Grothoff
  */
 #include "platform.h"
-#include "gnunet_common.h"
-#include "gnunet_disk_lib.h"
-#include "gnunet_scheduler_lib.h"
+#include "gnunet_util_lib.h"
 
 #define TESTSTRING "Hello World\0"
 
 
 #define TESTSTRING "Hello World\0"
 
@@ -36,45 +34,42 @@ testReadWrite ()
   char tmp[100 + 1];
   int ret;
 
   char tmp[100 + 1];
   int ret;
 
-  if (strlen(TESTSTRING) != 
-      GNUNET_DISK_fn_write (".testfile", TESTSTRING, 
-                           strlen (TESTSTRING),
-                           GNUNET_DISK_PERM_USER_READ | GNUNET_DISK_PERM_USER_WRITE))
+  if (strlen (TESTSTRING) !=
+      GNUNET_DISK_fn_write (".testfile", TESTSTRING, strlen (TESTSTRING),
+                            GNUNET_DISK_PERM_USER_READ |
+                            GNUNET_DISK_PERM_USER_WRITE))
     return 1;
   if (GNUNET_OK != GNUNET_DISK_file_test (".testfile"))
     return 1;
   ret = GNUNET_DISK_fn_read (".testfile", tmp, sizeof (tmp) - 1);
   if (ret < 0)
     return 1;
   if (GNUNET_OK != GNUNET_DISK_file_test (".testfile"))
     return 1;
   ret = GNUNET_DISK_fn_read (".testfile", tmp, sizeof (tmp) - 1);
   if (ret < 0)
-    {
-      fprintf (stderr,
-               "Error reading file `%s' in testReadWrite\n", ".testfile");
-      return 1;
-    }
+  {
+    FPRINTF (stderr, "Error reading file `%s' in testReadWrite\n", ".testfile");
+    return 1;
+  }
   tmp[ret] = '\0';
   if (0 != memcmp (tmp, TESTSTRING, strlen (TESTSTRING) + 1))
   tmp[ret] = '\0';
   if (0 != memcmp (tmp, TESTSTRING, strlen (TESTSTRING) + 1))
-    {
-      fprintf (stderr,
-               "Error in testReadWrite: *%s* != *%s* for file %s\n",
-               tmp, TESTSTRING, ".testfile");
-      return 1;
-    }
+  {
+    FPRINTF (stderr, "Error in testReadWrite: *%s* != *%s* for file %s\n", tmp,
+             TESTSTRING, ".testfile");
+    return 1;
+  }
   GNUNET_DISK_file_copy (".testfile", ".testfile2");
   memset (tmp, 0, sizeof (tmp));
   ret = GNUNET_DISK_fn_read (".testfile2", tmp, sizeof (tmp) - 1);
   if (ret < 0)
   GNUNET_DISK_file_copy (".testfile", ".testfile2");
   memset (tmp, 0, sizeof (tmp));
   ret = GNUNET_DISK_fn_read (".testfile2", tmp, sizeof (tmp) - 1);
   if (ret < 0)
-    {
-      fprintf (stderr,
-               "Error reading file `%s' in testReadWrite\n", ".testfile2");
-      return 1;
-    }
+  {
+    FPRINTF (stderr, "Error reading file `%s' in testReadWrite\n",
+             ".testfile2");
+    return 1;
+  }
   tmp[ret] = '\0';
   if (0 != memcmp (tmp, TESTSTRING, strlen (TESTSTRING) + 1))
   tmp[ret] = '\0';
   if (0 != memcmp (tmp, TESTSTRING, strlen (TESTSTRING) + 1))
-    {
-      fprintf (stderr,
-               "Error in testReadWrite: *%s* != *%s* for file %s\n",
-               tmp, TESTSTRING, ".testfile2");
-      return 1;
-    }
+  {
+    FPRINTF (stderr, "Error in testReadWrite: *%s* != *%s* for file %s\n", tmp,
+             TESTSTRING, ".testfile2");
+    return 1;
+  }
 
   GNUNET_break (0 == UNLINK (".testfile"));
   GNUNET_break (0 == UNLINK (".testfile2"));
 
   GNUNET_break (0 == UNLINK (".testfile"));
   GNUNET_break (0 == UNLINK (".testfile2"));
@@ -89,39 +84,21 @@ testOpenClose ()
 {
   struct GNUNET_DISK_FileHandle *fh;
   uint64_t size;
 {
   struct GNUNET_DISK_FileHandle *fh;
   uint64_t size;
-  long avail;
 
 
-  fh = GNUNET_DISK_file_open (".testfile", GNUNET_DISK_OPEN_READWRITE
-      | GNUNET_DISK_OPEN_CREATE, GNUNET_DISK_PERM_USER_READ
-      | GNUNET_DISK_PERM_USER_WRITE);
+  fh = GNUNET_DISK_file_open (".testfile",
+                              GNUNET_DISK_OPEN_READWRITE |
+                              GNUNET_DISK_OPEN_CREATE,
+                              GNUNET_DISK_PERM_USER_READ |
+                              GNUNET_DISK_PERM_USER_WRITE);
   GNUNET_assert (GNUNET_NO == GNUNET_DISK_handle_invalid (fh));
   GNUNET_break (5 == GNUNET_DISK_file_write (fh, "Hello", 5));
   GNUNET_DISK_file_close (fh);
   GNUNET_break (GNUNET_OK ==
   GNUNET_assert (GNUNET_NO == GNUNET_DISK_handle_invalid (fh));
   GNUNET_break (5 == GNUNET_DISK_file_write (fh, "Hello", 5));
   GNUNET_DISK_file_close (fh);
   GNUNET_break (GNUNET_OK ==
-                GNUNET_DISK_file_size (".testfile", &size, GNUNET_NO));
+                GNUNET_DISK_file_size (".testfile", &size, GNUNET_NO, GNUNET_YES));
   if (size != 5)
     return 1;
   GNUNET_break (0 == UNLINK (".testfile"));
 
   if (size != 5)
     return 1;
   GNUNET_break (0 == UNLINK (".testfile"));
 
-  /* test that avail goes down as we fill the disk... */
-  GNUNET_log_skip (1, GNUNET_NO);
-  avail = GNUNET_DISK_get_blocks_available (".testfile");
-  GNUNET_log_skip (0, GNUNET_NO);
-  fh = GNUNET_DISK_file_open (".testfile", GNUNET_DISK_OPEN_READWRITE
-      | GNUNET_DISK_OPEN_CREATE, GNUNET_DISK_PERM_USER_WRITE
-      | GNUNET_DISK_PERM_USER_READ);
-  GNUNET_assert (GNUNET_NO == GNUNET_DISK_handle_invalid (fh));
-  while ((avail == GNUNET_DISK_get_blocks_available (".testfile")) &&
-         (avail != -1))
-    if (16 != GNUNET_DISK_file_write (fh, "HelloWorld123456", 16))
-      {
-        GNUNET_DISK_file_close (fh);
-        GNUNET_break (0 == UNLINK (".testfile"));
-        return 1;
-      }
-  GNUNET_DISK_file_close (fh);
-  GNUNET_break (0 == UNLINK (".testfile"));
-
   return 0;
 }
 
   return 0;
 }
 
@@ -138,11 +115,14 @@ scan_callback (void *want, const char *filename)
 static int
 testDirScan ()
 {
 static int
 testDirScan ()
 {
-  if (GNUNET_OK != GNUNET_DISK_directory_create ("test" DIR_SEPARATOR_STR "entry"))
+  if (GNUNET_OK !=
+      GNUNET_DISK_directory_create ("test" DIR_SEPARATOR_STR "entry"))
     return 1;
     return 1;
-  if (GNUNET_OK != GNUNET_DISK_directory_create ("test" DIR_SEPARATOR_STR "entry_more"))
+  if (GNUNET_OK !=
+      GNUNET_DISK_directory_create ("test" DIR_SEPARATOR_STR "entry_more"))
     return 1;
     return 1;
-  GNUNET_DISK_directory_scan ("test", &scan_callback, "test" DIR_SEPARATOR_STR "entry");
+  GNUNET_DISK_directory_scan ("test", &scan_callback,
+                              "test" DIR_SEPARATOR_STR "entry");
   if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
     return 1;
   if (ok < 2)
   if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
     return 1;
   if (ok < 2)
@@ -151,11 +131,11 @@ testDirScan ()
 }
 
 static void
 }
 
 static void
-iter_callback (void *cls,
-               struct GNUNET_DISK_DirectoryIterator *di,
+iter_callback (void *cls, struct GNUNET_DISK_DirectoryIterator *di,
                const char *filename, const char *dirname)
 {
   int *i = cls;
                const char *filename, const char *dirname)
 {
   int *i = cls;
+
   (*i)++;
   GNUNET_DISK_directory_iterator_next (di, GNUNET_NO);
 }
   (*i)++;
   GNUNET_DISK_directory_iterator_next (di, GNUNET_NO);
 }
@@ -163,8 +143,7 @@ iter_callback (void *cls,
 static void
 iter_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
 static void
 iter_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  GNUNET_DISK_directory_iterator_start (tc->sched,
-                                        GNUNET_SCHEDULER_PRIORITY_DEFAULT,
+  GNUNET_DISK_directory_iterator_start (GNUNET_SCHEDULER_PRIORITY_DEFAULT,
                                         "test", &iter_callback, cls);
 }
 
                                         "test", &iter_callback, cls);
 }
 
@@ -189,36 +168,17 @@ testDirIter ()
 }
 
 
 }
 
 
-static int
-testGetHome ()
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg;
-  char *fn;
-  int ret;
-
-  cfg = GNUNET_CONFIGURATION_create ();
-  GNUNET_assert (cfg != NULL);
-  GNUNET_CONFIGURATION_set_value_string (cfg, "service", "HOME",
-                                         "/tmp/test-gnunet-disk-a/b/c");
-  fn = GNUNET_DISK_get_home_filename (cfg, "service", "d", "e", NULL);
-  GNUNET_assert (fn != NULL);
-  GNUNET_CONFIGURATION_destroy (cfg);
-  ret = strcmp ("/tmp/test-gnunet-disk-a/b/c/d/e", fn);
-  GNUNET_free (fn);
-  GNUNET_DISK_directory_remove ("/tmp/test-gnunet-disk-a");
-  return ret;
-}
-
 static int
 testCanonicalize ()
 {
   char *fn = GNUNET_strdup ("ab?><|cd*ef:/g\"");
 static int
 testCanonicalize ()
 {
   char *fn = GNUNET_strdup ("ab?><|cd*ef:/g\"");
+
   GNUNET_DISK_filename_canonicalize (fn);
   if (0 != strcmp (fn, "ab____cd_ef__g_"))
   GNUNET_DISK_filename_canonicalize (fn);
   if (0 != strcmp (fn, "ab____cd_ef__g_"))
-    {
-      GNUNET_free (fn);
-      return 1;
-    }
+  {
+    GNUNET_free (fn);
+    return 1;
+  }
   GNUNET_free (fn);
   return 0;
 }
   GNUNET_free (fn);
   return 0;
 }
@@ -226,9 +186,11 @@ testCanonicalize ()
 static int
 testChangeOwner ()
 {
 static int
 testChangeOwner ()
 {
+#ifndef WINDOWS
   GNUNET_log_skip (1, GNUNET_NO);
   if (GNUNET_OK == GNUNET_DISK_file_change_owner ("/dev/null", "unknownuser"))
     return 1;
   GNUNET_log_skip (1, GNUNET_NO);
   if (GNUNET_OK == GNUNET_DISK_file_change_owner ("/dev/null", "unknownuser"))
     return 1;
+#endif
   return 0;
 }
 
   return 0;
 }
 
@@ -245,7 +207,7 @@ testDirMani ()
     return 1;
   if (GNUNET_OK != GNUNET_DISK_directory_create ("test"))
     return 1;
     return 1;
   if (GNUNET_OK != GNUNET_DISK_directory_create ("test"))
     return 1;
-  if (GNUNET_YES != GNUNET_DISK_directory_test ("test"))
+  if (GNUNET_YES != GNUNET_DISK_directory_test ("test", GNUNET_YES))
     return 1;
   if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
     return 1;
     return 1;
   if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
     return 1;
@@ -265,14 +227,13 @@ main (int argc, char *argv[])
   failureCount += testOpenClose ();
   failureCount += testDirScan ();
   failureCount += testDirIter ();
   failureCount += testOpenClose ();
   failureCount += testDirScan ();
   failureCount += testDirIter ();
-  failureCount += testGetHome ();
   failureCount += testCanonicalize ();
   failureCount += testChangeOwner ();
   failureCount += testDirMani ();
   if (failureCount != 0)
   failureCount += testCanonicalize ();
   failureCount += testChangeOwner ();
   failureCount += testDirMani ();
   if (failureCount != 0)
-    {
-      fprintf (stderr, "\n%u TESTS FAILED!\n", failureCount);
-      return -1;
-    }
+  {
+    FPRINTF (stderr, "\n%u TESTS FAILED!\n", failureCount);
+    return -1;
+  }
   return 0;
 }                               /* end of main */
   return 0;
 }                               /* end of main */