diff options
author | Yabin Cui <yabinc@google.com> | 2015-05-04 20:27:57 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2015-05-05 14:23:10 -0700 |
commit | 7d59bb49fb47fbc82ef5c77d7aebf7174fd996e1 (patch) | |
tree | 8c090275f1d8f88edb80b8f7746751256e1538ba /simpleperf/environment_test.cpp | |
parent | 1352b82d4aed6b5dd64cffaa2aefec0cfd45aeaa (diff) | |
download | extras-7d59bb49fb47fbc82ef5c77d7aebf7174fd996e1.tar.gz |
Dump kernel/modules/thread mmap information in `simpleperf record`.
Bug: 19483574
Change-Id: Ia65cb12804a6dffa440501736a6229b2f7248958
Diffstat (limited to 'simpleperf/environment_test.cpp')
-rw-r--r-- | simpleperf/environment_test.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/simpleperf/environment_test.cpp b/simpleperf/environment_test.cpp index 398554d3..3cf81fa6 100644 --- a/simpleperf/environment_test.cpp +++ b/simpleperf/environment_test.cpp @@ -16,6 +16,9 @@ #include <gtest/gtest.h> +#include <functional> +#include <base/file.h> + #include "environment.h" TEST(environment, GetOnlineCpusFromString) { @@ -23,3 +26,37 @@ TEST(environment, GetOnlineCpusFromString) { ASSERT_EQ(GetOnlineCpusFromString("0-2"), std::vector<int>({0, 1, 2})); ASSERT_EQ(GetOnlineCpusFromString("0,2-3"), std::vector<int>({0, 2, 3})); } + +static bool FindKernelSymbol(const KernelSymbol& sym1, const KernelSymbol& sym2) { + return sym1.addr == sym2.addr && sym1.type == sym2.type && strcmp(sym1.name, sym2.name) == 0 && + ((sym1.module == nullptr && sym2.module == nullptr) || + (strcmp(sym1.module, sym2.module) == 0)); +} + +TEST(environment, ProcessKernelSymbols) { + std::string data = + "ffffffffa005c4e4 d __warned.41698 [libsas]\n" + "aaaaaaaaaaaaaaaa T _text\n" + "cccccccccccccccc c ccccc\n"; + const char* tempfile = "tempfile_process_kernel_symbols"; + ASSERT_TRUE(android::base::WriteStringToFile(data, tempfile)); + KernelSymbol expected_symbol; + expected_symbol.addr = 0xffffffffa005c4e4ULL; + expected_symbol.type = 'd'; + expected_symbol.name = "__warned.41698"; + expected_symbol.module = "libsas"; + ASSERT_TRUE(ProcessKernelSymbols( + tempfile, std::bind(&FindKernelSymbol, std::placeholders::_1, expected_symbol))); + + expected_symbol.addr = 0xaaaaaaaaaaaaaaaaULL; + expected_symbol.type = 'T'; + expected_symbol.name = "_text"; + expected_symbol.module = nullptr; + ASSERT_TRUE(ProcessKernelSymbols( + tempfile, std::bind(&FindKernelSymbol, std::placeholders::_1, expected_symbol))); + + expected_symbol.name = "non_existent_symbol"; + ASSERT_FALSE(ProcessKernelSymbols( + tempfile, std::bind(&FindKernelSymbol, std::placeholders::_1, expected_symbol))); + ASSERT_EQ(0, unlink(tempfile)); +} |