/*
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
- 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
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.
*/
/**
* @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"
+
static int
testReadWrite ()
{
char tmp[100 + 1];
int ret;
- if (GNUNET_OK != 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)
- {
- 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))
- {
- 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)
- {
- 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))
- {
- 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"));
return 0;
}
+
static int
testOpenClose ()
{
struct GNUNET_DISK_FileHandle *fh;
- unsigned long long size;
- long avail;
+ uint64_t size;
- 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_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"));
- /* test that avail goes down as we fill the disk... */
- GNUNET_log_skip (1);
- avail = GNUNET_DISK_get_blocks_available (".testfile");
- GNUNET_log_skip (0);
- 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;
}
static int ok;
+
static int
scan_callback (void *want, const char *filename)
{
return GNUNET_OK;
}
+
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"))
+ {
+ GNUNET_break (0);
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"))
+ {
+ GNUNET_break (0);
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"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (ok < 2)
+ {
+ GNUNET_break (0);
return 1;
+ }
return 0;
}
-static void
+
+static int
iter_callback (void *cls,
- struct GNUNET_DISK_DirectoryIterator *di,
- const char *filename, const char *dirname)
+ const char *filename)
{
int *i = cls;
+
(*i)++;
- GNUNET_DISK_directory_iterator_next (di, GNUNET_NO);
+ return GNUNET_OK;
}
-static void
-iter_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- GNUNET_DISK_directory_iterator_start (tc->sched,
- GNUNET_SCHEDULER_PRIORITY_DEFAULT,
- "test", &iter_callback, cls);
-}
static int
testDirIter ()
i = 0;
if (GNUNET_OK != GNUNET_DISK_directory_create ("test/entry"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_OK != GNUNET_DISK_directory_create ("test/entry_many"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_OK != GNUNET_DISK_directory_create ("test/entry_more"))
+ {
+ GNUNET_break (0);
return 1;
- GNUNET_SCHEDULER_run (&iter_task, &i);
+ }
+ GNUNET_DISK_directory_scan ("test",
+ &iter_callback,
+ &i);
if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (i < 3)
+ {
+ GNUNET_break (0);
return 1;
+ }
return 0;
}
-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/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/a/b/c/d/e", fn);
- GNUNET_free (fn);
- return ret;
-}
-
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_free (fn);
- return 1;
- }
+ {
+ GNUNET_free (fn);
+ return 1;
+ }
GNUNET_free (fn);
return 0;
}
+
static int
testChangeOwner ()
{
- GNUNET_log_skip (1);
+#ifndef WINDOWS
+ GNUNET_log_skip (1, GNUNET_NO);
if (GNUNET_OK == GNUNET_DISK_file_change_owner ("/dev/null", "unknownuser"))
return 1;
+#endif
return 0;
}
+
static int
testDirMani ()
{
if (GNUNET_OK != GNUNET_DISK_directory_create_for_file ("test/ing"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_NO != GNUNET_DISK_file_test ("test"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_NO != GNUNET_DISK_file_test ("test/ing"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_OK != GNUNET_DISK_directory_create ("test"))
+ {
+ GNUNET_break (0);
return 1;
- if (GNUNET_YES != GNUNET_DISK_directory_test ("test"))
+ }
+ if (GNUNET_YES != GNUNET_DISK_directory_test ("test", GNUNET_YES))
+ {
+ GNUNET_break (0);
return 1;
+ }
if (GNUNET_OK != GNUNET_DISK_directory_remove ("test"))
+ {
+ GNUNET_break (0);
return 1;
-
-
+ }
return 0;
}
failureCount += testOpenClose ();
failureCount += testDirScan ();
failureCount += testDirIter ();
- failureCount += testGetHome ();
failureCount += testCanonicalize ();
failureCount += testChangeOwner ();
failureCount += testDirMani ();
- if (failureCount != 0)
- {
- fprintf (stderr, "\n%u TESTS FAILED!\n", failureCount);
- return -1;
- }
+ if (0 != failureCount)
+ {
+ FPRINTF (stderr,
+ "\n%u TESTS FAILED!\n",
+ failureCount);
+ return -1;
+ }
return 0;
} /* end of main */