First batch of query/multi-response gdb remote protocol tests (qRegisterInfo query/response the first usage thereof) went into TOT here:
tfiala-macbookpro:lldb tfiala$ svn commit Sending test/tools/lldb-gdbserver/TestLldbGdbServer.py Sending test/tools/lldb-gdbserver/lldbgdbserverutils.py Sending test/tools/lldb-gdbserver/main.cpp Transmitting file data ... Committed revision 209170 On Mon, May 19, 2014 at 1:45 PM, Todd Fiala <[email protected]> wrote: > Yep, going to do that :-) > > Almost done. > > > On Mon, May 19, 2014 at 1:29 PM, Greg Clayton <[email protected]> wrote: > >> >> > On May 19, 2014, at 11:14 AM, Todd Fiala <[email protected]> wrote: >> > >> > Totally agree. >> > >> > I'm actually working on a change to the gdbremote framework test >> expectations as we speak (well, I pushed the warning fix on the stack, >> about ready with that now). The change to the gdb remote scripting >> framework will allow a type of expectation that does iteration, for things >> like qRegisterInfo and qfThreadInfo/qnThreadInfo, collecting results that >> can later be checked against. >> > >> > I planned on adding checks for things over the aggregate set like: >> > * at least some register classes exist >> > * at least the generic registers (or some subset of them) are present, >> > etc. >> > >> > I should have that in this afternoon. >> >> Hopefully it will convert all "<key>:<value>;" items into a python >> dictionary, and all collections (like multiple qRegisterInfo calls) into >> arrays of dictionaries? >> >> > >> > -Todd >> > >> > >> > On Mon, May 19, 2014 at 11:10 AM, Greg Clayton <[email protected]> >> wrote: >> > You might also want to check if people have at least defined the >> generic register values for "pc", "sp", "fp" as we rely on these for some >> things in the debugger. >> > >> > > On May 18, 2014, at 11:11 PM, Todd Fiala <[email protected]> >> wrote: >> > > >> > > 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() >> > > >> > > >> > > _______________________________________________ >> > > lldb-commits mailing list >> > > [email protected] >> > > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits >> > >> > >> > >> > >> > -- >> > -Todd >> >> _______________________________________________ >> lldb-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits >> > > > > -- > Todd Fiala | Software Engineer | [email protected] | 650-943-3180 > -- -Todd
_______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
