From d95632a327f20ebd73450add6f51b4c6f88972dc Mon Sep 17 00:00:00 2001 From: Marco van Wieringen Date: Sat, 20 Feb 2010 16:20:27 +0100 Subject: [PATCH] Added patch from Stefan Reddig -- added some checks, db test prog --- bacula/src/tools/Makefile.in | 6 +- bacula/src/tools/ing_test.c | 217 +++++++++++++++++++++++++++++++++++ 2 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 bacula/src/tools/ing_test.c diff --git a/bacula/src/tools/Makefile.in b/bacula/src/tools/Makefile.in index 19e638aa13..f98845f989 100644 --- a/bacula/src/tools/Makefile.in +++ b/bacula/src/tools/Makefile.in @@ -35,7 +35,7 @@ EXTRAOBJS = @OBJLIST@ DIRCONFOBJS = ../dird/dird_conf.o ../dird/run_conf.o ../dird/inc_conf.o NODIRTOOLS = bsmtp -DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch bregtest bvfs_test +DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch bregtest bvfs_test ing_test TOOLS = $(@DIR_TOOLS@) INSNODIRTOOLS = bsmtp @@ -107,6 +107,10 @@ bvfs_test: Makefile ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$( $(LIBTOOL_LINK) $(CXX) -g $(LDFLAGS) -L../cats -L. -L../lib -L../findlib -o $@ bvfs_test.o \ -lbacsql -lbacfind -lbac -lm $(DB_LIBS) $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) +ing_test: Makefile ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../cats/libbacsql$(DEFAULT_ARCHIVE_TYPE) ing_test.o + $(LIBTOOL_LINK) $(CXX) -g $(LDFLAGS) -L../cats -L. -L../lib -L../findlib -o $@ ing_test.o \ + -lbacsql -lbacfind -lbac -lm $(DB_LIBS) $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) + gigaslam.o: gigaslam.c $(CC) $(CFLAGS) -c $< diff --git a/bacula/src/tools/ing_test.c b/bacula/src/tools/ing_test.c new file mode 100644 index 0000000000..362018d592 --- /dev/null +++ b/bacula/src/tools/ing_test.c @@ -0,0 +1,217 @@ +/* + Bacula® - The Network Backup Solution + + Copyright (C) 2009-2009 Free Software Foundation Europe e.V. + + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation and included + in the file LICENSE. + + 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., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ +/* + * + * Program to test Ingres DB routines + * + * Stefan Reddig, February 2010 + * + * reusing code from 'bvfs_test.c' by + * Eric Bollengier, August 2009 + * + * + */ + +#include "bacula.h" +#include "cats/cats.h" +#include "cats/bvfs.h" +#include "findlib/find.h" + +/* Local variables */ +static B_DB *db; +static const char *file = "COPYRIGHT"; +static DBId_t fnid=0; +static const char *db_name = "bacula"; +static const char *db_user = "bacula"; +static const char *db_password = ""; +static const char *db_host = NULL; + +static void usage() +{ + fprintf(stderr, _( +PROG_COPYRIGHT +"\nVersion: %s (%s)\n" +" -d set debug level to \n" +" -dt print timestamp in debug output\n" +" -n specify the database name (default bacula)\n" +" -u specify database user name (default bacula)\n" +" -P specify database host (default NULL)\n" +" -w specify working directory\n" +" -j specify jobids\n" +" -p specify path\n" +" -f specify file\n" +" -l maximum tuple to fetch\n" +" -T truncate cache table before starting\n" +" -v verbose\n" +" -? print this message\n\n"), 2001, VERSION, BDATE); + exit(1); +} + + + +/* number of thread started */ + +int main (int argc, char *argv[]) +{ + int ch; + char *jobids = (char *)"1"; + char *path=NULL, *client=NULL; + uint64_t limit=0; + bool clean=false; + setlocale(LC_ALL, ""); + bindtextdomain("bacula", LOCALEDIR); + textdomain("bacula"); + init_stack_dump(); + + Dmsg0(0, "Starting ing_test tool\n"); + + my_name_is(argc, argv, "ing_test"); + init_msg(NULL, NULL); + + OSDependentInit(); + + while ((ch = getopt(argc, argv, "h:c:l:d:n:P:Su:vf:w:?j:p:f:T")) != -1) { + switch (ch) { + case 'd': /* debug level */ + if (*optarg == 't') { + dbg_timestamp = true; + } else { + debug_level = atoi(optarg); + if (debug_level <= 0) { + debug_level = 1; + } + } + break; + case 'l': + limit = str_to_int64(optarg); + break; + + case 'c': + client = optarg; + break; + + case 'h': + db_host = optarg; + break; + + case 'n': + db_name = optarg; + break; + + case 'w': + working_directory = optarg; + break; + + case 'u': + db_user = optarg; + break; + + case 'P': + db_password = optarg; + break; + + case 'v': + verbose++; + break; + + case 'p': + path = optarg; + break; + + case 'f': + file = optarg; + break; + + case 'j': + jobids = optarg; + break; + + case 'T': + clean = true; + break; + + case '?': + default: + usage(); + + } + } + argc -= optind; + argv += optind; + + if (argc != 0) { + Pmsg0(0, _("Wrong number of arguments: \n")); + usage(); + } + + if ((db=db_init_database(NULL, db_name, db_user, db_password, + db_host, 0, NULL, 0)) == NULL) { + Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n")); + } + Dmsg1(0, "db_type=%s\n", db_get_type()); + + if (!db_open_database(NULL, db)) { + Emsg0(M_ERROR_TERM, 0, db_strerror(db)); + } + Dmsg0(200, "Database opened\n"); + if (verbose) { + Pmsg2(000, _("Using Database: %s, User: %s\n"), db_name, db_user); + } + + Dmsg0(200, "DB-Statement: CREATE TABLE t1 ( c1 integer, c2 varchar(29))\n"); + if (!db_sql_query(db, "CREATE TABLE t1 ( c1 integer, c2 varchar(29))", NULL, NULL)) + { + Emsg0(M_ERROR_TERM, 0, _("CREATE-Stmt went wrong\n")); + } + + Dmsg0(200, "DB-Statement: INSERT INTO t1 VALUES (1, 'foo')\n"); + if (!db_sql_query(db, "INSERT INTO t1 VALUES (1, 'foo')", NULL, NULL)) + { + Emsg0(M_ERROR_TERM, 0, _("INSERT-Stmt went wrong\n")); + } + + Dmsg0(200, "DB-Statement: DROP TABLE t1\n"); + if (!db_sql_query(db, "DROP TABLE t1", NULL, NULL)) + { + Emsg0(M_ERROR_TERM, 0, _("DROP-Stmt went wrong\n")); + } + +/* + if (clean) { + Pmsg0(0, "Clean old table\n"); + db_sql_query(db, "DELETE FROM PathHierarchy", NULL, NULL); + db_sql_query(db, "UPDATE Job SET HasCache=0", NULL, NULL); + db_sql_query(db, "DELETE FROM PathVisibility", NULL, NULL); + } +*/ + db_close_database(NULL, db); + Dmsg0(200, "Database closed\n"); + + return 0; +} -- 2.39.5