Files
clang-p2996/lldb/test/API/functionalities/stats_api/TestStatisticsAPI.py
Greg Clayton c571988e9d Add modules stats into the "statistics dump" command.
The new module stats adds the ability to measure the time it takes to parse and index the symbol tables for each module, and reports modules statistics in the output of "statistics dump" along with the path, UUID and triple of the module. The time it takes to parse and index the symbol tables are also aggregated into new top level key/value pairs at the target level.

Differential Revision: https://reviews.llvm.org/D112279
2021-10-25 11:50:02 -07:00

51 lines
2.2 KiB
Python

# Test the SBAPI for GetStatistics()
import json
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestStatsAPI(TestBase):
mydir = TestBase.compute_mydir(__file__)
NO_DEBUG_INFO_TESTCASE = True
def test_stats_api(self):
self.build()
exe = self.getBuildArtifact("a.out")
target = self.dbg.CreateTarget(exe)
# Test enabling/disabling stats
self.assertFalse(target.GetCollectingStats())
target.SetCollectingStats(True)
self.assertTrue(target.GetCollectingStats())
target.SetCollectingStats(False)
self.assertFalse(target.GetCollectingStats())
# Test the function to get the statistics in JSON'ish.
stats = target.GetStatistics()
stream = lldb.SBStream()
res = stats.GetAsJSON(stream)
debug_stats = json.loads(stream.GetData())
self.assertEqual('targets' in debug_stats, True,
'Make sure the "targets" key in in target.GetStatistics()')
self.assertEqual('modules' in debug_stats, True,
'Make sure the "modules" key in in target.GetStatistics()')
stats_json = debug_stats['targets'][0]
self.assertEqual('expressionEvaluation' in stats_json, True,
'Make sure the "expressionEvaluation" key in in target.GetStatistics()["targets"][0]')
self.assertEqual('frameVariable' in stats_json, True,
'Make sure the "frameVariable" key in in target.GetStatistics()["targets"][0]')
expressionEvaluation = stats_json['expressionEvaluation']
self.assertEqual('successes' in expressionEvaluation, True,
'Make sure the "successes" key in in "expressionEvaluation" dictionary"')
self.assertEqual('failures' in expressionEvaluation, True,
'Make sure the "failures" key in in "expressionEvaluation" dictionary"')
frameVariable = stats_json['frameVariable']
self.assertEqual('successes' in frameVariable, True,
'Make sure the "successes" key in in "frameVariable" dictionary"')
self.assertEqual('failures' in frameVariable, True,
'Make sure the "failures" key in in "frameVariable" dictionary"')