[Lldb-commits] [lldb] r209109 - Added gdb remote test for one valid qRegisterInfo result.
Todd Fiala
todd.fiala at gmail.com
Sun May 18 23:11:41 PDT 2014
Author: tfiala
Date: Mon May 19 01:11:41 2014
New Revision: 209109
URL: http://llvm.org/viewvc/llvm-project?rev=209109&view=rev
Log:
Added gdb remote test for one valid qRegisterInfo result.
Checks that at at least qRegisterInfo0 responds with a valid
register info reply packet. The packet is parsed and validates
that all keys come from the documented set of valid keys. It
then validates that a minimum set of expected keys
are present in the returned packet.
This test is set to pass on debugserver and fail on llgs TOT.
Modified:
lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py
Modified: lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py?rev=209109&r1=209108&r2=209109&view=diff
==============================================================================
--- lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py (original)
+++ lldb/trunk/test/tools/lldb-gdbserver/TestLldbGdbServer.py Mon May 19 01:11:41 2014
@@ -134,6 +134,40 @@ class LldbGdbServerTestCase(TestBase):
def expect_gdbremote_sequence(self):
return expect_lldb_gdbserver_replay(self, self.sock, self.test_sequence, self._TIMEOUT_SECONDS, self.logger)
+ _KNOWN_REGINFO_KEYS = [
+ "name",
+ "alt-name",
+ "bitsize",
+ "offset",
+ "encoding",
+ "format",
+ "set",
+ "gcc",
+ "dwarf",
+ "generic",
+ "container-regs",
+ "invalidate-regs"
+ ]
+
+ def assert_valid_reg_info_packet(self, reginfo_packet):
+ keyval_pairs = reginfo_packet.split(";")
+ self.assertTrue(len(keyval_pairs) >= 5)
+
+ values = {}
+ for kv in keyval_pairs:
+ (key, val) = kv.split(':')
+ values[key] = val
+ # Ensure key is something we expect.
+ self.assertTrue(key in self._KNOWN_REGINFO_KEYS)
+
+ # Check the bare-minimum expected set of register info keys.
+ self.assertTrue("name" in values)
+ self.assertTrue("bitsize" in values)
+ self.assertTrue("offset" in values)
+ self.assertTrue("encoding" in values)
+ self.assertTrue("format" in values)
+
+
@debugserver_test
def test_exe_starts_debugserver(self):
self.init_debugserver_test()
@@ -522,5 +556,41 @@ class LldbGdbServerTestCase(TestBase):
self.buildDwarf()
self.attach_commandline_kill_after_initial_stop()
+ def qRegisterInfo_returns_one_valid_result(self):
+ server = self.start_server()
+ self.assertIsNotNone(server)
+
+ # Build launch args
+ launch_args = [os.path.abspath('a.out')]
+
+ # Build the expected protocol stream
+ self.add_no_ack_remote_stream()
+ self.add_verified_launch_packets(launch_args)
+ self.test_sequence.add_log_lines(
+ ["read packet: $qRegisterInfo0#00",
+ { "direction":"send", "regex":r"^\$(.+);#\d{2}", "capture":{1:"reginfo_0"} }],
+ True)
+
+ # Run the stream
+ context = self.expect_gdbremote_sequence()
+ self.assertIsNotNone(context)
+ self.assertIsNotNone(context.get("reginfo_0"))
+ self.assert_valid_reg_info_packet(context.get("reginfo_0"))
+
+ @debugserver_test
+ @dsym_test
+ def test_qRegisterInfo_returns_one_valid_result_debugserver_dsym(self):
+ self.init_debugserver_test()
+ self.buildDsym()
+ self.qRegisterInfo_returns_one_valid_result()
+
+ @llgs_test
+ @dwarf_test
+ @unittest2.expectedFailure()
+ def test_qRegisterInfo_returns_one_valid_result_llgs_dwarf(self):
+ self.init_llgs_test()
+ self.buildDwarf()
+ self.qRegisterInfo_returns_one_valid_result()
+
if __name__ == '__main__':
unittest2.main()
More information about the lldb-commits
mailing list