[Lldb-commits] [lldb] c7dddaa - [lldb/Reproducers] Update GDB remote client tests for passive replay

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Tue May 19 13:08:01 PDT 2020


Author: Jonas Devlieghere
Date: 2020-05-19T13:07:50-07:00
New Revision: c7dddaa89ff17d2b191bd70de5a01712590b317d

URL: https://github.com/llvm/llvm-project/commit/c7dddaa89ff17d2b191bd70de5a01712590b317d
DIFF: https://github.com/llvm/llvm-project/commit/c7dddaa89ff17d2b191bd70de5a01712590b317d.diff

LOG: [lldb/Reproducers] Update GDB remote client tests for passive replay

Tests that check the state of the server don't work when replayed
because the replay server replies to requests.

Added: 
    

Modified: 
    lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py
    lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py
    lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py
index 0fe3d6290f42..053183b5b5b7 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py
@@ -11,6 +11,7 @@ class gPacketResponder(MockGDBServerResponder):
         def readRegisters(self):
             return '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
 
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_connect(self):
         """Test connecting to a remote gdb server"""
         target = self.createTarget("a.yaml")
@@ -68,11 +69,12 @@ def A(self, packet):
                 None, 0, True, error)
         self.assertEquals("'A' packet returned an error: 71", error.GetCString())
 
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_read_registers_using_g_packets(self):
         """Test reading registers using 'g' packets (default behavior)"""
         self.dbg.HandleCommand(
                 "settings set plugin.process.gdb-remote.use-g-packet-for-reading true")
-        self.addTearDownHook(lambda: 
+        self.addTearDownHook(lambda:
                 self.runCmd("settings set plugin.process.gdb-remote.use-g-packet-for-reading false"))
         self.server.responder = self.gPacketResponder()
         target = self.createTarget("a.yaml")
@@ -85,6 +87,7 @@ def test_read_registers_using_g_packets(self):
         self.assertEquals(
                 0, len([p for p in self.server.responder.packetLog if p.startswith("p")]))
 
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_read_registers_using_p_packets(self):
         """Test reading registers using 'p' packets"""
         self.dbg.HandleCommand(
@@ -97,6 +100,7 @@ def test_read_registers_using_p_packets(self):
         self.assertGreater(
                 len([p for p in self.server.responder.packetLog if p.startswith("p")]), 0)
 
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_write_registers_using_P_packets(self):
         """Test writing registers using 'P' packets (default behavior)"""
         self.server.responder = self.gPacketResponder()
@@ -109,6 +113,7 @@ def test_write_registers_using_P_packets(self):
         self.assertGreater(
                 len([p for p in self.server.responder.packetLog if p.startswith("P")]), 0)
 
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_write_registers_using_G_packets(self):
         """Test writing registers using 'G' packets"""
 

diff  --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py
index 59a11d45737c..f8cff3900f4b 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteLoad.py
@@ -17,6 +17,7 @@ def test_module_load_address(self):
         self.assertTrue(address.IsValid())
         self.assertEqual(".data", address.GetSection().GetName())
 
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_ram_load(self):
         """Test loading an object file to a target's ram"""
         target = self.createTarget("a.yaml")
@@ -28,6 +29,7 @@ def test_ram_load(self):
                 ])
 
     @skipIfXmlSupportMissing
+    @skipIfReproducer # Packet log is not populated during replay.
     def test_flash_load(self):
         """Test loading an object file to a target's flash memory"""
 

diff  --git a/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py b/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py
index f0113fd9908b..754ed44ce8d8 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestJLink6Armv7RegisterDefinition.py
@@ -126,7 +126,7 @@ def readRegisters(self):
             ## the J-Link accepts a register write packet with just the GPRs
             ## defined.
             def writeRegisters(self, registers_hex):
-                # Check that lldb returns the full 704 hex-byte register context, 
+                # Check that lldb returns the full 704 hex-byte register context,
                 # or the 136 hex-byte general purpose register reg ctx.
                 if len(registers_hex) != 704 and len(register_hex) != 136:
                     return "E06"
@@ -141,7 +141,7 @@ def haltReason(self):
 
             def qfThreadInfo(self):
                 return "mdead"
-            
+
             def qC(self):
                 return ""
 
@@ -184,13 +184,15 @@ def QListThreadsInStopReply(self):
         err = msp_valobj.GetError()
         self.assertTrue(err.Fail(), "lldb should not be able to fetch the msp register")
 
-        val = b'\x11\x22\x33\x44'
-        error = lldb.SBError()
-        data = lldb.SBData()
-        data.SetData(error, val, lldb.eByteOrderBig, 4)
-        self.assertEqual(r1_valobj.SetData(data, error), True)
-        self.assertTrue(error.Success())
-
-        r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1")
-        self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344)
+        # Reproducers don't support SetData (yet) because it takes a void*.
+        if not configuration.is_reproducer():
+          val = b'\x11\x22\x33\x44'
+          error = lldb.SBError()
+          data = lldb.SBData()
+          data.SetData(error, val, lldb.eByteOrderBig, 4)
+          self.assertEqual(r1_valobj.SetData(data, error), True)
+          self.assertTrue(error.Success())
+
+          r1_valobj = process.GetThreadAtIndex(0).GetFrameAtIndex(0).FindRegister("r1")
+          self.assertEqual(r1_valobj.GetValueAsUnsigned(), 0x11223344)
 


        


More information about the lldb-commits mailing list