X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=simpleperf%2Fenvironment_test.cpp;h=6bca7b8d7cbb6e2167240c29f9c7cf02129c9253;hb=cb6b387ada3637832e188b63c811a2c298474140;hp=3cf81fa637a6e5342ce4d47a4c8d36fe6af10c21;hpb=c5677744a74acb99bf9e64bbab31bf3512d4b234;p=android-x86%2Fsystem-extras.git diff --git a/simpleperf/environment_test.cpp b/simpleperf/environment_test.cpp index 3cf81fa6..6bca7b8d 100644 --- a/simpleperf/environment_test.cpp +++ b/simpleperf/environment_test.cpp @@ -17,20 +17,33 @@ #include #include -#include +#include +#include #include "environment.h" -TEST(environment, GetOnlineCpusFromString) { - ASSERT_EQ(GetOnlineCpusFromString(""), std::vector()); - ASSERT_EQ(GetOnlineCpusFromString("0-2"), std::vector({0, 1, 2})); - ASSERT_EQ(GetOnlineCpusFromString("0,2-3"), std::vector({0, 2, 3})); +TEST(environment, GetCpusFromString) { + ASSERT_EQ(GetCpusFromString(""), std::vector()); + ASSERT_EQ(GetCpusFromString("0-2"), std::vector({0, 1, 2})); + ASSERT_EQ(GetCpusFromString("0,2-3"), std::vector({0, 2, 3})); + ASSERT_EQ(GetCpusFromString("1,0-3,3,4"), std::vector({0, 1, 2, 3, 4})); } -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)); +static bool ModulesMatch(const char* p, const char* q) { + if (p == nullptr && q == nullptr) { + return true; + } + if (p != nullptr && q != nullptr) { + return strcmp(p, q) == 0; + } + return false; +} + +static bool KernelSymbolsMatch(const KernelSymbol& sym1, const KernelSymbol& sym2) { + return sym1.addr == sym2.addr && + sym1.type == sym2.type && + strcmp(sym1.name, sym2.name) == 0 && + ModulesMatch(sym1.module, sym2.module); } TEST(environment, ProcessKernelSymbols) { @@ -38,25 +51,24 @@ TEST(environment, ProcessKernelSymbols) { "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)); + TemporaryFile tempfile; + ASSERT_TRUE(android::base::WriteStringToFile(data, tempfile.path)); 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))); + tempfile.path, std::bind(&KernelSymbolsMatch, 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))); + tempfile.path, std::bind(&KernelSymbolsMatch, 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)); + tempfile.path, std::bind(&KernelSymbolsMatch, std::placeholders::_1, expected_symbol))); }