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