• Peter Marshall's avatar
    [tracing] Add a way to test perfetto traces. · d365f62e
    Peter Marshall authored
    Add a new abstract class TraceEventListener which is just an interface
    for consuming trace events. This separates the V8-specific stuff that
    an actual perfetto consumer needs to do e.g. handling the has_more flag
    and signalling back to the controller with a semaphore.
    
    This is a change from the previous plan of making the PerfettoConsumer
    class sub-classable to implement custom consumption of trace events.
    This will be difficult when the consumer is created outside of the
    PerfettoTracingController as we can't hook up the
    consumer_finished_semaphore_ that belongs to the controller.
    
    Now the PerfettoTracingController is responsible for the Consumer life-
    cycle and hides it entirely from callers. We add the
    AddTraceEventListener() method to allow callers to register a listener
    either for testing or a JSON listener for real tracing.
    
    This lets us write tests that can store all the trace events in memory
    without first converting them to JSON, letting us write test more
    easily. There's an example test add to test-tracing - more tests using
    this style will follow.
    
    Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
    Bug: v8:8339
    Change-Id: I2d2b0f408b1c7bed954144163e1968f40d772c1b
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1628789
    Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
    Auto-Submit: Peter Marshall <petermarshall@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61854}
    d365f62e
BUILD.gn 139 KB