processor: Stitch chunks of legacy user json traces for export
As of crrev.com/c/1807134, legacy json traces can be emitted in chunks.
Therefore, trace processor should stitch these chunks together before
attempting to parse and reemit the json value.
Bug: 130786269
Change-Id: Ic01c33a72db74e407a912c2b04e96aeab50e565d
diff --git a/src/trace_processor/export_json_unittest.cc b/src/trace_processor/export_json_unittest.cc
index 5e9cd14..511f677 100644
--- a/src/trace_processor/export_json_unittest.cc
+++ b/src/trace_processor/export_json_unittest.cc
@@ -952,7 +952,8 @@
TEST(ExportJsonTest, LegacyRawEvents) {
const char* kLegacyFtraceData = "some \"data\"\nsome :data:";
- const char* kLegacyJsonData = "{\"user\": 1}";
+ const char* kLegacyJsonData1 = "{\"us";
+ const char* kLegacyJsonData2 = "er\": 1}";
TraceProcessorContext context;
context.storage.reset(new TraceStorage());
@@ -968,8 +969,13 @@
row_id = storage->mutable_raw_events()->AddRawEvent(
0, storage->InternString("chrome_event.legacy_user_trace"), 0, 0);
- StringId json_data_id = storage->InternString(kLegacyJsonData);
- args.AddArg(row_id, data_id, data_id, Variadic::Json(json_data_id));
+ StringId json_data1_id = storage->InternString(kLegacyJsonData1);
+ args.AddArg(row_id, data_id, data_id, Variadic::String(json_data1_id));
+
+ row_id = storage->mutable_raw_events()->AddRawEvent(
+ 0, storage->InternString("chrome_event.legacy_user_trace"), 0, 0);
+ StringId json_data2_id = storage->InternString(kLegacyJsonData2);
+ args.AddArg(row_id, data_id, data_id, Variadic::String(json_data2_id));
args.Flush();