summaryrefslogtreecommitdiff
path: root/source4/torture/nbt/query.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-10-16 13:06:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:21:12 -0500
commit8773e743c518578584d07d35ffdafdd598af88b0 (patch)
tree89726232dd6ae9eca1c219e21729a9b2336ddaa9 /source4/torture/nbt/query.c
parent0f2347e417dec4a50f95d64353b260cd53a44a2b (diff)
downloadsamba-8773e743c518578584d07d35ffdafdd598af88b0.tar.gz
samba-8773e743c518578584d07d35ffdafdd598af88b0.tar.bz2
samba-8773e743c518578584d07d35ffdafdd598af88b0.zip
r19339: Merge my 4.0-unittest branch. This adds an API for more fine-grained
output in the testsuite rather than just True or False for a set of tests. The aim is to use this for: * known failure lists (run all tests and detect tests that started working or started failing). This would allow us to get rid of the RPC-SAMBA3-* tests * nicer torture output * simplification of the testsuite system * compatibility with other unit testing systems * easier usage of smbtorture (being able to run one test and automatically set up the environment for that) This is still a work-in-progress; expect more updates over the next couple of days. (This used to be commit 0eb6097305776325c75081356309115f445a7218)
Diffstat (limited to 'source4/torture/nbt/query.c')
-rw-r--r--source4/torture/nbt/query.c61
1 files changed, 22 insertions, 39 deletions
diff --git a/source4/torture/nbt/query.c b/source4/torture/nbt/query.c
index 10e8848b46..33cf2d4335 100644
--- a/source4/torture/nbt/query.c
+++ b/source4/torture/nbt/query.c
@@ -24,6 +24,7 @@
#include "lib/events/events.h"
#include "libcli/resolve/resolve.h"
#include "torture/torture.h"
+#include "torture/nbt/proto.h"
struct result_struct {
int num_pass;
@@ -44,39 +45,40 @@ static void increment_handler(struct nbt_name_request *req)
/*
benchmark simple name queries
*/
-static BOOL bench_namequery(TALLOC_CTX *mem_ctx, struct nbt_name *name, const char *address)
+static bool bench_namequery(struct torture_context *tctx)
{
- struct nbt_name_socket *nbtsock = nbt_name_socket_init(mem_ctx, NULL);
+ struct nbt_name_socket *nbtsock = nbt_name_socket_init(tctx, NULL);
int num_sent=0;
struct result_struct *result;
struct nbt_name_query io;
struct timeval tv = timeval_current();
- BOOL ret = True;
- int timelimit = lp_parm_int(-1, "torture", "timelimit", 10);
+ int timelimit = torture_setting_int(tctx, "timelimit", 10);
- io.in.name = *name;
+ const char *address;
+ struct nbt_name name;
+
+ if (!torture_nbt_get_name(tctx, &name, &address))
+ return false;
+
+ io.in.name = name;
io.in.dest_addr = address;
io.in.broadcast = False;
io.in.wins_lookup = False;
io.in.timeout = 1;
- result = talloc_zero(mem_ctx, struct result_struct);
+ result = talloc_zero(tctx, struct result_struct);
- printf("Running for %d seconds\n", timelimit);
+ torture_comment(tctx, "Running for %d seconds\n", timelimit);
while (timeval_elapsed(&tv) < timelimit) {
while (num_sent - (result->num_pass+result->num_fail) < 10) {
struct nbt_name_request *req;
req = nbt_name_query_send(nbtsock, &io);
- if (req == NULL) {
- printf("Failed to setup request!\n");
- ret = False;
- goto failed;
- }
+ torture_assert(tctx, req != NULL, "Failed to setup request!");
req->async.fn = increment_handler;
req->async.private = result;
num_sent++;
if (num_sent % 1000 == 0) {
- printf("%.1f queries per second (%d failures) \r",
+ torture_comment(tctx, "%.1f queries per second (%d failures) \r",
result->num_pass / timeval_elapsed(&tv),
result->num_fail);
}
@@ -89,41 +91,22 @@ static BOOL bench_namequery(TALLOC_CTX *mem_ctx, struct nbt_name *name, const ch
event_loop_once(nbtsock->event_ctx);
}
- printf("%.1f queries per second (%d failures) \n",
+ torture_comment(tctx, "%.1f queries per second (%d failures) \n",
result->num_pass / timeval_elapsed(&tv),
result->num_fail);
-failed:
- talloc_free(nbtsock);
- return ret;
+ return true;
}
/*
benchmark how fast a server can respond to name queries
*/
-BOOL torture_bench_nbt(struct torture_context *torture)
+struct torture_suite *torture_bench_nbt(void)
{
- const char *address;
- struct nbt_name name;
- TALLOC_CTX *mem_ctx = talloc_new(NULL);
- NTSTATUS status;
- BOOL ret = True;
-
- make_nbt_name_server(&name, lp_parm_string(-1, "torture", "host"));
-
- /* do an initial name resolution to find its IP */
- status = resolve_name(&name, mem_ctx, &address, event_context_find(mem_ctx));
- if (!NT_STATUS_IS_OK(status)) {
- printf("Failed to resolve %s - %s\n",
- name.name, nt_errstr(status));
- talloc_free(mem_ctx);
- return False;
- }
-
- ret &= bench_namequery(mem_ctx, &name, address);
-
- talloc_free(mem_ctx);
+ struct torture_suite *suite = torture_suite_create(talloc_autofree_context(),
+ "BENCH");
+ torture_suite_add_simple_test(suite, "namequery", bench_namequery);
- return ret;
+ return suite;
}