summaryrefslogtreecommitdiff
path: root/simpleperf/record_file_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'simpleperf/record_file_test.cpp')
-rw-r--r--simpleperf/record_file_test.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/simpleperf/record_file_test.cpp b/simpleperf/record_file_test.cpp
index 67ae0c52..20bacaa9 100644
--- a/simpleperf/record_file_test.cpp
+++ b/simpleperf/record_file_test.cpp
@@ -150,3 +150,33 @@ TEST_F(RecordFileTest, write_meta_info_feature_section) {
ASSERT_TRUE(reader != nullptr);
ASSERT_EQ(reader->GetMetaInfoFeature(), info_map);
}
+
+TEST_F(RecordFileTest, write_debug_unwind_feature_section) {
+ // Write to a record file.
+ std::unique_ptr<RecordFileWriter> writer = RecordFileWriter::CreateInstance(tmpfile_.path);
+ ASSERT_TRUE(writer != nullptr);
+ AddEventType("cpu-cycles");
+ ASSERT_TRUE(writer->WriteAttrSection(attr_ids_));
+
+ // Write debug_unwind feature section.
+ ASSERT_TRUE(writer->BeginWriteFeatures(1));
+ DebugUnwindFeature debug_unwind(2);
+ debug_unwind[0].path = "file1";
+ debug_unwind[0].size = 1000;
+ debug_unwind[1].path = "file2";
+ debug_unwind[1].size = 2000;
+ ASSERT_TRUE(writer->WriteDebugUnwindFeature(debug_unwind));
+ ASSERT_TRUE(writer->EndWriteFeatures());
+ ASSERT_TRUE(writer->Close());
+
+ // Read from a record file.
+ std::unique_ptr<RecordFileReader> reader = RecordFileReader::CreateInstance(tmpfile_.path);
+ ASSERT_TRUE(reader != nullptr);
+ std::optional<DebugUnwindFeature> opt_debug_unwind = reader->ReadDebugUnwindFeature();
+ ASSERT_TRUE(opt_debug_unwind.has_value());
+ ASSERT_EQ(opt_debug_unwind.value().size(), debug_unwind.size());
+ for (size_t i = 0; i < debug_unwind.size(); i++) {
+ ASSERT_EQ(opt_debug_unwind.value()[i].path, debug_unwind[i].path);
+ ASSERT_EQ(opt_debug_unwind.value()[i].size, debug_unwind[i].size);
+ }
+}