Skip to content

Commit 9ad0631

Browse files
committed
Add tests
1 parent 8797945 commit 9ad0631

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,56 @@ def test_save_linux_mini_dump(self):
199199
os.unlink(core_sb_dirty)
200200
if os.path.isfile(core_sb_full):
201201
os.unlink(core_sb_full)
202+
203+
204+
@skipUnlessArch("x86_64")
205+
@skipUnlessPlatform(["linux"])
206+
def test_save_linux_mini_dump_thread_options(self):
207+
"""Test that we can save a Linux mini dump
208+
with a subset of threads"""
209+
210+
self.build()
211+
exe = self.getBuildArtifact("a.out")
212+
thread_subset_dmp = self.getBuildArtifact("core.thread.subset.dmp")
213+
try:
214+
target = self.dbg.CreateTarget(exe)
215+
process = target.LaunchSimple(
216+
None, None, self.get_process_working_directory()
217+
)
218+
self.assertState(process.GetState(), lldb.eStateStopped)
219+
220+
thread_to_include = process.GetThreadAtIndex(0).GetThreadID()
221+
options = lldb.SBSaveCoreOptions()
222+
thread_subset_spec = lldb.SBFileSpec(thread_subset_dmp)
223+
options.AddThread(thread_to_include)
224+
options.SetOutputFile(thread_subset_spec)
225+
options.SetPluginName("minidump")
226+
options.SetStyle(lldb.eSaveCoreStackOnly)
227+
error = process.SaveCore(options)
228+
self.assertTrue(error.Success())
229+
230+
core_target = self.dbg.CreateTarget(None)
231+
core_process = core_target.LoadCore(thread_subset_dmp)
232+
233+
self.assertTrue(core_process, PROCESS_IS_VALID)
234+
self.assertEqual(core_process.GetNumThreads(), 1
235+
)
236+
saved_thread = core_process.GetThreadAtIndex(0)
237+
expected_thread = process.GetThreadAtIndex(0)
238+
self.assertEqual(expected_thread.GetThreadID(), saved_thread.GetThreadID())
239+
expected_sp = expected_thread.GetFrameAtIndex(0).GetSP()
240+
saved_sp = saved_thread.GetFrameAtIndex(0).GetSP()
241+
self.assertEqual(expected_sp, saved_sp)
242+
expected_region = lldb.SBMemoryRegionInfo()
243+
saved_region = lldb.SBMemoryRegionInfo()
244+
error = core_process.GetMemoryRegionInfo(saved_sp, saved_region)
245+
self.assertTrue(error.Success(), error.GetCString())
246+
error = process.GetMemoryRegionInfo(expected_sp, expected_region)
247+
self.assertTrue(error.Success(), error.GetCString())
248+
self.assertEqual(expected_region.GetRegionBase(), saved_region.GetRegionBase())
249+
self.assertEqual(expected_region.GetRegionEnd(), saved_region.GetRegionEnd())
250+
251+
finally:
252+
self.assertTrue(self.dbg.DeleteTarget(target))
253+
if os.path.isfile(thread_subset_dmp):
254+
os.unlink(thread_subset_dmp)

lldb/test/API/python_api/sbsavecoreoptions/TestSBSaveCoreOptions.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,14 @@ def test_default_corestyle_behavior(self):
2626
"""Test that the default core style is unspecified."""
2727
options = lldb.SBSaveCoreOptions()
2828
self.assertEqual(options.GetStyle(), lldb.eSaveCoreUnspecified)
29+
30+
def test_adding_and_removing_thread(self):
31+
"""Test adding and removing a thread from save core options."""
32+
options = lldb.SBSaveCoreOptions()
33+
options.AddThread(1)
34+
removed_success = options.RemoveThreadID(1)
35+
self.assertTrue(removed_success)
36+
self.assertEqual(options.GetNumThreads(), 0)
37+
error = lldb.SBError()
38+
options.GetThreadAtIndex(0, error)
39+
self.assertTrue(error.Fail())

0 commit comments

Comments
 (0)