[Lldb-commits] [lldb] r331374 - Fix gdb-remote qMemoryRegionInfo unit tests for xml-enabled builds

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Wed May 2 10:00:34 PDT 2018


Author: labath
Date: Wed May  2 10:00:33 2018
New Revision: 331374

URL: http://llvm.org/viewvc/llvm-project?rev=331374&view=rev
Log:
Fix gdb-remote qMemoryRegionInfo unit tests for xml-enabled builds

In case we are building with xml enabled, the GetMemoryRegionInfo
function will send extra packets to query te extended memory map, which
the tests were not expecting.

Add an expectation for this to the test. Right now, it's just a basic
one which pretends we don't support the extension, however, it would be
also interesting the add a test which verifies the extension-enabled
case.

I also noticed that the test does a pretty lousy job of validating the
returned memory region info, so I add a couple of extra assertions to
improve that.

Modified:
    lldb/trunk/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp

Modified: lldb/trunk/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp?rev=331374&r1=331373&r2=331374&view=diff
==============================================================================
--- lldb/trunk/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp (original)
+++ lldb/trunk/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp Wed May  2 10:00:33 2018
@@ -6,12 +6,10 @@
 // License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
-#include <future>
-
-#include "GDBRemoteTestUtils.h"
-
 #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h"
+#include "GDBRemoteTestUtils.h"
 #include "lldb/Core/ModuleSpec.h"
+#include "lldb/Host/XML.h"
 #include "lldb/Target/MemoryRegionInfo.h"
 #include "lldb/Utility/DataBuffer.h"
 #include "lldb/Utility/StructuredData.h"
@@ -19,6 +17,8 @@
 #include "lldb/lldb-enumerations.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/Testing/Support/Error.h"
+#include "gmock/gmock.h"
+#include <future>
 
 using namespace lldb_private::process_gdb_remote;
 using namespace lldb_private;
@@ -43,10 +43,12 @@ void Handle_QThreadSuffixSupported(MockS
     ASSERT_EQ(PacketResult::Success, server.SendUnimplementedResponse(nullptr));
 }
 
-void HandlePacket(MockServer &server, StringRef expected, StringRef response) {
+void HandlePacket(MockServer &server,
+                  const testing::Matcher<const std::string &> &expected,
+                  StringRef response) {
   StringExtractorGDBRemote request;
   ASSERT_EQ(PacketResult::Success, server.GetPacket(request));
-  ASSERT_EQ(expected, request.GetStringRef());
+  ASSERT_THAT(request.GetStringRef(), expected);
   ASSERT_EQ(PacketResult::Success, server.SendPacket(response));
 }
 
@@ -323,12 +325,22 @@ TEST_F(GDBRemoteCommunicationClientTest,
     return client.GetMemoryRegionInfo(addr, region_info);
   });
 
-  // name is: /foo/bar.so
   HandlePacket(server,
       "qMemoryRegionInfo:a000",
       "start:a000;size:2000;permissions:rx;name:2f666f6f2f6261722e736f;");
+  if (XMLDocument::XMLEnabled()) {
+    // In case we have XML support, this will also do a "qXfer:memory-map".
+    // Preceeded by a query for supported extensions. Pretend we don't support
+    // that.
+    HandlePacket(server, testing::StartsWith("qSupported:"), "");
+  }
   EXPECT_TRUE(result.get().Success());
-
+  EXPECT_EQ(addr, region_info.GetRange().GetRangeBase());
+  EXPECT_EQ(0x2000u, region_info.GetRange().GetByteSize());
+  EXPECT_EQ(MemoryRegionInfo::eYes, region_info.GetReadable());
+  EXPECT_EQ(MemoryRegionInfo::eNo, region_info.GetWritable());
+  EXPECT_EQ(MemoryRegionInfo::eYes, region_info.GetExecutable());
+  EXPECT_EQ("/foo/bar.so", region_info.GetName().GetStringRef());
 }
 
 TEST_F(GDBRemoteCommunicationClientTest, GetMemoryRegionInfoInvalidResponse) {
@@ -339,6 +351,12 @@ TEST_F(GDBRemoteCommunicationClientTest,
   });
 
   HandlePacket(server, "qMemoryRegionInfo:4000", "start:4000;size:0000;");
+  if (XMLDocument::XMLEnabled()) {
+    // In case we have XML support, this will also do a "qXfer:memory-map".
+    // Preceeded by a query for supported extensions. Pretend we don't support
+    // that.
+    HandlePacket(server, testing::StartsWith("qSupported:"), "");
+  }
   EXPECT_FALSE(result.get().Success());
 }
 




More information about the lldb-commits mailing list