# 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): 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"')