summaryrefslogtreecommitdiff
path: root/src/fs/test_fs_search_with_and.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/test_fs_search_with_and.c')
-rw-r--r--src/fs/test_fs_search_with_and.c294
1 files changed, 147 insertions, 147 deletions
diff --git a/src/fs/test_fs_search_with_and.c b/src/fs/test_fs_search_with_and.c
index e43b8e25a..60ceb94ee 100644
--- a/src/fs/test_fs_search_with_and.c
+++ b/src/fs/test_fs_search_with_and.c
@@ -42,12 +42,12 @@
42/** 42/**
43 * How long until we give up on transmitting the message? 43 * How long until we give up on transmitting the message?
44 */ 44 */
45#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 60) 45#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
46 46
47/** 47/**
48 * How long should our test-content live? 48 * How long should our test-content live?
49 */ 49 */
50#define LIFETIME GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MINUTES, 15) 50#define LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15)
51 51
52 52
53static struct GNUNET_TIME_Absolute start; 53static struct GNUNET_TIME_Absolute start;
@@ -58,7 +58,7 @@ static struct GNUNET_FS_SearchContext *search;
58 58
59static struct GNUNET_FS_PublishContext *publish; 59static struct GNUNET_FS_PublishContext *publish;
60 60
61static struct GNUNET_SCHEDULER_Task * timeout_task; 61static struct GNUNET_SCHEDULER_Task *timeout_task;
62 62
63static int err; 63static int err;
64 64
@@ -66,150 +66,150 @@ static int processed_files;
66 66
67 67
68static void 68static void
69abort_publish_task(void *cls) 69abort_publish_task (void *cls)
70{ 70{
71 if (NULL != publish) 71 if (NULL != publish)
72 { 72 {
73 GNUNET_FS_publish_stop(publish); 73 GNUNET_FS_publish_stop (publish);
74 publish = NULL; 74 publish = NULL;
75 } 75 }
76 if (NULL != timeout_task) 76 if (NULL != timeout_task)
77 { 77 {
78 GNUNET_SCHEDULER_cancel(timeout_task); 78 GNUNET_SCHEDULER_cancel (timeout_task);
79 timeout_task = NULL; 79 timeout_task = NULL;
80 } 80 }
81} 81}
82 82
83 83
84static void 84static void
85abort_error(void *cls) 85abort_error (void *cls)
86{ 86{
87 fprintf(stderr, 87 fprintf (stderr,
88 "Timeout\n"); 88 "Timeout\n");
89 timeout_task = NULL; 89 timeout_task = NULL;
90 if (NULL != search) 90 if (NULL != search)
91 { 91 {
92 GNUNET_FS_search_stop(search); 92 GNUNET_FS_search_stop (search);
93 search = NULL; 93 search = NULL;
94 } 94 }
95 if (NULL != publish) 95 if (NULL != publish)
96 { 96 {
97 GNUNET_FS_publish_stop(publish); 97 GNUNET_FS_publish_stop (publish);
98 publish = NULL; 98 publish = NULL;
99 } 99 }
100 err = 1; 100 err = 1;
101} 101}
102 102
103 103
104static void 104static void
105abort_search_task(void *cls) 105abort_search_task (void *cls)
106{ 106{
107 if (NULL != search) 107 if (NULL != search)
108 { 108 {
109 GNUNET_FS_search_stop(search); 109 GNUNET_FS_search_stop (search);
110 search = NULL; 110 search = NULL;
111 } 111 }
112} 112}
113 113
114 114
115static void * 115static void *
116progress_cb(void *cls, const struct GNUNET_FS_ProgressInfo *event) 116progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event)
117{ 117{
118 struct GNUNET_FS_Uri *kuri; 118 struct GNUNET_FS_Uri *kuri;
119 119
120 switch (event->status) 120 switch (event->status)
121 {
122 case GNUNET_FS_STATUS_PUBLISH_PROGRESS:
123 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
124 "Publish is progressing (%llu/%llu at level %u off %llu)...\n",
125 (unsigned long long) event->value.publish.completed,
126 (unsigned long long) event->value.publish.size,
127 event->value.publish.specifics.progress.depth,
128 (unsigned long long) event->value.publish.specifics.
129 progress.offset);
130 break;
131
132 case GNUNET_FS_STATUS_PUBLISH_PROGRESS_DIRECTORY:
133 break;
134
135 case GNUNET_FS_STATUS_PUBLISH_COMPLETED:
136 processed_files++;
137 if (processed_files == NUM_FILES)
121 { 138 {
122 case GNUNET_FS_STATUS_PUBLISH_PROGRESS: 139 char *emsg = NULL;
123 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 140 kuri = GNUNET_FS_uri_ksk_create ("+down_foo +down_bar", &emsg);
124 "Publish is progressing (%llu/%llu at level %u off %llu)...\n", 141 GNUNET_assert (kuri != NULL);
125 (unsigned long long)event->value.publish.completed, 142
126 (unsigned long long)event->value.publish.size, 143 start = GNUNET_TIME_absolute_get ();
127 event->value.publish.specifics.progress.depth, 144 search =
128 (unsigned long long)event->value.publish.specifics. 145 GNUNET_FS_search_start (fs, kuri, 1, GNUNET_FS_SEARCH_OPTION_NONE,
129 progress.offset); 146 "search");
130 break; 147 GNUNET_FS_uri_destroy (kuri);
131 148 GNUNET_assert (search != NULL);
132 case GNUNET_FS_STATUS_PUBLISH_PROGRESS_DIRECTORY:
133 break;
134
135 case GNUNET_FS_STATUS_PUBLISH_COMPLETED:
136 processed_files++;
137 if (processed_files == NUM_FILES)
138 {
139 char *emsg = NULL;
140 kuri = GNUNET_FS_uri_ksk_create("+down_foo +down_bar", &emsg);
141 GNUNET_assert(kuri != NULL);
142
143 start = GNUNET_TIME_absolute_get();
144 search =
145 GNUNET_FS_search_start(fs, kuri, 1, GNUNET_FS_SEARCH_OPTION_NONE,
146 "search");
147 GNUNET_FS_uri_destroy(kuri);
148 GNUNET_assert(search != NULL);
149 }
150 break;
151
152 case GNUNET_FS_STATUS_SEARCH_RESULT:
153 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
154 "Search complete.\n");
155 GNUNET_SCHEDULER_add_now(&abort_search_task, NULL);
156 break;
157
158 case GNUNET_FS_STATUS_PUBLISH_ERROR:
159 fprintf(stderr, "Error publishing file: %s\n",
160 event->value.publish.specifics.error.message);
161 GNUNET_break(0);
162 GNUNET_SCHEDULER_add_now(&abort_publish_task, NULL);
163 break;
164
165 case GNUNET_FS_STATUS_SEARCH_ERROR:
166 fprintf(stderr, "Error searching file: %s\n",
167 event->value.search.specifics.error.message);
168 GNUNET_SCHEDULER_add_now(&abort_search_task, NULL);
169 break;
170
171 case GNUNET_FS_STATUS_PUBLISH_START:
172 GNUNET_assert(0 == strcmp("publish-context", event->value.publish.cctx));
173 GNUNET_assert(NULL == event->value.publish.pctx);
174 GNUNET_assert(FILESIZE == event->value.publish.size);
175 GNUNET_assert(0 == event->value.publish.completed);
176 GNUNET_assert(1 == event->value.publish.anonymity);
177 break;
178
179 case GNUNET_FS_STATUS_PUBLISH_STOPPED:
180 GNUNET_assert(publish == event->value.publish.pc);
181 GNUNET_assert(FILESIZE == event->value.publish.size);
182 GNUNET_assert(1 == event->value.publish.anonymity);
183 GNUNET_FS_stop(fs);
184 fs = NULL;
185 break;
186
187 case GNUNET_FS_STATUS_SEARCH_START:
188 GNUNET_assert(search == NULL);
189 GNUNET_assert(0 == strcmp("search", event->value.search.cctx));
190 GNUNET_assert(1 == event->value.search.anonymity);
191 break;
192
193 case GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED:
194 break;
195
196 case GNUNET_FS_STATUS_SEARCH_STOPPED:
197 GNUNET_assert(search == event->value.search.sc);
198 GNUNET_SCHEDULER_add_now(&abort_publish_task, NULL);
199 break;
200
201 default:
202 fprintf(stderr, "Unexpected event: %d\n", event->status);
203 break;
204 } 149 }
150 break;
151
152 case GNUNET_FS_STATUS_SEARCH_RESULT:
153 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
154 "Search complete.\n");
155 GNUNET_SCHEDULER_add_now (&abort_search_task, NULL);
156 break;
157
158 case GNUNET_FS_STATUS_PUBLISH_ERROR:
159 fprintf (stderr, "Error publishing file: %s\n",
160 event->value.publish.specifics.error.message);
161 GNUNET_break (0);
162 GNUNET_SCHEDULER_add_now (&abort_publish_task, NULL);
163 break;
164
165 case GNUNET_FS_STATUS_SEARCH_ERROR:
166 fprintf (stderr, "Error searching file: %s\n",
167 event->value.search.specifics.error.message);
168 GNUNET_SCHEDULER_add_now (&abort_search_task, NULL);
169 break;
170
171 case GNUNET_FS_STATUS_PUBLISH_START:
172 GNUNET_assert (0 == strcmp ("publish-context", event->value.publish.cctx));
173 GNUNET_assert (NULL == event->value.publish.pctx);
174 GNUNET_assert (FILESIZE == event->value.publish.size);
175 GNUNET_assert (0 == event->value.publish.completed);
176 GNUNET_assert (1 == event->value.publish.anonymity);
177 break;
178
179 case GNUNET_FS_STATUS_PUBLISH_STOPPED:
180 GNUNET_assert (publish == event->value.publish.pc);
181 GNUNET_assert (FILESIZE == event->value.publish.size);
182 GNUNET_assert (1 == event->value.publish.anonymity);
183 GNUNET_FS_stop (fs);
184 fs = NULL;
185 break;
186
187 case GNUNET_FS_STATUS_SEARCH_START:
188 GNUNET_assert (search == NULL);
189 GNUNET_assert (0 == strcmp ("search", event->value.search.cctx));
190 GNUNET_assert (1 == event->value.search.anonymity);
191 break;
192
193 case GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED:
194 break;
195
196 case GNUNET_FS_STATUS_SEARCH_STOPPED:
197 GNUNET_assert (search == event->value.search.sc);
198 GNUNET_SCHEDULER_add_now (&abort_publish_task, NULL);
199 break;
200
201 default:
202 fprintf (stderr, "Unexpected event: %d\n", event->status);
203 break;
204 }
205 return NULL; 205 return NULL;
206} 206}
207 207
208 208
209static void 209static void
210run(void *cls, 210run (void *cls,
211 const struct GNUNET_CONFIGURATION_Handle *cfg, 211 const struct GNUNET_CONFIGURATION_Handle *cfg,
212 struct GNUNET_TESTING_Peer *peer) 212 struct GNUNET_TESTING_Peer *peer)
213{ 213{
214 const char *keywords[] = { 214 const char *keywords[] = {
215 "down_foo", 215 "down_foo",
@@ -223,47 +223,47 @@ run(void *cls,
223 size_t i; 223 size_t i;
224 size_t j; 224 size_t j;
225 225
226 fs = GNUNET_FS_start(cfg, "test-fs-search", &progress_cb, NULL, 226 fs = GNUNET_FS_start (cfg, "test-fs-search", &progress_cb, NULL,
227 GNUNET_FS_FLAGS_NONE, GNUNET_FS_OPTIONS_END); 227 GNUNET_FS_FLAGS_NONE, GNUNET_FS_OPTIONS_END);
228 GNUNET_assert(NULL != fs); 228 GNUNET_assert (NULL != fs);
229 229
230 processed_files = 0; 230 processed_files = 0;
231 for (j = 0; j < NUM_FILES; j++) 231 for (j = 0; j < NUM_FILES; j++)
232 { 232 {
233 buf = GNUNET_malloc(FILESIZE); 233 buf = GNUNET_malloc (FILESIZE);
234 for (i = 0; i < FILESIZE; i++) 234 for (i = 0; i < FILESIZE; i++)
235 buf[i] = GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_WEAK, 256); 235 buf[i] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 256);
236 meta = GNUNET_CONTAINER_meta_data_create(); 236 meta = GNUNET_CONTAINER_meta_data_create ();
237 kuri = GNUNET_FS_uri_ksk_create_from_args(2, keywords); 237 kuri = GNUNET_FS_uri_ksk_create_from_args (2, keywords);
238 bo.content_priority = 42; 238 bo.content_priority = 42;
239 bo.anonymity_level = 1; 239 bo.anonymity_level = 1;
240 bo.replication_level = 0; 240 bo.replication_level = 0;
241 bo.expiration_time = GNUNET_TIME_relative_to_absolute(LIFETIME); 241 bo.expiration_time = GNUNET_TIME_relative_to_absolute (LIFETIME);
242 fi = GNUNET_FS_file_information_create_from_data(fs, "publish-context", 242 fi = GNUNET_FS_file_information_create_from_data (fs, "publish-context",
243 FILESIZE, buf, kuri, meta, 243 FILESIZE, buf, kuri, meta,
244 GNUNET_NO, &bo); 244 GNUNET_NO, &bo);
245 GNUNET_FS_uri_destroy(kuri); 245 GNUNET_FS_uri_destroy (kuri);
246 GNUNET_CONTAINER_meta_data_destroy(meta); 246 GNUNET_CONTAINER_meta_data_destroy (meta);
247 GNUNET_assert(NULL != fi); 247 GNUNET_assert (NULL != fi);
248 start = GNUNET_TIME_absolute_get(); 248 start = GNUNET_TIME_absolute_get ();
249 publish = 249 publish =
250 GNUNET_FS_publish_start(fs, fi, NULL, NULL, NULL, 250 GNUNET_FS_publish_start (fs, fi, NULL, NULL, NULL,
251 GNUNET_FS_PUBLISH_OPTION_NONE); 251 GNUNET_FS_PUBLISH_OPTION_NONE);
252 GNUNET_assert(publish != NULL); 252 GNUNET_assert (publish != NULL);
253 } 253 }
254 254
255 255
256 timeout_task = GNUNET_SCHEDULER_add_delayed(LIFETIME, 256 timeout_task = GNUNET_SCHEDULER_add_delayed (LIFETIME,
257 &abort_error, NULL); 257 &abort_error, NULL);
258} 258}
259 259
260 260
261int 261int
262main(int argc, char *argv[]) 262main (int argc, char *argv[])
263{ 263{
264 if (0 != GNUNET_TESTING_peer_run("test-fs-search-with-and", 264 if (0 != GNUNET_TESTING_peer_run ("test-fs-search-with-and",
265 "test_fs_search_data.conf", 265 "test_fs_search_data.conf",
266 &run, NULL)) 266 &run, NULL))
267 return 1; 267 return 1;
268 return err; 268 return err;
269} 269}