Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: base/tracked_objects_unittest.cc

Issue 9590002: JSONWriter cleanup: integrate pretty print into write options. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix merge conflict 7. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Test of classes in the tracked_objects.h classes. 5 // Test of classes in the tracked_objects.h classes.
6 6
7 #include "base/tracked_objects.h" 7 #include "base/tracked_objects.h"
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 EXPECT_EQ(1u, birth_map.size()); // 1 birth location. 165 EXPECT_EQ(1u, birth_map.size()); // 1 birth location.
166 EXPECT_EQ(2, birth_map.begin()->second->birth_count()); // 2 births. 166 EXPECT_EQ(2, birth_map.begin()->second->birth_count()); // 2 births.
167 EXPECT_EQ(0u, death_map.size()); // No status yet. 167 EXPECT_EQ(0u, death_map.size()); // No status yet.
168 // Just like TinyStartupShutdown test. 168 // Just like TinyStartupShutdown test.
169 EXPECT_EQ(1u, parent_child_set.size()); // 1 child. 169 EXPECT_EQ(1u, parent_child_set.size()); // 1 child.
170 EXPECT_EQ(parent_child_set.begin()->first, 170 EXPECT_EQ(parent_child_set.begin()->first,
171 parent_child_set.begin()->second); 171 parent_child_set.begin()->second);
172 172
173 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 173 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
174 std::string json; 174 std::string json;
175 base::JSONWriter::Write(value.get(), false, &json); 175 base::JSONWriter::Write(value.get(), &json);
176 std::string birth_only_result = "{" 176 std::string birth_only_result = "{"
177 "\"descendants\":[" 177 "\"descendants\":["
178 "{" 178 "{"
179 "\"child_location\":{" 179 "\"child_location\":{"
180 "\"file_name\":\"FixedUnitTestFileName\"," 180 "\"file_name\":\"FixedUnitTestFileName\","
181 "\"function_name\":\"ParentChildTest\"," 181 "\"function_name\":\"ParentChildTest\","
182 "\"line_number\":1776" 182 "\"line_number\":1776"
183 "}," 183 "},"
184 "\"child_thread\":\"WorkerThread-1\"," 184 "\"child_thread\":\"WorkerThread-1\","
185 "\"parent_location\":{" 185 "\"parent_location\":{"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 EXPECT_EQ(integer, run_ms); 253 EXPECT_EQ(integer, run_ms);
254 EXPECT_TRUE(dictionary->GetInteger("queue_ms", &integer)); 254 EXPECT_TRUE(dictionary->GetInteger("queue_ms", &integer));
255 EXPECT_EQ(integer, 2 * queue_ms); 255 EXPECT_EQ(integer, 2 * queue_ms);
256 EXPECT_TRUE(dictionary->GetInteger("queue_ms_sample", &integer)); 256 EXPECT_TRUE(dictionary->GetInteger("queue_ms_sample", &integer));
257 EXPECT_EQ(integer, queue_ms); 257 EXPECT_EQ(integer, queue_ms);
258 EXPECT_TRUE(dictionary->GetInteger("count", &integer)); 258 EXPECT_TRUE(dictionary->GetInteger("count", &integer));
259 EXPECT_EQ(integer, 2); 259 EXPECT_EQ(integer, 2);
260 260
261 scoped_ptr<base::Value> value(data->ToValue()); 261 scoped_ptr<base::Value> value(data->ToValue());
262 std::string json; 262 std::string json;
263 base::JSONWriter::Write(value.get(), false, &json); 263 base::JSONWriter::Write(value.get(), &json);
264 std::string birth_only_result = "{" 264 std::string birth_only_result = "{"
265 "\"count\":2," 265 "\"count\":2,"
266 "\"queue_ms\":16," 266 "\"queue_ms\":16,"
267 "\"queue_ms_max\":8," 267 "\"queue_ms_max\":8,"
268 "\"queue_ms_sample\":8," 268 "\"queue_ms_sample\":8,"
269 "\"run_ms\":84," 269 "\"run_ms\":84,"
270 "\"run_ms_max\":42," 270 "\"run_ms_max\":42,"
271 "\"run_ms_sample\":42" 271 "\"run_ms_sample\":42"
272 "}"; 272 "}";
273 EXPECT_EQ(birth_only_result, json); 273 EXPECT_EQ(birth_only_result, json);
274 } 274 }
275 275
276 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueWorkerThread) { 276 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueWorkerThread) {
277 // Transition to Deactivated state before doing anything. 277 // Transition to Deactivated state before doing anything.
278 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) 278 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED))
279 return; 279 return;
280 // We don't initialize system with a thread name, so we're viewed as a worker 280 // We don't initialize system with a thread name, so we're viewed as a worker
281 // thread. 281 // thread.
282 const int kFakeLineNumber = 173; 282 const int kFakeLineNumber = 173;
283 const char* kFile = "FixedFileName"; 283 const char* kFile = "FixedFileName";
284 const char* kFunction = "BirthOnlyToValueWorkerThread"; 284 const char* kFunction = "BirthOnlyToValueWorkerThread";
285 Location location(kFunction, kFile, kFakeLineNumber, NULL); 285 Location location(kFunction, kFile, kFakeLineNumber, NULL);
286 Births* birth = ThreadData::TallyABirthIfActive(location); 286 Births* birth = ThreadData::TallyABirthIfActive(location);
287 // We should now see a NULL birth record. 287 // We should now see a NULL birth record.
288 EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL)); 288 EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL));
289 289
290 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 290 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
291 std::string json; 291 std::string json;
292 base::JSONWriter::Write(value.get(), false, &json); 292 base::JSONWriter::Write(value.get(), &json);
293 std::string birth_only_result = "{" 293 std::string birth_only_result = "{"
294 "\"descendants\":[" 294 "\"descendants\":["
295 "]," 295 "],"
296 "\"list\":[" 296 "\"list\":["
297 "]" 297 "]"
298 "}"; 298 "}";
299 EXPECT_EQ(json, birth_only_result); 299 EXPECT_EQ(json, birth_only_result);
300 } 300 }
301 301
302 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) { 302 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) {
303 // Start in the deactivated state. 303 // Start in the deactivated state.
304 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) 304 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED))
305 return; 305 return;
306 306
307 // Use a well named thread. 307 // Use a well named thread.
308 ThreadData::InitializeThreadContext("SomeMainThreadName"); 308 ThreadData::InitializeThreadContext("SomeMainThreadName");
309 const int kFakeLineNumber = 173; 309 const int kFakeLineNumber = 173;
310 const char* kFile = "FixedFileName"; 310 const char* kFile = "FixedFileName";
311 const char* kFunction = "BirthOnlyToValueMainThread"; 311 const char* kFunction = "BirthOnlyToValueMainThread";
312 Location location(kFunction, kFile, kFakeLineNumber, NULL); 312 Location location(kFunction, kFile, kFakeLineNumber, NULL);
313 // Do not delete birth. We don't own it. 313 // Do not delete birth. We don't own it.
314 Births* birth = ThreadData::TallyABirthIfActive(location); 314 Births* birth = ThreadData::TallyABirthIfActive(location);
315 // We expect to not get a birth record. 315 // We expect to not get a birth record.
316 EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL)); 316 EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL));
317 317
318 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 318 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
319 std::string json; 319 std::string json;
320 base::JSONWriter::Write(value.get(), false, &json); 320 base::JSONWriter::Write(value.get(), &json);
321 std::string birth_only_result = "{" 321 std::string birth_only_result = "{"
322 "\"descendants\":[" 322 "\"descendants\":["
323 "]," 323 "],"
324 "\"list\":[" 324 "\"list\":["
325 "]" 325 "]"
326 "}"; 326 "}";
327 EXPECT_EQ(json, birth_only_result); 327 EXPECT_EQ(json, birth_only_result);
328 } 328 }
329 329
330 TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) { 330 TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) {
331 if (!ThreadData::InitializeAndSetTrackingStatus( 331 if (!ThreadData::InitializeAndSetTrackingStatus(
332 ThreadData::PROFILING_CHILDREN_ACTIVE)) 332 ThreadData::PROFILING_CHILDREN_ACTIVE))
333 return; 333 return;
334 // We don't initialize system with a thread name, so we're viewed as a worker 334 // We don't initialize system with a thread name, so we're viewed as a worker
335 // thread. 335 // thread.
336 const int kFakeLineNumber = 173; 336 const int kFakeLineNumber = 173;
337 const char* kFile = "FixedFileName"; 337 const char* kFile = "FixedFileName";
338 const char* kFunction = "BirthOnlyToValueWorkerThread"; 338 const char* kFunction = "BirthOnlyToValueWorkerThread";
339 Location location(kFunction, kFile, kFakeLineNumber, NULL); 339 Location location(kFunction, kFile, kFakeLineNumber, NULL);
340 Births* birth = ThreadData::TallyABirthIfActive(location); 340 Births* birth = ThreadData::TallyABirthIfActive(location);
341 EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); 341 EXPECT_NE(birth, reinterpret_cast<Births*>(NULL));
342 342
343 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 343 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
344 std::string json; 344 std::string json;
345 base::JSONWriter::Write(value.get(), false, &json); 345 base::JSONWriter::Write(value.get(), &json);
346 std::string birth_only_result = "{" 346 std::string birth_only_result = "{"
347 "\"descendants\":[" 347 "\"descendants\":["
348 "]," 348 "],"
349 "\"list\":[" 349 "\"list\":["
350 "{" 350 "{"
351 "\"birth_thread\":\"WorkerThread-1\"," 351 "\"birth_thread\":\"WorkerThread-1\","
352 "\"death_data\":{" 352 "\"death_data\":{"
353 "\"count\":1," 353 "\"count\":1,"
354 "\"queue_ms\":0," 354 "\"queue_ms\":0,"
355 "\"queue_ms_max\":0," 355 "\"queue_ms_max\":0,"
(...skipping 24 matching lines...) Expand all
380 const int kFakeLineNumber = 173; 380 const int kFakeLineNumber = 173;
381 const char* kFile = "FixedFileName"; 381 const char* kFile = "FixedFileName";
382 const char* kFunction = "BirthOnlyToValueMainThread"; 382 const char* kFunction = "BirthOnlyToValueMainThread";
383 Location location(kFunction, kFile, kFakeLineNumber, NULL); 383 Location location(kFunction, kFile, kFakeLineNumber, NULL);
384 // Do not delete birth. We don't own it. 384 // Do not delete birth. We don't own it.
385 Births* birth = ThreadData::TallyABirthIfActive(location); 385 Births* birth = ThreadData::TallyABirthIfActive(location);
386 EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); 386 EXPECT_NE(birth, reinterpret_cast<Births*>(NULL));
387 387
388 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 388 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
389 std::string json; 389 std::string json;
390 base::JSONWriter::Write(value.get(), false, &json); 390 base::JSONWriter::Write(value.get(), &json);
391 std::string birth_only_result = "{" 391 std::string birth_only_result = "{"
392 "\"descendants\":[" 392 "\"descendants\":["
393 "]," 393 "],"
394 "\"list\":[" 394 "\"list\":["
395 "{" 395 "{"
396 "\"birth_thread\":\"SomeMainThreadName\"," 396 "\"birth_thread\":\"SomeMainThreadName\","
397 "\"death_data\":{" 397 "\"death_data\":{"
398 "\"count\":1," 398 "\"count\":1,"
399 "\"queue_ms\":0," 399 "\"queue_ms\":0,"
400 "\"queue_ms_max\":0," 400 "\"queue_ms_max\":0,"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 pending_task.time_posted = kTimePosted; // Overwrite implied Now(). 438 pending_task.time_posted = kTimePosted; // Overwrite implied Now().
439 439
440 const TrackedTime kStartOfRun = TrackedTime() + 440 const TrackedTime kStartOfRun = TrackedTime() +
441 Duration::FromMilliseconds(5); 441 Duration::FromMilliseconds(5);
442 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); 442 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
443 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, 443 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
444 kStartOfRun, kEndOfRun); 444 kStartOfRun, kEndOfRun);
445 445
446 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 446 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
447 std::string json; 447 std::string json;
448 base::JSONWriter::Write(value.get(), false, &json); 448 base::JSONWriter::Write(value.get(), &json);
449 std::string one_line_result = "{" 449 std::string one_line_result = "{"
450 "\"descendants\":[" 450 "\"descendants\":["
451 "]," 451 "],"
452 "\"list\":[" 452 "\"list\":["
453 "{" 453 "{"
454 "\"birth_thread\":\"SomeMainThreadName\"," 454 "\"birth_thread\":\"SomeMainThreadName\","
455 "\"death_data\":{" 455 "\"death_data\":{"
456 "\"count\":1," 456 "\"count\":1,"
457 "\"queue_ms\":4," 457 "\"queue_ms\":4,"
458 "\"queue_ms_max\":4," 458 "\"queue_ms_max\":4,"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 ThreadData::DEACTIVATED)); 504 ThreadData::DEACTIVATED));
505 505
506 const TrackedTime kStartOfRun = TrackedTime() + 506 const TrackedTime kStartOfRun = TrackedTime() +
507 Duration::FromMilliseconds(5); 507 Duration::FromMilliseconds(5);
508 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); 508 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
509 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, 509 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
510 kStartOfRun, kEndOfRun); 510 kStartOfRun, kEndOfRun);
511 511
512 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 512 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
513 std::string json; 513 std::string json;
514 base::JSONWriter::Write(value.get(), false, &json); 514 base::JSONWriter::Write(value.get(), &json);
515 std::string one_line_result = "{" 515 std::string one_line_result = "{"
516 "\"descendants\":[" 516 "\"descendants\":["
517 "]," 517 "],"
518 "\"list\":[" 518 "\"list\":["
519 "{" 519 "{"
520 "\"birth_thread\":\"SomeMainThreadName\"," 520 "\"birth_thread\":\"SomeMainThreadName\","
521 "\"death_data\":{" 521 "\"death_data\":{"
522 "\"count\":1," 522 "\"count\":1,"
523 "\"queue_ms\":4," 523 "\"queue_ms\":4,"
524 "\"queue_ms_max\":4," 524 "\"queue_ms_max\":4,"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 pending_task.time_posted = kTimePosted; // Overwrite implied Now(). 563 pending_task.time_posted = kTimePosted; // Overwrite implied Now().
564 564
565 const TrackedTime kStartOfRun = TrackedTime() + 565 const TrackedTime kStartOfRun = TrackedTime() +
566 Duration::FromMilliseconds(5); 566 Duration::FromMilliseconds(5);
567 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); 567 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
568 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, 568 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
569 kStartOfRun, kEndOfRun); 569 kStartOfRun, kEndOfRun);
570 570
571 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 571 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
572 std::string json; 572 std::string json;
573 base::JSONWriter::Write(value.get(), false, &json); 573 base::JSONWriter::Write(value.get(), &json);
574 std::string one_line_result = "{" 574 std::string one_line_result = "{"
575 "\"descendants\":[" 575 "\"descendants\":["
576 "]," 576 "],"
577 "\"list\":[" 577 "\"list\":["
578 "]" 578 "]"
579 "}"; 579 "}";
580 EXPECT_EQ(one_line_result, json); 580 EXPECT_EQ(one_line_result, json);
581 } 581 }
582 582
583 TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) { 583 TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) {
(...skipping 15 matching lines...) Expand all
599 const TrackedTime kTimePosted = TrackedTime() + Duration::FromMilliseconds(1); 599 const TrackedTime kTimePosted = TrackedTime() + Duration::FromMilliseconds(1);
600 const TrackedTime kStartOfRun = TrackedTime() + 600 const TrackedTime kStartOfRun = TrackedTime() +
601 Duration::FromMilliseconds(5); 601 Duration::FromMilliseconds(5);
602 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); 602 const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7);
603 ThreadData::TallyRunOnWorkerThreadIfTracking(birth, kTimePosted, 603 ThreadData::TallyRunOnWorkerThreadIfTracking(birth, kTimePosted,
604 kStartOfRun, kEndOfRun); 604 kStartOfRun, kEndOfRun);
605 605
606 // Call for the ToValue, but tell it to not the maxes after scanning. 606 // Call for the ToValue, but tell it to not the maxes after scanning.
607 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 607 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
608 std::string json; 608 std::string json;
609 base::JSONWriter::Write(value.get(), false, &json); 609 base::JSONWriter::Write(value.get(), &json);
610 std::string one_line_result = "{" 610 std::string one_line_result = "{"
611 "\"descendants\":[" 611 "\"descendants\":["
612 "]," 612 "],"
613 "\"list\":[" 613 "\"list\":["
614 "{" 614 "{"
615 "\"birth_thread\":\"WorkerThread-1\"," 615 "\"birth_thread\":\"WorkerThread-1\","
616 "\"death_data\":{" 616 "\"death_data\":{"
617 "\"count\":1," 617 "\"count\":1,"
618 "\"queue_ms\":4," 618 "\"queue_ms\":4,"
619 "\"queue_ms_max\":4," 619 "\"queue_ms_max\":4,"
(...skipping 10 matching lines...) Expand all
630 "}" 630 "}"
631 "}" 631 "}"
632 "]" 632 "]"
633 "}"; 633 "}";
634 EXPECT_EQ(one_line_result, json); 634 EXPECT_EQ(one_line_result, json);
635 635
636 // Call for the ToValue, but tell it to reset the maxes after scanning. 636 // Call for the ToValue, but tell it to reset the maxes after scanning.
637 // We'll still get the same values, but the data will be reset (which we'll 637 // We'll still get the same values, but the data will be reset (which we'll
638 // see in a moment). 638 // see in a moment).
639 value.reset(ThreadData::ToValue(true)); 639 value.reset(ThreadData::ToValue(true));
640 base::JSONWriter::Write(value.get(), false, &json); 640 base::JSONWriter::Write(value.get(), &json);
641 // Result should be unchanged. 641 // Result should be unchanged.
642 EXPECT_EQ(one_line_result, json); 642 EXPECT_EQ(one_line_result, json);
643 643
644 // Call for the ToValue, and now we'll see the result of the last translation, 644 // Call for the ToValue, and now we'll see the result of the last translation,
645 // as the max will have been pushed back to zero. 645 // as the max will have been pushed back to zero.
646 value.reset(ThreadData::ToValue(false)); 646 value.reset(ThreadData::ToValue(false));
647 base::JSONWriter::Write(value.get(), false, &json); 647 base::JSONWriter::Write(value.get(), &json);
648 std::string one_line_result_with_zeros = "{" 648 std::string one_line_result_with_zeros = "{"
649 "\"descendants\":[" 649 "\"descendants\":["
650 "]," 650 "],"
651 "\"list\":[" 651 "\"list\":["
652 "{" 652 "{"
653 "\"birth_thread\":\"WorkerThread-1\"," 653 "\"birth_thread\":\"WorkerThread-1\","
654 "\"death_data\":{" 654 "\"death_data\":{"
655 "\"count\":1," 655 "\"count\":1,"
656 "\"queue_ms\":4," 656 "\"queue_ms\":4,"
657 "\"queue_ms_max\":0," // Note zero here. 657 "\"queue_ms_max\":0," // Note zero here.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 703
704 // TrackingInfo will call TallyABirth() during construction. 704 // TrackingInfo will call TallyABirth() during construction.
705 base::TrackingInfo pending_task2(location, kDelayedStartTime); 705 base::TrackingInfo pending_task2(location, kDelayedStartTime);
706 pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). 706 pending_task2.time_posted = kTimePosted; // Overwrite implied Now().
707 707
708 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task2, 708 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task2,
709 kStartOfRun, kEndOfRun); 709 kStartOfRun, kEndOfRun);
710 710
711 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 711 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
712 std::string json; 712 std::string json;
713 base::JSONWriter::Write(value.get(), false, &json); 713 base::JSONWriter::Write(value.get(), &json);
714 std::string one_line_result = "{" 714 std::string one_line_result = "{"
715 "\"descendants\":[" 715 "\"descendants\":["
716 "]," 716 "],"
717 "\"list\":[" 717 "\"list\":["
718 "{" 718 "{"
719 "\"birth_thread\":\"SomeFileThreadName\"," 719 "\"birth_thread\":\"SomeFileThreadName\","
720 "\"death_data\":{" 720 "\"death_data\":{"
721 "\"count\":2," 721 "\"count\":2,"
722 "\"queue_ms\":8," 722 "\"queue_ms\":8,"
723 "\"queue_ms_max\":4," 723 "\"queue_ms_max\":4,"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 765
766 const int kSecondFakeLineNumber = 999; 766 const int kSecondFakeLineNumber = 999;
767 Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL); 767 Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL);
768 768
769 // TrackingInfo will call TallyABirth() during construction. 769 // TrackingInfo will call TallyABirth() during construction.
770 base::TrackingInfo pending_task2(second_location, kDelayedStartTime); 770 base::TrackingInfo pending_task2(second_location, kDelayedStartTime);
771 pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). 771 pending_task2.time_posted = kTimePosted; // Overwrite implied Now().
772 772
773 scoped_ptr<base::Value> value(ThreadData::ToValue(false)); 773 scoped_ptr<base::Value> value(ThreadData::ToValue(false));
774 std::string json; 774 std::string json;
775 base::JSONWriter::Write(value.get(), false, &json); 775 base::JSONWriter::Write(value.get(), &json);
776 std::string one_line_result = "{" 776 std::string one_line_result = "{"
777 "\"descendants\":[" 777 "\"descendants\":["
778 "]," 778 "],"
779 "\"list\":[" 779 "\"list\":["
780 "{" 780 "{"
781 "\"birth_thread\":\"SomeFileThreadName\"," 781 "\"birth_thread\":\"SomeFileThreadName\","
782 "\"death_data\":{" 782 "\"death_data\":{"
783 "\"count\":1," 783 "\"count\":1,"
784 "\"queue_ms\":4," 784 "\"queue_ms\":4,"
785 "\"queue_ms_max\":4," 785 "\"queue_ms_max\":4,"
(...skipping 27 matching lines...) Expand all
813 "\"line_number\":999" 813 "\"line_number\":999"
814 "}" 814 "}"
815 "}" 815 "}"
816 "]" 816 "]"
817 "}"; 817 "}";
818 EXPECT_EQ(one_line_result, json); 818 EXPECT_EQ(one_line_result, json);
819 } 819 }
820 820
821 821
822 } // namespace tracked_objects 822 } // namespace tracked_objects
OLDNEW
« no previous file with comments | « base/json/json_writer_unittest.cc ('k') | chrome/browser/accessibility/accessibility_extension_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698