gdb.perf/: FAIL on Python errors, avoid "ERROR: internal buffer is full"
Currently, if you run make check-perf on a system with Python 3.8,
tests seen to PASS, but they actually test a lot less than intended,
due to:
PerfTest::assemble, run ...
python BackTrace(64).run()
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/pedro/rocm/gdb/src/gdb/testsuite/gdb.perf/lib/perftest/perftest.py", line 65, in run
self.execute_test()
File "<string>", line 49, in execute_test
File "/home/pedro/rocm/gdb/src/gdb/testsuite/gdb.perf/lib/perftest/measure.py", line 45, in measure
m.start(id)
File "/home/pedro/rocm/gdb/src/gdb/testsuite/gdb.perf/lib/perftest/measure.py", line 102, in start
self.start_time = time.clock()
AttributeError: module 'time' has no attribute 'clock'
Error while executing Python code.
(gdb) PASS: gdb.perf/backtrace.exp: python BackTrace(64).run()
And then, after fixing the above Python compatibility issues (which
will be a separate patch), I get 86 instances of overflowing expect's
buffer, like:
ERROR: internal buffer is full.
UNRESOLVED: gdb.perf/single-step.exp: python SingleStep(1000).run()
This patch fixes both problems by adding & using a gdb_test_python_run
routine that:
- checks for Python errors
- consumes output line by line
gdb/testsuite/ChangeLog:
yyyy-mm-dd Pedro Alves <pedro@palves.net>
* gdb.perf/backtrace.exp: Use gdb_test_python_run.
* gdb.perf/disassemble.exp: Use gdb_test_python_run.
* gdb.perf/single-step.exp: Use gdb_test_python_run.
* gdb.perf/skip-command.exp: Use gdb_test_python_run.
* gdb.perf/skip-prologue.exp: Use gdb_test_python_run.
* gdb.perf/solib.exp: Use gdb_test_python_run.
* gdb.perf/template-breakpoints.exp: Use gdb_test_python_run.
* lib/perftest.exp (gdb_test_python_run): New.
Change-Id: I007af36f164b3f4cda41033616eaaa4e268dfd2f