summaryrefslogtreecommitdiff
path: root/simpleperf/environment_test.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2015-05-04 20:27:57 -0700
committerYabin Cui <yabinc@google.com>2015-05-05 14:23:10 -0700
commit7d59bb49fb47fbc82ef5c77d7aebf7174fd996e1 (patch)
tree8c090275f1d8f88edb80b8f7746751256e1538ba /simpleperf/environment_test.cpp
parent1352b82d4aed6b5dd64cffaa2aefec0cfd45aeaa (diff)
downloadextras-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.cpp37
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));
+}