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