[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r6497 - GNUnet/src/applications/dstore_sqlite,
gnunet <=