mirror of
https://github.com/intel/llvm.git
synced 2026-01-20 01:58:44 +08:00
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
125 lines
5.5 KiB
Plaintext
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 $
|