gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r22092 - in gnunet/src: include peerinfo-tool testing testi


From: gnunet
Subject: [GNUnet-SVN] r22092 - in gnunet/src: include peerinfo-tool testing testing_old
Date: Tue, 19 Jun 2012 09:36:21 +0200

Author: grothoff
Date: 2012-06-19 09:36:21 +0200 (Tue, 19 Jun 2012)
New Revision: 22092

Added:
   gnunet/src/testing/gnunet-testing.c
Removed:
   gnunet/src/testing_old/gnunet-testing.c
Modified:
   gnunet/src/include/gnunet_testing_lib-new.h
   gnunet/src/peerinfo-tool/test_gnunet_peerinfo_data.conf
   gnunet/src/testing/Makefile.am
   gnunet/src/testing/gnunet-testing-run-service.c
   gnunet/src/testing/testing.c
   gnunet/src/testing_old/Makefile.am
Log:
-porting gnunet-testing command-line tool to new testing library

Modified: gnunet/src/include/gnunet_testing_lib-new.h
===================================================================
--- gnunet/src/include/gnunet_testing_lib-new.h 2012-06-19 07:05:14 UTC (rev 
22091)
+++ gnunet/src/include/gnunet_testing_lib-new.h 2012-06-19 07:36:21 UTC (rev 
22092)
@@ -102,9 +102,9 @@
  * @param key_number desired pre-created hostkey to obtain
  * @param id set to the peer's identity (hash of the public
  *        key; if NULL, GNUNET_SYSERR is returned immediately
- * @return GNUNET_SYSERR on error (not enough keys)
+ * @return NULL on error (not enough keys)
  */
-int
+struct GNUNET_CRYPTO_RsaPrivateKey *
 GNUNET_TESTING_hostkey_get (const struct GNUNET_TESTING_System *system,
                            uint32_t key_number,
                            struct GNUNET_PeerIdentity *id);

Modified: gnunet/src/peerinfo-tool/test_gnunet_peerinfo_data.conf
===================================================================
--- gnunet/src/peerinfo-tool/test_gnunet_peerinfo_data.conf     2012-06-19 
07:05:14 UTC (rev 22091)
+++ gnunet/src/peerinfo-tool/test_gnunet_peerinfo_data.conf     2012-06-19 
07:36:21 UTC (rev 22092)
@@ -1,6 +1,9 @@
 [PATHS]
 SERVICEHOME = /tmp/gnunet-test-peerinfo/
 
+[gnunetd]
+#HOSTKEY = test_gnunet_peerinfo.hostkey
+
 [peerinfo]
 PORT = 24354
 

Modified: gnunet/src/testing/Makefile.am
===================================================================
--- gnunet/src/testing/Makefile.am      2012-06-19 07:05:14 UTC (rev 22091)
+++ gnunet/src/testing/Makefile.am      2012-06-19 07:36:21 UTC (rev 22092)
@@ -27,7 +27,8 @@
  -version-info 0:1:0
 
 bin_PROGRAMS = \
- gnunet-testing-run-service
+ gnunet-testing-run-service \
+ gnunet-testing
 
 
 gnunet_testing_run_service_SOURCES = \
@@ -40,7 +41,16 @@
 gnunet_testing_run_service_DEPENDENCIES = \
   libgnunettesting.la
 
+gnunet_testing_SOURCES = \
+ gnunet-testing.c         
+gnunet_testing_LDADD = \
+ $(top_builddir)/src/testing/libgnunettesting.la \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(GN_LIBINTL)
+gnunet_testing_DEPENDENCIES = \
+ libgnunettesting.la
 
+
 check_PROGRAMS = \
  test_testing_portreservation \
  test_testing_peerstartup \

Modified: gnunet/src/testing/gnunet-testing-run-service.c
===================================================================
--- gnunet/src/testing/gnunet-testing-run-service.c     2012-06-19 07:05:14 UTC 
(rev 22091)
+++ gnunet/src/testing/gnunet-testing-run-service.c     2012-06-19 07:36:21 UTC 
(rev 22092)
@@ -34,16 +34,10 @@
  * This executable is intended to be used by gnunet-java, in order to reliably
  * start and stop services for test cases.
  */
