more testing
authorChristian Grothoff <christian@grothoff.org>
Wed, 9 Sep 2009 13:21:00 +0000 (13:21 +0000)
committerChristian Grothoff <christian@grothoff.org>
Wed, 9 Sep 2009 13:21:00 +0000 (13:21 +0000)
src/datastore/perf_plugin_datastore.c
src/datastore/test_datastore_api_management.c
src/fs/Makefile.am
src/fs/fs_directory.c
src/fs/test_fs_directory.c
src/fs/test_fs_uri.c
src/include/gnunet_fs_service.h

index 26299830a6f7520dadc5677e1b54f24f726e01e8..1a3f890d94aba2ff0aae2f8610af3ac9646b9668 100644 (file)
@@ -399,6 +399,7 @@ main (int argc, char *argv[])
 {
   int ret;
 
+  GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore");
   GNUNET_log_setup ("perf-plugin-datastore",
 #if VERBOSE
                     "DEBUG",
@@ -407,6 +408,7 @@ main (int argc, char *argv[])
 #endif
                     NULL);
   ret = check ();
+  GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore");
 
   return ret;
 }
index cbefe9d0967be1164c5837e3655a971a343a3fa7..fadb77131b3be9912fe0423bdff3a61d34efc406 100644 (file)
@@ -369,7 +369,7 @@ main (int argc, char *argv[])
 #endif
                     NULL);
   ret = check ();
-
+  GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore");
   return ret;
 }
 
index abc3d989ba0235b6287c0cb560e9cae5debb912d..e2f2e62678afc2ad5cd13ee8601700a49fdb5fd6 100644 (file)
@@ -107,7 +107,7 @@ check_PROGRAMS = \
  test_fs_getopt \
  test_fs_uri
 
-TESTS = test_fs_uri
+TESTS = test_fs_directory test_fs_uri
 
 # $(check_PROGRAMS)
 
index 89a016efd9944f08f11747cbb19cd3c9bfd090c8..00407ad3a0b18d584d76bfa7909f2d06eb580305 100644 (file)
@@ -490,8 +490,9 @@ block_align (size_t start,
  * @param bld directory to finish
  * @param rsize set to the number of bytes needed
  * @param rdata set to the encoded directory
+ * @return GNUNET_OK on success
  */
-void
+int
 GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
                                    size_t *rsize,
                                    void **rdata)
@@ -541,7 +542,15 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
        }
     }
   *rsize = size;
-  data = GNUNET_malloc (size);
+  data = GNUNET_malloc_large (size);
+  if (data == NULL)
+    {
+      GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
+                          "malloc");
+      *rsize = 0;
+      *rdata = NULL;
+      return GNUNET_SYSERR;
+    }
   *rdata = data;
   memcpy (data, GNUNET_DIRECTORY_MAGIC, 8);
   off = 8;
@@ -572,6 +581,7 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
   GNUNET_assert (off == size);  
   GNUNET_CONTAINER_meta_data_destroy (bld->meta);
   GNUNET_free (bld);
+  return GNUNET_OK;
 }
 
 
index 9d0101078850dc0df46732bc0ceb136f047cb995..31a9869f3e2713e7ff1a555ccc589905d2202359 100644 (file)
@@ -51,6 +51,8 @@ processor (void *cls,
   struct PCLS *p = cls;
   int i;
 
+  if (NULL == uri)
+    return; /* ignore directory's meta data */
   for (i = 0; i < p->max; i++)
     {
       if (GNUNET_CONTAINER_meta_data_test_equal (p->md[i],
@@ -80,10 +82,16 @@ testDirectory (unsigned int i)
   char uri[512];
   char txt[128];
   int ret = 0;
+  struct GNUNET_TIME_Absolute start;
+  char *s;
 
   cls.max = i;
   uris = GNUNET_malloc (sizeof (struct GNUNET_FS_Uri*) * i);
   mds = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_MetaData*) * i);
+  meta = GNUNET_CONTAINER_meta_data_create ();
+  GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_TITLE, "A title");
+  GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_AUTHOR, "An author");
+  db = GNUNET_FS_directory_builder_create (meta);
   for (p = 0; p < i; p++)
     {
       mds[p] = GNUNET_CONTAINER_meta_data_create ();
@@ -112,22 +120,27 @@ testDirectory (unsigned int i)
           GNUNET_free (uris);
           ABORT ();             /* error in testcase */
         }
+      GNUNET_FS_directory_builder_add (db, uris[p], mds[p], NULL);
     }
-  meta = GNUNET_CONTAINER_meta_data_create ();
-  GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_TITLE, "A title");
-  GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_AUTHOR, "An author");
-  db = GNUNET_FS_directory_builder_create (meta);
-  for (p=0;p<i;p++)
-    GNUNET_FS_directory_builder_add (db, uris[i], mds[i], NULL);
+  start = GNUNET_TIME_absolute_get ();
   GNUNET_FS_directory_builder_finish (db,
                                      &dlen,
                                      (void**) &data);
-  cls.pos = 0;
-  cls.uri = uris;
-  cls.md = mds;
-  GNUNET_FS_directory_list_contents (dlen, data, 0, 
-                                    &processor, &cls);
-  GNUNET_assert (cls.pos == i);
+  s = GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (start));
+  fprintf (stdout,
+          "Creating directory with %u entires took %s\n",
+          i,
+          s);
+  GNUNET_free (s);
+  if (i < 1000)
+    {
+      cls.pos = 0;
+      cls.uri = uris;
+      cls.md = mds;
+      GNUNET_FS_directory_list_contents (dlen, data, 0, 
+                                        &processor, &cls);
+      GNUNET_assert (cls.pos == i);
+    }
   GNUNET_free (data);
   GNUNET_CONTAINER_meta_data_destroy (meta);
   for (p = 0; p < i; p++)
@@ -140,6 +153,7 @@ testDirectory (unsigned int i)
   return ret;
 }
 
+
 int
 main (int argc, char *argv[])
 {
@@ -153,11 +167,8 @@ main (int argc, char *argv[])
                    "WARNING",
 #endif
                    NULL);
-  for (i = 17; i < 2000; i *= 2)
-    {
-      fprintf (stderr, ".");
-      failureCount += testDirectory (i);
-    }
+  for (i = 17; i < 10000; i *= 2)
+    failureCount += testDirectory (i);    
   fprintf (stderr, "\n");
 
   if (failureCount != 0)
index ee587c92ac846267e4b40a49b5d136db0f8d01b3..b6715cb14e9ded65baed5b8f756a52c35439ffcd 100644 (file)
@@ -269,6 +269,7 @@ main (int argc, char *argv[])
       failureCount += testFile (i);
     }
   /* fprintf (stderr, "\n"); */
+  GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-uri");
   if (failureCount != 0)
     return 1;
   return 0;
index 210455311216d2c458bea253a0034cbb60081e74..108c0c68f3077bd5ac39253aa6cc7d07ab09ce21 100644 (file)
@@ -2429,8 +2429,9 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld,
  * @param bld directory to finish
  * @param size set to the number of bytes needed
  * @param data set to the encoded directory
+ * @return GNUNET_OK on success
  */
-void
+int
 GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
                                    size_t *size,
                                    void **data);