Loading logd/tests/logd_test.cpp +41 −10 Original line number Diff line number Diff line Loading @@ -415,7 +415,13 @@ TEST(logd, benchmark) { // Introduce some extreme spam for the worst UID filter ASSERT_TRUE(NULL != (fp = popen( "/data/nativetest/liblog-benchmarks/liblog-benchmarks", "/data/nativetest/liblog-benchmarks/liblog-benchmarks" " BM_log_maximum_retry" " BM_log_maximum" " BM_clock_overhead" " BM_log_overhead" " BM_log_latency" " BM_log_delay", "r"))); char buffer[5120]; Loading Loading @@ -581,10 +587,12 @@ void timeout_negative(const char *command) { continue; } // alarm triggers at 50% of the --wrap time out content_wrap = recv(fd, msg_wrap.buf, sizeof(msg_wrap), 0) > 0; alarm_wrap = alarm(5); // alarm triggers at 133% of the --wrap time out content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; if (!content_timeout) { // make sure we hit dumpAndClose content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; Loading Loading @@ -629,11 +637,24 @@ TEST(logd, timeout_start_epoch) { // b/26447386 refined behavior TEST(logd, timeout) { // b/33962045 This test interferes with other log reader tests that // follow because of file descriptor socket persistence in the same // process. So let's fork it to isolate it from giving us pain. pid_t pid = fork(); if (pid) { siginfo_t info = {}; ASSERT_EQ(0, TEMP_FAILURE_RETRY(waitid(P_PID, pid, &info, WEXITED))); ASSERT_EQ(0, info.si_status); return; } log_msg msg_wrap, msg_timeout; bool content_wrap = false, content_timeout = false, written = false; unsigned int alarm_wrap = 0, alarm_timeout = 0; // A few tries to get it right just in case wrap kicks in due to // content providers being active during the test // content providers being active during the test. int i = 5; log_time now(android_log_clockid()); now.tv_sec -= 30; // reach back a moderate period of time Loading @@ -642,7 +663,8 @@ TEST(logd, timeout) { int fd = socket_local_client("logdr", ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_SEQPACKET); ASSERT_LT(0, fd); EXPECT_LT(0, fd); if (fd < 0) _exit(fd); std::string ask = android::base::StringPrintf( "dumpAndClose lids=0,1,2,3,4,5 timeout=6 start=%" Loading @@ -665,10 +687,12 @@ TEST(logd, timeout) { continue; } // alarm triggers at 50% of the --wrap time out content_wrap = recv(fd, msg_wrap.buf, sizeof(msg_wrap), 0) > 0; alarm_wrap = alarm(5); // alarm triggers at 133% of the --wrap time out content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; if (!content_timeout) { // make sure we hit dumpAndClose content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; Loading @@ -692,6 +716,7 @@ TEST(logd, timeout) { if (content_timeout) { log_time msg(msg_timeout.entry.sec, msg_timeout.entry.nsec); EXPECT_FALSE(msg < now); if (msg < now) _exit(-1); if (msg > now) { now = msg; now.tv_sec += 30; Loading Loading @@ -724,6 +749,8 @@ TEST(logd, timeout) { EXPECT_EQ(0U, alarm_wrap); EXPECT_TRUE(content_timeout); EXPECT_NE(0U, alarm_timeout); _exit(!written + content_wrap + alarm_wrap + !content_timeout + !alarm_timeout); } // b/27242723 confirmed fixed Loading Loading @@ -787,12 +814,11 @@ static inline int32_t get4LE(const char* src) void __android_log_btwrite_multiple__helper(int count) { log_time ts(CLOCK_MONOTONIC); struct logger_list *logger_list; ASSERT_TRUE(NULL != (logger_list = android_logger_list_open( LOG_ID_EVENTS, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, 1000, 0))); log_time ts1(CLOCK_MONOTONIC); // We fork to create a unique pid for the submitted log messages // so that we do not collide with the other _multiple_ tests. pid_t pid = fork(); if (pid == 0) { Loading @@ -807,8 +833,13 @@ void __android_log_btwrite_multiple__helper(int count) { _exit(0); } siginfo_t info{}; siginfo_t info = {}; ASSERT_EQ(0, TEMP_FAILURE_RETRY(waitid(P_PID, pid, &info, WEXITED))); ASSERT_EQ(0, info.si_status); struct logger_list *logger_list; ASSERT_TRUE(NULL != (logger_list = android_logger_list_open( LOG_ID_EVENTS, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, 0, pid))); int expected_count = (count < 2) ? count : 2; int expected_chatty_count = (count <= 2) ? 0 : 1; Loading Loading @@ -854,12 +885,12 @@ void __android_log_btwrite_multiple__helper(int count) { } } android_logger_list_close(logger_list); EXPECT_EQ(expected_count, count); EXPECT_EQ(1, second_count); EXPECT_EQ(expected_chatty_count, chatty_count); EXPECT_EQ(expected_expire_count, expire_count); android_logger_list_close(logger_list); } TEST(logd, multiple_test_1) { Loading Loading
logd/tests/logd_test.cpp +41 −10 Original line number Diff line number Diff line Loading @@ -415,7 +415,13 @@ TEST(logd, benchmark) { // Introduce some extreme spam for the worst UID filter ASSERT_TRUE(NULL != (fp = popen( "/data/nativetest/liblog-benchmarks/liblog-benchmarks", "/data/nativetest/liblog-benchmarks/liblog-benchmarks" " BM_log_maximum_retry" " BM_log_maximum" " BM_clock_overhead" " BM_log_overhead" " BM_log_latency" " BM_log_delay", "r"))); char buffer[5120]; Loading Loading @@ -581,10 +587,12 @@ void timeout_negative(const char *command) { continue; } // alarm triggers at 50% of the --wrap time out content_wrap = recv(fd, msg_wrap.buf, sizeof(msg_wrap), 0) > 0; alarm_wrap = alarm(5); // alarm triggers at 133% of the --wrap time out content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; if (!content_timeout) { // make sure we hit dumpAndClose content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; Loading Loading @@ -629,11 +637,24 @@ TEST(logd, timeout_start_epoch) { // b/26447386 refined behavior TEST(logd, timeout) { // b/33962045 This test interferes with other log reader tests that // follow because of file descriptor socket persistence in the same // process. So let's fork it to isolate it from giving us pain. pid_t pid = fork(); if (pid) { siginfo_t info = {}; ASSERT_EQ(0, TEMP_FAILURE_RETRY(waitid(P_PID, pid, &info, WEXITED))); ASSERT_EQ(0, info.si_status); return; } log_msg msg_wrap, msg_timeout; bool content_wrap = false, content_timeout = false, written = false; unsigned int alarm_wrap = 0, alarm_timeout = 0; // A few tries to get it right just in case wrap kicks in due to // content providers being active during the test // content providers being active during the test. int i = 5; log_time now(android_log_clockid()); now.tv_sec -= 30; // reach back a moderate period of time Loading @@ -642,7 +663,8 @@ TEST(logd, timeout) { int fd = socket_local_client("logdr", ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_SEQPACKET); ASSERT_LT(0, fd); EXPECT_LT(0, fd); if (fd < 0) _exit(fd); std::string ask = android::base::StringPrintf( "dumpAndClose lids=0,1,2,3,4,5 timeout=6 start=%" Loading @@ -665,10 +687,12 @@ TEST(logd, timeout) { continue; } // alarm triggers at 50% of the --wrap time out content_wrap = recv(fd, msg_wrap.buf, sizeof(msg_wrap), 0) > 0; alarm_wrap = alarm(5); // alarm triggers at 133% of the --wrap time out content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; if (!content_timeout) { // make sure we hit dumpAndClose content_timeout = recv(fd, msg_timeout.buf, sizeof(msg_timeout), 0) > 0; Loading @@ -692,6 +716,7 @@ TEST(logd, timeout) { if (content_timeout) { log_time msg(msg_timeout.entry.sec, msg_timeout.entry.nsec); EXPECT_FALSE(msg < now); if (msg < now) _exit(-1); if (msg > now) { now = msg; now.tv_sec += 30; Loading Loading @@ -724,6 +749,8 @@ TEST(logd, timeout) { EXPECT_EQ(0U, alarm_wrap); EXPECT_TRUE(content_timeout); EXPECT_NE(0U, alarm_timeout); _exit(!written + content_wrap + alarm_wrap + !content_timeout + !alarm_timeout); } // b/27242723 confirmed fixed Loading Loading @@ -787,12 +814,11 @@ static inline int32_t get4LE(const char* src) void __android_log_btwrite_multiple__helper(int count) { log_time ts(CLOCK_MONOTONIC); struct logger_list *logger_list; ASSERT_TRUE(NULL != (logger_list = android_logger_list_open( LOG_ID_EVENTS, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, 1000, 0))); log_time ts1(CLOCK_MONOTONIC); // We fork to create a unique pid for the submitted log messages // so that we do not collide with the other _multiple_ tests. pid_t pid = fork(); if (pid == 0) { Loading @@ -807,8 +833,13 @@ void __android_log_btwrite_multiple__helper(int count) { _exit(0); } siginfo_t info{}; siginfo_t info = {}; ASSERT_EQ(0, TEMP_FAILURE_RETRY(waitid(P_PID, pid, &info, WEXITED))); ASSERT_EQ(0, info.si_status); struct logger_list *logger_list; ASSERT_TRUE(NULL != (logger_list = android_logger_list_open( LOG_ID_EVENTS, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, 0, pid))); int expected_count = (count < 2) ? count : 2; int expected_chatty_count = (count <= 2) ? 0 : 1; Loading Loading @@ -854,12 +885,12 @@ void __android_log_btwrite_multiple__helper(int count) { } } android_logger_list_close(logger_list); EXPECT_EQ(expected_count, count); EXPECT_EQ(1, second_count); EXPECT_EQ(expected_chatty_count, chatty_count); EXPECT_EQ(expected_expire_count, expire_count); android_logger_list_close(logger_list); } TEST(logd, multiple_test_1) { Loading