diff options
Diffstat (limited to 'deps/v8/test/cctest/libplatform/test-tracing.cc')
-rw-r--r-- | deps/v8/test/cctest/libplatform/test-tracing.cc | 56 |
1 files changed, 37 insertions, 19 deletions
diff --git a/deps/v8/test/cctest/libplatform/test-tracing.cc b/deps/v8/test/cctest/libplatform/test-tracing.cc index d20dfff652..a98445be97 100644 --- a/deps/v8/test/cctest/libplatform/test-tracing.cc +++ b/deps/v8/test/cctest/libplatform/test-tracing.cc @@ -23,14 +23,10 @@ class TestDataSource : public perfetto::DataSource<TestDataSource> { public: void OnSetup(const SetupArgs&) override {} - void OnStart(const StartArgs&) override { started_.Signal(); } + void OnStart(const StartArgs&) override {} void OnStop(const StopArgs&) override {} - - static v8::base::Semaphore started_; }; -v8::base::Semaphore TestDataSource::started_{0}; - PERFETTO_DEFINE_DATA_SOURCE_STATIC_MEMBERS(TestDataSource); #endif // V8_USE_PERFETTO @@ -625,8 +621,6 @@ TEST(Perfetto) { TRACE_EVENT1("v8", "test2", "arg1", uint64_arg); TRACE_EVENT2("v8", "test3", "arg1", uint64_arg, "arg2", str_arg); } - TRACE_EVENT_INSTANT0("v8", "final event not captured", - TRACE_EVENT_SCOPE_THREAD); harness.StopTracing(); @@ -688,8 +682,6 @@ TEST(Categories) { TRACE_EVENT0("cat", "v8.Test2"); TRACE_EVENT0("v8", "v8.Test3"); } - TRACE_EVENT_INSTANT0("v8", "final event not captured", - TRACE_EVENT_SCOPE_THREAD); harness.StopTracing(); @@ -765,8 +757,6 @@ TEST(MultipleArgsAndCopy) { std::move(trace_event_arg), "a2", new ConvertableToTraceFormatMock(123)); } - TRACE_EVENT_INSTANT0("v8", "final event not captured", - TRACE_EVENT_SCOPE_THREAD); harness.StopTracing(); @@ -894,8 +884,6 @@ TEST(JsonIntegrationTest) { TRACE_EVENT1("v8", "v8.Test.3", "3", inf_num); TRACE_EVENT1("v8", "v8.Test.4", "4", neg_inf_num); } - TRACE_EVENT_INSTANT0("v8", "final event not captured", - TRACE_EVENT_SCOPE_THREAD); harness.StopTracing(); std::string json = harness.perfetto_json_stream(); @@ -922,8 +910,7 @@ TEST(TracingPerfetto) { auto tracing_session_ = perfetto::Tracing::NewTrace(perfetto::BackendType::kInProcessBackend); tracing_session_->Setup(perfetto_trace_config); - tracing_session_->Start(); - TestDataSource::started_.Wait(); + tracing_session_->StartBlocking(); for (int i = 0; i < 15; i++) { TestDataSource::Trace([&](TestDataSource::TraceContext ctx) { @@ -938,10 +925,7 @@ TEST(TracingPerfetto) { trace_event->set_thread_timestamp(123); }); } - v8::base::Semaphore stopped_{0}; - tracing_session_->SetOnStopCallback([&stopped_]() { stopped_.Signal(); }); - tracing_session_->Stop(); - stopped_.Wait(); + tracing_session_->StopBlocking(); std::ostringstream perfetto_json_stream_; @@ -957,6 +941,40 @@ TEST(TracingPerfetto) { CHECK_GT(perfetto_json_stream_.str().length(), 0); } +TEST(StartAndStopRepeated) { + for (int i = 0; i < 3; i++) { + ::perfetto::TraceConfig perfetto_trace_config; + perfetto_trace_config.add_buffers()->set_size_kb(4096); + auto* ds_config = + perfetto_trace_config.add_data_sources()->mutable_config(); + ds_config->set_name("v8.trace_events"); + + perfetto::DataSourceDescriptor dsd; + dsd.set_name("v8.trace_events"); + TestDataSource::Register(dsd); + + auto tracing_session_ = + perfetto::Tracing::NewTrace(perfetto::BackendType::kInProcessBackend); + tracing_session_->Setup(perfetto_trace_config); + tracing_session_->StartBlocking(); + + for (int i = 0; i < 15; i++) { + TestDataSource::Trace([&](TestDataSource::TraceContext ctx) { + auto packet = ctx.NewTracePacket(); + auto* trace_event_bundle = packet->set_chrome_events(); + auto* trace_event = trace_event_bundle->add_trace_events(); + + trace_event->set_phase('c'); + trace_event->set_thread_id(v8::base::OS::GetCurrentThreadId()); + trace_event->set_timestamp(123); + trace_event->set_process_id(v8::base::OS::GetCurrentProcessId()); + trace_event->set_thread_timestamp(123); + }); + } + tracing_session_->StopBlocking(); + } +} + #endif // V8_USE_PERFETTO } // namespace tracing |