Files
llvm/lldb/examples/test/usage-lldb-loggings
Raphael Isemann e97b991eef [lldb] Remove LLDB session dir and just store test traces in the respective test build directory
Test runs log some of their output to files inside the LLDB session dir. This
session dir is shared between all tests, so all the tests have to make sure they
choose a unique file name inside that directory. We currently choose by default
`<test-class-name>-<test-method-name>` as the log file name. However, that means
that if not every test class in the test suite has a unique class name, then we
end up with a race condition as two tests will try to write to the same log
file.

I already tried in D83767 changing the format to use the test file basename
instead (which we already require to be unique for some other functionality),
but it seems the code for getting the basename didn't work on Windows.

This patch instead just changes that dotest stores the log files in the build
directory for the current test. We know that directory is unique for this test,
so no need to generate some unique file name now. Also removes all the
environment vars and parameters related to the now unused session dir.

The new log paths now look like this for a failure in 'TestCppOperators`:
```
./lldb-test-build.noindex/lang/cpp/operators/TestCppOperators.test_dwarf/Failure.log
./lldb-test-build.noindex/lang/cpp/operators/TestCppOperators.test_dsym/Failure.log
./lldb-test-build.noindex/lang/cpp/operators/TestCppOperators.test_gmodules/Failure.log
```

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D92498
2020-12-04 11:43:10 +01:00

125 lines
5.5 KiB
Plaintext

