diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-08-31 01:36:02 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-08-31 00:05:12 +0000 |
commit | 87514b0907dfbb479e2646b5ff951c68babf3417 (patch) | |
tree | 7d7a27afd8b7d79542c285f69be115a1fa6cbb6d /sal/cppunittester/cppunittester.cxx | |
parent | c511b2795dbf47186c0f7d83fe7a4cd737d4d765 (diff) |
log resource usage of unit tests on UNX platforms
Change-Id: I3788eae60f73bc42488bf2e4961922962f7e505b
Reviewed-on: https://gerrit.libreoffice.org/18155
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sal/cppunittester/cppunittester.cxx')
-rw-r--r-- | sal/cppunittester/cppunittester.cxx | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sal/cppunittester/cppunittester.cxx b/sal/cppunittester/cppunittester.cxx index 07c9a2b43e97..79ba18dbb1ab 100644 --- a/sal/cppunittester/cppunittester.cxx +++ b/sal/cppunittester/cppunittester.cxx @@ -21,6 +21,11 @@ #include <windows.h> #endif +#ifdef UNX +#include <sys/time.h> +#include <sys/resource.h> +#endif + #include <cstdlib> #include <iostream> #include <string> @@ -292,11 +297,48 @@ public: } }; +#ifdef UNX + +double get_time(timeval* time) +{ + double nTime = (double)time->tv_sec; + nTime += ((double)time->tv_usec)/1000000.0; + return nTime; +} + +OString generateTestName(const OUString& rPath) +{ + sal_Int32 nPathSep = rPath.lastIndexOf("/"); + OUString aTestName = rPath.copy(nPathSep+1); + return OUStringToOString(aTestName, RTL_TEXTENCODING_UTF8); +} + +void reportResourceUsage(const OUString& rPath) +{ + OUString aFullPath = rPath + OUString(".resource.log"); + rusage resource_usage; + getrusage(RUSAGE_SELF, &resource_usage); + + OString aPath = OUStringToOString(aFullPath, RTL_TEXTENCODING_UTF8); + std::ofstream resource_file(aPath.getStr()); + resource_file << "Name = " << generateTestName(rPath) << std::endl; + double nUserSpace = get_time(&resource_usage.ru_utime); + double nKernelSpace = get_time(&resource_usage.ru_stime); + resource_file << "UserSpace = " << nUserSpace << std::endl; + resource_file << "KernelSpace = " << nKernelSpace << std::endl; +} +#else +void reportResourceUsage(const OUString& /*rPath*/) +{ +} +#endif + } SAL_IMPLEMENT_MAIN() { bool ok = false; + OUString path; try { #ifdef WNT @@ -322,6 +364,12 @@ SAL_IMPLEMENT_MAIN() while (index < rtl_getAppCommandArgCount()) { rtl::OUString arg = getArgument(index); + if (arg == "--target") + { + path = getArgument(++index); + ++index; + continue; + } if ( arg != "--protector" ) { if (testlib.empty()) @@ -383,6 +431,8 @@ SAL_IMPLEMENT_MAIN() SAL_WARN("vcl.app", "Fatal exception: " << e.what()); } + reportResourceUsage(path); + return ok ? EXIT_SUCCESS : EXIT_FAILURE; } |