gdb.perf/: FAIL on Python errors, avoid "ERROR: internal buffer is full"
authorPedro Alves <pedro@palves.net>
Fri, 18 Jun 2021 12:50:45 +0000 (13:50 +0100)
committerPedro Alves <pedro@palves.net>
Tue, 6 Jul 2021 10:51:57 +0000 (11:51 +0100)
commite3e837844a32374a5d787a11ed5e54a856d4d4b0
tree5eab61600a71baef9460045b0f9793354f9e692f
parent0d4e283965dae2c05cf0c85dccea6144a2c6293e
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
gdb/testsuite/gdb.perf/backtrace.exp
gdb/testsuite/gdb.perf/disassemble.exp
gdb/testsuite/gdb.perf/single-step.exp
gdb/testsuite/gdb.perf/skip-command.exp
gdb/testsuite/gdb.perf/skip-prologue.exp
gdb/testsuite/gdb.perf/solib.exp
gdb/testsuite/gdb.perf/template-breakpoints.exp
gdb/testsuite/lib/perftest.exp