diff options
Diffstat (limited to 'deps/v8/test/cctest/test-profile-generator.cc')
-rw-r--r-- | deps/v8/test/cctest/test-profile-generator.cc | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/deps/v8/test/cctest/test-profile-generator.cc b/deps/v8/test/cctest/test-profile-generator.cc index de1c42cb16..204cba7e4e 100644 --- a/deps/v8/test/cctest/test-profile-generator.cc +++ b/deps/v8/test/cctest/test-profile-generator.cc @@ -536,6 +536,32 @@ TEST(SampleIds_StopProfilingByProfilerId) { CHECK_NE(profile, nullptr); } +TEST(CpuProfilesCollectionDuplicateId) { + CpuProfilesCollection collection(CcTest::i_isolate()); + CpuProfiler profiler(CcTest::i_isolate()); + collection.set_cpu_profiler(&profiler); + + auto profile_result = collection.StartProfiling(); + CHECK_EQ(CpuProfilingStatus::kStarted, profile_result.status); + CHECK_EQ(CpuProfilingStatus::kAlreadyStarted, + collection.StartProfilingForTesting(profile_result.id).status); + + collection.StopProfiling(profile_result.id); +} + +TEST(CpuProfilesCollectionDuplicateTitle) { + CpuProfilesCollection collection(CcTest::i_isolate()); + CpuProfiler profiler(CcTest::i_isolate()); + collection.set_cpu_profiler(&profiler); + + auto profile_result = collection.StartProfiling("duplicate"); + CHECK_EQ(CpuProfilingStatus::kStarted, profile_result.status); + CHECK_EQ(CpuProfilingStatus::kAlreadyStarted, + collection.StartProfiling("duplicate").status); + + collection.StopProfiling(profile_result.id); +} + namespace { class DiscardedSamplesDelegateImpl : public v8::DiscardedSamplesDelegate { public: @@ -543,17 +569,9 @@ class DiscardedSamplesDelegateImpl : public v8::DiscardedSamplesDelegate { void Notify() override { CHECK_GT(GetId(), 0); } }; -class MockPlatform : public TestPlatform { +class MockPlatform final : public TestPlatform { public: - MockPlatform() - : old_platform_(i::V8::GetCurrentPlatform()), - mock_task_runner_(new MockTaskRunner()) { - // Now that it's completely constructed, make this the current platform. - i::V8::SetPlatformForTesting(this); - } - - // When done, explicitly revert to old_platform_. - ~MockPlatform() override { i::V8::SetPlatformForTesting(old_platform_); } + MockPlatform() : mock_task_runner_(new MockTaskRunner()) {} std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner( v8::Isolate*) override { @@ -581,6 +599,8 @@ class MockPlatform : public TestPlatform { } bool IdleTasksEnabled() override { return false; } + bool NonNestableTasksEnabled() const override { return true; } + bool NonNestableDelayedTasksEnabled() const override { return true; } int posted_count() { return posted_count_; } @@ -590,17 +610,15 @@ class MockPlatform : public TestPlatform { std::unique_ptr<Task> task_; }; - v8::Platform* old_platform_; std::shared_ptr<MockTaskRunner> mock_task_runner_; }; } // namespace -TEST(MaxSamplesCallback) { +TEST_WITH_PLATFORM(MaxSamplesCallback, MockPlatform) { i::Isolate* isolate = CcTest::i_isolate(); CpuProfilesCollection profiles(isolate); CpuProfiler profiler(isolate); profiles.set_cpu_profiler(&profiler); - MockPlatform* mock_platform = new MockPlatform(); std::unique_ptr<DiscardedSamplesDelegateImpl> impl = std::make_unique<DiscardedSamplesDelegateImpl>( DiscardedSamplesDelegateImpl()); @@ -624,7 +642,7 @@ TEST(MaxSamplesCallback) { profiles.AddPathToCurrentProfiles( sample1.timestamp, symbolized.stack_trace, symbolized.src_line, true, base::TimeDelta(), StateTag::JS, EmbedderStateTag::EMPTY); - CHECK_EQ(0, mock_platform->posted_count()); + CHECK_EQ(0, platform.posted_count()); TickSample sample2; sample2.timestamp = v8::base::TimeTicks::Now(); sample2.pc = ToPointer(0x1925); @@ -634,7 +652,7 @@ TEST(MaxSamplesCallback) { profiles.AddPathToCurrentProfiles( sample2.timestamp, symbolized.stack_trace, symbolized.src_line, true, base::TimeDelta(), StateTag::JS, EmbedderStateTag::EMPTY); - CHECK_EQ(1, mock_platform->posted_count()); + CHECK_EQ(1, platform.posted_count()); TickSample sample3; sample3.timestamp = v8::base::TimeTicks::Now(); sample3.pc = ToPointer(0x1510); @@ -643,11 +661,10 @@ TEST(MaxSamplesCallback) { profiles.AddPathToCurrentProfiles( sample3.timestamp, symbolized.stack_trace, symbolized.src_line, true, base::TimeDelta(), StateTag::JS, EmbedderStateTag::EMPTY); - CHECK_EQ(1, mock_platform->posted_count()); + CHECK_EQ(1, platform.posted_count()); // Teardown profiles.StopProfiling(id); - delete mock_platform; } TEST(NoSamples) { @@ -758,7 +775,6 @@ TEST(Issue51919) { i::DeleteArray(titles[i]); } - static const v8::CpuProfileNode* PickChild(const v8::CpuProfileNode* parent, const char* name) { for (int i = 0; i < parent->GetChildrenCount(); ++i) { |