Index: test/cctest/test-cpu-profiler.cc |
diff --git a/test/cctest/test-cpu-profiler.cc b/test/cctest/test-cpu-profiler.cc |
index 507f23682e574a4263edb247aa62847db47e62ab..c65364d04c666aa79fc003ddf644ec5da49bd2b0 100644 |
--- a/test/cctest/test-cpu-profiler.cc |
+++ b/test/cctest/test-cpu-profiler.cc |
@@ -7,6 +7,7 @@ |
#include "v8.h" |
#include "cpu-profiler-inl.h" |
#include "cctest.h" |
+#include "../include/v8-profiler.h" |
namespace i = v8::internal; |
@@ -236,4 +237,134 @@ TEST(CrashIfStoppingLastNonExistentProfile) { |
CpuProfiler::TearDown(); |
} |
+ |
+TEST(DeleteAllCpuProfiles) { |
+ InitializeVM(); |
+ TestSetup test_setup; |
+ CpuProfiler::Setup(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CpuProfiler::DeleteAllProfiles(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ |
+ CpuProfiler::StartProfiling("1"); |
+ CpuProfiler::StopProfiling("1"); |
+ CHECK_EQ(1, CpuProfiler::GetProfilesCount()); |
+ CpuProfiler::DeleteAllProfiles(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CpuProfiler::StartProfiling("1"); |
+ CpuProfiler::StartProfiling("2"); |
+ CpuProfiler::StopProfiling("2"); |
+ CpuProfiler::StopProfiling("1"); |
+ CHECK_EQ(2, CpuProfiler::GetProfilesCount()); |
+ CpuProfiler::DeleteAllProfiles(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ |
+ // Test profiling cancellation by the 'delete' command. |
+ CpuProfiler::StartProfiling("1"); |
+ CpuProfiler::StartProfiling("2"); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CpuProfiler::DeleteAllProfiles(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ |
+ CpuProfiler::TearDown(); |
+} |
+ |
+ |
+TEST(DeleteCpuProfile) { |
+ v8::HandleScope scope; |
+ LocalContext env; |
+ |
+ CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount()); |
+ v8::Local<v8::String> name1 = v8::String::New("1"); |
+ v8::CpuProfiler::StartProfiling(name1); |
+ const v8::CpuProfile* p1 = v8::CpuProfiler::StopProfiling(name1); |
+ CHECK_NE(NULL, p1); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ unsigned uid1 = p1->GetUid(); |
+ CHECK_EQ(p1, v8::CpuProfiler::FindProfile(uid1)); |
+ p1->Delete(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1)); |
Vitaly Repeshko
2011/03/22 14:30:36
It'd be nice to test this again later to make sure
mnaganov (inactive)
2011/03/22 16:03:09
Added a couple of times more after.
|
+ |
+ v8::Local<v8::String> name2 = v8::String::New("2"); |
+ v8::CpuProfiler::StartProfiling(name2); |
+ const v8::CpuProfile* p2 = v8::CpuProfiler::StopProfiling(name2); |
+ CHECK_NE(NULL, p2); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ unsigned uid2 = p2->GetUid(); |
+ CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid2)); |
+ CHECK_EQ(p2, v8::CpuProfiler::FindProfile(uid2)); |
+ v8::Local<v8::String> name3 = v8::String::New("3"); |
+ v8::CpuProfiler::StartProfiling(name3); |
+ const v8::CpuProfile* p3 = v8::CpuProfiler::StopProfiling(name3); |
+ CHECK_NE(NULL, p3); |
+ CHECK_EQ(2, v8::CpuProfiler::GetProfilesCount()); |
+ unsigned uid3 = p3->GetUid(); |
+ CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid3)); |
+ CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); |
+ p2->Delete(); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2)); |
Vitaly Repeshko
2011/03/22 14:30:36
Same here.
mnaganov (inactive)
2011/03/22 16:03:09
Done.
|
+ CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); |
+ p3->Delete(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid3)); |
+} |
+ |
+ |
+TEST(DeleteCpuProfileDifferentTokens) { |
+ v8::HandleScope scope; |
+ LocalContext env; |
+ |
+ CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount()); |
+ v8::Local<v8::String> name1 = v8::String::New("1"); |
+ v8::CpuProfiler::StartProfiling(name1); |
+ const v8::CpuProfile* p1 = v8::CpuProfiler::StopProfiling(name1); |
+ CHECK_NE(NULL, p1); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ unsigned uid1 = p1->GetUid(); |
+ CHECK_EQ(p1, v8::CpuProfiler::FindProfile(uid1)); |
+ v8::Local<v8::String> token1 = v8::String::New("token1"); |
+ const v8::CpuProfile* p1_t1 = v8::CpuProfiler::FindProfile(uid1, token1); |
+ CHECK_NE(NULL, p1_t1); |
+ CHECK_NE(p1, p1_t1); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ p1->Delete(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1)); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1, token1)); |
+ p1_t1->Delete(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ |
+ v8::Local<v8::String> name2 = v8::String::New("2"); |
+ v8::CpuProfiler::StartProfiling(name2); |
+ v8::Local<v8::String> token2 = v8::String::New("token2"); |
+ const v8::CpuProfile* p2_t2 = v8::CpuProfiler::StopProfiling(name2, token2); |
+ CHECK_NE(NULL, p2_t2); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ unsigned uid2 = p2_t2->GetUid(); |
+ CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid2)); |
+ const v8::CpuProfile* p2 = v8::CpuProfiler::FindProfile(uid2); |
+ CHECK_NE(p2_t2, p2); |
+ v8::Local<v8::String> name3 = v8::String::New("3"); |
+ v8::CpuProfiler::StartProfiling(name3); |
+ const v8::CpuProfile* p3 = v8::CpuProfiler::StopProfiling(name3); |
+ CHECK_NE(NULL, p3); |
+ CHECK_EQ(2, v8::CpuProfiler::GetProfilesCount()); |
+ unsigned uid3 = p3->GetUid(); |
+ CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid3)); |
+ CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); |
+ p2_t2->Delete(); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2)); |
+ CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); |
+ p2->Delete(); |
+ CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2)); |
+ CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); |
+ p3->Delete(); |
+ CHECK_EQ(0, CpuProfiler::GetProfilesCount()); |
+ CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid3)); |
+} |
+ |
#endif // ENABLE_LOGGING_AND_PROFILING |