/*
This file is part of GNUnet.
- (C) 2012 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2012 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.
*/
/**
*/
#include "platform.h"
#include "gnunet_util_lib.h"
-#include "gnunet_testing_lib-new.h"
+#include "gnunet_testing_lib.h"
#include "gnunet_fs_service.h"
static struct GNUNET_FS_PublishContext *publish;
+static struct GNUNET_SCHEDULER_Task * timeout_task;
+
+static int err;
+
static void
-abort_publish_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+abort_error (void *cls)
{
- GNUNET_FS_publish_stop (publish);
- publish = NULL;
+ timeout_task = NULL;
+ fprintf (stderr,
+ "Timeout\n");
+ if (NULL != search)
+ {
+ GNUNET_FS_search_stop (search);
+ search = NULL;
+ }
+ if (NULL != publish)
+ {
+ GNUNET_FS_publish_stop (publish);
+ publish = NULL;
+ }
+ err = 1;
}
static void
-abort_search_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+abort_publish_task (void *cls)
+{
+ if (NULL != publish)
+ {
+ GNUNET_FS_publish_stop (publish);
+ publish = NULL;
+ }
+ if (NULL != timeout_task)
+ {
+ GNUNET_SCHEDULER_cancel (timeout_task);
+ timeout_task = NULL;
+ }
+}
+
+
+static void
+abort_search_task (void *cls)
{
if (search != NULL)
GNUNET_FS_search_stop (search);
(unsigned long long) event->value.publish.specifics.
progress.offset);
break;
+ case GNUNET_FS_STATUS_PUBLISH_PROGRESS_DIRECTORY:
+ break;
case GNUNET_FS_STATUS_PUBLISH_COMPLETED:
kuri = GNUNET_FS_uri_ksk_create_from_args (1, keywords);
start = GNUNET_TIME_absolute_get ();
FPRINTF (stderr, "Error publishing file: %s\n",
event->value.publish.specifics.error.message);
GNUNET_break (0);
- GNUNET_SCHEDULER_add_continuation (&abort_publish_task, NULL,
- GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+ GNUNET_SCHEDULER_add_now (&abort_publish_task, NULL);
break;
case GNUNET_FS_STATUS_SEARCH_ERROR:
FPRINTF (stderr, "Error searching file: %s\n",
event->value.search.specifics.error.message);
- GNUNET_SCHEDULER_add_continuation (&abort_search_task, NULL,
- GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+ GNUNET_SCHEDULER_add_now (&abort_search_task, NULL);
break;
case GNUNET_FS_STATUS_PUBLISH_START:
GNUNET_assert (0 == strcmp ("publish-context", event->value.publish.cctx));
fs = NULL;
break;
case GNUNET_FS_STATUS_SEARCH_UPDATE:
- GNUNET_assert (0 < event->value.search.specifics.update.availability_rank);
- GNUNET_assert (0 < event->value.search.specifics.update.availability_certainty);
- GNUNET_SCHEDULER_add_now (&abort_search_task, NULL);
+ if ( (0 < event->value.search.specifics.update.availability_rank) &&
+ (0 < event->value.search.specifics.update.availability_certainty) )
+ GNUNET_SCHEDULER_add_now (&abort_search_task, NULL);
break;
case GNUNET_FS_STATUS_SEARCH_START:
GNUNET_assert (search == NULL);
break;
case GNUNET_FS_STATUS_SEARCH_STOPPED:
GNUNET_assert (search == event->value.search.sc);
- GNUNET_SCHEDULER_add_continuation (&abort_publish_task, NULL,
- GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+ GNUNET_SCHEDULER_add_now (&abort_publish_task, NULL);
break;
default:
- FPRINTF (stderr, "Unexpected event: %d\n", event->status);
+ FPRINTF (stderr,
+ "Unexpected event: %d\n",
+ event->status);
break;
}
return NULL;
static void
run (void *cls,
- const struct GNUNET_CONFIGURATION_Handle *cfg)
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_TESTING_Peer *peer)
{
const char *keywords[] = {
"down_foo",
size_t i;
fs = GNUNET_FS_start (cfg, "test-fs-search", &progress_cb, NULL,
- GNUNET_FS_FLAGS_DO_PROBES,
+ GNUNET_FS_FLAGS_DO_PROBES,
GNUNET_FS_OPTIONS_END);
GNUNET_assert (NULL != fs);
buf = GNUNET_malloc (FILESIZE);
GNUNET_FS_publish_start (fs, fi, NULL, NULL, NULL,
GNUNET_FS_PUBLISH_OPTION_NONE);
GNUNET_assert (publish != NULL);
+ timeout_task = GNUNET_SCHEDULER_add_delayed (LIFETIME,
+ &abort_error, NULL);
}
"test_fs_search_data.conf",
&run, NULL))
return 1;
- return 0;
+ return err;
}
/* end of test_fs_search_probes.c */