Use new TraceBuffer and send patches over IPC

This CL wires up the TraceBuffer introduced by
the previous CLs (the TraceBuffeZ -> R will happen
in a rename-only follow-up). Also plugs in the
logic that sends the patches over IPC when a
chunk is returned.

Bug: 73612642
Change-Id: Ib7bf80bb067d0b8dc721a9d797a1f5edf24cc4b0
diff --git a/test/end_to_end_shared_memory_fuzzer.cc b/test/end_to_end_shared_memory_fuzzer.cc
index e3b645c..454f3c0 100644
--- a/test/end_to_end_shared_memory_fuzzer.cc
+++ b/test/end_to_end_shared_memory_fuzzer.cc
@@ -68,16 +68,22 @@
   void CreateDataSourceInstance(
       DataSourceInstanceID,
       const DataSourceConfig& source_config) override {
-    auto trace_writer = endpoint_->CreateTraceWriter(
-        static_cast<BufferID>(source_config.target_buffer()));
-
-    auto packet = trace_writer->NewTracePacket();
-    packet->stream_writer_->WriteBytes(data_, size_);
-    packet->Finalize();
-
-    auto end_packet = trace_writer->NewTracePacket();
-    end_packet->set_for_testing()->set_str("end");
-    end_packet->Finalize();
+    // The block is to destroy |packet| and |trace_writer| in order. Destroying
+    // the |trace_writer| will cause a flush of the completed packets.
+    {
+      auto trace_writer = endpoint_->CreateTraceWriter(
+          static_cast<BufferID>(source_config.target_buffer()));
+      auto packet = trace_writer->NewTracePacket();
+      packet->stream_writer_->WriteBytes(data_, size_);
+      packet->Finalize();
+    }
+    {
+      auto trace_writer = endpoint_->CreateTraceWriter(
+          static_cast<BufferID>(source_config.target_buffer()));
+      auto end_packet = trace_writer->NewTracePacket();
+      end_packet->set_for_testing()->set_str("end");
+      end_packet->Finalize();
+    }
     consumer_->BusyWaitReadBuffers();
   }
 
@@ -160,7 +166,6 @@
   TaskRunnerThread producer_thread;
   producer_thread.Start(std::unique_ptr<FakeProducerDelegate>(
       new FakeProducerDelegate(data, size, &consumer)));
-
   task_runner.RunUntilCheckpoint("no.more.packets");
   return 0;
 }