summaryrefslogtreecommitdiff
path: root/simpleperf/record_file_test.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2015-06-11 12:03:11 -0700
committerYabin Cui <yabinc@google.com>2015-06-11 15:14:57 -0700
commit22ec7fa2032610b6868e4fb8997bb28aee0dea84 (patch)
tree6bcef10123a02f743e3fda06327e577b36cba81e /simpleperf/record_file_test.cpp
parent1dbbc5321bea27417221dc31edf0114bf26a3302 (diff)
downloadextras-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.cpp33
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());
+}