Add a very trivial talloc torture program, bin/talloctort. Not built
authorMartin Pool <mbp@samba.org>
Wed, 19 Dec 2001 04:46:35 +0000 (04:46 +0000)
committerMartin Pool <mbp@samba.org>
Wed, 19 Dec 2001 04:46:35 +0000 (04:46 +0000)
by default.

source/Makefile.in
source/bin/.cvsignore
source/lib/talloctort.c [new file with mode: 0644]

index 3a19c50b2d6d1dd6bd659c9b17c0a6c1d522f5ce..a562f27e0f60b123bacbbf566c91cf32463c44ad 100644 (file)
@@ -369,6 +369,7 @@ SMBCACLS_OBJ = utils/smbcacls.o $(LOCKING_OBJ) $(LIBSMB_OBJ) $(PARAM_OBJ) \
                  $(UBIQX_OBJ) $(LIB_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_OBJ) \
                 $(LIBMSRPC_OBJ) $(GROUPDB_OBJ)
 
+TALLOCTORT_OBJ = lib/talloctort.o  $(LIB_OBJ) $(PARAM_OBJ) $(UBIQX_OBJ)
 
 RPCTORTURE_OBJ = torture/rpctorture.o \
              rpcclient/display.o \
@@ -478,6 +479,8 @@ debug2html : SHOWFLAGS bin/debug2html
 
 smbfilter : SHOWFLAGS bin/smbfilter
 
+talloctort : SHOWFLAGS bin/talloctort
+
 nsswitch : SHOWFLAGS $(WINBIND_PROGS) $(WINBIND_SPROGS) $(LPROGS)
 
 .SUFFIXES:
@@ -635,6 +638,10 @@ bin/smbtorture: $(SMBTORTURE_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(SMBTORTURE_OBJ) $(LDFLAGS) $(LIBS)
 
+bin/talloctort: $(TALLOCTORT_OBJ) bin/.dummy
+       @echo Linking $@
+       @$(CC) $(FLAGS) -o $@ $(TALLOCTORT_OBJ) $(LDFLAGS) $(LIBS)
+
 bin/masktest: $(MASKTEST_OBJ) bin/.dummy
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(MASKTEST_OBJ) $(LDFLAGS) $(LIBS)
index bd844c493ea94aee646a7174c3888b92100002dd..fe08cb63f8412b86040fe722087ff59a59db9bed 100644 (file)
@@ -29,6 +29,7 @@ smbtorture
 smbtree
 smbumount
 swat
+talloctort
 testparm
 testprns
 wbinfo
diff --git a/source/lib/talloctort.c b/source/lib/talloctort.c
new file mode 100644 (file)
index 0000000..61f9532
--- /dev/null
@@ -0,0 +1,56 @@
+/* 
+   Unix SMB/Netbios implementation.
+   Samba temporary memory allocation functions -- torturer
+   Copyright (C) 2001 by Martin Pool <mbp@samba.org>
+   
+   This program 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 of the License, or
+   (at your option) any later version.
+   
+   This program 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 this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+#define NCTX 10
+#define NOBJ 20
+
+int main(void)
+{
+       int i;
+       TALLOC_CTX *ctx[NCTX];
+
+       for (i = 0; i < NCTX; i++) {
+               ctx[i] = talloc_init_named("torture(%d)", i);
+       }
+
+       for (i = 0; i < NCTX; i++) {
+               int j;
+               for (j = 0; j < NOBJ; j++) {
+                       void *p;
+                       size_t size = 1<<(i+j);
+
+                       p = talloc(ctx[i], size);
+                       if (!p) {
+                               fprintf(stderr,
+                                       "failed to talloc %0.f bytes\n", size);
+                               exit(1);
+                       }
+               }
+       }
+
+       for (i = 0; i < NCTX; i++) {
+               printf("talloc@%p %-40s %db\n", ctx[i], ctx[i]->name,
+                      ctx[i]->total_alloc_size);
+       }
+
+       return 0;
+}