summaryrefslogtreecommitdiff
path: root/simpleperf/record_test.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2016-07-06 12:01:35 -0700
committerYabin Cui <yabinc@google.com>2016-07-06 12:01:35 -0700
commit86d934083f5ad968bc2a6dfaa2cfc53d7bafcbc4 (patch)
tree632fbbdd4ca3797bb953332a81ecf0b1c301a2bd /simpleperf/record_test.cpp
parentd937202a3b23e6908c2109d5a96da237ee9cbba8 (diff)
downloadextras-86d934083f5ad968bc2a6dfaa2cfc53d7bafcbc4.tar.gz
simpleperf: fix RecordCache.
RecordCache::Push(vector<..>) doesn't update last_time_, this makes RecordCache don't pop any record before PopAll(). Bug: 29581559 Change-Id: Icea806346b7ad812e606eaf05747797b766ebd71 Test: run simpleperf_unit_test.
Diffstat (limited to 'simpleperf/record_test.cpp')
-rw-r--r--simpleperf/record_test.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/simpleperf/record_test.cpp b/simpleperf/record_test.cpp
index ecfc4d0b..8c984e9d 100644
--- a/simpleperf/record_test.cpp
+++ b/simpleperf/record_test.cpp
@@ -113,3 +113,23 @@ TEST_F(RecordTest, RecordCache_FIFO) {
CheckRecordEqual(records[i], *out_records[i]);
}
}
+
+TEST_F(RecordTest, RecordCache_PushRecordVector) {
+ event_attr.sample_id_all = 1;
+ event_attr.sample_type |= PERF_SAMPLE_TIME;
+ RecordCache cache(true, 2, 2);
+ MmapRecord r1 = MmapRecord::Create(event_attr, true, 1, 1, 0x100, 0x200, 0x300, "mmap_record1", 0);
+ MmapRecord r2 = r1;
+ r1.sample_id.time_data.time = 1;
+ r2.sample_id.time_data.time = 3;
+ std::vector<std::unique_ptr<Record>> records;
+ records.push_back(std::unique_ptr<Record>(new MmapRecord(r1)));
+ records.push_back(std::unique_ptr<Record>(new MmapRecord(r2)));
+ cache.Push(std::move(records));
+ std::unique_ptr<Record> popped_r = cache.Pop();
+ ASSERT_TRUE(popped_r != nullptr);
+ CheckRecordEqual(r1, *popped_r);
+ std::vector<std::unique_ptr<Record>> last_records = cache.PopAll();
+ ASSERT_EQ(1u, last_records.size());
+ CheckRecordEqual(r2, *last_records[0]);
+}