summaryrefslogtreecommitdiff
path: root/simpleperf/RecordFilter_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'simpleperf/RecordFilter_test.cpp')
-rw-r--r--simpleperf/RecordFilter_test.cpp127
1 files changed, 5 insertions, 122 deletions
diff --git a/simpleperf/RecordFilter_test.cpp b/simpleperf/RecordFilter_test.cpp
index 3099e452..b131ed9b 100644
--- a/simpleperf/RecordFilter_test.cpp
+++ b/simpleperf/RecordFilter_test.cpp
@@ -34,7 +34,7 @@ class RecordFilterTest : public ::testing::Test {
void SetUp() override {
const EventType* event_type = FindEventTypeByName("cpu-clock");
attr = CreateDefaultPerfEventAttr(*event_type);
- record.reset(new SampleRecord(attr, 0, 0, 0, 0, 0, 0, 0, {}, {}, {}, 0));
+ record.reset(new SampleRecord(attr, 0, 0, 0, 0, 0, 0, 0, {}, {}, 0));
}
SampleRecord* GetRecord(uint32_t pid, uint32_t tid) {
@@ -43,11 +43,6 @@ class RecordFilterTest : public ::testing::Test {
return record.get();
}
- bool SetFilterData(const std::string& data) {
- TemporaryFile tmpfile;
- return android::base::WriteStringToFd(data, tmpfile.fd) && filter.SetFilterFile(tmpfile.path);
- }
-
ThreadTree thread_tree;
perf_event_attr attr;
RecordFilter filter;
@@ -88,7 +83,7 @@ TEST_F(RecordFilterTest, exclude_thread_name_regex) {
TEST_F(RecordFilterTest, exclude_uid) {
pid_t pid = getpid();
- std::optional<uint32_t> uid = GetProcessUid(pid);
+ std::optional<uid_t> uid = GetProcessUid(pid);
ASSERT_TRUE(uid.has_value());
filter.AddUids({uid.value()}, true);
ASSERT_FALSE(filter.Check(GetRecord(pid, pid)));
@@ -126,7 +121,7 @@ TEST_F(RecordFilterTest, include_thread_name_regex) {
TEST_F(RecordFilterTest, include_uid) {
pid_t pid = getpid();
- std::optional<uint32_t> uid = GetProcessUid(pid);
+ std::optional<uid_t> uid = GetProcessUid(pid);
ASSERT_TRUE(uid.has_value());
filter.AddUids({uid.value()}, false);
ASSERT_TRUE(filter.Check(GetRecord(pid, pid)));
@@ -134,118 +129,6 @@ TEST_F(RecordFilterTest, include_uid) {
ASSERT_FALSE(filter.Check(GetRecord(pid_not_exist, pid_not_exist)));
}
-TEST_F(RecordFilterTest, global_time_filter) {
- ASSERT_TRUE(
- SetFilterData("GLOBAL_BEGIN 1000\n"
- "GLOBAL_END 2000\n"
- "GLOBAL_BEGIN 3000\n"
- "GLOBAL_END 4000"));
- SampleRecord* r = GetRecord(1, 1);
- r->time_data.time = 0;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 999;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 1000;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 1001;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 1999;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 2000;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 2001;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 3000;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 4000;
- ASSERT_FALSE(filter.Check(r));
-}
-
-TEST_F(RecordFilterTest, process_time_filter) {
- ASSERT_TRUE(
- SetFilterData("PROCESS_BEGIN 1 1000\n"
- "PROCESS_END 1 2000"));
- SampleRecord* r = GetRecord(1, 1);
- r->time_data.time = 0;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 999;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 1000;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 1001;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 1999;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 2000;
- ASSERT_FALSE(filter.Check(r));
- // When process time filters are used, not mentioned processes should be filtered.
- r->tid_data.pid = 2;
- r->time_data.time = 1000;
- ASSERT_FALSE(filter.Check(r));
-}
-
-TEST_F(RecordFilterTest, thread_time_filter) {
- ASSERT_TRUE(
- SetFilterData("THREAD_BEGIN 1 1000\n"
- "THREAD_END 1 2000"));
- SampleRecord* r = GetRecord(1, 1);
- r->time_data.time = 0;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 999;
- ASSERT_FALSE(filter.Check(r));
- r->time_data.time = 1000;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 1001;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 1999;
- ASSERT_TRUE(filter.Check(r));
- r->time_data.time = 2000;
- ASSERT_FALSE(filter.Check(r));
- // When thread time filters are used, not mentioned threads should be filtered.
- r->tid_data.tid = 2;
- r->time_data.time = 1000;
- ASSERT_FALSE(filter.Check(r));
-}
-
-TEST_F(RecordFilterTest, clock_in_time_filter) {
- // If there is no filter data, any clock is fine.
- ASSERT_TRUE(filter.CheckClock("monotonic"));
- ASSERT_TRUE(filter.CheckClock("perf"));
- // If there is no clock command, monotonic clock is used.
- ASSERT_TRUE(SetFilterData(""));
- ASSERT_TRUE(filter.CheckClock("monotonic"));
- ASSERT_FALSE(filter.CheckClock("perf"));
- // If there is a clock command, use that clock.
- ASSERT_TRUE(SetFilterData("CLOCK realtime"));
- ASSERT_TRUE(filter.CheckClock("realtime"));
- ASSERT_FALSE(filter.CheckClock("monotonic"));
-}
-
-TEST_F(RecordFilterTest, error_in_time_filter) {
- // no timestamp error
- ASSERT_FALSE(SetFilterData("GLOBAL_BEGIN"));
- // time range error
- ASSERT_FALSE(
- SetFilterData("GLOBAL_BEGIN 1000\n"
- "GLOBAL_END 999"));
- // time range error
- ASSERT_FALSE(
- SetFilterData("GLOBAL_BEGIN 1000\n"
- "GLOBAL_END 1000"));
- // no timestamp error
- ASSERT_FALSE(SetFilterData("PROCESS_BEGIN 1"));
- // time range error
- ASSERT_FALSE(
- SetFilterData("PROCESS_BEGIN 1 1000\n"
- "PROCESS_END 1 999"));
- // no timestamp error
- ASSERT_FALSE(SetFilterData("THREAD_BEGIN 1"));
- // time range error
- ASSERT_FALSE(
- SetFilterData("THREAD_BEGIN 1 1000\n"
- "THREAD_END 1 999"));
-}
-
namespace {
class ParseRecordFilterCommand : public Command {
@@ -253,7 +136,7 @@ class ParseRecordFilterCommand : public Command {
ParseRecordFilterCommand(RecordFilter& filter) : Command("", "", ""), filter_(filter) {}
bool Run(const std::vector<std::string>& args) override {
- const auto option_formats = GetRecordFilterOptionFormats(true);
+ const auto& option_formats = GetRecordFilterOptionFormats();
OptionValueMap options;
std::vector<std::pair<OptionName, OptionValue>> ordered_options;
@@ -296,6 +179,6 @@ TEST_F(RecordFilterTest, parse_options) {
ASSERT_TRUE(std::regex_match("threadB", thread_regs[1]));
ASSERT_TRUE(filter_cmd.Run({prefix + "uid", "1,2", prefix + "uid", "3"}));
- ASSERT_EQ(filter.GetCondition(exclude).uids, std::set<uint32_t>({1, 2, 3}));
+ ASSERT_EQ(filter.GetCondition(exclude).uids, std::set<uid_t>({1, 2, 3}));
}
}