Minor test cleanup, use protozero::HeapBuffered<Msg>
Uneventful CL. Simply cleans up some tests taking
advantage of the HeapBuffered<> helper that has been
introduced at some point later.
This is to help some upcoming refactoring work on
protozero::Message.
Bug: 163125063
Change-Id: I98166f5b2145a6f79c4b7b7470d4f433bb7869ac
diff --git a/src/protozero/proto_decoder_unittest.cc b/src/protozero/proto_decoder_unittest.cc
index 580e959..5f40a89 100644
--- a/src/protozero/proto_decoder_unittest.cc
+++ b/src/protozero/proto_decoder_unittest.cc
@@ -61,29 +61,25 @@
const uint64_t data_size = 4096 + kPayloadSize;
std::unique_ptr<uint8_t, perfetto::base::FreeDeleter> data(
static_cast<uint8_t*>(malloc(data_size)));
-
- StaticBufferDelegate delegate(data.get(), data_size);
- ScatteredStreamWriter writer(&delegate);
- Message message;
- message.Reset(&writer);
+ StaticBuffered<Message> message(data.get(), data_size);
// Append a valid field.
- message.AppendVarInt(/*field_id=*/1, 11);
+ message->AppendVarInt(/*field_id=*/1, 11);
// Append a very large field that will be skipped.
uint8_t raw[10];
uint8_t* wptr = raw;
wptr = WriteVarInt(MakeTagLengthDelimited(2), wptr);
wptr = WriteVarInt(kPayloadSize, wptr);
- message.AppendRawProtoBytes(raw, static_cast<size_t>(wptr - raw));
+ message->AppendRawProtoBytes(raw, static_cast<size_t>(wptr - raw));
const uint8_t padding[1024 * 128]{};
for (size_t i = 0; i < kPayloadSize / sizeof(padding); i++)
- message.AppendRawProtoBytes(padding, sizeof(padding));
+ message->AppendRawProtoBytes(padding, sizeof(padding));
// Append another valid field.
- message.AppendVarInt(/*field_id=*/3, 13);
+ message->AppendVarInt(/*field_id=*/3, 13);
- ProtoDecoder decoder(data.get(), static_cast<size_t>(writer.written()));
+ ProtoDecoder decoder(data.get(), message.Finalize());
Field field = decoder.ReadField();
ASSERT_EQ(1u, field.id());
ASSERT_EQ(11, field.as_int32());
@@ -97,16 +93,10 @@
}
TEST(ProtoDecoderTest, SingleRepeatedField) {
- Message message;
- ScatteredHeapBuffer delegate(512, 512);
- ScatteredStreamWriter writer(&delegate);
- delegate.set_writer(&writer);
- message.Reset(&writer);
- message.AppendVarInt(/*field_id=*/2, 10);
- delegate.AdjustUsedSizeOfCurrentSlice();
- auto used_range = delegate.slices()[0].GetUsedRange();
-
- TypedProtoDecoder<2, true> tpd(used_range.begin, used_range.size());
+ HeapBuffered<Message> message;
+ message->AppendVarInt(/*field_id=*/2, 10);
+ auto data = message.SerializeAsArray();
+ TypedProtoDecoder<2, true> tpd(data.data(), data.size());
auto it = tpd.GetRepeated<int32_t>(/*field_id=*/2);
EXPECT_TRUE(it);
EXPECT_EQ(it.field().as_int32(), 10);
@@ -137,16 +127,11 @@
}
TEST(ProtoDecoderTest, SingleRepeatedFieldWithExpansion) {
- Message message;
- ScatteredHeapBuffer delegate(512, 512);
- ScatteredStreamWriter writer(&delegate);
- delegate.set_writer(&writer);
- message.Reset(&writer);
+ HeapBuffered<Message> message;
for (int i = 0; i < 2000; i++) {
- message.AppendVarInt(/*field_id=*/2, i);
+ message->AppendVarInt(/*field_id=*/2, i);
}
- std::vector<uint8_t> data = delegate.StitchSlices();
-
+ auto data = message.SerializeAsArray();
TypedProtoDecoder<2, true> tpd(data.data(), data.size());
auto it = tpd.GetRepeated<int32_t>(/*field_id=*/2);
for (int i = 0; i < 2000; i++) {
@@ -166,26 +151,20 @@
}
TEST(ProtoDecoderTest, RepeatedFields) {
- Message message;
- ScatteredHeapBuffer delegate(512, 512);
- ScatteredStreamWriter writer(&delegate);
- delegate.set_writer(&writer);
- message.Reset(&writer);
+ HeapBuffered<Message> message;
- message.AppendVarInt(1, 10);
- message.AppendVarInt(2, 20);
- message.AppendVarInt(3, 30);
+ message->AppendVarInt(1, 10);
+ message->AppendVarInt(2, 20);
+ message->AppendVarInt(3, 30);
- message.AppendVarInt(1, 11);
- message.AppendVarInt(2, 21);
- message.AppendVarInt(2, 22);
-
- delegate.AdjustUsedSizeOfCurrentSlice();
- auto used_range = delegate.slices()[0].GetUsedRange();
+ message->AppendVarInt(1, 11);
+ message->AppendVarInt(2, 21);
+ message->AppendVarInt(2, 22);
// When iterating with the simple decoder we should just see fields in parsing
// order.
- ProtoDecoder decoder(used_range.begin, used_range.size());
+ auto data = message.SerializeAsArray();
+ ProtoDecoder decoder(data.data(), data.size());
std::string fields_seen;
for (auto fld = decoder.ReadField(); fld.valid(); fld = decoder.ReadField()) {
fields_seen +=
@@ -193,7 +172,7 @@
}
EXPECT_EQ(fields_seen, "1:10;2:20;3:30;1:11;2:21;2:22;");
- TypedProtoDecoder<4, true> tpd(used_range.begin, used_range.size());
+ TypedProtoDecoder<4, true> tpd(data.data(), data.size());
// When parsing with the one-shot decoder and querying the single field id, we
// should see the last value for each of them, not the first one. This is the
@@ -557,18 +536,14 @@
// This is a regression test for b/145339282 (DataSourceConfig.for_testing
// having a very large ID == 268435455 until Android R).
TEST(ProtoDecoderTest, SkipBigFieldIds) {
- Message message;
- ScatteredHeapBuffer delegate(512, 512);
- ScatteredStreamWriter writer(&delegate);
- delegate.set_writer(&writer);
- message.Reset(&writer);
- message.AppendVarInt(/*field_id=*/1, 11);
- message.AppendVarInt(/*field_id=*/1000000, 0); // Will be skipped
- message.AppendVarInt(/*field_id=*/65535, 99);
- message.AppendVarInt(/*field_id=*/268435455, 0); // Will be skipped
- message.AppendVarInt(/*field_id=*/2, 12);
- message.AppendVarInt(/*field_id=*/2000000, 0); // Will be skipped
- std::vector<uint8_t> data = delegate.StitchSlices();
+ HeapBuffered<Message> message;
+ message->AppendVarInt(/*field_id=*/1, 11);
+ message->AppendVarInt(/*field_id=*/1000000, 0); // Will be skipped
+ message->AppendVarInt(/*field_id=*/65535, 99);
+ message->AppendVarInt(/*field_id=*/268435455, 0); // Will be skipped
+ message->AppendVarInt(/*field_id=*/2, 12);
+ message->AppendVarInt(/*field_id=*/2000000, 0); // Will be skipped
+ auto data = message.SerializeAsArray();
// Check the iterator-based ProtoDecoder.
{
@@ -606,13 +581,9 @@
// very big id. Test that we skip it and return an invalid field, instead of
// geetting stuck in some loop.
TEST(ProtoDecoderTest, OneBigFieldIdOnly) {
- Message message;
- ScatteredHeapBuffer delegate(512, 512);
- ScatteredStreamWriter writer(&delegate);
- delegate.set_writer(&writer);
- message.Reset(&writer);
- message.AppendVarInt(/*field_id=*/268435455, 0);
- std::vector<uint8_t> data = delegate.StitchSlices();
+ HeapBuffered<Message> message;
+ message->AppendVarInt(/*field_id=*/268435455, 0);
+ auto data = message.SerializeAsArray();
// Check the iterator-based ProtoDecoder.
ProtoDecoder decoder(data.data(), data.size());
diff --git a/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc b/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc
index a6be8b6..a4e7913 100644
--- a/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc
+++ b/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc
@@ -230,18 +230,13 @@
RegisterAdditionalModules(&context_);
}
- void ResetTraceBuffers() {
- heap_buf_.reset(new protozero::ScatteredHeapBuffer());
- stream_writer_.reset(new protozero::ScatteredStreamWriter(heap_buf_.get()));
- heap_buf_->set_writer(stream_writer_.get());
- trace_.Reset(stream_writer_.get());
- }
+ void ResetTraceBuffers() { trace_.Reset(); }
void SetUp() override { ResetTraceBuffers(); }
util::Status Tokenize() {
- trace_.Finalize();
- std::vector<uint8_t> trace_bytes = heap_buf_->StitchSlices();
+ trace_->Finalize();
+ std::vector<uint8_t> trace_bytes = trace_.SerializeAsArray();
std::unique_ptr<uint8_t[]> raw_trace(new uint8_t[trace_bytes.size()]);
memcpy(raw_trace.get(), trace_bytes.data(), trace_bytes.size());
context_.chunk_reader.reset(new ProtoTraceTokenizer(&context_));
@@ -273,9 +268,7 @@
return std::unique_ptr<TraceParser>(new ProtoTraceParser(&context_));
}
- std::unique_ptr<protozero::ScatteredHeapBuffer> heap_buf_;
- std::unique_ptr<protozero::ScatteredStreamWriter> stream_writer_;
- protos::pbzero::Trace trace_;
+ protozero::HeapBuffered<protos::pbzero::Trace> trace_;
TraceProcessorContext context_;
MockEventTracker* event_;
MockSchedEventTracker* sched_;
@@ -288,7 +281,7 @@
// TODO(eseckler): Refactor these into a new file for ftrace tests.
TEST_F(ProtoTraceParserTest, LoadSingleEvent) {
- auto* bundle = trace_.add_packet()->set_ftrace_events();
+ auto* bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
auto* event = bundle->add_event();
@@ -313,7 +306,7 @@
}
TEST_F(ProtoTraceParserTest, LoadEventsIntoRaw) {
- auto* bundle = trace_.add_packet()->set_ftrace_events();
+ auto* bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
// This event is unknown and will only appear in
@@ -365,7 +358,7 @@
}
TEST_F(ProtoTraceParserTest, LoadGenericFtrace) {
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_timestamp(100);
auto* bundle = packet->set_ftrace_events();
@@ -418,7 +411,7 @@
}
TEST_F(ProtoTraceParserTest, LoadMultipleEvents) {
- auto* bundle = trace_.add_packet()->set_ftrace_events();
+ auto* bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
auto* event = bundle->add_event();
@@ -461,7 +454,7 @@
}
TEST_F(ProtoTraceParserTest, LoadMultiplePackets) {
- auto* bundle = trace_.add_packet()->set_ftrace_events();
+ auto* bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
auto* event = bundle->add_event();
@@ -479,7 +472,7 @@
sched_switch->set_next_pid(100);
sched_switch->set_next_prio(1024);
- bundle = trace_.add_packet()->set_ftrace_events();
+ bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
event = bundle->add_event();
@@ -506,7 +499,7 @@
}
TEST_F(ProtoTraceParserTest, RepeatedLoadSinglePacket) {
- auto* bundle = trace_.add_packet()->set_ftrace_events();
+ auto* bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
auto* event = bundle->add_event();
event->set_timestamp(1000);
@@ -526,7 +519,7 @@
32, 100, base::StringView(kProcName1), 1024));
Tokenize();
- bundle = trace_.add_packet()->set_ftrace_events();
+ bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(10);
event = bundle->add_event();
event->set_timestamp(1001);
@@ -547,7 +540,7 @@
}
TEST_F(ProtoTraceParserTest, LoadCpuFreq) {
- auto* bundle = trace_.add_packet()->set_ftrace_events();
+ auto* bundle = trace_->add_packet()->set_ftrace_events();
bundle->set_cpu(12);
auto* event = bundle->add_event();
event->set_timestamp(1000);
@@ -563,7 +556,7 @@
}
TEST_F(ProtoTraceParserTest, LoadMemInfo) {
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
uint64_t ts = 1000;
packet->set_timestamp(ts);
auto* bundle = packet->set_sys_stats();
@@ -580,7 +573,7 @@
}
TEST_F(ProtoTraceParserTest, LoadVmStats) {
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
uint64_t ts = 1000;
packet->set_timestamp(ts);
auto* bundle = packet->set_sys_stats();
@@ -597,7 +590,7 @@
}
TEST_F(ProtoTraceParserTest, LoadProcessPacket) {
- auto* tree = trace_.add_packet()->set_process_tree();
+ auto* tree = trace_->add_packet()->set_process_tree();
auto* process = tree->add_processes();
static const char kProcName1[] = "proc1";
@@ -612,7 +605,7 @@
}
TEST_F(ProtoTraceParserTest, LoadProcessPacket_FirstCmdline) {
- auto* tree = trace_.add_packet()->set_process_tree();
+ auto* tree = trace_->add_packet()->set_process_tree();
auto* process = tree->add_processes();
static const char kProcName1[] = "proc1";
static const char kProcName2[] = "proc2";
@@ -629,7 +622,7 @@
}
TEST_F(ProtoTraceParserTest, LoadThreadPacket) {
- auto* tree = trace_.add_packet()->set_process_tree();
+ auto* tree = trace_->add_packet()->set_process_tree();
auto* thread = tree->add_threads();
thread->set_tid(1);
thread->set_tgid(2);
@@ -642,7 +635,7 @@
context_.sorter.reset(new TraceSorter(
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* process_desc = packet->set_process_descriptor();
@@ -650,7 +643,7 @@
process_desc->set_process_name("OldProcessName");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* process_desc = packet->set_process_descriptor();
@@ -658,7 +651,7 @@
process_desc->set_process_name("NewProcessName");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
packet->set_incremental_state_cleared(true);
auto* process_desc = packet->set_process_descriptor();
@@ -687,7 +680,7 @@
context_.sorter.reset(new TraceSorter(
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -698,7 +691,7 @@
thread_desc->set_thread_name("OldThreadName");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -709,7 +702,7 @@
thread_desc->set_thread_name("NewThreadName");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -744,7 +737,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -754,7 +747,7 @@
thread_desc->set_reference_thread_time_us(2000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -765,7 +758,7 @@
legacy_event->set_phase('B');
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1020.
@@ -776,7 +769,7 @@
legacy_event->set_phase('E');
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1005);
@@ -838,7 +831,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -848,7 +841,7 @@
thread_desc->set_reference_thread_time_us(2000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -859,7 +852,7 @@
legacy_event->set_name_iid(1);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1020.
@@ -870,7 +863,7 @@
legacy_event->set_name_iid(1);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1015);
@@ -929,7 +922,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -940,7 +933,7 @@
thread_desc->set_reference_thread_instruction_count(3000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -960,7 +953,7 @@
ev1->set_name("ev1");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1040);
@@ -972,7 +965,7 @@
legacy_event->set_phase('I');
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1050);
@@ -984,7 +977,7 @@
protos::pbzero::TrackEvent::LegacyEvent::SCOPE_PROCESS);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1020.
@@ -996,7 +989,7 @@
legacy_event->set_phase('E');
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1005);
@@ -1111,7 +1104,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -1122,7 +1115,7 @@
thread_desc->set_reference_thread_instruction_count(3000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -1144,7 +1137,7 @@
ev1->set_name("ev1");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1020.
@@ -1158,7 +1151,7 @@
legacy_event->set_use_async_tts(true);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1015);
@@ -1175,7 +1168,7 @@
}
{
// Different category but same global_id -> separate track.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1018);
@@ -1191,7 +1184,7 @@
cat2->set_name("cat2");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_absolute_us(1030);
@@ -1268,7 +1261,7 @@
// Sequence 1.
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
packet->set_timestamp(1000000);
@@ -1280,7 +1273,7 @@
thread_desc->set_tid(16);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_timestamp(1000000);
auto* track_desc = packet->set_track_descriptor();
@@ -1289,7 +1282,7 @@
}
{
// Async event started on "Async track 1".
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_timestamp(1010000);
auto* event = packet->set_track_event();
@@ -1312,7 +1305,7 @@
}
{
// Instant event on "Thread track 1".
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_timestamp(1015000);
auto* event = packet->set_track_event();
@@ -1333,7 +1326,7 @@
// Sequence 2.
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
packet->set_incremental_state_cleared(true);
packet->set_timestamp(1000000);
@@ -1346,7 +1339,7 @@
}
{
// Async event completed on "Async track 1".
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
packet->set_timestamp(1020000);
auto* event = packet->set_track_event();
@@ -1359,7 +1352,7 @@
}
{
// Instant event on "Thread track 2".
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
packet->set_timestamp(1016000);
auto* event = packet->set_track_event();
@@ -1461,7 +1454,7 @@
// in the order they appear here, but then resorted before parsing to appear
// after the events below.
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
packet->set_timestamp(3000);
@@ -1479,7 +1472,7 @@
track_event_defaults->add_extra_counter_track_uuids(10);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_timestamp(3000);
auto* track_desc = packet->set_track_descriptor();
@@ -1496,7 +1489,7 @@
// counter values should still be imported as counter values and as args for
// JSON export. Should appear on default track "t1" with
// extra_counter_values for "c1".
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_sequence_flags(
protos::pbzero::TracePacket::SEQ_NEEDS_INCREMENTAL_STATE);
@@ -1509,7 +1502,7 @@
}
{
// End for "ev1".
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_timestamp(1100);
auto* event = packet->set_track_event();
@@ -1563,7 +1556,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* thread_desc = packet->set_thread_descriptor();
thread_desc->set_pid(15);
@@ -1574,7 +1567,7 @@
{
// Event should be discarded because delta timestamps require valid
// incremental state + thread descriptor.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -1587,7 +1580,7 @@
{
// Event should be discarded because it specifies
// SEQ_NEEDS_INCREMENTAL_STATE.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_timestamp(2000000);
packet->set_trusted_packet_sequence_id(1);
packet->set_sequence_flags(
@@ -1600,7 +1593,7 @@
{
// Event should be accepted because it does not specify
// SEQ_NEEDS_INCREMENTAL_STATE and uses absolute timestamps.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_timestamp(2100000);
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
@@ -1626,7 +1619,7 @@
{
// Event should be discarded because it specifies delta timestamps and no
// thread descriptor was seen yet.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* event = packet->set_track_event();
@@ -1640,7 +1633,7 @@
{
// Events that specify SEQ_NEEDS_INCREMENTAL_STATE should be accepted even
// if there's no valid thread descriptor.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_timestamp(2000000);
packet->set_trusted_packet_sequence_id(1);
packet->set_sequence_flags(
@@ -1666,7 +1659,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -1675,7 +1668,7 @@
thread_desc->set_reference_timestamp_us(1000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -1686,7 +1679,7 @@
}
{
// Event should be dropped because data loss occurred before.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_previous_packet_dropped(true); // Data loss occurred.
auto* event = packet->set_track_event();
@@ -1698,7 +1691,7 @@
}
{
// Event should be dropped because incremental state is invalid.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10);
@@ -1709,7 +1702,7 @@
}
{
// Event should be dropped because no new thread descriptor was seen yet.
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* event = packet->set_track_event();
@@ -1720,7 +1713,7 @@
legacy_event->set_phase('E');
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* thread_desc = packet->set_thread_descriptor();
thread_desc->set_pid(15);
@@ -1728,7 +1721,7 @@
thread_desc->set_reference_timestamp_us(2000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 2010.
@@ -1760,7 +1753,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -1769,7 +1762,7 @@
thread_desc->set_reference_timestamp_us(1000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -1787,7 +1780,7 @@
ev1->set_name("ev1");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -1796,7 +1789,7 @@
thread_desc->set_reference_timestamp_us(995);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1005.
@@ -1814,7 +1807,7 @@
ev2->set_name("ev2");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1020.
@@ -1824,7 +1817,7 @@
legacy_event->set_phase('E');
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(2);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1015.
@@ -1871,7 +1864,7 @@
MockBoundInserter inserter;
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -1880,7 +1873,7 @@
thread_desc->set_reference_timestamp_us(1000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -1932,7 +1925,7 @@
an2->set_name("an2");
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1020.
@@ -2072,7 +2065,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -2081,7 +2074,7 @@
thread_desc->set_reference_timestamp_us(1000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -2138,7 +2131,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -2147,7 +2140,7 @@
thread_desc->set_reference_timestamp_us(1000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -2215,7 +2208,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -2225,7 +2218,7 @@
thread_desc->set_reference_thread_time_us(2000);
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010.
@@ -2333,7 +2326,7 @@
{protos::pbzero::BUILTIN_CLOCK_MONOTONIC, 1000000}});
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
auto* thread_desc = packet->set_thread_descriptor();
@@ -2342,7 +2335,7 @@
thread_desc->set_reference_timestamp_us(1000); // MONOTONIC.
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* event = packet->set_track_event();
event->set_timestamp_delta_us(10); // absolute: 1010 (mon), 10 (boot).
@@ -2375,7 +2368,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_timestamp(1000);
packet->set_timestamp_clock_id(3);
packet->set_trusted_packet_sequence_id(1);
@@ -2404,7 +2397,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_timestamp(1000);
packet->set_timestamp_clock_id(3);
packet->set_trusted_packet_sequence_id(1);
@@ -2443,7 +2436,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* bundle = packet->set_chrome_events();
bundle->add_legacy_ftrace_output(kDataPart0);
@@ -2473,7 +2466,7 @@
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* bundle = packet->set_chrome_events();
auto* user_trace = bundle->add_legacy_json_trace();
@@ -2506,7 +2499,7 @@
context_.sorter.reset(new TraceSorter(
CreateParser(), std::numeric_limits<int64_t>::max() /*window size*/));
- auto* metadata = trace_.add_packet()->set_chrome_benchmark_metadata();
+ auto* metadata = trace_->add_packet()->set_chrome_benchmark_metadata();
metadata->set_benchmark_name(kName);
metadata->add_story_tags(kTag1);
metadata->add_story_tags(kTag2);
@@ -2534,7 +2527,7 @@
}
TEST_F(ProtoTraceParserTest, AndroidPackagesList) {
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
auto* pkg_list = packet->set_packages_list();
pkg_list->set_read_error(false);
@@ -2586,7 +2579,7 @@
}
TEST_F(ProtoTraceParserTest, AndroidPackagesListDuplicate) {
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
auto* pkg_list = packet->set_packages_list();
pkg_list->set_read_error(false);
@@ -2632,7 +2625,7 @@
TEST_F(ProtoTraceParserTest, ParseCPUProfileSamplesIntoTable) {
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
@@ -2672,7 +2665,7 @@
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* samples = packet->set_streaming_profile_packet();
@@ -2685,7 +2678,7 @@
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* samples = packet->set_streaming_profile_packet();
@@ -2728,7 +2721,7 @@
TEST_F(ProtoTraceParserTest, CPUProfileSamplesTimestampsAreClockMonotonic) {
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(0);
// 1000 us monotonic == 10000 us boottime.
@@ -2742,7 +2735,7 @@
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
packet->set_incremental_state_cleared(true);
@@ -2773,7 +2766,7 @@
}
{
- auto* packet = trace_.add_packet();
+ auto* packet = trace_->add_packet();
packet->set_trusted_packet_sequence_id(1);
auto* samples = packet->set_streaming_profile_packet();
diff --git a/src/traced/probes/ftrace/cpu_reader_unittest.cc b/src/traced/probes/ftrace/cpu_reader_unittest.cc
index c59b027..43c574a 100644
--- a/src/traced/probes/ftrace/cpu_reader_unittest.cc
+++ b/src/traced/probes/ftrace/cpu_reader_unittest.cc
@@ -112,24 +112,20 @@
template <class ZeroT, class ProtoT>
class ProtoProvider {
public:
- explicit ProtoProvider(size_t chunk_size)
- : chunk_size_(chunk_size), delegate_(chunk_size_), stream_(&delegate_) {
- delegate_.set_writer(&stream_);
- writer_.Reset(&stream_);
- }
+ explicit ProtoProvider(size_t chunk_size) : chunk_size_(chunk_size) {}
~ProtoProvider() = default;
- ZeroT* writer() { return &writer_; }
+ ZeroT* writer() { return writer_.get(); }
+ void ResetWriter() { writer_.Reset(); }
// Stitch together the scattered chunks into a single buffer then attempt
// to parse the buffer as a FtraceEventBundle. Returns the FtraceEventBundle
// on success and nullptr on failure.
std::unique_ptr<ProtoT> ParseProto() {
auto bundle = std::unique_ptr<ProtoT>(new ProtoT());
- std::vector<uint8_t> buffer = delegate_.StitchSlices();
- if (!bundle->ParseFromArray(buffer.data(), buffer.size())) {
+ std::vector<uint8_t> buffer = writer_.SerializeAsArray();
+ if (!bundle->ParseFromArray(buffer.data(), buffer.size()))
return nullptr;
- }
return bundle;
}
@@ -138,9 +134,7 @@
ProtoProvider& operator=(const ProtoProvider&) = delete;
size_t chunk_size_;
- protozero::ScatteredHeapBuffer delegate_;
- protozero::ScatteredStreamWriter stream_;
- ZeroT writer_;
+ protozero::HeapBuffered<ZeroT> writer_;
};
using BundleProvider = ProtoProvider<protos::pbzero::FtraceEventBundle,
@@ -846,6 +840,7 @@
ASSERT_TRUE(bundle);
EXPECT_EQ(0u, bundle->event().size());
EXPECT_FALSE(bundle->has_compact_sched());
+ bundle_provider.ResetWriter();
// Instead, sched switch fields were buffered:
EXPECT_LT(0u, compact_buffer.sched_switch().size());