diff options
author | Yabin Cui <yabinc@google.com> | 2015-06-11 12:03:11 -0700 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2015-06-11 15:14:57 -0700 |
commit | 22ec7fa2032610b6868e4fb8997bb28aee0dea84 (patch) | |
tree | 6bcef10123a02f743e3fda06327e577b36cba81e /simpleperf/record_file_test.cpp | |
parent | 1dbbc5321bea27417221dc31edf0114bf26a3302 (diff) | |
download | extras-22ec7fa2032610b6868e4fb8997bb28aee0dea84.tar.gz |
Simpleperf: improve records parsing.
Sort records by time before handling.
Separate kernel space and user space sample records handling.
Bug: 19483574
Change-Id: I7722bb15678af18cbe883a2cf3fdac948bdd0c9f
Diffstat (limited to 'simpleperf/record_file_test.cpp')
-rw-r--r-- | simpleperf/record_file_test.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/simpleperf/record_file_test.cpp b/simpleperf/record_file_test.cpp index fffaa2a9..8d141339 100644 --- a/simpleperf/record_file_test.cpp +++ b/simpleperf/record_file_test.cpp @@ -35,6 +35,8 @@ class RecordFileTest : public ::testing::Test { const EventType* event_type = EventTypeFactory::FindEventTypeByName("cpu-cycles"); ASSERT_TRUE(event_type != nullptr); event_attr = CreateDefaultPerfEventAttr(*event_type); + event_attr.sample_id_all = 1; + event_attr.sample_type |= PERF_SAMPLE_TIME; std::unique_ptr<EventFd> event_fd = EventFd::OpenEventFileForProcess(event_attr, getpid()); ASSERT_TRUE(event_fd != nullptr); event_fds.push_back(std::move(event_fd)); @@ -80,7 +82,6 @@ TEST_F(RecordFileTest, smoke) { // Read and check data section. std::vector<std::unique_ptr<const Record>> records = reader->DataSection(); ASSERT_EQ(1u, records.size()); - ASSERT_EQ(mmap_record.header.type, records[0]->header.type); CheckRecordEqual(mmap_record, *records[0]); // Read and check feature section. @@ -95,3 +96,33 @@ TEST_F(RecordFileTest, smoke) { ASSERT_TRUE(reader->Close()); } + +TEST_F(RecordFileTest, records_sorted_by_time) { + // Write to a record file; + std::unique_ptr<RecordFileWriter> writer = + RecordFileWriter::CreateInstance(filename, event_attr, event_fds); + ASSERT_TRUE(writer != nullptr); + + // Write data section. + MmapRecord r1 = CreateMmapRecord(event_attr, true, 1, 1, 0x100, 0x2000, 0x3000, "mmap_record1"); + MmapRecord r2 = r1; + MmapRecord r3 = r1; + r1.sample_id.time_data.time = 2; + r2.sample_id.time_data.time = 1; + r3.sample_id.time_data.time = 3; + ASSERT_TRUE(writer->WriteData(r1.BinaryFormat())); + ASSERT_TRUE(writer->WriteData(r2.BinaryFormat())); + ASSERT_TRUE(writer->WriteData(r3.BinaryFormat())); + ASSERT_TRUE(writer->Close()); + + // Read from a record file. + std::unique_ptr<RecordFileReader> reader = RecordFileReader::CreateInstance(filename); + ASSERT_TRUE(reader != nullptr); + std::vector<std::unique_ptr<const Record>> records = reader->DataSection(); + ASSERT_EQ(3u, records.size()); + CheckRecordEqual(r2, *records[0]); + CheckRecordEqual(r1, *records[1]); + CheckRecordEqual(r3, *records[2]); + + ASSERT_TRUE(reader->Close()); +} |