-
 #include "platform.h"
-#include "gnunet_getopt_lib.h"
-#include "gnunet_program_lib.h"
 #include "gnunet_util_lib.h"
-#include "gnunet_signal_lib.h"
 #include "gnunet_testing_lib-new.h"
-#include "gnunet_os_lib.h"
 
-
 #define LOG(kind,...)                                           \
   GNUNET_log_from (kind, "gnunet-testing", __VA_ARGS__)
 

Copied: gnunet/src/testing/gnunet-testing.c (from rev 22083, 
gnunet/src/testing_old/gnunet-testing.c)
===================================================================
--- gnunet/src/testing/gnunet-testing.c                         (rev 0)
+++ gnunet/src/testing/gnunet-testing.c 2012-06-19 07:36:21 UTC (rev 22092)
@@ -0,0 +1,279 @@
+/*
+     This file is part of GNUnet.
+     (C) 2001, 2002, 2004, 2005, 2006, 2007, 2009 Christian Grothoff (and 
other contributing authors)
+
+     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 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.
+
+     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.
+*/
+
+/**
+ * @file testing_old/gnunet-testing.c
+ * @brief tool to use testing functionality from cmd line
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_testing_lib-new.h"
+
+#define HOSTKEYFILESIZE 914
+
+/**
+ * Final status code.
+ */
+static int ret;
+
+static unsigned int create_hostkey;
+
+static unsigned int create_cfg;
+
+static int create_no;
+
+static char * create_cfg_template;
+
+static char * create_hostkey_file;
+
+
+static int
+create_unique_cfgs (const char * template, const unsigned int no)
+{
+  struct GNUNET_TESTING_System *system;
+  int fail;
+  unsigned int cur;
+  char *cur_file;
+  struct GNUNET_CONFIGURATION_Handle *cfg_new;
+  struct GNUNET_CONFIGURATION_Handle *cfg_tmpl;
+
+  if (GNUNET_NO == GNUNET_DISK_file_test(template))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Configuration template `%s': file 
not found\n", create_cfg_template);
+    return 1;
+  }
+  cfg_tmpl = GNUNET_CONFIGURATION_create();
+
+  /* load template */
+  if ((create_cfg_template != NULL) && (GNUNET_OK != 
GNUNET_CONFIGURATION_load(cfg_tmpl, create_cfg_template)))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not load template `%s'\n", 
create_cfg_template);
+    GNUNET_CONFIGURATION_destroy(cfg_tmpl);
+
+    return 1;
+  }
+  /* load defaults */
+  if (GNUNET_OK != GNUNET_CONFIGURATION_load (cfg_tmpl,  NULL))
+  {
+    GNUNET_break (0);
+    return 1;
+  }
+
+  fail = GNUNET_NO;
+  system = GNUNET_TESTING_system_create ("testing", NULL /* controller */);
+  for (cur = 0; cur < no; cur++)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating configuration no. %u \n", 
cur);
+    if (create_cfg_template != NULL)
+      GNUNET_asprintf (&cur_file,"%04u-%s",cur, create_cfg_template);
+    else
+      GNUNET_asprintf (&cur_file,"%04u%s",cur, ".conf");
+
+    cfg_new = GNUNET_CONFIGURATION_dup (cfg_tmpl);
+    if (GNUNET_OK !=
+       GNUNET_TESTING_configuration_create (system, cfg_new))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not create another 
configuration\n");
+      GNUNET_CONFIGURATION_destroy (cfg_new);
+      fail = GNUNET_YES;
+      break;
+    }
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Writing configuration no. %u to file `%s' \n", cur, cur_file);
+    if (GNUNET_OK != GNUNET_CONFIGURATION_write(cfg_new, cur_file))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to write configuration no. 
%u \n", cur);
+      fail = GNUNET_YES;
+    }
+    GNUNET_CONFIGURATION_destroy (cfg_new);
+    GNUNET_free (cur_file);
+    if (fail == GNUNET_YES)
+      break;
+  }
+  GNUNET_CONFIGURATION_destroy(cfg_tmpl);
+  GNUNET_TESTING_system_destroy (system, GNUNET_NO);
+  if (GNUNET_YES == fail)
+    return 1;
+  return 0;
+}
+
+
+static int
+create_hostkeys (const unsigned int no)
+{
+  struct GNUNET_DISK_FileHandle *fd;
+  int cur = 0;
+  uint64_t fs;
+  uint64_t total_hostkeys;
+  char *hostkey_data;
+  char *hostkey_src_file;
+  char *hostkey_dest_file;
+
+  /* prepare hostkeys */
+  if (create_hostkey_file == NULL)
+    hostkey_src_file = "../../contrib/testing_hostkeys.dat";
+  else
+  {
+    hostkey_src_file = create_hostkey_file;
+  }
+
+  if (GNUNET_YES != GNUNET_DISK_file_test (hostkey_src_file))
+  {
+    if (create_hostkey_file == NULL)
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Could not read hostkeys file, 
specify hostkey file with -H!\n"));
+    else
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Specified hostkey file `%s' not 
found!\n"), create_hostkey_file);
+    return 1;
+  }
+  else
+  {
+    /* Check hostkey file size, read entire thing into memory */
+    fd = GNUNET_DISK_file_open (hostkey_src_file, GNUNET_DISK_OPEN_READ,
+                                GNUNET_DISK_PERM_NONE);
+    if (NULL == fd)
+    {
+      GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "open", 
hostkey_src_file);
+      return 1;
+    }
+
+    if (GNUNET_OK != GNUNET_DISK_file_size (hostkey_src_file, &fs, GNUNET_YES, 
GNUNET_YES))
+      fs = 0;
+
+    if (0 != (fs % HOSTKEYFILESIZE))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "File size %llu seems incorrect for hostkeys...\n", fs);
+    }
+    else
+    {
+      total_hostkeys = fs / HOSTKEYFILESIZE;
+      hostkey_data = GNUNET_malloc_large (fs);
+      GNUNET_assert (fs == GNUNET_DISK_file_read (fd, hostkey_data, fs));
+      GNUNET_log  (GNUNET_ERROR_TYPE_DEBUG,
+                       "Read %llu hostkeys from file\n", total_hostkeys);
+    }
+    GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fd));
+  }
+
+  while (cur < no)
+  {
+    GNUNET_asprintf (&hostkey_dest_file, "%04u-hostkey",cur);
+    GNUNET_assert (GNUNET_OK ==
+                   GNUNET_DISK_directory_create_for_file (hostkey_dest_file));
+    fd = GNUNET_DISK_file_open (hostkey_dest_file,
+                                GNUNET_DISK_OPEN_READWRITE |
+                                GNUNET_DISK_OPEN_CREATE,
+                                GNUNET_DISK_PERM_USER_READ |
+                                GNUNET_DISK_PERM_USER_WRITE);
+    GNUNET_assert (fd != NULL);
+    GNUNET_assert (HOSTKEYFILESIZE ==
+                   GNUNET_DISK_file_write (fd, &hostkey_data[cur * 
HOSTKEYFILESIZE], HOSTKEYFILESIZE));
+    GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fd));
+    GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "transport-testing",
+                     "Wrote hostkey to file: `%s' \n", hostkey_dest_file);
+    GNUNET_free (hostkey_dest_file);
+    cur ++;
+  }
+
+  GNUNET_free (hostkey_data);
+
+  return 0;
+}
+
+/**
+ * Main function that will be run by the scheduler.
+ *
+ * @param cls closure
+ * @param args remaining command-line arguments
+ * @param cfgfile name of the configuration file used (for saving, can be 
NULL!)
+ * @param cfg configuration
+ */
+static void
+run (void *cls, char *const *args, const char *cfgfile,
+     const struct GNUNET_CONFIGURATION_Handle *cfg)
+{
+  /* main code here */
+  if (create_cfg == GNUNET_YES)
+  {
+    if (create_no > 0)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating %u configuration files 
based on template `%s'\n", create_no, create_cfg_template);
+      ret = create_unique_cfgs (create_cfg_template, create_no);
+    }
+    else
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Missing arguments! \n");
+      ret = 1;
+    }
+  }
+
+  if (create_hostkey == GNUNET_YES)
+  {
+    if  (create_no > 0)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating %u hostkeys \n", 
create_no);
+      ret = create_hostkeys (create_no);
+    }
+    else
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Missing arguments! \n");
+      ret = 1;
+    }
+  }
+
+  GNUNET_free_non_null (create_cfg_template);
+}
+
+
+/**
+ * The main function.
+ *
+ * @param argc number of arguments from the command line
+ * @param argv command line arguments
+ * @return 0 ok, 1 on error
+ */
+int
+main (int argc, char *const *argv)
+{
+  static const struct GNUNET_GETOPT_CommandLineOption options[] = {
+    {'C', "cfg", NULL, gettext_noop ("create unique configuration files"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &create_cfg},
+     {'k', "key", NULL, gettext_noop ("create hostkey files from pre-computed 
hostkey list"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &create_hostkey},
+     {'H', "hostkeys", NULL, gettext_noop ("host key file"),
+     GNUNET_YES, &GNUNET_GETOPT_set_string, &create_hostkey_file},
+    {'n', "number", NULL, gettext_noop ("number of unique configuration files 
or hostkeys to create"),
+     GNUNET_YES, &GNUNET_GETOPT_set_uint, &create_no},
+    {'t', "template", NULL, gettext_noop ("configuration template"),
+     GNUNET_YES, &GNUNET_GETOPT_set_string, &create_cfg_template},
+    GNUNET_GETOPT_OPTION_END
+  };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
+  return (GNUNET_OK ==
+          GNUNET_PROGRAM_run (argc, argv, "gnunet-testing",
+                              gettext_noop ("Command line tool to access the 
testing library"), options, &run,
+                              NULL)) ? ret : 1;
+}
+
+/* end of gnunet-testing.c */

Modified: gnunet/src/testing/testing.c
===================================================================
--- gnunet/src/testing/testing.c        2012-06-19 07:05:14 UTC (rev 22091)
+++ gnunet/src/testing/testing.c        2012-06-19 07:36:21 UTC (rev 22092)
@@ -441,9 +441,9 @@
  * @param key_number desired pre-created hostkey to obtain
  * @param id set to the peer's identity (hash of the public
  *        key; if NULL, GNUNET_SYSERR is returned immediately
- * @return GNUNET_SYSERR on error (not enough keys)
+ * @return NULL on error (not enough keys)
  */
-int
+struct GNUNET_CRYPTO_RsaPrivateKey *
 GNUNET_TESTING_hostkey_get (const struct GNUNET_TESTING_System *system,
                            uint32_t key_number,
                            struct GNUNET_PeerIdentity *id)
@@ -452,12 +452,12 @@
   struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded public_key;
   
   if ((NULL == id) || (NULL == system->hostkeys_data))
-    return GNUNET_SYSERR;
+    return NULL;
   if (key_number >= system->total_hostkeys)
   {
     LOG (GNUNET_ERROR_TYPE_ERROR,
          _("Key number %u does not exist\n"), key_number);
-    return GNUNET_SYSERR;
+    return NULL;
   }   
   private_key = GNUNET_CRYPTO_rsa_decode_key (system->hostkeys_data +
                                               (key_number * HOSTKEYFILESIZE),
@@ -466,14 +466,13 @@
   {
     LOG (GNUNET_ERROR_TYPE_ERROR,
          _("Error while decoding key %u\n"), key_number);
-    return GNUNET_SYSERR;
+    return NULL;
   }
   GNUNET_CRYPTO_rsa_key_get_public (private_key, &public_key);
   GNUNET_CRYPTO_hash (&public_key,
                       sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
                       &(id->hashPubKey));
-  GNUNET_CRYPTO_rsa_key_free (private_key);
-  return GNUNET_OK;
+  return private_key;
 }
 
 
@@ -698,6 +697,7 @@
   char hostkey_filename[128];
   char *config_filename;
   char *emsg_;
+  struct GNUNET_CRYPTO_RsaPrivateKey *pk;
 
   if (NULL != emsg)
     *emsg = NULL;
@@ -724,8 +724,9 @@
       GNUNET_free (emsg_);
     return NULL;
   }
+  pk = NULL;
   if ((NULL != id) &&
-      (GNUNET_SYSERR == GNUNET_TESTING_hostkey_get (system, key_number, id)))
+      (NULL == (pk = GNUNET_TESTING_hostkey_get (system, key_number, id))))
   {
     GNUNET_asprintf (&emsg_,
                     _("Failed to initialize hostkey for peer %u\n"),
@@ -737,6 +738,8 @@
       GNUNET_free (emsg_);
     return NULL;
   }
+  if (NULL != pk)
+    GNUNET_CRYPTO_rsa_key_free (pk);
   GNUNET_assert (GNUNET_OK == 
                  GNUNET_CONFIGURATION_get_value_string (cfg, "PATHS",
                                                         "SERVICEHOME",

Modified: gnunet/src/testing_old/Makefile.am
===================================================================
--- gnunet/src/testing_old/Makefile.am  2012-06-19 07:05:14 UTC (rev 22091)
+++ gnunet/src/testing_old/Makefile.am  2012-06-19 07:36:21 UTC (rev 22092)
@@ -54,9 +54,6 @@
  -version-info 0:1:0
 
 
-bin_PROGRAMS = \
- gnunet-testing
-
 check_PROGRAMS = \
  test_testing \
  test_testing_connect \
@@ -91,14 +88,6 @@
  test_testing_peergroup 
 endif
 
-gnunet_testing_SOURCES = \
- gnunet-testing.c         
-gnunet_testing_LDADD = \
- $(top_builddir)/src/testing_old/libgnunettesting_old.la \
- $(top_builddir)/src/util/libgnunetutil.la \
- $(GN_LIBINTL)
-gnunet_testing_DEPENDENCIES = \
- libgnunettesting_old.la
 
 
 test_testing_SOURCES = \

Deleted: gnunet/src/testing_old/gnunet-testing.c
===================================================================
--- gnunet/src/testing_old/gnunet-testing.c     2012-06-19 07:05:14 UTC (rev 
22091)
+++ gnunet/src/testing_old/gnunet-testing.c     2012-06-19 07:36:21 UTC (rev 
22092)
@@ -1,295 +0,0 @@
-/*
-     This file is part of GNUnet.
-     (C) 2001, 2002, 2004, 2005, 2006, 2007, 2009 Christian Grothoff (and 
other contributing authors)
-
-     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 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.
-
-     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.
-*/
-
-/**
- * @file testing_old/gnunet-testing.c
- * @brief tool to use testing functionality from cmd line
- * @author Christian Grothoff
- */
-#include "platform.h"
-#include "gnunet_getopt_lib.h"
-#include "gnunet_program_lib.h"
-#include "gnunet_testing_lib.h"
-
-#define HOSTKEYFILESIZE 914
-
-/**
- * Final status code.
- */
-static int ret;
-
-static unsigned int create_hostkey;
-
-static unsigned int create_cfg;
-
-static int create_no;
-
-static char * create_cfg_template;
-
-static char * create_hostkey_file;
-
-static int
-create_unique_cfgs (const char * template, const unsigned int no)
-{
-  int fail = GNUNET_NO;
-
-  uint16_t port = 20000;
-  uint32_t upnum = 1;
-  uint32_t fdnum = 1;
-
-  if (GNUNET_NO == GNUNET_DISK_file_test(template))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Configuration template `%s': file 
not found\n", create_cfg_template);
-    return 1;
-  }
-
-  int cur = 0;
-  char * cur_file;
-  char *service_home = NULL;
-  char *cur_service_home = NULL;
-
-  struct GNUNET_CONFIGURATION_Handle *cfg_new = NULL;
-  struct GNUNET_CONFIGURATION_Handle *cfg_tmpl = GNUNET_CONFIGURATION_create();
-
-  /* load template */
-  if ((create_cfg_template != NULL) && (GNUNET_OK != 
GNUNET_CONFIGURATION_load(cfg_tmpl, create_cfg_template)))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Could not load template `%s'\n", 
create_cfg_template);
-    GNUNET_CONFIGURATION_destroy(cfg_tmpl);
-
-    return 1;
-  }
-  /* load defaults */
-  else if (GNUNET_OK != GNUNET_CONFIGURATION_load(cfg_tmpl,  NULL))
-  {
-    GNUNET_break (0);
-    return 1;
-  }
-
-  if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string(cfg_tmpl, 
"PATHS", "SERVICEHOME", &service_home))
-  {
-    GNUNET_asprintf(&service_home, "%s", "/tmp/testing");
-  }
-  else
-  {
-    int s = strlen (service_home);
-    if (service_home[s-1] == DIR_SEPARATOR)
-      service_home[s-1] = '\0';
-  }
-
-  while (cur < no)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating configuration no. %u \n", 
cur);
-    if (create_cfg_template != NULL)
-      GNUNET_asprintf (&cur_file,"%04u-%s",cur, create_cfg_template);
-    else
-      GNUNET_asprintf (&cur_file,"%04u%s",cur, ".conf");
-
-
-    GNUNET_asprintf (&cur_service_home, "%s-%04u%c",service_home, cur, 
DIR_SEPARATOR);
-    GNUNET_CONFIGURATION_set_value_string (cfg_tmpl,"PATHS","SERVICEHOME", 
cur_service_home);
-    GNUNET_CONFIGURATION_set_value_string (cfg_tmpl,"PATHS","DEFAULTCONFIG", 
cur_file);
-    GNUNET_free (cur_service_home);
-
-    cfg_new = GNUNET_TESTING_create_cfg(cfg_tmpl, cur, &port, &upnum, NULL, 
&fdnum);
-
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Writing configuration no. %u to file 
`%s' \n", cur, cur_file);
-    if (GNUNET_OK != GNUNET_CONFIGURATION_write(cfg_new, cur_file))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to write configuration no. 
%u \n", cur);
-      fail = GNUNET_YES;
-    }
-
-    GNUNET_CONFIGURATION_destroy (cfg_new);
-    GNUNET_free (cur_file);
-    if (fail == GNUNET_YES)
-      break;
-    cur ++;
-  }
-
-  GNUNET_CONFIGURATION_destroy(cfg_tmpl);
-  GNUNET_free (service_home);
-  if (fail == GNUNET_NO)
-    return 0;
-  else
-    return 1;
-}
-
-static int
-create_hostkeys (const unsigned int no)
-{
-  struct GNUNET_DISK_FileHandle *fd;
-  int cur = 0;
-  uint64_t fs;
-  uint64_t total_hostkeys;
-  char *hostkey_data;
-  char *hostkey_src_file;
-  char *hostkey_dest_file;
-
-  /* prepare hostkeys */
-  if (create_hostkey_file == NULL)
-    hostkey_src_file = "../../contrib/testing_hostkeys.dat";
-  else
-  {
-    hostkey_src_file = create_hostkey_file;
-  }
-
-  if (GNUNET_YES != GNUNET_DISK_file_test (hostkey_src_file))
-  {
-    if (create_hostkey_file == NULL)
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Could not read hostkeys file, 
specify hostkey file with -H!\n"));
-    else
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Specified hostkey file `%s' not 
found!\n"), create_hostkey_file);
-    return 1;
-  }
-  else
-  {
-    /* Check hostkey file size, read entire thing into memory */
-    fd = GNUNET_DISK_file_open (hostkey_src_file, GNUNET_DISK_OPEN_READ,
-                                GNUNET_DISK_PERM_NONE);
-    if (NULL == fd)
-    {
-      GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "open", 
hostkey_src_file);
-      return 1;
-    }
-
-    if (GNUNET_OK != GNUNET_DISK_file_size (hostkey_src_file, &fs, GNUNET_YES, 
GNUNET_YES))
-      fs = 0;
-
-    if (0 != (fs % HOSTKEYFILESIZE))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "File size %llu seems incorrect for hostkeys...\n", fs);
-    }
-    else
-    {
-      total_hostkeys = fs / HOSTKEYFILESIZE;
-      hostkey_data = GNUNET_malloc_large (fs);
-      GNUNET_assert (fs == GNUNET_DISK_file_read (fd, hostkey_data, fs));
-      GNUNET_log  (GNUNET_ERROR_TYPE_DEBUG,
-                       "Read %llu hostkeys from file\n", total_hostkeys);
-    }
-    GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fd));
-  }
-
-  while (cur < no)
-  {
-    GNUNET_asprintf (&hostkey_dest_file, "%04u-hostkey",cur);
-    GNUNET_assert (GNUNET_OK ==
-                   GNUNET_DISK_directory_create_for_file (hostkey_dest_file));
-    fd = GNUNET_DISK_file_open (hostkey_dest_file,
-                                GNUNET_DISK_OPEN_READWRITE |
-                                GNUNET_DISK_OPEN_CREATE,
-                                GNUNET_DISK_PERM_USER_READ |
-                                GNUNET_DISK_PERM_USER_WRITE);
-    GNUNET_assert (fd != NULL);
-    GNUNET_assert (HOSTKEYFILESIZE ==
-                   GNUNET_DISK_file_write (fd, &hostkey_data[cur * 
HOSTKEYFILESIZE], HOSTKEYFILESIZE));
-    GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_close (fd));
-    GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "transport-testing",
-                     "Wrote hostkey to file: `%s' \n", hostkey_dest_file);
-    GNUNET_free (hostkey_dest_file);
-    cur ++;
-  }
-
-  GNUNET_free (hostkey_data);
-
-  return 0;
-}
-
-/**
- * Main function that will be run by the scheduler.
- *
- * @param cls closure
- * @param args remaining command-line arguments
- * @param cfgfile name of the configuration file used (for saving, can be 
NULL!)
- * @param cfg configuration
- */
-static void
-run (void *cls, char *const *args, const char *cfgfile,
-     const struct GNUNET_CONFIGURATION_Handle *cfg)
-{
-  /* main code here */
-  if (create_cfg == GNUNET_YES)
-  {
-    if (create_no > 0)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating %u configuration files 
based on template `%s'\n", create_no, create_cfg_template);
-      ret = create_unique_cfgs (create_cfg_template, create_no);
-    }
-    else
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Missing arguments! \n");
-      ret = 1;
-    }
-  }
-
-  if (create_hostkey == GNUNET_YES)
-  {
-    if  (create_no > 0)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Creating %u hostkeys \n", 
create_no);
-      ret = create_hostkeys (create_no);
-    }
-    else
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Missing arguments! \n");
-      ret = 1;
-    }
-  }
-
-  GNUNET_free_non_null (create_cfg_template);
-}
-
-
-/**
- * The main function.
- *
- * @param argc number of arguments from the command line
- * @param argv command line arguments
- * @return 0 ok, 1 on error
- */
-int
-main (int argc, char *const *argv)
-{
-  static const struct GNUNET_GETOPT_CommandLineOption options[] = {
-    {'C', "cfg", NULL, gettext_noop ("create unique configuration files"),
-     GNUNET_NO, &GNUNET_GETOPT_set_one, &create_cfg},
-     {'k', "key", NULL, gettext_noop ("create hostkey files from pre-computed 
hostkey list"),
-     GNUNET_NO, &GNUNET_GETOPT_set_one, &create_hostkey},
-     {'H', "hostkeys", NULL, gettext_noop ("host key file"),
-     GNUNET_YES, &GNUNET_GETOPT_set_string, &create_hostkey_file},
-    {'n', "number", NULL, gettext_noop ("number of unique configuration files 
or hostkeys to create"),
-     GNUNET_YES, &GNUNET_GETOPT_set_uint, &create_no},
-    {'t', "template", NULL, gettext_noop ("configuration template"),
-     GNUNET_YES, &GNUNET_GETOPT_set_string, &create_cfg_template},
-    GNUNET_GETOPT_OPTION_END
-  };
-
-  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
-    return 2;
-
-  return (GNUNET_OK ==
-          GNUNET_PROGRAM_run (argc, argv, "gnunet-testing",
-                              gettext_noop ("Command line tool to access the 
testing library"), options, &run,
-                              NULL)) ? ret : 1;
-}
-
-/* end of gnunet-testing.c */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]