Merge "Add automatic running of tests on bionic changes."
This commit is contained in:
commit
b332a2c001
4 changed files with 28 additions and 7 deletions
|
@ -2,6 +2,12 @@
|
||||||
"presubmit": [
|
"presubmit": [
|
||||||
{
|
{
|
||||||
"name": "CtsBionicTestCases"
|
"name": "CtsBionicTestCases"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "malloc_debug_system_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "malloc_hooks_system_tests"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,6 +165,7 @@ cc_test {
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
cc_test {
|
cc_test {
|
||||||
name: "malloc_debug_system_tests",
|
name: "malloc_debug_system_tests",
|
||||||
|
isolated: true,
|
||||||
|
|
||||||
include_dirs: [
|
include_dirs: [
|
||||||
"bionic/libc",
|
"bionic/libc",
|
||||||
|
@ -189,4 +190,5 @@ cc_test {
|
||||||
"-Werror",
|
"-Werror",
|
||||||
"-O0",
|
"-O0",
|
||||||
],
|
],
|
||||||
|
test_suites: ["general-tests"],
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,14 @@
|
||||||
|
|
||||||
static constexpr time_t kTimeoutSeconds = 10;
|
static constexpr time_t kTimeoutSeconds = 10;
|
||||||
|
|
||||||
|
extern "C" bool GetInitialArgs(const char*** args, size_t* num_args) {
|
||||||
|
static const char* initial_args[] = {"--slow_threshold_ms=30000",
|
||||||
|
"--deadline_threshold_ms=1200000"};
|
||||||
|
*args = initial_args;
|
||||||
|
*num_args = 2;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static void Exec(const char* test_name, const char* debug_options, pid_t* pid, int exit_code = 0,
|
static void Exec(const char* test_name, const char* debug_options, pid_t* pid, int exit_code = 0,
|
||||||
time_t timeout_seconds = kTimeoutSeconds) {
|
time_t timeout_seconds = kTimeoutSeconds) {
|
||||||
int fds[2];
|
int fds[2];
|
||||||
|
@ -71,6 +79,9 @@ static void Exec(const char* test_name, const char* debug_options, pid_t* pid, i
|
||||||
args.push_back("--gtest_also_run_disabled_tests");
|
args.push_back("--gtest_also_run_disabled_tests");
|
||||||
std::string filter_arg = std::string("--gtest_filter=") + test_name;
|
std::string filter_arg = std::string("--gtest_filter=") + test_name;
|
||||||
args.push_back(filter_arg.c_str());
|
args.push_back(filter_arg.c_str());
|
||||||
|
// Need this because some code depends on exit codes from the test run
|
||||||
|
// but the isolation runner does not support that.
|
||||||
|
args.push_back("--no_isolate");
|
||||||
args.push_back(nullptr);
|
args.push_back(nullptr);
|
||||||
execv(args[0], reinterpret_cast<char* const*>(const_cast<char**>(args.data())));
|
execv(args[0], reinterpret_cast<char* const*>(const_cast<char**>(args.data())));
|
||||||
exit(20);
|
exit(20);
|
||||||
|
@ -179,14 +190,14 @@ static void FindStrings(pid_t pid, std::vector<const char*> match_strings,
|
||||||
time_t timeout_seconds = kTimeoutSeconds) {
|
time_t timeout_seconds = kTimeoutSeconds) {
|
||||||
std::string log_str;
|
std::string log_str;
|
||||||
time_t start = time(nullptr);
|
time_t start = time(nullptr);
|
||||||
bool found_all;
|
std::string missing_match;
|
||||||
while (true) {
|
while (true) {
|
||||||
GetLogStr(pid, &log_str);
|
GetLogStr(pid, &log_str);
|
||||||
found_all = true;
|
missing_match.clear();
|
||||||
// Look for the expected strings.
|
// Look for the expected strings.
|
||||||
for (auto str : match_strings) {
|
for (auto str : match_strings) {
|
||||||
if (log_str.find(str) == std::string::npos) {
|
if (log_str.find(str) == std::string::npos) {
|
||||||
found_all = false;
|
missing_match = str;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,14 +206,14 @@ static void FindStrings(pid_t pid, std::vector<const char*> match_strings,
|
||||||
for (auto str : no_match_strings) {
|
for (auto str : no_match_strings) {
|
||||||
ASSERT_TRUE(log_str.find(str) == std::string::npos) << "Unexpectedly found '" << str << "' in log output:\n" << log_str;
|
ASSERT_TRUE(log_str.find(str) == std::string::npos) << "Unexpectedly found '" << str << "' in log output:\n" << log_str;
|
||||||
}
|
}
|
||||||
if (found_all) {
|
if (missing_match.empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((time(nullptr) - start) > timeout_seconds) {
|
if ((time(nullptr) - start) > timeout_seconds) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ASSERT_TRUE(found_all) << "Didn't find expected log output:\n" << log_str;
|
ASSERT_EQ("", missing_match) << "Didn't find expected log output:\n" << log_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(MallocTests, DISABLED_smoke) {}
|
TEST(MallocTests, DISABLED_smoke) {}
|
||||||
|
@ -413,7 +424,7 @@ static void VerifyLeak(const char* test_prefix) {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
SCOPED_TRACE(testing::Message() << functions[i].name << " expected size " << functions[i].size);
|
SCOPED_TRACE(testing::Message() << functions[i].name << " expected size " << functions[i].size);
|
||||||
std::string test = std::string("MallocTests.DISABLED_") + test_prefix + functions[i].name;
|
std::string test = std::string("MallocTests.DISABLED_") + test_prefix + functions[i].name;
|
||||||
EXPECT_NO_FATAL_FAILURE(Exec(test.c_str(), "verbose backtrace leak_track", &pid));
|
ASSERT_NO_FATAL_FAILURE(Exec(test.c_str(), "verbose backtrace leak_track", &pid));
|
||||||
|
|
||||||
std::string expected_leak = android::base::StringPrintf("leaked block of size %zu at", functions[i].size);
|
std::string expected_leak = android::base::StringPrintf("leaked block of size %zu at", functions[i].size);
|
||||||
EXPECT_NO_FATAL_FAILURE(FindStrings(
|
EXPECT_NO_FATAL_FAILURE(FindStrings(
|
||||||
|
|
|
@ -47,7 +47,8 @@ cc_library {
|
||||||
// Unit Tests
|
// Unit Tests
|
||||||
// ==============================================================
|
// ==============================================================
|
||||||
cc_test {
|
cc_test {
|
||||||
name: "malloc_hooks_unit_tests",
|
name: "malloc_hooks_system_tests",
|
||||||
|
isolated: true,
|
||||||
|
|
||||||
srcs: [
|
srcs: [
|
||||||
"tests/malloc_hooks_tests.cpp",
|
"tests/malloc_hooks_tests.cpp",
|
||||||
|
@ -70,4 +71,5 @@ cc_test {
|
||||||
"-Wall",
|
"-Wall",
|
||||||
"-Werror",
|
"-Werror",
|
||||||
],
|
],
|
||||||
|
test_suites: ["general-tests"],
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue