gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r6497 - GNUnet/src/applications/dstore_sqlite


From: gnunet
Subject: [GNUnet-SVN] r6497 - GNUnet/src/applications/dstore_sqlite
Date: Sat, 1 Mar 2008 18:59:54 -0700 (MST)

Author: grothoff
Date: 2008-03-01 18:59:53 -0700 (Sat, 01 Mar 2008)
New Revision: 6497

Added:
   GNUnet/src/applications/dstore_sqlite/dstore_quota_test.c
Modified:
   GNUnet/src/applications/dstore_sqlite/Makefile.am
   GNUnet/src/applications/dstore_sqlite/check.conf
   GNUnet/src/applications/dstore_sqlite/dstore.c
Log:
test

Modified: GNUnet/src/applications/dstore_sqlite/Makefile.am
===================================================================
--- GNUnet/src/applications/dstore_sqlite/Makefile.am   2008-03-02 01:55:36 UTC 
(rev 6496)
+++ GNUnet/src/applications/dstore_sqlite/Makefile.am   2008-03-02 01:59:53 UTC 
(rev 6497)
@@ -9,7 +9,8 @@
   libgnunetmodule_dstore_sqlite.la
 
 check_PROGRAMS = \
-  dstore_test
+  dstore_test \
+  dstore_quota_test
 
 TESTS = $(check_PROGRAMS)
 
@@ -31,3 +32,9 @@
 dstore_test_LDADD = \
  $(top_builddir)/src/server/libgnunetcore.la  \
  $(top_builddir)/src/util/libgnunetutil.la  
+
+dstore_quota_test_SOURCES = \
+ dstore_quota_test.c 
+dstore_quota_test_LDADD = \
+ $(top_builddir)/src/server/libgnunetcore.la  \
+ $(top_builddir)/src/util/libgnunetutil.la  

Modified: GNUnet/src/applications/dstore_sqlite/check.conf
===================================================================
--- GNUnet/src/applications/dstore_sqlite/check.conf    2008-03-02 01:55:36 UTC 
(rev 6496)
+++ GNUnet/src/applications/dstore_sqlite/check.conf    2008-03-02 01:59:53 UTC 
(rev 6497)
@@ -46,3 +46,5 @@
 WEAKRANDOM = YES
 
 
+[DSTORE]
+QUOTA = 1

Modified: GNUnet/src/applications/dstore_sqlite/dstore.c
===================================================================
--- GNUnet/src/applications/dstore_sqlite/dstore.c      2008-03-02 01:55:36 UTC 
(rev 6496)
+++ GNUnet/src/applications/dstore_sqlite/dstore.c      2008-03-02 01:59:53 UTC 
(rev 6497)
@@ -66,6 +66,8 @@
 
 static unsigned int stat_dstore_size;
 
+static unsigned int stat_dstore_quota;
+
 /**
  * Estimate of the per-entry overhead (including indices).
  */
@@ -484,8 +486,10 @@
           continue;
         }
       dat = sqlite3_column_blob (stmt, 1);
-      handler (key, type, size, dat, closure);
-      cnt++;
+      cnt++;      
+      if ( (handler != NULL) &&
+          (GNUNET_OK != handler (key, type, size, dat, closure)) )
+       break;
     }
   sqlite3_finalize (stmt);
   sqlite3_close (dbh);
@@ -532,7 +536,12 @@
     }
   stats = capi->request_service ("stats");
   if (stats != NULL)
-    stat_dstore_size = stats->create (gettext_noop ("# bytes in dstore"));
+    {
+      stat_dstore_size = stats->create (gettext_noop ("# bytes in dstore"));
+      stat_dstore_quota = stats->create (gettext_noop ("# max bytes allowed in 
dstore"));
+      stats->set(stat_dstore_quota,
+                quota);
+   }
   return &api;
 }
 

Added: GNUnet/src/applications/dstore_sqlite/dstore_quota_test.c
===================================================================
--- GNUnet/src/applications/dstore_sqlite/dstore_quota_test.c                   
        (rev 0)
+++ GNUnet/src/applications/dstore_sqlite/dstore_quota_test.c   2008-03-02 
01:59:53 UTC (rev 6497)
@@ -0,0 +1,115 @@
+/*
+     This file is part of GNUnet.
+     (C) 2006, 2008 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 2, 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 applications/dstore/dstore_quota_test.c
+ * @brief Test for the dstore implementations.
+ * @author Nils Durner
+ */
+
+#include "platform.h"
+#include "gnunet_util.h"
+#include "gnunet_protocols.h"
+#include "gnunet_dstore_service.h"
+#include "core.h"
+
+#define ASSERT(x) do { if (! (x)) { printf("Error at %s:%d\n", __FILE__, 
__LINE__); goto FAILURE;} } while (0)
+
+/**
+ * Quota is 1 MB.  Each iteration of the test puts in about 1 MB of
+ * data.  We do 10 iterations. Afterwards we check that the data from
+ * the first 5 iterations has all been discarded and that at least
+ * some of the data from the last iteration is still there.
+ */
+static int
+test (GNUNET_Dstore_ServiceAPI * api)
+{
+  GNUNET_HashCode k;
+  GNUNET_HashCode n;
+  unsigned int i;
+  unsigned int j;
+  char buf[3200];
+
+  memset(buf, 1, sizeof(buf));
+  memset (&k, 0, sizeof (GNUNET_HashCode));
+  for (i = 0; i < 10; i++)
+    {
+      fprintf(stderr, ".");
+      GNUNET_hash (&k, sizeof (GNUNET_HashCode), &n);
+      for (j=i;j<sizeof(buf);j+=10)
+       {
+         buf[j] = i;
+         ASSERT (GNUNET_OK == api->put (&k,
+                                        i,
+                                        GNUNET_get_time() + 30 * 
GNUNET_CRON_MINUTES,
+                                        j,
+                                        buf));
+         ASSERT (0 != api->get (&k, i, NULL, NULL));
+       }
+      k = n;
+    }
+  fprintf(stderr, "\n");
+  memset (&k, 0, sizeof (GNUNET_HashCode));
+  for (i = 0; i < 10; i++)
+    {
+      fprintf(stderr, ".");
+      GNUNET_hash (&k, sizeof (GNUNET_HashCode), &n);
+      if (i < 5)
+       ASSERT (0 == api->get (&k, i, NULL, NULL));
+      if (i == 9)
+       ASSERT (0 != api->get (&k, i, NULL, NULL));
+      k = n;
+    }
+  fprintf(stderr, "\n");
+  return GNUNET_OK;
+FAILURE:
+  return GNUNET_SYSERR;
+}
+
+int
+main (int argc, char *argv[])
+{
+  GNUNET_Dstore_ServiceAPI *api;
+  int ok;
+  struct GNUNET_GC_Configuration *cfg;
+  struct GNUNET_CronManager *cron;
+
+  cfg = GNUNET_GC_create ();
+  if (-1 == GNUNET_GC_parse_configuration (cfg, "check.conf"))
+    {
+      GNUNET_GC_free (cfg);
+      return -1;
+    }
+  cron = GNUNET_cron_create (NULL);
+  GNUNET_CORE_init (NULL, cfg, cron, NULL);
+  api = GNUNET_CORE_request_service ("dstore");
+  if (api != NULL)
+    {
+      ok = test (api);
+      GNUNET_CORE_release_service (api);
+    }
+  else
+    ok = GNUNET_SYSERR;
+  GNUNET_CORE_done ();
+  if (ok == GNUNET_SYSERR)
+    return 1;
+  return 0;
+}
+
+/* end of dstore_quota_test.c */


Property changes on: GNUnet/src/applications/dstore_sqlite/dstore_quota_test.c
___________________________________________________________________
Name: svn:eol-style
   + native





reply via email to

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