X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ffs%2Ftest_fs_start_stop.c;h=23678fbf983774d7a6c62f1a618cfc60fead0ac2;hb=6535dad120517e6572f93ffc28b800801bf2781d;hp=a6f9029624ce9b5a93a3d800b43f33a519298dbb;hpb=8a25345d472b2ef4c94567b77dbaea777789e399;p=oweals%2Fgnunet.git diff --git a/src/fs/test_fs_start_stop.c b/src/fs/test_fs_start_stop.c index a6f902962..23678fbf9 100644 --- a/src/fs/test_fs_start_stop.c +++ b/src/fs/test_fs_start_stop.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -29,9 +29,9 @@ #include "gnunet_arm_service.h" #include "gnunet_fs_service.h" -#define START_ARM GNUNET_YES +#define VERBOSE GNUNET_EXTRA_LOGGING -static struct GNUNET_SCHEDULER_Handle *sched; +#define START_ARM GNUNET_YES static struct PeerContext p1; @@ -39,14 +39,13 @@ struct PeerContext { struct GNUNET_CONFIGURATION_Handle *cfg; #if START_ARM - pid_t arm_pid; + struct GNUNET_OS_Process *arm_proc; #endif }; static void * -progress_cb (void *cls, - const struct GNUNET_FS_ProgressInfo *event) +progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *event) { return NULL; } @@ -57,15 +56,15 @@ setup_peer (struct PeerContext *p, const char *cfgname) { p->cfg = GNUNET_CONFIGURATION_create (); #if START_ARM - p->arm_pid = GNUNET_OS_start_process ("gnunet-service-arm", - "gnunet-service-arm", + p->arm_proc = + GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm", + "gnunet-service-arm", #if VERBOSE - "-L", "DEBUG", + "-L", "DEBUG", #endif - "-c", cfgname, NULL); + "-c", cfgname, NULL); #endif GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); - GNUNET_ARM_start_services (p->cfg, sched, "core", NULL); } @@ -73,37 +72,32 @@ static void stop_arm (struct PeerContext *p) { #if START_ARM - if (0 != PLIBC_KILL (p->arm_pid, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); - if (GNUNET_OS_process_wait(p->arm_pid) != GNUNET_OK) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "ARM process %u stopped\n", p->arm_pid); + if (NULL != p->arm_proc) + { + if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM)) + GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); + if (GNUNET_OS_process_wait (p->arm_proc) != GNUNET_OK) + GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ARM process %u stopped\n", + GNUNET_OS_process_get_pid (p->arm_proc)); + GNUNET_OS_process_close (p->arm_proc); + p->arm_proc = NULL; + } #endif GNUNET_CONFIGURATION_destroy (p->cfg); } static void -run (void *cls, - struct GNUNET_SCHEDULER_Handle *s, - char *const *args, - const char *cfgfile, +run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) { struct GNUNET_FS_Handle *fs; - sched = s; setup_peer (&p1, "test_fs_data.conf"); - fs = GNUNET_FS_start (sched, - cfg, - "test-fs-start-stop", - &progress_cb, - NULL, - GNUNET_FS_FLAGS_NONE, - GNUNET_FS_OPTIONS_END); - GNUNET_assert (NULL != fs); - sleep (1); /* FIXME */ + fs = GNUNET_FS_start (cfg, "test-fs-start-stop", &progress_cb, NULL, + GNUNET_FS_FLAGS_NONE, GNUNET_FS_OPTIONS_END); + GNUNET_assert (NULL != fs); GNUNET_FS_stop (fs); } @@ -111,7 +105,7 @@ run (void *cls, int main (int argc, char *argv[]) { - char *const argvx[] = { + char *const argvx[] = { "test-fs-start-stop", "-c", "test_fs_data.conf", @@ -124,16 +118,15 @@ main (int argc, char *argv[]) GNUNET_GETOPT_OPTION_END }; - GNUNET_log_setup ("test_fs_start_stop", + GNUNET_log_setup ("test_fs_start_stop", #if VERBOSE - "DEBUG", + "DEBUG", #else - "WARNING", + "WARNING", #endif - NULL); - GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, - argvx, "test-fs-start-stop", - "nohelp", options, &run, NULL); + NULL); + GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, argvx, + "test-fs-start-stop", "nohelp", options, &run, NULL); stop_arm (&p1); GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs/"); return 0;