svn commit: samba r10651 - in
branches/tmp/vl-cluster/source/torture: .
vlendec at samba.org
vlendec at samba.org
Fri Sep 30 13:23:39 GMT 2005
Author: vlendec
Date: 2005-09-30 13:23:38 +0000 (Fri, 30 Sep 2005)
New Revision: 10651
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10651
Log:
Start a little torture test for the dbwrap interface. dbwrap_file performs
better than tdb in /dev/shm for huge numbers of keys.... :-)
Volker
Modified:
branches/tmp/vl-cluster/source/torture/torture.c
Changeset:
Modified: branches/tmp/vl-cluster/source/torture/torture.c
===================================================================
--- branches/tmp/vl-cluster/source/torture/torture.c 2005-09-30 11:56:39 UTC (rev 10650)
+++ branches/tmp/vl-cluster/source/torture/torture.c 2005-09-30 13:23:38 UTC (rev 10651)
@@ -4651,8 +4651,63 @@
return True;
}
+#define KEYLEN 5
+#define DATALEN 100
+
+static char *randbuf(int len)
+{
+ char *buf;
+ int i;
+ buf = (char *)SMB_MALLOC(len+1);
+
+ for (i=0;i<len;i++) {
+ buf[i] = 'a' + (rand() % 26);
+ }
+ buf[i] = 0;
+ return buf;
+}
+
static BOOL run_dbwrap(int dummy)
{
+ TALLOC_CTX *mem_ctx;
+ struct db_context *db;
+ int i;
+
+ mem_ctx = talloc_init("dbwrap %i", dummy);
+ if (mem_ctx == NULL) {
+ DEBUG(0, ("talloc_init failed\n"));
+ return False;
+ }
+
+ db = db_open_file(mem_ctx, "torture.tdb", 0, 0, O_RDWR|O_CREAT, 0644);
+ if (db == NULL) {
+ DEBUG(0, ("db_open_file failed: %s\n", strerror(errno)));
+ talloc_free(mem_ctx);
+ return False;
+ }
+
+ for (i=0; i<torture_numops; i++) {
+ TDB_DATA key, data;
+ struct db_record *rec;
+
+ key.dsize = 1 + (rand() % KEYLEN);
+ key.dptr = randbuf(key.dsize);
+ data.dsize = 1 + (rand() % DATALEN);
+ data.dptr = randbuf(data.dsize);
+
+ rec = db->fetch_locked(db, mem_ctx, key);
+ if (rec == NULL) {
+ DEBUG(0, ("could not fetch %s\n", key.dptr));
+ return False;
+ }
+ rec->store(rec, data, 0);
+ talloc_free(rec);
+
+ free(key.dptr);
+ free(data.dptr);
+ }
+
+ talloc_free(mem_ctx);
return True;
}
More information about the samba-cvs
mailing list