summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/test-profile-generator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/test-profile-generator.cc')
-rw-r--r--deps/v8/test/cctest/test-profile-generator.cc52
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) {