diff options
author | Yabin Cui <yabinc@google.com> | 2016-07-06 12:01:35 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2016-07-06 12:01:35 -0700 |
commit | 86d934083f5ad968bc2a6dfaa2cfc53d7bafcbc4 (patch) | |
tree | 632fbbdd4ca3797bb953332a81ecf0b1c301a2bd /simpleperf/record_test.cpp | |
parent | d937202a3b23e6908c2109d5a96da237ee9cbba8 (diff) | |
download | extras-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.cpp | 20 |
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]); +} |