These tests were being tested against a version of libipt from last year. We just updated libipt to top of tree and many errors broke because the new version of libipt emits more events than the older one, which is fine. `./bin/lldb-dotest -p TestTrace` passes
95 lines
2.7 KiB
Python
95 lines
2.7 KiB
Python
import lldb
|
|
from intelpt_testcase import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
from lldbsuite.test.decorators import *
|
|
|
|
class TestTraceDumpInfo(TraceIntelPTTestCaseBase):
|
|
|
|
def testErrorMessages(self):
|
|
# We first check the output when there are no targets
|
|
self.expect("thread trace dump info",
|
|
substrs=["error: invalid target, create a target using the 'target create' command"],
|
|
error=True)
|
|
|
|
# We now check the output when there's a non-running target
|
|
self.expect("target create " +
|
|
os.path.join(self.getSourceDir(), "intelpt-trace", "a.out"))
|
|
|
|
self.expect("thread trace dump info",
|
|
substrs=["error: Command requires a current process."],
|
|
error=True)
|
|
|
|
# Now we check the output when there's a running target without a trace
|
|
self.expect("b main")
|
|
self.expect("run")
|
|
|
|
self.expect("thread trace dump info",
|
|
substrs=["error: Process is not being traced"],
|
|
error=True)
|
|
|
|
def testDumpRawTraceSize(self):
|
|
self.expect("trace load -v " +
|
|
os.path.join(self.getSourceDir(), "intelpt-trace", "trace.json"),
|
|
substrs=["intel-pt"])
|
|
|
|
self.expect("thread trace dump info",
|
|
substrs=['''thread #1: tid = 3842849
|
|
|
|
Trace technology: intel-pt
|
|
|
|
Total number of trace items: 28
|
|
|
|
Memory usage:
|
|
Raw trace size: 4 KiB
|
|
Total approximate memory usage (excluding raw trace): 0.25 KiB
|
|
Average memory usage per item (excluding raw trace): 9.00 bytes
|
|
|
|
Timing for this thread:
|
|
Decoding instructions: ''', '''
|
|
|
|
Events:
|
|
Number of individual events: 7
|
|
software disabled tracing: 2
|
|
hardware disabled tracing: 4
|
|
trace synchronization point: 1'''],
|
|
patterns=["Decoding instructions: \d.\d\ds"])
|
|
|
|
def testDumpRawTraceSizeJSON(self):
|
|
self.expect("trace load -v " +
|
|
os.path.join(self.getSourceDir(), "intelpt-trace", "trace.json"),
|
|
substrs=["intel-pt"])
|
|
|
|
self.expect("thread trace dump info --json ",
|
|
substrs=['''{
|
|
"traceTechnology": "intel-pt",
|
|
"threadStats": {
|
|
"tid": 3842849,
|
|
"traceItemsCount": 28,
|
|
"memoryUsage": {
|
|
"totalInBytes": "252",
|
|
"avgPerItemInBytes": 9
|
|
},
|
|
"timingInSeconds": {
|
|
"Decoding instructions": 0''', '''
|
|
},
|
|
"events": {
|
|
"totalCount": 7,
|
|
"individualCounts": {
|
|
"software disabled tracing": 2,
|
|
"hardware disabled tracing": 4,
|
|
"trace synchronization point": 1
|
|
}
|
|
},
|
|
"errors": {
|
|
"totalCount": 0,
|
|
"libiptErrors": {},
|
|
"fatalErrors": 0,
|
|
"otherErrors": 0
|
|
}
|
|
},
|
|
"globalStats": {
|
|
"timingInSeconds": {}
|
|
}
|
|
}'''])
|