diff options
-rw-r--r-- | src/datastore/perf_plugin_datastore.c | 2 | ||||
-rw-r--r-- | src/datastore/test_datastore_api_management.c | 2 | ||||
-rw-r--r-- | src/fs/Makefile.am | 2 | ||||
-rw-r--r-- | src/fs/fs_directory.c | 14 | ||||
-rw-r--r-- | src/fs/test_fs_directory.c | 45 | ||||
-rw-r--r-- | src/fs/test_fs_uri.c | 1 | ||||
-rw-r--r-- | src/include/gnunet_fs_service.h | 3 |
7 files changed, 47 insertions, 22 deletions
diff --git a/src/datastore/perf_plugin_datastore.c b/src/datastore/perf_plugin_datastore.c index 26299830a..1a3f890d9 100644 --- a/src/datastore/perf_plugin_datastore.c +++ b/src/datastore/perf_plugin_datastore.c | |||
@@ -399,6 +399,7 @@ main (int argc, char *argv[]) | |||
399 | { | 399 | { |
400 | int ret; | 400 | int ret; |
401 | 401 | ||
402 | GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore"); | ||
402 | GNUNET_log_setup ("perf-plugin-datastore", | 403 | GNUNET_log_setup ("perf-plugin-datastore", |
403 | #if VERBOSE | 404 | #if VERBOSE |
404 | "DEBUG", | 405 | "DEBUG", |
@@ -407,6 +408,7 @@ main (int argc, char *argv[]) | |||
407 | #endif | 408 | #endif |
408 | NULL); | 409 | NULL); |
409 | ret = check (); | 410 | ret = check (); |
411 | GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore"); | ||
410 | 412 | ||
411 | return ret; | 413 | return ret; |
412 | } | 414 | } |
diff --git a/src/datastore/test_datastore_api_management.c b/src/datastore/test_datastore_api_management.c index cbefe9d09..fadb77131 100644 --- a/src/datastore/test_datastore_api_management.c +++ b/src/datastore/test_datastore_api_management.c | |||
@@ -369,7 +369,7 @@ main (int argc, char *argv[]) | |||
369 | #endif | 369 | #endif |
370 | NULL); | 370 | NULL); |
371 | ret = check (); | 371 | ret = check (); |
372 | 372 | GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore"); | |
373 | return ret; | 373 | return ret; |
374 | } | 374 | } |
375 | 375 | ||
diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index abc3d989b..e2f2e6267 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am | |||
@@ -107,7 +107,7 @@ check_PROGRAMS = \ | |||
107 | test_fs_getopt \ | 107 | test_fs_getopt \ |
108 | test_fs_uri | 108 | test_fs_uri |
109 | 109 | ||
110 | TESTS = test_fs_uri | 110 | TESTS = test_fs_directory test_fs_uri |
111 | 111 | ||
112 | # $(check_PROGRAMS) | 112 | # $(check_PROGRAMS) |
113 | 113 | ||
diff --git a/src/fs/fs_directory.c b/src/fs/fs_directory.c index 89a016efd..00407ad3a 100644 --- a/src/fs/fs_directory.c +++ b/src/fs/fs_directory.c | |||
@@ -490,8 +490,9 @@ block_align (size_t start, | |||
490 | * @param bld directory to finish | 490 | * @param bld directory to finish |
491 | * @param rsize set to the number of bytes needed | 491 | * @param rsize set to the number of bytes needed |
492 | * @param rdata set to the encoded directory | 492 | * @param rdata set to the encoded directory |
493 | * @return GNUNET_OK on success | ||
493 | */ | 494 | */ |
494 | void | 495 | int |
495 | GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | 496 | GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, |
496 | size_t *rsize, | 497 | size_t *rsize, |
497 | void **rdata) | 498 | void **rdata) |
@@ -541,7 +542,15 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | |||
541 | } | 542 | } |
542 | } | 543 | } |
543 | *rsize = size; | 544 | *rsize = size; |
544 | data = GNUNET_malloc (size); | 545 | data = GNUNET_malloc_large (size); |
546 | if (data == NULL) | ||
547 | { | ||
548 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, | ||
549 | "malloc"); | ||
550 | *rsize = 0; | ||
551 | *rdata = NULL; | ||
552 | return GNUNET_SYSERR; | ||
553 | } | ||
545 | *rdata = data; | 554 | *rdata = data; |
546 | memcpy (data, GNUNET_DIRECTORY_MAGIC, 8); | 555 | memcpy (data, GNUNET_DIRECTORY_MAGIC, 8); |
547 | off = 8; | 556 | off = 8; |
@@ -572,6 +581,7 @@ GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | |||
572 | GNUNET_assert (off == size); | 581 | GNUNET_assert (off == size); |
573 | GNUNET_CONTAINER_meta_data_destroy (bld->meta); | 582 | GNUNET_CONTAINER_meta_data_destroy (bld->meta); |
574 | GNUNET_free (bld); | 583 | GNUNET_free (bld); |
584 | return GNUNET_OK; | ||
575 | } | 585 | } |
576 | 586 | ||
577 | 587 | ||
diff --git a/src/fs/test_fs_directory.c b/src/fs/test_fs_directory.c index 9d0101078..31a9869f3 100644 --- a/src/fs/test_fs_directory.c +++ b/src/fs/test_fs_directory.c | |||
@@ -51,6 +51,8 @@ processor (void *cls, | |||
51 | struct PCLS *p = cls; | 51 | struct PCLS *p = cls; |
52 | int i; | 52 | int i; |
53 | 53 | ||
54 | if (NULL == uri) | ||
55 | return; /* ignore directory's meta data */ | ||
54 | for (i = 0; i < p->max; i++) | 56 | for (i = 0; i < p->max; i++) |
55 | { | 57 | { |
56 | if (GNUNET_CONTAINER_meta_data_test_equal (p->md[i], | 58 | if (GNUNET_CONTAINER_meta_data_test_equal (p->md[i], |
@@ -80,10 +82,16 @@ testDirectory (unsigned int i) | |||
80 | char uri[512]; | 82 | char uri[512]; |
81 | char txt[128]; | 83 | char txt[128]; |
82 | int ret = 0; | 84 | int ret = 0; |
85 | struct GNUNET_TIME_Absolute start; | ||
86 | char *s; | ||
83 | 87 | ||
84 | cls.max = i; | 88 | cls.max = i; |
85 | uris = GNUNET_malloc (sizeof (struct GNUNET_FS_Uri*) * i); | 89 | uris = GNUNET_malloc (sizeof (struct GNUNET_FS_Uri*) * i); |
86 | mds = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_MetaData*) * i); | 90 | mds = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_MetaData*) * i); |
91 | meta = GNUNET_CONTAINER_meta_data_create (); | ||
92 | GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_TITLE, "A title"); | ||
93 | GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_AUTHOR, "An author"); | ||
94 | db = GNUNET_FS_directory_builder_create (meta); | ||
87 | for (p = 0; p < i; p++) | 95 | for (p = 0; p < i; p++) |
88 | { | 96 | { |
89 | mds[p] = GNUNET_CONTAINER_meta_data_create (); | 97 | mds[p] = GNUNET_CONTAINER_meta_data_create (); |
@@ -112,22 +120,27 @@ testDirectory (unsigned int i) | |||
112 | GNUNET_free (uris); | 120 | GNUNET_free (uris); |
113 | ABORT (); /* error in testcase */ | 121 | ABORT (); /* error in testcase */ |
114 | } | 122 | } |
123 | GNUNET_FS_directory_builder_add (db, uris[p], mds[p], NULL); | ||
115 | } | 124 | } |
116 | meta = GNUNET_CONTAINER_meta_data_create (); | 125 | start = GNUNET_TIME_absolute_get (); |
117 | GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_TITLE, "A title"); | ||
118 | GNUNET_CONTAINER_meta_data_insert (meta, EXTRACTOR_AUTHOR, "An author"); | ||
119 | db = GNUNET_FS_directory_builder_create (meta); | ||
120 | for (p=0;p<i;p++) | ||
121 | GNUNET_FS_directory_builder_add (db, uris[i], mds[i], NULL); | ||
122 | GNUNET_FS_directory_builder_finish (db, | 126 | GNUNET_FS_directory_builder_finish (db, |
123 | &dlen, | 127 | &dlen, |
124 | (void**) &data); | 128 | (void**) &data); |
125 | cls.pos = 0; | 129 | s = GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_absolute_get_duration (start)); |
126 | cls.uri = uris; | 130 | fprintf (stdout, |
127 | cls.md = mds; | 131 | "Creating directory with %u entires took %s\n", |
128 | GNUNET_FS_directory_list_contents (dlen, data, 0, | 132 | i, |
129 | &processor, &cls); | 133 | s); |
130 | GNUNET_assert (cls.pos == i); | 134 | GNUNET_free (s); |
135 | if (i < 1000) | ||
136 | { | ||
137 | cls.pos = 0; | ||
138 | cls.uri = uris; | ||
139 | cls.md = mds; | ||
140 | GNUNET_FS_directory_list_contents (dlen, data, 0, | ||
141 | &processor, &cls); | ||
142 | GNUNET_assert (cls.pos == i); | ||
143 | } | ||
131 | GNUNET_free (data); | 144 | GNUNET_free (data); |
132 | GNUNET_CONTAINER_meta_data_destroy (meta); | 145 | GNUNET_CONTAINER_meta_data_destroy (meta); |
133 | for (p = 0; p < i; p++) | 146 | for (p = 0; p < i; p++) |
@@ -140,6 +153,7 @@ testDirectory (unsigned int i) | |||
140 | return ret; | 153 | return ret; |
141 | } | 154 | } |
142 | 155 | ||
156 | |||
143 | int | 157 | int |
144 | main (int argc, char *argv[]) | 158 | main (int argc, char *argv[]) |
145 | { | 159 | { |
@@ -153,11 +167,8 @@ main (int argc, char *argv[]) | |||
153 | "WARNING", | 167 | "WARNING", |
154 | #endif | 168 | #endif |
155 | NULL); | 169 | NULL); |
156 | for (i = 17; i < 2000; i *= 2) | 170 | for (i = 17; i < 10000; i *= 2) |
157 | { | 171 | failureCount += testDirectory (i); |
158 | fprintf (stderr, "."); | ||
159 | failureCount += testDirectory (i); | ||
160 | } | ||
161 | fprintf (stderr, "\n"); | 172 | fprintf (stderr, "\n"); |
162 | 173 | ||
163 | if (failureCount != 0) | 174 | if (failureCount != 0) |
diff --git a/src/fs/test_fs_uri.c b/src/fs/test_fs_uri.c index ee587c92a..b6715cb14 100644 --- a/src/fs/test_fs_uri.c +++ b/src/fs/test_fs_uri.c | |||
@@ -269,6 +269,7 @@ main (int argc, char *argv[]) | |||
269 | failureCount += testFile (i); | 269 | failureCount += testFile (i); |
270 | } | 270 | } |
271 | /* fprintf (stderr, "\n"); */ | 271 | /* fprintf (stderr, "\n"); */ |
272 | GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-uri"); | ||
272 | if (failureCount != 0) | 273 | if (failureCount != 0) |
273 | return 1; | 274 | return 1; |
274 | return 0; | 275 | return 0; |
diff --git a/src/include/gnunet_fs_service.h b/src/include/gnunet_fs_service.h index 210455311..108c0c68f 100644 --- a/src/include/gnunet_fs_service.h +++ b/src/include/gnunet_fs_service.h | |||
@@ -2429,8 +2429,9 @@ GNUNET_FS_directory_builder_add (struct GNUNET_FS_DirectoryBuilder *bld, | |||
2429 | * @param bld directory to finish | 2429 | * @param bld directory to finish |
2430 | * @param size set to the number of bytes needed | 2430 | * @param size set to the number of bytes needed |
2431 | * @param data set to the encoded directory | 2431 | * @param data set to the encoded directory |
2432 | * @return GNUNET_OK on success | ||
2432 | */ | 2433 | */ |
2433 | void | 2434 | int |
2434 | GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, | 2435 | GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, |
2435 | size_t *size, | 2436 | size_t *size, |
2436 | void **data); | 2437 | void **data); |