xref: /llvm-project/lldb/test/API/functionalities/stats_api/TestStatisticsAPI.py (revision 3cc37622921f39e4bdad7a37b7199defa58a213a)
1# Test the SBAPI for GetStatistics()
2
3import json
4import lldb
5from lldbsuite.test.decorators import *
6from lldbsuite.test.lldbtest import *
7from lldbsuite.test import lldbutil
8
9
10class TestStatsAPI(TestBase):
11    mydir = TestBase.compute_mydir(__file__)
12
13    def test_stats_api(self):
14        self.build()
15        exe = self.getBuildArtifact("a.out")
16        target = self.dbg.CreateTarget(exe)
17
18        # Test enabling/disabling stats
19        self.assertFalse(target.GetCollectingStats())
20        target.SetCollectingStats(True)
21        self.assertTrue(target.GetCollectingStats())
22        target.SetCollectingStats(False)
23        self.assertFalse(target.GetCollectingStats())
24
25        # Test the function to get the statistics in JSON'ish.
26        stats = target.GetStatistics()
27        stream = lldb.SBStream()
28        res = stats.GetAsJSON(stream)
29        stats_json = sorted(json.loads(stream.GetData()))
30        self.assertEqual(len(stats_json), 4)
31        self.assertIn("Number of expr evaluation failures", stats_json)
32        self.assertIn("Number of expr evaluation successes", stats_json)
33        self.assertIn("Number of frame var failures", stats_json)
34        self.assertIn("Number of frame var successes", stats_json)
35