summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-10-29 11:51:49 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2014-10-29 17:41:54 +0100
commite4e7f9d88e05fa610a72245c40f4e47f85db61ff (patch)
treed28891fdc5bb13c94b51e315e15db319a44b0a8a /test
parentd8bc093dd07ceba42c9d722e7ccca4caedbd91e4 (diff)
Improve framework for callgrind performance unit tests
Do not abort in tests which take longer then before. Since 4f5f6d2444a24138c3d3d378771f87cb06427195 we have nice tool to collect callgrind results, store them.. Also, make it not necessary to duplicate anything. Any test can be turned into a performance test by using callgrindStart/callgrindDump. You only need to duplicate the makefile name in gb_Module_add_perfcheck_targets. So, if the test is run as part of 'perfcheck', it runs under callgrind, otherwise it behaves like a regular unit test. Change-Id: I7acbb855b1823c9a32ba126abb57dccc767ca239
Diffstat (limited to 'test')
-rw-r--r--test/Library_test.mk2
-rw-r--r--test/source/callgrind.cxx33
2 files changed, 35 insertions, 0 deletions
diff --git a/test/Library_test.mk b/test/Library_test.mk
index 2c8d854417a2..df7bfd210a0a 100644
--- a/test/Library_test.mk
+++ b/test/Library_test.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_Library_use_externals,test,\
boost_headers \
cppunit \
libxml2 \
+ valgrind \
))
$(eval $(call gb_Library_use_libraries,test,\
@@ -40,6 +41,7 @@ $(eval $(call gb_Library_use_libraries,test,\
$(eval $(call gb_Library_add_exception_objects,test,\
test/source/bootstrapfixture \
test/source/diff/diff \
+ test/source/callgrind \
test/source/xmltesttools \
test/source/htmltesttools \
test/source/mtfxmldump \
diff --git a/test/source/callgrind.cxx b/test/source/callgrind.cxx
new file mode 100644
index 000000000000..d5e864aa8e39
--- /dev/null
+++ b/test/source/callgrind.cxx
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <test/callgrind.hxx>
+
+#ifdef HAVE_VALGRIND_HEADERS
+#include <valgrind/callgrind.h>
+#else
+#define CALLGRIND_START_INSTRUMENTATION
+#define CALLGRIND_ZERO_STATS
+#define CALLGRIND_STOP_INSTRUMENTATION
+#define CALLGRIND_DUMP_STATS_AT(name) (void)name;
+#endif
+
+void callgrindStart()
+{
+ CALLGRIND_ZERO_STATS;
+ CALLGRIND_START_INSTRUMENTATION;
+};
+
+void callgrindDump(const char* name)
+{
+ CALLGRIND_STOP_INSTRUMENTATION;
+ CALLGRIND_DUMP_STATS_AT(name);
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */