perfetto: add end to end benchmarking

Bug: 74380167
Change-Id: I448d72492e9a2aaa1123188f38b79492d4be6851
diff --git a/test/end_to_end_shared_memory_fuzzer.cc b/test/end_to_end_shared_memory_fuzzer.cc
index 1b1fd2d..8f32b5f 100644
--- a/test/end_to_end_shared_memory_fuzzer.cc
+++ b/test/end_to_end_shared_memory_fuzzer.cc
@@ -34,6 +34,7 @@
 #include "src/base/test/test_task_runner.h"
 #include "test/fake_consumer.h"
 #include "test/task_runner_thread.h"
+#include "test/task_runner_thread_delegates.h"
 
 namespace perfetto {
 namespace shm_fuzz {
@@ -119,28 +120,12 @@
   FakeConsumer* consumer_;
 };
 
-class ServiceDelegate : public ThreadDelegate {
- public:
-  ServiceDelegate() = default;
-  ~ServiceDelegate() override = default;
-  void Initialize(base::TaskRunner* task_runner) override {
-    svc_ = ServiceIPCHost::CreateInstance(task_runner);
-    unlink(kProducerSocket);
-    unlink(kConsumerSocket);
-    svc_->Start(kProducerSocket, kConsumerSocket);
-  }
-
- private:
-  std::unique_ptr<ServiceIPCHost> svc_;
-  base::ScopedFile producer_fd_;
-  base::ScopedFile consumer_fd_;
-};
-
 int FuzzSharedMemory(const uint8_t* data, size_t size);
 
 int FuzzSharedMemory(const uint8_t* data, size_t size) {
-  TaskRunnerThread service_thread;
-  service_thread.Start(std::unique_ptr<ServiceDelegate>(new ServiceDelegate()));
+  TaskRunnerThread service_thread("perfetto.svc");
+  service_thread.Start(std::unique_ptr<ServiceDelegate>(
+      new ServiceDelegate(kProducerSocket, kConsumerSocket)));
 
   // Setup the TraceConfig for the consumer.
   TraceConfig trace_config;
@@ -162,10 +147,15 @@
         finish();
     }
   };
-  FakeConsumer consumer(trace_config, std::move(function), &task_runner);
+  auto on_connect = task_runner.CreateCheckpoint("consumer.connected");
+  FakeConsumer consumer(trace_config, std::move(on_connect),
+                        std::move(function), &task_runner);
   consumer.Connect(kConsumerSocket);
+  task_runner.RunUntilCheckpoint("consumer.connected");
 
-  TaskRunnerThread producer_thread;
+  consumer.EnableTracing();
+
+  TaskRunnerThread producer_thread("perfetto.prd");
   producer_thread.Start(std::unique_ptr<FakeProducerDelegate>(
       new FakeProducerDelegate(data, size, &consumer)));
   task_runner.RunUntilCheckpoint("no.more.packets");