Perf test framework
authorYao Qi <yao@codesourcery.com>
Tue, 24 Sep 2013 09:56:26 +0000 (17:56 +0800)
committerYao Qi <yao@codesourcery.com>
Wed, 6 Nov 2013 05:13:15 +0000 (13:13 +0800)
commitf27a1236531a99e083bca63c970c354ee35bd13b
tree8ed1bda128a38f2849cb7a0c26c9aab4dd73d4c4
parent7636ccf9f2517bd3005c983de3c89f4861be04a5
Perf test framework

This patch adds a basic framework to do performance testing for GDB.
perftest.py is about the test case, testresult.py is about test
results, and how are they saved.  reporter.py is about how results
are reported (in what format).  measure.py is about measuring the
execution of tests by a collection of measurements.

In V5:
 - Simplify perftest.exp.

In V4:

 - Rename MeasurementCPUTime to MeasurementCpuTime,
 - Add 'pass' in empty method,
 - Simplify string comparison in perftest.exp.
 - Rename GDB_PERFORMANCE to GDB_PERFTEST_MODE and rename
   GDB_PERFORMANCE_TIMEOUT to GDB_PERFTEST_TIMEOUT.

In V3, there are some changes,

 - Add wall time measurement, cpu time measurement and vmsize
   measurement.
 - Rename SingleStatisticTestCase to TestCaseWithBasicMeasurements,
   which measures cpu time, wall time, and memory (vmsize).
 - GDB_PERFORMANCE=run|compile|both to control the mode of perf
   testing.
 - New GDB_PERFORMANCE_TIMEOUT to specify the timeout.
 - Split proc prepare to proc compile and startup.
 - Disable GC while doing measurements.

In V2, there are several changes to address Doug and Sanimir's
comments.

 - Add copyright header and docstring in perftest/__init__.py
 - Remove config.py.
 - Fix docstring format.
 - Rename classes "SingleVariable" to "SingleStatistic".
 - Don't extend gdb.Function in class TestCase.  Add a new method run
   to run the test case so that we can pass parameters to test.
 - Allow to customize whether to warm up and to append test log.
 - Move time measurement into test harness.  Add a new class
   Measurement for a specific measurement and a new class Measure to
   measure them for a given test case.
 - A new class ResultFactory to create instances of TestResult.
 - New file lib/perftest.exp, which is to do some preparations and
   cleanups to simplify each *.exp file.
 - Skip compilation step if GDB_PERFORMANCE_SKIP_COMPILE is set.

gdb/testsuite/

2013-11-06  Yao Qi  <yao@codesourcery.com>

* lib/perftest.exp: New.
* gdb.perf/lib/perftest/__init__.py: New.
* gdb.perf/lib/perftest/measure.py: New.
* gdb.perf/lib/perftest/perftest.py: New.
* gdb.perf/lib/perftest/reporter.py: New.
* gdb.perf/lib/perftest/testresult.py: New.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.perf/lib/perftest/__init__.py [new file with mode: 0644]
gdb/testsuite/gdb.perf/lib/perftest/measure.py [new file with mode: 0644]
gdb/testsuite/gdb.perf/lib/perftest/perftest.py [new file with mode: 0644]
gdb/testsuite/gdb.perf/lib/perftest/reporter.py [new file with mode: 0644]
gdb/testsuite/gdb.perf/lib/perftest/testresult.py [new file with mode: 0644]
gdb/testsuite/lib/perftest.exp [new file with mode: 0644]