summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2017-02-10 10:24:43 -0800
committerYabin Cui <yabinc@google.com>2017-02-10 10:24:43 -0800
commitb16a51ac5e3e7e581bcd79cb7ec91cdb62b45a2b (patch)
treeb070c18cbdb80ff10cca06ff05514e5ee865146e
parent637989a574c61c1e0b28b3c09e4b94aefec28756 (diff)
downloadextras-b16a51ac5e3e7e581bcd79cb7ec91cdb62b45a2b.tar.gz
simpleperf: fix an error in checking monitored targets.
Bug: http://b/30974760 Test: run simpleperf_unit_test. Change-Id: Ib3b5772468f0d67f54859d7dff15f66b567fac95
-rw-r--r--simpleperf/cmd_record_test.cpp11
-rw-r--r--simpleperf/event_selection_set.cpp2
2 files changed, 12 insertions, 1 deletions
diff --git a/simpleperf/cmd_record_test.cpp b/simpleperf/cmd_record_test.cpp
index 35e871fe..c3fb8f26 100644
--- a/simpleperf/cmd_record_test.cpp
+++ b/simpleperf/cmd_record_test.cpp
@@ -385,3 +385,14 @@ TEST(record_cmd, stop_when_no_more_targets) {
while (tid == 0);
ASSERT_TRUE(RecordCmd()->Run({"-o", tmpfile.path, "-t", std::to_string(tid)}));
}
+
+TEST(record_cmd, donot_stop_when_having_targets) {
+ std::vector<std::unique_ptr<Workload>> workloads;
+ CreateProcesses(1, &workloads);
+ std::string pid = std::to_string(workloads[0]->GetPid());
+ uint64_t start_time_in_ns = GetSystemClock();
+ TemporaryFile tmpfile;
+ ASSERT_TRUE(RecordCmd()->Run({"-o", tmpfile.path, "-p", pid, "--duration", "3"}));
+ uint64_t end_time_in_ns = GetSystemClock();
+ ASSERT_GT(end_time_in_ns - start_time_in_ns, static_cast<uint64_t>(2e9));
+}
diff --git a/simpleperf/event_selection_set.cpp b/simpleperf/event_selection_set.cpp
index 71c6c723..bc1f5a8b 100644
--- a/simpleperf/event_selection_set.cpp
+++ b/simpleperf/event_selection_set.cpp
@@ -813,7 +813,7 @@ bool EventSelectionSet::HasSampler() {
for (auto& group : groups_) {
for (auto& sel : group) {
if (!sel.event_fds.empty()) {
- return false;
+ return true;
}
for (auto& sampler : sel.inplace_samplers) {
if (!sampler->IsClosed()) {