1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r2088: add tdbtorture tdbdump and tdbtest to the build

NOTE: tdbbackup and tdbtool seems to be broken...

NOTE: I also added SMB_EXT_LIB(GDBM,...)
      because that is needed by tdbtest

metze
(This used to be commit e66630662d)
This commit is contained in:
Stefan Metzmacher 2004-08-27 15:52:54 +00:00 committed by Gerald (Jerry) Carter
parent 3cd74a3634
commit 826a515ec0
5 changed files with 120 additions and 18 deletions

View File

@ -7,3 +7,28 @@ fi
SMB_LIBRARY_MK(libtdb,lib/tdb/config.mk)
###############################
# start SMB_EXT_LIB_GDBM
# check for gdbm.h and -lgdbm
AC_CHECK_HEADERS(gdbm.h)
AC_CHECK_LIB_EXT(gdbm, GDBM_LIBS, gdbm_open)
if test x"$ac_cv_header_gdbm_h" = x"yes" -a x"$ac_cv_lib_ext_gdbm_gdbm_open" = x"yes";then
SMB_EXT_LIB_ENABLE(GDBM,YES)
fi
SMB_EXT_LIB(GDBM, $GDBM_LIBS)
# end SMB_EXT_LIB_GDBM
###############################
SMB_BINARY_ENABLE(tdbtest, NO)
if test x"$SMB_EXT_LIB_ENABLE_GDBM" = x"YES"; then
SMB_BINARY_ENABLE(tdbtest, YES)
fi
SMB_BINARY_MK(tdbtest,lib/tdb/config.mk)
SMB_BINARY_MK(tdbtorture,lib/tdb/config.mk)
SMB_BINARY_MK(tdbdump,lib/tdb/config.mk)
# these are broken
#SMB_BINARY_MK(tdbtool,lib/tdb/config.mk)
#SMB_BINARY_MK(tdbbackup,lib/tdb/config.mk)

View File

@ -21,3 +21,54 @@ REQUIRED_SUBSYSTEMS = \
#
# End LIBRARY LIBLDB
################################################
################################################
# Start BINARY tdbtest
[BINARY::tdbtest]
OBJ_FILES= \
lib/tdb/tools/tdbtest.o
REQUIRED_SUBSYSTEMS = \
LIBBASIC CONFIG LIBCMDLINE LIBTDB
REQUIRED_LIBRARIES = GDBM
# End BINARY tdbtest
################################################
################################################
# Start BINARY tdbtool
[BINARY::tdbtool]
OBJ_FILES= \
lib/tdb/tools/tdbtool.o
REQUIRED_SUBSYSTEMS = \
LIBBASIC CONFIG LIBCMDLINE LIBTDB
# End BINARY tdbtool
################################################
################################################
# Start BINARY tdbtorture
[BINARY::tdbtorture]
OBJ_FILES= \
lib/tdb/tools/tdbtorture.o
REQUIRED_SUBSYSTEMS = \
LIBBASIC CONFIG LIBCMDLINE LIBTDB
# End BINARY tdbtorture
################################################
################################################
# Start BINARY tdbdump
[BINARY::tdbdump]
OBJ_FILES= \
lib/tdb/tools/tdbdump.o
REQUIRED_SUBSYSTEMS = \
LIBBASIC CONFIG LIBCMDLINE LIBTDB
# End BINARY tdbdump
################################################
################################################
# Start BINARY tdbbackup
[BINARY::tdbbackup]
OBJ_FILES= \
lib/tdb/tools/tdbbackup.o
REQUIRED_SUBSYSTEMS = \
LIBBASIC CONFIG LIBCMDLINE LIBTDB
# End BINARY tdbbackup
################################################

View File

