REST/NAMESTORE: rework API
[oweals/gnunet.git] / src / arm / test_gnunet_service_arm.c
index 199ea6d85cdd92e99bacb1db6608b7858fd2ce65..55903c4990661d8797e942cf798076e59b190bda 100644 (file)
@@ -1,21 +1,21 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2009, 2014 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2009, 2014 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
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
+     Affero General Public License for more details.
+    
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-     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.
+     SPDX-License-Identifier: AGPL3.0-or-later
 */
 /**
  * @file arm/test_gnunet_service_arm.c
@@ -47,12 +47,13 @@ static int asked_for_a_list;
 
 static struct GNUNET_ARM_Handle *arm;
 
+static const char hostname[] = "www.gnu.org"; /* any domain should do */
+
 
 static void
-trigger_disconnect (void *cls,
-                    const struct GNUNET_SCHEDULER_TaskContext *tc)
+trigger_disconnect (void *cls)
 {
-  GNUNET_ARM_disconnect_and_free (arm);
+  GNUNET_ARM_disconnect (arm);
   arm = NULL;
 }
 
@@ -60,7 +61,6 @@ trigger_disconnect (void *cls,
 static void
 arm_stop_cb (void *cls,
             enum GNUNET_ARM_RequestStatus status,
-            const char *servicename,
             enum GNUNET_ARM_Result result)
 {
   GNUNET_break (status == GNUNET_ARM_REQUEST_SENT_OK);
@@ -101,28 +101,28 @@ service_list (void *cls,
  stop_arm:
   GNUNET_ARM_request_service_stop (arm,
                                    "arm",
-                                   TIMEOUT,
-                                   &arm_stop_cb, NULL);
+                                   &arm_stop_cb,
+                                   NULL);
 }
 
 
 static void
 hostname_resolve_cb (void *cls,
-                   const struct sockaddr *addr,
-                   socklen_t addrlen)
+                     const struct sockaddr *addr,
+                     socklen_t addrlen)
 {
   if ((0 == ret) || (4 == ret) || (1 == resolved_ok))
     return;
   if (NULL == addr)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Name not resolved!\n");
+                "Failed to resolve hostname!\n");
     GNUNET_break (0);
     ret = 3;
     GNUNET_ARM_request_service_stop (arm,
                                      "arm",
-                                     TIMEOUT,
-                                     &arm_stop_cb, NULL);
+                                     &arm_stop_cb,
+                                     NULL);
     return;
   }
   if (0 == asked_for_a_list)
@@ -130,7 +130,6 @@ hostname_resolve_cb (void *cls,
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Resolved hostname, now checking the service list\n");
     GNUNET_ARM_request_service_list (arm,
-                                     TIMEOUT,
                                      &service_list,
                                      NULL);
     asked_for_a_list = 1;
@@ -142,26 +141,28 @@ hostname_resolve_cb (void *cls,
 static void
 arm_start_cb (void *cls,
              enum GNUNET_ARM_RequestStatus status,
-             const char *servicename,
              enum GNUNET_ARM_Result result)
 {
   GNUNET_break (status == GNUNET_ARM_REQUEST_SENT_OK);
   GNUNET_break (result == GNUNET_ARM_RESULT_STARTING);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Trying to resolve our own hostname!\n");
+              "Trying to resolve a hostname via the resolver service!\n");
   /* connect to the resolver service */
   if (NULL ==
-      GNUNET_RESOLVER_hostname_resolve (AF_UNSPEC, TIMEOUT,
-                                        &hostname_resolve_cb,
-                                        NULL))
+      GNUNET_RESOLVER_ip_get (hostname,
+                             AF_UNSPEC,
+                             TIMEOUT,
+                             &hostname_resolve_cb,
+                             NULL))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Unable initiate connection to resolver service\n");
     GNUNET_break (0);
     ret = 2;
     GNUNET_ARM_request_service_stop (arm,
-                                     "arm", TIMEOUT,
-                                     &arm_stop_cb, NULL);
+                                     "arm",
+                                     &arm_stop_cb,
+                                     NULL);
   }
 }
 
@@ -172,11 +173,14 @@ run (void *cls,
      const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
-  arm = GNUNET_ARM_connect (c, NULL, NULL);
-  GNUNET_ARM_request_service_start (arm, "arm",
+  arm = GNUNET_ARM_connect (c,
+                            NULL,
+                            NULL);
+  GNUNET_ARM_request_service_start (arm,
+                                    "arm",
                                     GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
-                                    START_TIMEOUT,
-                                    &arm_start_cb, NULL);
+                                    &arm_start_cb,
+                                    NULL);
 }
 
 
@@ -192,28 +196,7 @@ main (int argc, char *av[])
   static struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
-  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,
-             "%s",
-             "Failed to determine my own hostname, testcase not run.\n");
-    return 0;
-  }
-  if ( (0 == strcmp (hostname,
-                    "localhost")) ||
-       (0 == strcmp (hostname,
-                    "ipv6-localnet")) )
-  {
-    /* we cannot use 'localhost' as this would not trigger the
-       resolver service (see resolver_api.c); so in this case,
-       we fall back to (ab)using gnu.org. */
-    strcpy (hostname,
-           "www.gnu.org");
-  }
   /* trigger DNS lookup */
 #if HAVE_GETADDRINFO
   {
@@ -223,9 +206,9 @@ main (int argc, char *av[])
     if (0 != (ret = getaddrinfo (hostname, NULL, NULL, &ai)))
     {
       FPRINTF (stderr,
-               "Failed to resolve my hostname `%s', testcase not run.\n",
+               "Failed to resolve `%s', testcase not run.\n",
                hostname);
-      return 0;
+      return 77;
     }
     freeaddrinfo (ai);
   }
@@ -239,9 +222,9 @@ main (int argc, char *av[])
     if (NULL == host)
       {
         FPRINTF (stderr,
-                 "Failed to resolve my hostname `%s', testcase not run.\n",
+                 "Failed to resolve `%s', testcase not run.\n",
                  hostname);
-        return 0;
+        return 77;
       }
   }
 #elif HAVE_GETHOSTBYNAME
@@ -252,15 +235,15 @@ main (int argc, char *av[])
     if (NULL == host)
       {
         FPRINTF (stderr,
-                 "Failed to resolve my hostname `%s', testcase not run.\n",
+                 "Failed to resolve `%s', testcase not run.\n",
                  hostname);
-        return 0;
+        return 77;
       }
   }
 #else
   FPRINTF (stderr,
            "libc fails to have resolver function, testcase not run.\n");
-  return 0;
+  return 77;
 #endif
   GNUNET_log_setup ("test-gnunet-service-arm",
                    "WARNING",