| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/debug/proc_maps_linux.h" | 5 #include "base/debug/proc_maps_linux.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/path_service.h" | 7 #include "base/path_service.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" | 9 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 } | 232 } |
| 233 | 233 |
| 234 TEST(ProcMapsTest, ReadProcMapsNonEmptyString) { | 234 TEST(ProcMapsTest, ReadProcMapsNonEmptyString) { |
| 235 std::string old_string("I forgot to clear the string"); | 235 std::string old_string("I forgot to clear the string"); |
| 236 std::string proc_maps(old_string); | 236 std::string proc_maps(old_string); |
| 237 ASSERT_TRUE(ReadProcMaps(&proc_maps)); | 237 ASSERT_TRUE(ReadProcMaps(&proc_maps)); |
| 238 EXPECT_EQ(std::string::npos, proc_maps.find(old_string)); | 238 EXPECT_EQ(std::string::npos, proc_maps.find(old_string)); |
| 239 } | 239 } |
| 240 | 240 |
| 241 TEST(ProcMapsTest, MissingFields) { | 241 TEST(ProcMapsTest, MissingFields) { |
| 242 static const char* kTestCases[] = { | 242 static const char* const kTestCases[] = { |
| 243 "00400000\n", // Missing end + beyond. | 243 "00400000\n", // Missing end + beyond. |
| 244 "00400000-0040b000\n", // Missing perms + beyond. | 244 "00400000-0040b000\n", // Missing perms + beyond. |
| 245 "00400000-0040b000 r-xp\n", // Missing offset + beyond. | 245 "00400000-0040b000 r-xp\n", // Missing offset + beyond. |
| 246 "00400000-0040b000 r-xp 00000000\n", // Missing device + beyond. | 246 "00400000-0040b000 r-xp 00000000\n", // Missing device + beyond. |
| 247 "00400000-0040b000 r-xp 00000000 fc:00\n", // Missing inode + beyond. | 247 "00400000-0040b000 r-xp 00000000 fc:00\n", // Missing inode + beyond. |
| 248 "00400000-0040b000 00000000 fc:00 794418 /bin/cat\n", // Missing perms. | 248 "00400000-0040b000 00000000 fc:00 794418 /bin/cat\n", // Missing perms. |
| 249 "00400000-0040b000 r-xp fc:00 794418 /bin/cat\n", // Missing offset. | 249 "00400000-0040b000 r-xp fc:00 794418 /bin/cat\n", // Missing offset. |
| 250 "00400000-0040b000 r-xp 00000000 fc:00 /bin/cat\n", // Missing inode. | 250 "00400000-0040b000 r-xp 00000000 fc:00 /bin/cat\n", // Missing inode. |
| 251 "00400000 r-xp 00000000 fc:00 794418 /bin/cat\n", // Missing end. | 251 "00400000 r-xp 00000000 fc:00 794418 /bin/cat\n", // Missing end. |
| 252 "-0040b000 r-xp 00000000 fc:00 794418 /bin/cat\n", // Missing start. | 252 "-0040b000 r-xp 00000000 fc:00 794418 /bin/cat\n", // Missing start. |
| 253 "00400000-0040b000 r-xp 00000000 794418 /bin/cat\n", // Missing device. | 253 "00400000-0040b000 r-xp 00000000 794418 /bin/cat\n", // Missing device. |
| 254 }; | 254 }; |
| 255 | 255 |
| 256 for (size_t i = 0; i < arraysize(kTestCases); ++i) { | 256 for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
| 257 SCOPED_TRACE(base::StringPrintf("kTestCases[%zu] = %s", i, kTestCases[i])); | 257 SCOPED_TRACE(base::StringPrintf("kTestCases[%zu] = %s", i, kTestCases[i])); |
| 258 std::vector<MappedMemoryRegion> regions; | 258 std::vector<MappedMemoryRegion> regions; |
| 259 EXPECT_FALSE(ParseProcMaps(kTestCases[i], ®ions)); | 259 EXPECT_FALSE(ParseProcMaps(kTestCases[i], ®ions)); |
| 260 } | 260 } |
| 261 } | 261 } |
| 262 | 262 |
| 263 TEST(ProcMapsTest, InvalidInput) { | 263 TEST(ProcMapsTest, InvalidInput) { |
| 264 static const char* kTestCases[] = { | 264 static const char* const kTestCases[] = { |
| 265 "thisisal-0040b000 rwxp 00000000 fc:00 794418 /bin/cat\n", | 265 "thisisal-0040b000 rwxp 00000000 fc:00 794418 /bin/cat\n", |
| 266 "0040000d-linvalid rwxp 00000000 fc:00 794418 /bin/cat\n", | 266 "0040000d-linvalid rwxp 00000000 fc:00 794418 /bin/cat\n", |
| 267 "00400000-0040b000 inpu 00000000 fc:00 794418 /bin/cat\n", | 267 "00400000-0040b000 inpu 00000000 fc:00 794418 /bin/cat\n", |
| 268 "00400000-0040b000 rwxp tforproc fc:00 794418 /bin/cat\n", | 268 "00400000-0040b000 rwxp tforproc fc:00 794418 /bin/cat\n", |
| 269 "00400000-0040b000 rwxp 00000000 ma:ps 794418 /bin/cat\n", | 269 "00400000-0040b000 rwxp 00000000 ma:ps 794418 /bin/cat\n", |
| 270 "00400000-0040b000 rwxp 00000000 fc:00 parse! /bin/cat\n", | 270 "00400000-0040b000 rwxp 00000000 fc:00 parse! /bin/cat\n", |
| 271 }; | 271 }; |
| 272 | 272 |
| 273 for (size_t i = 0; i < arraysize(kTestCases); ++i) { | 273 for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
| 274 SCOPED_TRACE(base::StringPrintf("kTestCases[%zu] = %s", i, kTestCases[i])); | 274 SCOPED_TRACE(base::StringPrintf("kTestCases[%zu] = %s", i, kTestCases[i])); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 304 EXPECT_EQ(5ULL, regions.size()); | 304 EXPECT_EQ(5ULL, regions.size()); |
| 305 EXPECT_EQ("/bin/cat", regions[0].path); | 305 EXPECT_EQ("/bin/cat", regions[0].path); |
| 306 EXPECT_EQ("/lib/x86_64-linux-gnu/libc-2.15.so", regions[1].path); | 306 EXPECT_EQ("/lib/x86_64-linux-gnu/libc-2.15.so", regions[1].path); |
| 307 EXPECT_EQ("/lib/x86_64-linux-gnu/ld-2.15.so", regions[2].path); | 307 EXPECT_EQ("/lib/x86_64-linux-gnu/ld-2.15.so", regions[2].path); |
| 308 EXPECT_EQ("\"vd so\"", regions[3].path); | 308 EXPECT_EQ("\"vd so\"", regions[3].path); |
| 309 EXPECT_EQ("[vsys call]", regions[4].path); | 309 EXPECT_EQ("[vsys call]", regions[4].path); |
| 310 } | 310 } |
| 311 | 311 |
| 312 } // namespace debug | 312 } // namespace debug |
| 313 } // namespace base | 313 } // namespace base |
| OLD | NEW |