blob: 59a0bbcb5370ea0c185896a076f5e3b48eacc98d [file] [edit]
"""
Test lldb-dap terminated event
"""
import dap_server
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
import json
import re
import lldbdap_testcase
from lldbsuite.test import lldbutil
class TestDAP_eventStatistic(lldbdap_testcase.DAPTestCaseBase):
"""
Test case that captures both initialized and terminated events.
META-ONLY: Intended to succeed TestDAP_terminatedEvent.py, but upstream keeps updating that file, so both that and this file will probably exist for a while.
"""
def check_statistics_summary(self, statistics):
self.assertTrue(statistics["totalDebugInfoByteSize"] > 0)
self.assertTrue(statistics["totalDebugInfoEnabled"] > 0)
self.assertTrue(statistics["totalModuleCountHasDebugInfo"] > 0)
self.assertNotIn("modules", statistics.keys())
def check_target_summary(self, statistics):
# lldb-dap debugs one target at a time
target = json.loads(statistics["targets"])[0]
self.assertIn("totalSharedLibraryEventHitCount", target)
@skipIfWindows
@skipIfRemote
def test_terminated_event(self):
"""
Terminated Event
Now contains the statistics of a debug session:
metatdata:
totalDebugInfoByteSize > 0
totalDebugInfoEnabled > 0
totalModuleCountHasDebugInfo > 0
...
"""
program_basename = "a.out.stripped"
program = self.getBuildArtifact(program_basename)
self.build_and_launch(program)
self.continue_to_exit()
statistics = self.dap_server.wait_for_terminated()["body"]["$__lldb_statistics"]
self.check_statistics_summary(statistics)
self.check_target_summary(statistics)
@skipIfWindows
@skipIfRemote
def test_initialized_event(self):
"""
Initialized Event
Now contains the statistics of a debug session:
totalDebugInfoByteSize > 0
totalDebugInfoEnabled > 0
totalModuleCountHasDebugInfo > 0
...
"""
program_basename = "a.out"
program = self.getBuildArtifact(program_basename)
self.build_and_launch(program)
self.dap_server.wait_for_event("initialized")
statistics = self.dap_server.initialized_event["body"]["$__lldb_statistics"]
self.check_statistics_summary(statistics)
self.continue_to_exit()