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