@ -18,6 +18,7 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef STANDALONE
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
@ -33,9 +34,15 @@
#include <signal.h>
#include "tdb.h"
#else
#include "includes.h"
#endif
static void print_data(TDB_DATA d)
{
uint8_t *p = d.dptr;
unsigned char *p = d.dptr;
int len = d.dsize;
while (len--) {
if (isprint(*p) && !strchr("\"\\", *p)) {

View File

@ -1,3 +1,6 @@
/* a test program for tdb - the trivial database */
#ifdef STANDALONE
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
@ -10,11 +13,14 @@
#include <sys/time.h>
#include <signal.h>
#include "tdb.h"
#else
#include "includes.h"
#endif
#include <gdbm.h>
/* a test program for tdb - the trivial database */
#define DELETE_PROB 7
#define STORE_PROB 5
@ -24,24 +30,27 @@ static GDBM_FILE gdbm;
struct timeval tp1,tp2;
static void start_timer(void)
static void _start_timer(void)
{
gettimeofday(&tp1,NULL);
}
static double end_timer(void)
static double _end_timer(void)
{
gettimeofday(&tp2,NULL);
return((tp2.tv_sec - tp1.tv_sec) +
(tp2.tv_usec - tp1.tv_usec)*1.0e-6);
}
static void fatal(char *why)
static void fatal(const char *why)
{
perror(why);
exit(1);
}
#ifdef PRINTF_ATTRIBUTE
static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...) PRINTF_ATTRIBUTE(3,4);
#endif
static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...)
{
va_list ap;
@ -192,14 +201,15 @@ static void merge_test(void)
{
int i;
char keys[5][2];
char tdata[] = "test";
TDB_DATA key, data;
for (i = 0; i < 5; i++) {
sprintf(keys[i], "%d", i);
snprintf(keys[i],2, "%d", i);
key.dptr = keys[i];
key.dsize = 2;
data.dptr = "test";
data.dptr = tdata;
data.dsize = 4;
if (tdb_store(db, key, data, TDB_REPLACE) != 0) {
@ -223,12 +233,13 @@ int main(int argc, char *argv[])
{
int i, seed=0;
int loops = 10000;
char test_gdbm[] = "test.gdbm";
unlink("test.gdbm");
db = tdb_open("test.tdb", 0, TDB_CLEAR_IF_FIRST,
O_RDWR | O_CREAT | O_TRUNC, 0600);
gdbm = gdbm_open("test.gdbm", 512, GDBM_WRITER|GDBM_NEWDB|GDBM_FAST,
gdbm = gdbm_open(test_gdbm, 512, GDBM_WRITER|GDBM_NEWDB|GDBM_FAST,
0600, NULL);
if (!db || !gdbm) {
@ -239,17 +250,17 @@ int main(int argc, char *argv[])
#if 1
srand(seed);
start_timer();
_start_timer();
for (i=0;i<loops;i++) addrec_gdbm();
printf("gdbm got %.2f ops/sec\n", i/end_timer());
printf("gdbm got %.2f ops/sec\n", i/_end_timer());
#endif
merge_test();
srand(seed);
start_timer();
_start_timer();
for (i=0;i<loops;i++) addrec_db();
printf("tdb got %.2f ops/sec\n", i/end_timer());
printf("tdb got %.2f ops/sec\n", i/_end_timer());
compare_db();

View File

@ -1,3 +1,8 @@
/* this tests tdb by doing lots of ops from several simultaneous
writers - that stresses the locking code. Build with TDB_DEBUG=1
for best effect */
#ifdef STANDALONE
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
@ -13,11 +18,11 @@
#include <sys/wait.h>
#include "tdb.h"
/* this tests tdb by doing lots of ops from several simultaneous
writers - that stresses the locking code. Build with TDB_DEBUG=1
for best effect */
#else
#include "includes.h"
#endif
#define REOPEN_PROB 30
#define DELETE_PROB 8
@ -32,6 +37,9 @@
static TDB_CONTEXT *db;
#ifdef PRINTF_ATTRIBUTE
static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...) PRINTF_ATTRIBUTE(3,4);
#endif
static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...)
{
va_list ap;
@ -50,7 +58,7 @@ static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...)
#endif
}
static void fatal(char *why)
static void fatal(const char *why)
{
perror(why);
exit(1);