Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Tests of profiles generator and utilities. | 3 // Tests of profiles generator and utilities. |
| 4 | 4 |
| 5 #ifdef ENABLE_LOGGING_AND_PROFILING | 5 #ifdef ENABLE_LOGGING_AND_PROFILING |
| 6 | 6 |
| 7 #include "v8.h" | 7 #include "v8.h" |
| 8 #include "cpu-profiler-inl.h" | 8 #include "cpu-profiler-inl.h" |
| 9 #include "cctest.h" | 9 #include "cctest.h" |
| 10 #include "../include/v8-profiler.h" | |
| 10 | 11 |
| 11 namespace i = v8::internal; | 12 namespace i = v8::internal; |
| 12 | 13 |
| 13 using i::CodeEntry; | 14 using i::CodeEntry; |
| 14 using i::CpuProfile; | 15 using i::CpuProfile; |
| 15 using i::CpuProfiler; | 16 using i::CpuProfiler; |
| 16 using i::CpuProfilesCollection; | 17 using i::CpuProfilesCollection; |
| 17 using i::ProfileGenerator; | 18 using i::ProfileGenerator; |
| 18 using i::ProfileNode; | 19 using i::ProfileNode; |
| 19 using i::ProfilerEventsProcessor; | 20 using i::ProfilerEventsProcessor; |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 InitializeVM(); | 230 InitializeVM(); |
| 230 TestSetup test_setup; | 231 TestSetup test_setup; |
| 231 CpuProfiler::Setup(); | 232 CpuProfiler::Setup(); |
| 232 CpuProfiler::StartProfiling("1"); | 233 CpuProfiler::StartProfiling("1"); |
| 233 CpuProfiler::StopProfiling("2"); | 234 CpuProfiler::StopProfiling("2"); |
| 234 CpuProfiler::StartProfiling("1"); | 235 CpuProfiler::StartProfiling("1"); |
| 235 CpuProfiler::StopProfiling(""); | 236 CpuProfiler::StopProfiling(""); |
| 236 CpuProfiler::TearDown(); | 237 CpuProfiler::TearDown(); |
| 237 } | 238 } |
| 238 | 239 |
| 240 | |
| 241 TEST(DeleteAllCpuProfiles) { | |
| 242 InitializeVM(); | |
| 243 TestSetup test_setup; | |
| 244 CpuProfiler::Setup(); | |
| 245 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 246 CpuProfiler::DeleteAllProfiles(); | |
| 247 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 248 | |
| 249 CpuProfiler::StartProfiling("1"); | |
| 250 CpuProfiler::StopProfiling("1"); | |
| 251 CHECK_EQ(1, CpuProfiler::GetProfilesCount()); | |
| 252 CpuProfiler::DeleteAllProfiles(); | |
| 253 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 254 CpuProfiler::StartProfiling("1"); | |
| 255 CpuProfiler::StartProfiling("2"); | |
| 256 CpuProfiler::StopProfiling("2"); | |
| 257 CpuProfiler::StopProfiling("1"); | |
| 258 CHECK_EQ(2, CpuProfiler::GetProfilesCount()); | |
| 259 CpuProfiler::DeleteAllProfiles(); | |
| 260 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 261 | |
| 262 // Test profiling cancellation by the 'delete' command. | |
| 263 CpuProfiler::StartProfiling("1"); | |
| 264 CpuProfiler::StartProfiling("2"); | |
| 265 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 266 CpuProfiler::DeleteAllProfiles(); | |
| 267 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 268 | |
| 269 CpuProfiler::TearDown(); | |
| 270 } | |
| 271 | |
| 272 | |
| 273 TEST(DeleteCpuProfile) { | |
| 274 v8::HandleScope scope; | |
| 275 LocalContext env; | |
| 276 | |
| 277 CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount()); | |
| 278 v8::Local<v8::String> name1 = v8::String::New("1"); | |
| 279 v8::CpuProfiler::StartProfiling(name1); | |
| 280 const v8::CpuProfile* p1 = v8::CpuProfiler::StopProfiling(name1); | |
| 281 CHECK_NE(NULL, p1); | |
| 282 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 283 unsigned uid1 = p1->GetUid(); | |
| 284 CHECK_EQ(p1, v8::CpuProfiler::FindProfile(uid1)); | |
| 285 p1->Delete(); | |
| 286 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 287 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.
| |
| 288 | |
| 289 v8::Local<v8::String> name2 = v8::String::New("2"); | |
| 290 v8::CpuProfiler::StartProfiling(name2); | |
| 291 const v8::CpuProfile* p2 = v8::CpuProfiler::StopProfiling(name2); | |
| 292 CHECK_NE(NULL, p2); | |
| 293 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 294 unsigned uid2 = p2->GetUid(); | |
| 295 CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid2)); | |
| 296 CHECK_EQ(p2, v8::CpuProfiler::FindProfile(uid2)); | |
| 297 v8::Local<v8::String> name3 = v8::String::New("3"); | |
| 298 v8::CpuProfiler::StartProfiling(name3); | |
| 299 const v8::CpuProfile* p3 = v8::CpuProfiler::StopProfiling(name3); | |
| 300 CHECK_NE(NULL, p3); | |
| 301 CHECK_EQ(2, v8::CpuProfiler::GetProfilesCount()); | |
| 302 unsigned uid3 = p3->GetUid(); | |
| 303 CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid3)); | |
| 304 CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); | |
| 305 p2->Delete(); | |
| 306 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 307 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.
| |
| 308 CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); | |
| 309 p3->Delete(); | |
| 310 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 311 CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid3)); | |
| 312 } | |
| 313 | |
| 314 | |
| 315 TEST(DeleteCpuProfileDifferentTokens) { | |
| 316 v8::HandleScope scope; | |
| 317 LocalContext env; | |
| 318 | |
| 319 CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount()); | |
| 320 v8::Local<v8::String> name1 = v8::String::New("1"); | |
| 321 v8::CpuProfiler::StartProfiling(name1); | |
| 322 const v8::CpuProfile* p1 = v8::CpuProfiler::StopProfiling(name1); | |
| 323 CHECK_NE(NULL, p1); | |
| 324 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 325 unsigned uid1 = p1->GetUid(); | |
| 326 CHECK_EQ(p1, v8::CpuProfiler::FindProfile(uid1)); | |
| 327 v8::Local<v8::String> token1 = v8::String::New("token1"); | |
| 328 const v8::CpuProfile* p1_t1 = v8::CpuProfiler::FindProfile(uid1, token1); | |
| 329 CHECK_NE(NULL, p1_t1); | |
| 330 CHECK_NE(p1, p1_t1); | |
| 331 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 332 p1->Delete(); | |
| 333 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 334 CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1)); | |
| 335 CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1, token1)); | |
| 336 p1_t1->Delete(); | |
| 337 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 338 | |
| 339 v8::Local<v8::String> name2 = v8::String::New("2"); | |
| 340 v8::CpuProfiler::StartProfiling(name2); | |
| 341 v8::Local<v8::String> token2 = v8::String::New("token2"); | |
| 342 const v8::CpuProfile* p2_t2 = v8::CpuProfiler::StopProfiling(name2, token2); | |
| 343 CHECK_NE(NULL, p2_t2); | |
| 344 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 345 unsigned uid2 = p2_t2->GetUid(); | |
| 346 CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid2)); | |
| 347 const v8::CpuProfile* p2 = v8::CpuProfiler::FindProfile(uid2); | |
| 348 CHECK_NE(p2_t2, p2); | |
| 349 v8::Local<v8::String> name3 = v8::String::New("3"); | |
| 350 v8::CpuProfiler::StartProfiling(name3); | |
| 351 const v8::CpuProfile* p3 = v8::CpuProfiler::StopProfiling(name3); | |
| 352 CHECK_NE(NULL, p3); | |
| 353 CHECK_EQ(2, v8::CpuProfiler::GetProfilesCount()); | |
| 354 unsigned uid3 = p3->GetUid(); | |
| 355 CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid3)); | |
| 356 CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); | |
| 357 p2_t2->Delete(); | |
| 358 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 359 CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2)); | |
| 360 CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); | |
| 361 p2->Delete(); | |
| 362 CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount()); | |
| 363 CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2)); | |
| 364 CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3)); | |
| 365 p3->Delete(); | |
| 366 CHECK_EQ(0, CpuProfiler::GetProfilesCount()); | |
| 367 CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid3)); | |
| 368 } | |
| 369 | |
| 239 #endif // ENABLE_LOGGING_AND_PROFILING | 370 #endif // ENABLE_LOGGING_AND_PROFILING |
| OLD | NEW |