📄 search_linked_download_persistence_test.c
字号:
GNUNET_GE_BREAK (ectx, 0); break; case GNUNET_FSUI_download_aborted:#if DEBUG_VERBOSE printf ("Received download aborted event.\n");#endif break; case GNUNET_FSUI_unindex_suspended: case GNUNET_FSUI_upload_suspended:#if DEBUG_VERBOSE fprintf (stderr, "Received SUSPENDING: %d\n", event->type);#endif break; case GNUNET_FSUI_download_started: if (download == NULL) download = event->data.DownloadStarted.dc.pos; if (event->data.DownloadStarted.dc.spos != search) { fprintf (stderr, "Download started but search reference not set correctly.\n"); have_error = 1; } if ((event->data.DownloadStarted.dc.pos == download) && (event->data.DownloadStarted.dc.ppos != NULL)) { fprintf (stderr, "Download started but parent reference not set to NULL.\n"); have_error = 1; } if ((event->data.DownloadStarted.dc.pos != download) && (event->data.DownloadStarted.dc.ppos != download)) { fprintf (stderr, "Download started but parent reference not set correctly.\n"); have_error = 1; } break; case GNUNET_FSUI_download_stopped: if (event->data.DownloadStopped.dc.spos != search) { fprintf (stderr, "Download stopped but search reference not set correctly.\n"); have_error = 1; } if ((event->data.DownloadStopped.dc.pos == download) && (event->data.DownloadStopped.dc.ppos != NULL)) { fprintf (stderr, "Download stopped but parent reference not set to NULL.\n"); have_error = 1; } if ((event->data.DownloadStopped.dc.pos != download) && (event->data.DownloadStopped.dc.ppos != download)) { fprintf (stderr, "Download stopped but parent reference not set correctly.\n"); have_error = 1; } break; case GNUNET_FSUI_search_update: case GNUNET_FSUI_upload_started: case GNUNET_FSUI_upload_stopped: case GNUNET_FSUI_search_started: case GNUNET_FSUI_search_aborted: case GNUNET_FSUI_search_stopped: case GNUNET_FSUI_unindex_started: case GNUNET_FSUI_unindex_stopped: break; default: printf ("Unexpected event: %d\n", event->type); break; } return NULL;}#define FILESIZE (1024)#define START_DAEMON 1intmain (int argc, char *argv[]){#if START_DAEMON pid_t daemon;#endif int ok; int i; int j; struct GNUNET_ECRS_URI *uri = NULL; char *fn = NULL; char *keywords[] = { "down_foo", "down_bar", }; char keyword[40]; int prog; char *buf; struct GNUNET_MetaData *meta; struct GNUNET_ECRS_URI *kuri = NULL; struct GNUNET_GC_Configuration *cfg; struct GNUNET_FSUI_UnindexList *unindex = NULL; struct GNUNET_FSUI_UploadList *upload = NULL; int suspendRestart = 0; ok = GNUNET_YES; cfg = GNUNET_GC_create (); if (-1 == GNUNET_GC_parse_configuration (cfg, "check.conf")) { GNUNET_GC_free (cfg); return -1; }#if START_DAEMON daemon = GNUNET_daemon_start (NULL, cfg, "peer.conf", GNUNET_NO); GNUNET_GE_ASSERT (NULL, daemon > 0); CHECK (GNUNET_OK == GNUNET_wait_for_daemon_running (NULL, cfg, 30 * GNUNET_CRON_SECONDS)); GNUNET_thread_sleep (5 * GNUNET_CRON_SECONDS); /* give apps time to start */ /* ACTUAL TEST CODE */#endif ctx = GNUNET_FSUI_start (NULL, cfg, "search_linked_download_persistence_test", 32, GNUNET_YES, &eventCallback, NULL); CHECK (ctx != NULL); for (j = 4; j < 256; j += 4) { fn = makeName (j); buf = GNUNET_malloc (FILESIZE * j); for (i = 0; i < FILESIZE; i++) buf[i] = GNUNET_random_u32 (GNUNET_RANDOM_QUALITY_WEAK, 256); GNUNET_disk_file_write (ectx, fn, buf, FILESIZE, "600"); GNUNET_free (buf); GNUNET_free (fn); } meta = GNUNET_meta_data_create (); kuri = GNUNET_ECRS_keyword_command_line_to_uri (ectx, 2, (const char **) keywords); GNUNET_meta_data_insert (meta, EXTRACTOR_MIMETYPE, GNUNET_DIRECTORY_MIME); upload = GNUNET_FSUI_upload_start (ctx, UPLOAD_PREFIX, (GNUNET_FSUI_DirectoryScanCallback) & GNUNET_disk_directory_scan, NULL, 0, 0, GNUNET_YES, GNUNET_NO, GNUNET_NO, GNUNET_get_time () + 5 * GNUNET_CRON_HOURS, meta, kuri, kuri); CHECK (upload != NULL); GNUNET_ECRS_uri_destroy (kuri); kuri = NULL; GNUNET_FSUI_upload_stop (upload); CHECK (upURI != NULL); GNUNET_snprintf (keyword, 40, "+%s +%s", keywords[0], keywords[1]); uri = GNUNET_ECRS_keyword_string_to_uri (ectx, keyword); search = GNUNET_FSUI_search_start (ctx, 0, uri); CHECK (search != NULL); download = GNUNET_FSUI_download_start (ctx, 0, GNUNET_YES, upURI, meta, UPLOAD_PREFIX "-download", search, NULL); GNUNET_meta_data_destroy (meta); prog = 0; suspendRestart = 10; while (prog < 1000) { prog++; GNUNET_thread_sleep (50 * GNUNET_CRON_MILLISECONDS); if ((suspendRestart > 0) && (GNUNET_random_u32 (GNUNET_RANDOM_QUALITY_WEAK, 100) == 0)) {#if 1#if DEBUG_VERBOSE printf ("Testing FSUI suspend-resume\n");#endif GNUNET_FSUI_stop (ctx); /* download possibly incomplete at this point, thus testing resume */ CHECK (search == NULL); CHECK (download == NULL); ctx = GNUNET_FSUI_start (NULL, cfg, "search_linked_download_persistence_test", 32, GNUNET_YES, &eventCallback, NULL);#if DEBUG_VERBOSE printf ("Resumed...\n");#endif#endif suspendRestart--; } if ((search != NULL) && (suspendRestart >= 5)) { no_check = 1; GNUNET_thread_sleep (50 * GNUNET_CRON_MILLISECONDS); GNUNET_FSUI_search_abort (search); GNUNET_FSUI_search_stop (search); search = NULL; no_check = 0; } if (GNUNET_shutdown_test () == GNUNET_YES) break; } GNUNET_FSUI_download_stop (download); for (j = 4; j < 256; j += 4) { fn = makeName (j); unindex = GNUNET_FSUI_unindex_start (ctx, fn); GNUNET_FSUI_unindex_stop (unindex); UNLINK (fn); GNUNET_free (fn); } /* END OF TEST CODE */FAILURE: if (ctx != NULL) GNUNET_FSUI_stop (ctx); if (uri != NULL) GNUNET_ECRS_uri_destroy (uri); if (kuri != NULL) GNUNET_ECRS_uri_destroy (kuri); if (upURI != NULL) GNUNET_ECRS_uri_destroy (upURI);#if START_DAEMON GNUNET_GE_BREAK (NULL, GNUNET_OK == GNUNET_daemon_stop (NULL, daemon));#endif GNUNET_GC_free (cfg); if (have_error) ok = GNUNET_NO; return (ok == GNUNET_YES) ? 0 : 1;}/* end of search_linked_download_persistence_test.c */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -