r25234: make WINBIND-STRUCT-PING a benchmark test
authorStefan Metzmacher <metze@samba.org>
Wed, 19 Sep 2007 16:22:19 +0000 (16:22 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:06:58 +0000 (15:06 -0500)
which runs WINBIND_PING for 5 seconds

metze

source/torture/winbind/struct_based.c

index 3e17fe6358f832177379b4c7ee39c7b83345b130..5ecc5c99da827a378f42ec80adf53eb2a5c21ac8 100644 (file)
 #include "torture/winbind/proto.h"
 #include "nsswitch/winbind_client.h"
 
+#define DO_STRUCT_REQ_REP(op,req,rep) do { \
+       NSS_STATUS _result; \
+       _result = winbindd_request_response(op, req, rep); \
+       torture_assert_int_equal(torture, _result, NSS_STATUS_SUCCESS, \
+                                __STRING(op) "(struct based)"); \
+} while (0)
+
 static bool torture_winbind_struct_ping(struct torture_context *torture)
 {
-       NSS_STATUS result;
-
-       torture_comment(torture, "Testing WINBINDD_PING (struct based protocol)\n");
-
-       result = winbindd_request_response(WINBINDD_PING, NULL, NULL);
-       torture_assert_int_equal(torture,result,NSS_STATUS_SUCCESS,
-                                "WINBINDD_PING (struct based protocol)");
+       struct timeval tv = timeval_current();
+       int timelimit = torture_setting_int(torture, "timelimit", 5);
+       uint32_t total = 0;
+
+       torture_comment(torture,
+                       "Running WINBINDD_PING (struct based) for %d seconds\n",
+                       timelimit);
+
+       while (timeval_elapsed(&tv) < timelimit) {
+               DO_STRUCT_REQ_REP(WINBINDD_PING, NULL, NULL);
+               total++;
+       }
+
+       torture_comment(torture,
+                       "%u (%.1f/s) WINBINDD_PING (struct based)\n",
+                       total, total / timeval_elapsed(&tv));
 
        return true;
 }