#
# The following example shows how to utilize the pre-flight config file to route the lldb gdb-remote log messages
# into individual log destinations.
#
# See also .lldb-loggings in this directory as well as the tmp dir which contains the two log files abridged due
# to their log sizes.
#
[11:31:34] johnny:/Volumes/data/lldb/svn/ToT/test $ ./dotest.py -A x86_64 -v -c ../examples/test/.lldb-loggings functionalities/breakpoint/breakpoint_command
config: {'pre_flight': <function pre_flight at 0x107042140>}
LLDB build dir: /Volumes/data/lldb/svn/ToT/build/Debug
LLDB-165
Path: /Volumes/data/lldb/svn/ToT
URL: https://johnny@llvm.org/svn/llvm-project/lldb/trunk
Repository Root: https://johnny@llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 162231
Node Kind: directory
Schedule: normal
Last Changed Author: johnny
Last Changed Rev: 162228
Last Changed Date: 2012-08-20 14:16:02 -0700 (Mon, 20 Aug 2012)
lldb.pre_flight: def pre_flight(self):
import os
import lldb
import lldbtest
dest = os.path.join("/tmp", "lldb_log-%s-%s-%s.txt" % (self.getArchitecture(), self.getCompiler(), self.id()))
print "\nEnabling lldb logging for test case:", self
print "with log destination:", dest
self.runCmd("log enable -f %s gdb-remote packets process" % dest)
lldb.post_flight: None
Session logs for test failures/errors/unexpected successes will go into directory '2012-08-22-11_36_37'
Command invoked: python ./dotest.py -A x86_64 -v -c ../examples/test/.lldb-loggings functionalities/breakpoint/breakpoint_command
compilers=['clang']
Configuration: arch=x86_64 compiler=clang
----------------------------------------------------------------------
Collected 2 tests
1: test_with_dsym (TestBreakpointCommand.BreakpointCommandTestCase)
Test a sequence of breakpoint command add, list, and delete. ...
Enabling lldb logging for test case: test_with_dsym (TestBreakpointCommand.BreakpointCommandTestCase)
with log destination: /tmp/lldb_log-x86_64-clang-TestBreakpointCommand.BreakpointCommandTestCase.test_with_dsym.txt
ok
2: test_with_dwarf (TestBreakpointCommand.BreakpointCommandTestCase)
Test a sequence of breakpoint command add, list, and delete. ...
Enabling lldb logging for test case: test_with_dwarf (TestBreakpointCommand.BreakpointCommandTestCase)
with log destination: /tmp/lldb_log-x86_64-clang-TestBreakpointCommand.BreakpointCommandTestCase.test_with_dwarf.txt
ok
----------------------------------------------------------------------
Ran 2 tests in 7.826s
OK
[11:36:44] johnny:/Volumes/data/lldb/svn/ToT/test $ ls -l /tmp/lldb_log*
-rw-r----- 1 johnny wheel 614614 Aug 22 11:36 /tmp/lldb_log-x86_64-clang-TestBreakpointCommand.BreakpointCommandTestCase.test_with_dsym.txt
-rw-r----- 1 johnny wheel 614614 Aug 22 11:36 /tmp/lldb_log-x86_64-clang-TestBreakpointCommand.BreakpointCommandTestCase.test_with_dwarf.txt
[11:37:09] johnny:/Volumes/data/lldb/svn/ToT/test $
#
# And this shows the log files go into the session directory.
# Note that the .lldb-loggings file is modified to get the session directory now.
#
[11:37:09] johnny:/Volumes/data/lldb/svn/ToT/test $ ./dotest.py -A x86_64 -v -c ../examples/test/.lldb-loggings functionalities/breakpoint/breakpoint_command
config: {'pre_flight': <function pre_flight at 0x10ca5c1b8>}
LLDB build dir: /Volumes/data/lldb/svn/ToT/build/Debug
LLDB-165
Path: /Volumes/data/lldb/svn/ToT
URL: https://johnny@llvm.org/svn/llvm-project/lldb/trunk
Repository Root: https://johnny@llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 162231
Node Kind: directory
Schedule: normal
Last Changed Author: johnny
Last Changed Rev: 162228
Last Changed Date: 2012-08-20 14:16:02 -0700 (Mon, 20 Aug 2012)
lldb.pre_flight: def pre_flight(self):
import os
import lldb
import lldbtest
dname = os.path.join(os.environ["LLDB_TEST"])
if not os.path.isdir(dname):
os.mkdir(dname)
dest = os.path.join(dname, "lldb_log-%s-%s-%s.txt" % (self.getArchitecture(), self.getCompiler(), self.id()))
print "\nEnabling lldb logging for test case:", self
print "with log destination:", dest
self.runCmd("log enable -f %s gdb-remote packets process" % dest)
lldb.post_flight: None
Session logs for test failures/errors/unexpected successes will go into directory '2012-08-22-13_21_46'
Command invoked: python ./dotest.py -A x86_64 -v -c ../examples/test/.lldb-loggings functionalities/breakpoint/breakpoint_command
compilers=['clang']
Configuration: arch=x86_64 compiler=clang
----------------------------------------------------------------------
Collected 2 tests
1: test_with_dsym (TestBreakpointCommand.BreakpointCommandTestCase)
Test a sequence of breakpoint command add, list, and delete. ...
Enabling lldb logging for test case: test_with_dsym (TestBreakpointCommand.BreakpointCommandTestCase)
with log destination: /Volumes/data/lldb/svn/ToT/test/2012-08-22-13_21_46/lldb_log-x86_64-clang-TestBreakpointCommand.BreakpointCommandTestCase.test_with_dsym.txt
ok
2: test_with_dwarf (TestBreakpointCommand.BreakpointCommandTestCase)
Test a sequence of breakpoint command add, list, and delete. ...
Enabling lldb logging for test case: test_with_dwarf (TestBreakpointCommand.BreakpointCommandTestCase)
with log destination: /Volumes/data/lldb/svn/ToT/test/2012-08-22-13_21_46/lldb_log-x86_64-clang-TestBreakpointCommand.BreakpointCommandTestCase.test_with_dwarf.txt
ok
----------------------------------------------------------------------
Ran 2 tests in 8.575s
OK
[13:21:55] johnny:/Volumes/data/lldb/svn/ToT/test $