diff options
author | Michael Widenius <monty@askmonty.org> | 2011-05-05 14:51:01 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2011-05-05 14:51:01 +0300 |
commit | d5caa00161453eb0cd61e3641d4e6783fb385319 (patch) | |
tree | 34c7e24c19fda340a460e8d5316ca054617c687d /unittest/mytap/tap.c | |
parent | a67a5dd6f956bf6f62799eafa2c67d008ee15e24 (diff) | |
download | mariadb-git-d5caa00161453eb0cd61e3641d4e6783fb385319.tar.gz |
Improved 'make test-unit' time slightly
storage/maria/unittest/ma_test_loghandler-t.c:
Don't sync during test
storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
Don't sync during test
storage/maria/unittest/ma_test_loghandler_multithread-t.c:
Don't sync during test
unittest/mysys/bitmap-t.c:
Don't test all bit combinations (not needed)
unittest/mysys/thr_template.c:
Remove sleep as old bug should be fixed nowadays
unittest/mysys/waiting_threads-t.c:
Only run test with --big
unittest/mytap/tap.c:
Print total time at end of test.
unittest/unit.pl:
Use TAP::Harness instead of Test::Harness (recommended according to manual)
Add times to tests.
Diffstat (limited to 'unittest/mytap/tap.c')
-rw-r--r-- | unittest/mytap/tap.c | 84 |
1 files changed, 82 insertions, 2 deletions
diff --git a/unittest/mytap/tap.c b/unittest/mytap/tap.c index 1792c82519b..4bb501e54dc 100644 --- a/unittest/mytap/tap.c +++ b/unittest/mytap/tap.c @@ -1,4 +1,5 @@ -/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. + Copyright (c) 2011, Monty Program Ab 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 @@ -27,6 +28,10 @@ #include <string.h> #include <signal.h> +static ulong start_timer(void); +static void end_timer(ulong start_time,char *buff); +static void nice_time(double sec,char *buff,my_bool part_second); + /* Visual Studio 2003 does not know vsnprintf but knows _vsnprintf. We don't put this #define in config-win.h because we prefer @@ -185,6 +190,7 @@ static signal_entry install_signal[]= { }; int skip_big_tests= 1; +ulong start_time; void plan(int count) @@ -192,6 +198,8 @@ plan(int count) char *config= getenv("MYTAP_CONFIG"); size_t i; + start_time= start_timer(); + if (config) skip_big_tests= strcmp(config, "big"); @@ -289,6 +297,7 @@ skip(int how_many, char const *fmt, ...) } } + void todo_start(char const *message, ...) { @@ -304,7 +313,10 @@ todo_end() *g_test.todo = '\0'; } -int exit_status() { +int exit_status() +{ + char buff[60]; + /* If there were no plan, we write one last instead. */ @@ -323,10 +335,78 @@ int exit_status() { diag("Failed %d tests!", g_test.failed); return EXIT_FAILURE; } + end_timer(start_time, buff); + printf("Test took %s\n", buff); + fflush(stdout); return EXIT_SUCCESS; } +#if defined(__WIN__) || defined(__NETWARE__) +#include <time.h> +#else +#include <sys/times.h> +#ifdef _SC_CLK_TCK // For mit-pthreads +#undef CLOCKS_PER_SEC +#define CLOCKS_PER_SEC (sysconf(_SC_CLK_TCK)) +#endif +#endif + +static ulong start_timer(void) +{ +#if defined(__WIN__) || defined(__NETWARE__) + return clock(); +#else + struct tms tms_tmp; + return times(&tms_tmp); +#endif +} + + +/** + Write as many as 52+1 bytes to buff, in the form of a legible + duration of time. + + len("4294967296 days, 23 hours, 59 minutes, 60.00 seconds") -> 52 +*/ + +static void nice_time(double sec,char *buff, my_bool part_second) +{ + ulong tmp; + if (sec >= 3600.0*24) + { + tmp=(ulong) floor(sec/(3600.0*24)); + sec-=3600.0*24*tmp; + buff+= my_sprintf(buff, (buff, "%ld %s", tmp, + tmp > 1 ? " days " : " day ")); + } + if (sec >= 3600.0) + { + tmp=(ulong) floor(sec/3600.0); + sec-=3600.0*tmp; + buff+= my_sprintf(buff, (buff, "%ld %s", tmp, + tmp > 1 ? " hours " : " hour ")); + } + if (sec >= 60.0) + { + tmp=(ulong) floor(sec/60.0); + sec-=60.0*tmp; + buff+= my_sprintf(buff, (buff, "%ld min ", tmp)); + } + if (part_second) + sprintf(buff,"%.2f sec",sec); + else + sprintf(buff,"%d sec",(int) sec); +} + + +static void end_timer(ulong start_time,char *buff) +{ + nice_time((double) (start_timer() - start_time) / + CLOCKS_PER_SEC,buff,1); +} + + /** @mainpage Testing C and C++ using MyTAP |