Trace processor: Export perfetto trace stats to JSON
Bug: 130786269
Change-Id: Ib0502e2be4e0bf9916e7e0cc491f8dd2f4b2004c
diff --git a/src/trace_processor/export_json_unittest.cc b/src/trace_processor/export_json_unittest.cc
index 8e5a289..ebc4efb 100644
--- a/src/trace_processor/export_json_unittest.cc
+++ b/src/trace_processor/export_json_unittest.cc
@@ -268,6 +268,37 @@
EXPECT_EQ(telemetry_metadata["hadFailures"][0].asBool(), kHadFailures);
}
+TEST(ExportJsonTest, StorageWithStats) {
+ int64_t kProducers = 10;
+ int64_t kBufferSize0 = 1000;
+ int64_t kBufferSize1 = 2000;
+
+ TraceStorage storage;
+
+ storage.SetStats(stats::traced_producers_connected, kProducers);
+ storage.SetIndexedStats(stats::traced_buf_buffer_size, 0, kBufferSize0);
+ storage.SetIndexedStats(stats::traced_buf_buffer_size, 1, kBufferSize1);
+
+ base::TempFile temp_file = base::TempFile::Create();
+ FILE* output = fopen(temp_file.path().c_str(), "w+");
+ int code = ExportJson(&storage, output);
+
+ EXPECT_EQ(code, kResultOk);
+
+ Json::Reader reader;
+ Json::Value result;
+
+ EXPECT_TRUE(reader.parse(ReadFile(output), result));
+ EXPECT_TRUE(result.isMember("metadata"));
+ EXPECT_TRUE(result["metadata"].isMember("perfetto_trace_stats"));
+ Json::Value stats = result["metadata"]["perfetto_trace_stats"];
+
+ EXPECT_EQ(stats["producers_connected"].asInt(), kProducers);
+ EXPECT_EQ(stats["buffer_stats"].size(), 2u);
+ EXPECT_EQ(stats["buffer_stats"][0]["buffer_size"].asInt(), kBufferSize0);
+ EXPECT_EQ(stats["buffer_stats"][1]["buffer_size"].asInt(), kBufferSize1);
+}
+
TEST(ExportJsonTest, StorageWithArgs) {
const char* kCategory = "cat";
const char* kName = "name";