From 6c5853aa8d6dfbfeb96d705cbd157544352f810e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 25 Mar 2006 14:49:00 +0000 Subject: r14718: Add initial work on a standardized UI for smbtorture (This used to be commit a15a8d87b50fe3011c009d3c030cf54ec86540b4) --- source4/torture/config.mk | 3 +- source4/torture/torture.h | 3 ++ source4/torture/ui.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++ source4/torture/ui.h | 52 ++++++++++++++++++++++++++++++++ 4 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 source4/torture/ui.c create mode 100644 source4/torture/ui.h (limited to 'source4') diff --git a/source4/torture/config.mk b/source4/torture/config.mk index 862051a174..fd93f92758 100644 --- a/source4/torture/config.mk +++ b/source4/torture/config.mk @@ -6,7 +6,8 @@ VERSION = 0.0.1 PUBLIC_HEADERS = torture.h PUBLIC_PROTO_HEADER = proto.h OBJ_FILES = \ - torture.o + torture.o \ + ui.o REQUIRED_SUBSYSTEMS = \ TORTURE_UTIL \ TORTURE_RAW \ diff --git a/source4/torture/torture.h b/source4/torture/torture.h index 7fe546b007..9d0f84759b 100644 --- a/source4/torture/torture.h +++ b/source4/torture/torture.h @@ -41,6 +41,9 @@ extern int torture_numops; extern int torture_failures; extern BOOL use_level_II_oplocks; +struct torture_context; +struct torture_test; + #include "torture/proto.h" #endif /* __TORTURE_H__ */ diff --git a/source4/torture/ui.c b/source4/torture/ui.c new file mode 100644 index 0000000000..ef4b45b77d --- /dev/null +++ b/source4/torture/ui.c @@ -0,0 +1,76 @@ +/* + Unix SMB/CIFS implementation. + SMB torture UI functions + + Copyright (C) Jelmer Vernooij 2006 + + 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" +#include "torture/ui.h" + +struct torture_test *torture_test(struct torture_context *ctx, const char *name, const char *description) +{ + struct torture_test *test = talloc(ctx, struct torture_test); + + test->name = talloc_strdup(test, name); + test->description = talloc_strdup(test, description); + test->context = ctx; + + ctx->ui_ops->test_start(test); + + return test; +} + +struct torture_test *torture_subtest(struct torture_test *parent, const char *name, const char *description) +{ + struct torture_test *test = talloc(parent, struct torture_test); + + test->name = talloc_strdup(test, name); + test->description = talloc_strdup(test, description); + test->context = parent->context; + + test->context->ui_ops->test_start(test); + + return NULL; +} + +void torture_comment(struct torture_test *test, const char *comment, ...) +{ + va_list ap; + char *tmp; + va_start(ap, comment); + tmp = talloc_vasprintf(test, comment, ap); + + test->context->ui_ops->comment(test, tmp); + + talloc_free(tmp); +} + +void torture_ok(struct torture_test *test) +{ + test->context->ui_ops->test_result(test, TORTURE_OK); +} + +void torture_fail(struct torture_test *test) +{ + test->context->ui_ops->test_result(test, TORTURE_FAIL); +} + +void torture_skip(struct torture_test *test) +{ + test->context->ui_ops->test_result(test, TORTURE_SKIP); +} diff --git a/source4/torture/ui.h b/source4/torture/ui.h new file mode 100644 index 0000000000..df74f2cdcf --- /dev/null +++ b/source4/torture/ui.h @@ -0,0 +1,52 @@ +/* + Unix SMB/CIFS implementation. + SMB torture UI functions + + Copyright (C) Jelmer Vernooij 2006 + + 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. +*/ + +struct torture_test; + +enum torture_result { + TORTURE_OK=0, + TORTURE_FAIL=1, + TORTURE_TODO=2, + TORTURE_SKIP=3 +}; + +struct torture_ui_ops +{ + void (*comment) (struct torture_test *, const char *); + void (*test_start) (struct torture_test *); + void (*test_result) (struct torture_test *, enum torture_result); +}; + +struct torture_test +{ + char *name; + char *description; + + void *ui_data; + + struct torture_context *context; +}; + +struct torture_context +{ + const struct torture_ui_ops *ui_ops; + void *ui_data; +}; -- cgit