perfetto: further cleanup and consolidate test code

With the introduction of test helper, integration tests have already been made much cleaner.
Now the next step is to take this further and reduce coupling between producer
service and consumer. We can do this by making the producer emit data without
the test explicitly requesting it (like ftrace) if a flag in config is enabled.

Moreover, we can also consolidate all checkpointing code inside the helper class instead
of every file defining its own.

Bug: 74380167
Change-Id: Idbe24586a4aaadb17f934f6e06c5c6d378be0ec3
diff --git a/test/end_to_end_shared_memory_fuzzer.cc b/test/end_to_end_shared_memory_fuzzer.cc
index b509647..b915194 100644
--- a/test/end_to_end_shared_memory_fuzzer.cc
+++ b/test/end_to_end_shared_memory_fuzzer.cc
@@ -139,17 +139,14 @@
   TestHelper helper(&task_runner);
   helper.StartServiceIfRequired();
 
-  auto on_produced_and_committed =
-      task_runner.CreateCheckpoint("produced.and.committed");
-  auto posted_on_produced_and_committed = [&task_runner,
-                                           &on_produced_and_committed] {
-    task_runner.PostTask(on_produced_and_committed);
-  };
   TaskRunnerThread producer_thread("perfetto.prd");
   producer_thread.Start(std::unique_ptr<FakeProducerDelegate>(
-      new FakeProducerDelegate(data, size, posted_on_produced_and_committed)));
+      new FakeProducerDelegate(data, size,
+                               helper.WrapTask(task_runner.CreateCheckpoint(
+                                   "produced.and.committed")))));
 
   helper.ConnectConsumer();
+  helper.WaitForConsumerConnect();
 
   TraceConfig trace_config;
   trace_config.add_buffers()->set_size_kb(8);
@@ -158,19 +155,11 @@
   ds_config->set_name("android.perfetto.FakeProducer");
   ds_config->set_target_buffer(0);
 
-  auto producer_enabled = task_runner.CreateCheckpoint("producer.enabled");
-  task_runner.PostTask(producer_enabled);
   helper.StartTracing(trace_config);
   task_runner.RunUntilCheckpoint("produced.and.committed");
 
-  auto on_readback_complete = task_runner.CreateCheckpoint("readback.complete");
-  auto on_consumer_data =
-      [&on_readback_complete](const protos::TracePacket& packet) {
-        if (packet.for_testing().str() == "end")
-          on_readback_complete();
-      };
-  helper.ReadData(on_consumer_data, [] {});
-  task_runner.RunUntilCheckpoint("readback.complete");
+  helper.ReadData();
+  helper.WaitForReadData();
 
   return 0;
 }