From ae7bfd97da823c4fb870dbe5c68231a4ab2a85d8 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 6 May 2010 13:30:17 +0000 Subject: [PATCH] fixing publish persist test --- src/fs/Makefile.am | 1 + src/fs/fs.c | 5 +++- src/fs/test_fs_publish.c | 30 +++++++++++------------- src/fs/test_fs_publish_persistence.c | 34 ++++++++++++++++------------ 4 files changed, 38 insertions(+), 32 deletions(-) diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index 57d41c824..364172ec0 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am @@ -152,6 +152,7 @@ TESTS = $(check_SCRIPTS) \ test_fs_list_indexed \ test_fs_namespace \ test_fs_publish \ + test_fs_publish_persistence \ test_fs_search \ test_fs_start_stop \ test_fs_unindex \ diff --git a/src/fs/fs.c b/src/fs/fs.c index 78d29dff1..f7d6a8dcd 100644 --- a/src/fs/fs.c +++ b/src/fs/fs.c @@ -1240,7 +1240,10 @@ GNUNET_FS_file_information_sync_ (struct GNUNET_FS_FileInformation * fi) (GNUNET_OK != GNUNET_BIO_write (wh, fi->data.dir.dir_data, (uint32_t) fi->data.dir.dir_size)) || (GNUNET_OK != - GNUNET_BIO_write_string (wh, fi->data.dir.entries->serialization)) ) + GNUNET_BIO_write_string (wh, + (fi->data.dir.entries == NULL) + ? NULL + : fi->data.dir.entries->serialization)) ) { GNUNET_break (0); goto cleanup; diff --git a/src/fs/test_fs_publish.c b/src/fs/test_fs_publish.c index 20e65aeac..7df42a26f 100644 --- a/src/fs/test_fs_publish.c +++ b/src/fs/test_fs_publish.c @@ -67,8 +67,6 @@ static struct GNUNET_FS_Handle *fs; static struct GNUNET_FS_PublishContext *publish; -static struct GNUNET_FS_PublishContext *publish; - static char *fn1; static char *fn2; @@ -103,12 +101,12 @@ progress_cb (void *cls, ret = event->value.publish.cctx; printf ("Publish complete, %llu kbps.\n", (unsigned long long) (FILESIZE * 1000 / (1+GNUNET_TIME_absolute_get_duration (start).value) / 1024)); - if (0 == strcmp ("list_indexed-context-dir", + if (0 == strcmp ("publish-context-dir", event->value.publish.cctx)) GNUNET_SCHEDULER_add_continuation (sched, &abort_publish_task, NULL, - GNUNET_SCHEDULER_REASON_PREREQ_DONE); + GNUNET_SCHEDULER_REASON_PREREQ_DONE); break; case GNUNET_FS_STATUS_PUBLISH_PROGRESS: ret = event->value.publish.cctx; @@ -127,12 +125,16 @@ progress_cb (void *cls, "Error publishing file: %s\n", event->value.publish.specifics.error.message); err = 1; - if (0 == strcmp ("list_indexed-context-dir", + if (0 == strcmp ("publish-context-dir", event->value.publish.cctx)) - GNUNET_SCHEDULER_add_continuation (sched, - &abort_publish_task, - NULL, - GNUNET_SCHEDULER_REASON_PREREQ_DONE); + { + fprintf (stderr, "Scheduling abort task for error on `%s'\n", + (const char*) event->value.publish.cctx); + GNUNET_SCHEDULER_add_continuation (sched, + &abort_publish_task, + NULL, + GNUNET_SCHEDULER_REASON_PREREQ_DONE); + } break; case GNUNET_FS_STATUS_PUBLISH_START: ret = event->value.publish.cctx; @@ -164,15 +166,9 @@ progress_cb (void *cls, GNUNET_assert (0); break; case GNUNET_FS_STATUS_PUBLISH_STOPPED: - if (0 == strcmp ("list_indexed-context-dir", + if (0 == strcmp ("publish-context-dir", event->value.publish.cctx)) - { - GNUNET_assert (publish == event->value.publish.sc); - GNUNET_SCHEDULER_add_continuation (sched, - &abort_publish_task, - NULL, - GNUNET_SCHEDULER_REASON_PREREQ_DONE); - } + GNUNET_assert (publish == event->value.publish.sc); break; default: printf ("Unexpected event: %d\n", diff --git a/src/fs/test_fs_publish_persistence.c b/src/fs/test_fs_publish_persistence.c index eb4002bbe..3e59d92be 100644 --- a/src/fs/test_fs_publish_persistence.c +++ b/src/fs/test_fs_publish_persistence.c @@ -149,7 +149,7 @@ progress_cb (void *cls, ret = event->value.publish.cctx; printf ("Publish complete, %llu kbps.\n", (unsigned long long) (FILESIZE * 1000 / (1+GNUNET_TIME_absolute_get_duration (start).value) / 1024)); - if (0 == strcmp ("list_indexed-context-dir", + if (0 == strcmp ("publish-context-dir", event->value.publish.cctx)) GNUNET_SCHEDULER_add_continuation (sched, &abort_publish_task, @@ -168,13 +168,24 @@ progress_cb (void *cls, (unsigned long long) event->value.publish.specifics.progress.offset); #endif break; + case GNUNET_FS_STATUS_PUBLISH_SUSPEND: + if (event->value.publish.sc == publish) + publish = NULL; + break; + case GNUNET_FS_STATUS_PUBLISH_RESUME: + if (NULL == publish) + { + publish = event->value.publish.sc; + return "publish-context-dir"; + } + break; case GNUNET_FS_STATUS_PUBLISH_ERROR: ret = event->value.publish.cctx; fprintf (stderr, "Error publishing file: %s\n", event->value.publish.specifics.error.message); err = 1; - if (0 == strcmp ("list_indexed-context-dir", + if (0 == strcmp ("publish-context-dir", event->value.publish.cctx)) GNUNET_SCHEDULER_add_continuation (sched, &abort_publish_task, @@ -183,6 +194,7 @@ progress_cb (void *cls, break; case GNUNET_FS_STATUS_PUBLISH_START: consider_restart (event->status); + publish = event->value.publish.sc; ret = event->value.publish.cctx; if (0 == strcmp ("publish-context1", event->value.publish.cctx)) @@ -213,15 +225,9 @@ progress_cb (void *cls, break; case GNUNET_FS_STATUS_PUBLISH_STOPPED: consider_restart (event->status); - if (0 == strcmp ("list_indexed-context-dir", + if (0 == strcmp ("publish-context-dir", event->value.publish.cctx)) - { - GNUNET_assert (publish == event->value.publish.sc); - GNUNET_SCHEDULER_add_continuation (sched, - &abort_publish_task, - NULL, - GNUNET_SCHEDULER_REASON_PREREQ_DONE); - } + GNUNET_assert (publish == event->value.publish.sc); break; default: printf ("Unexpected event: %d\n", @@ -348,10 +354,10 @@ run (void *cls, GNUNET_CONTAINER_meta_data_destroy (meta); GNUNET_assert (NULL != fidir); start = GNUNET_TIME_absolute_get (); - publish = GNUNET_FS_publish_start (fs, - fidir, - NULL, NULL, NULL, - GNUNET_FS_PUBLISH_OPTION_NONE); + GNUNET_FS_publish_start (fs, + fidir, + NULL, NULL, NULL, + GNUNET_FS_PUBLISH_OPTION_NONE); GNUNET_assert (publish != NULL); } -- 2.25.1