Smallers steps to keep plugin running
[oweals/gnunet.git] / src / arm / test_gnunet_service_manager.c
index d0c29ded55b0eb9c03f1ce02c71c92762100c183..26ea774d6647fc90e45f9feda1714720b627851c 100644 (file)
@@ -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
@@ -25,6 +25,7 @@
 #include "platform.h"
 #include "gnunet_arm_service.h"
 #include "gnunet_resolver_service.h"
+#include "gnunet_os_lib.h"
 #include "gnunet_program_lib.h"
 
 /**
 
 #define START_ARM GNUNET_YES
 
+#define VERBOSE GNUNET_NO
+
 static int ret = 1;
 
 static struct GNUNET_SCHEDULER_Handle *sched;
 
 static const struct GNUNET_CONFIGURATION_Handle *cfg;
 
+#if START_ARM
 static struct GNUNET_ARM_Handle *arm;
+#endif
 
 static void
 arm_stopped (void *cls, int success)
 {
-  if (success != GNUNET_OK)        
-    ret = 4;
+  if (success != GNUNET_NO)       
+    {
+      GNUNET_break (0);
+      ret = 4;
+    }
+  else
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
+                 "ARM stopped\n");
+    }
+#if START_ARM
+  GNUNET_ARM_disconnect (arm);
+  arm = NULL;
+#endif
 }
 
 static void 
@@ -62,14 +79,16 @@ hostNameResolveCB(void *cls,
     return;
   if (NULL == addr)
     {
-      GNUNET_log(GNUNET_ERROR_TYPE_ERROR, 
-                "Name not resolved!\n");
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 
+                 "Name not resolved!\n");
 #if START_ARM
       GNUNET_ARM_stop_service (arm, "arm", TIMEOUT, &arm_stopped, NULL);
 #endif
       ret = 3;
       return;
     }  
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
+             "Resolved hostname, now stopping ARM\n");
   ret = 0;
 #if START_ARM
   GNUNET_ARM_stop_service (arm, "arm", TIMEOUT, &arm_stopped, NULL);
@@ -77,7 +96,6 @@ hostNameResolveCB(void *cls,
 }
 
 
-
 static void
 arm_notify (void *cls, int success)
 {
@@ -87,6 +105,8 @@ arm_notify (void *cls, int success)
       ret = 1;
       return;
     }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
+             "Trying to resolve our own hostname!\n");
   /* connect to the resolver service */
   if (NULL == GNUNET_RESOLVER_hostname_resolve (sched,
                                                cfg, AF_UNSPEC,
@@ -94,8 +114,8 @@ arm_notify (void *cls, int success)
                                                &hostNameResolveCB,
                                                NULL))
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG
-                 "Unable to resolve our own hostname!\n");
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR
+                 "Unable initiate connection to resolver service\n");
       ret = 2;
 #if START_ARM
       GNUNET_ARM_stop_service (arm, "arm", TIMEOUT, &arm_stopped, NULL);
@@ -113,8 +133,8 @@ run(void *cls,
 {
   cfg = c;
   sched = s;   
-  arm = GNUNET_ARM_connect (cfg, sched, NULL);
 #if START_ARM
+  arm = GNUNET_ARM_connect (cfg, sched, NULL);
   GNUNET_ARM_start_service (arm, "arm", START_TIMEOUT, &arm_notify, NULL);
 #else
   arm_notify (NULL, GNUNET_YES);
@@ -147,6 +167,22 @@ check()
 int
 main (int argc, char *argv[])
 {
+  char hostname[GNUNET_OS_get_hostname_max_length() + 1];
+
+  if (0 != gethostname (hostname, sizeof (hostname) - 1))
+    {
+      GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR |
+                           GNUNET_ERROR_TYPE_BULK, "gethostname");
+      fprintf (stderr, "Failed to determine my own hostname, testcase not run.\n");
+      return 0;
+    }
+  if (NULL == gethostbyname (hostname))
+    {
+      fprintf (stderr, "Failed to resolve my hostname `%s', testcase not run.\n",
+              hostname);
+      return 0;
+    }
+
   GNUNET_log_setup("test-gnunet-service-manager",
 #if VERBOSE
                   "DEBUG",