/*
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
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 ()
{
return 0;
}
+
static int
testOpenClose ()
{
struct GNUNET_DISK_FileHandle *fh;
uint64_t size;
- long avail;
fh = GNUNET_DISK_file_open (".testfile",
GNUNET_DISK_OPEN_READWRITE |
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;
}
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"))
+ {
+ GNUNET_break (0);
return 1;
+ }
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");
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
-iter_callback (void *cls, struct GNUNET_DISK_DirectoryIterator *di,
- const char *filename, const char *dirname)
+
+static int
+iter_callback (void *cls,
+ 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 (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/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_break (GNUNET_OK ==
- GNUNET_DISK_directory_remove ("/tmp/test-gnunet-disk-a"));
- return ret;
-}
-
static int
testCanonicalize ()
{
return 0;
}
+
static int
testChangeOwner ()
{
+#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", 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)
+ if (0 != failureCount)
{
- FPRINTF (stderr, "\n%u TESTS FAILED!\n", failureCount);
+ FPRINTF (stderr,
+ "\n%u TESTS FAILED!\n",
+ failureCount);
return -1;
}
return 0;