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

Side by Side Diff: runtime/vm/service_test.cc

Issue 487023003: vmservice protocol cleanup (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: gen js Created 6 years, 4 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/globals.h" 5 #include "platform/globals.h"
6 6
7 #include "include/dart_debugger_api.h" 7 #include "include/dart_debugger_api.h"
8 #include "vm/dart_api_impl.h" 8 #include "vm/dart_api_impl.h"
9 #include "vm/dart_entry.h" 9 #include "vm/dart_entry.h"
10 #include "vm/debugger.h" 10 #include "vm/debugger.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 vmlib.index()); 285 vmlib.index());
286 Service::HandleIsolateMessage(isolate, service_msg); 286 Service::HandleIsolateMessage(isolate, service_msg);
287 handler.HandleNextMessage(); 287 handler.HandleNextMessage();
288 ExpectSubstringF( 288 ExpectSubstringF(
289 handler.msg(), 289 handler.msg(),
290 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," 290 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\","
291 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," 291 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false,"
292 "\"location\":{\"type\":\"Location\"," 292 "\"location\":{\"type\":\"Location\","
293 "\"script\":{\"type\":\"@Script\"," 293 "\"script\":{\"type\":\"@Script\","
294 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 294 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
295 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," 295 "\"name\":\"test-lib\",\"kind\":\"script\"},"
296 "\"tokenPos\":5}}", 296 "\"tokenPos\":5}}",
297 vmlib.index()); 297 vmlib.index());
298 298
299 // Get the breakpoint list. 299 // Get the breakpoint list.
300 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]"); 300 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]");
301 Service::HandleIsolateMessage(isolate, service_msg); 301 Service::HandleIsolateMessage(isolate, service_msg);
302 handler.HandleNextMessage(); 302 handler.HandleNextMessage();
303 ExpectSubstringF( 303 ExpectSubstringF(
304 handler.msg(), 304 handler.msg(),
305 "{\"type\":\"BreakpointList\",\"id\":\"debug\\/breakpoints\"," 305 "{\"type\":\"BreakpointList\",\"id\":\"debug\\/breakpoints\","
306 "\"breakpoints\":[" 306 "\"breakpoints\":["
307 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," 307 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\","
308 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," 308 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false,"
309 "\"location\":{\"type\":\"Location\"," 309 "\"location\":{\"type\":\"Location\","
310 "\"script\":{\"type\":\"@Script\"," 310 "\"script\":{\"type\":\"@Script\","
311 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 311 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
312 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," 312 "\"name\":\"test-lib\",\"kind\":\"script\"},"
313 "\"tokenPos\":5}}]}", 313 "\"tokenPos\":5}}]}",
314 vmlib.index()); 314 vmlib.index());
315 315
316 // Lookup individual breakpoint. 316 // Lookup individual breakpoint.
317 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints', '1'], [], []]"); 317 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints', '1'], [], []]");
318 Service::HandleIsolateMessage(isolate, service_msg); 318 Service::HandleIsolateMessage(isolate, service_msg);
319 handler.HandleNextMessage(); 319 handler.HandleNextMessage();
320 ExpectSubstringF( 320 ExpectSubstringF(
321 handler.msg(), 321 handler.msg(),
322 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," 322 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\","
323 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," 323 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false,"
324 "\"location\":{\"type\":\"Location\"," 324 "\"location\":{\"type\":\"Location\","
325 "\"script\":{\"type\":\"@Script\"," 325 "\"script\":{\"type\":\"@Script\","
326 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 326 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
327 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," 327 "\"name\":\"test-lib\",\"kind\":\"script\"},"
328 "\"tokenPos\":5}}", 328 "\"tokenPos\":5}}",
329 vmlib.index()); 329 vmlib.index());
330 330
331 // Unrecognized breakpoint subcommand. 331 // Unrecognized breakpoint subcommand.
332 service_msg = 332 service_msg =
333 Eval(lib, "[0, port, ['debug', 'breakpoints', '1', 'green'], [], []]"); 333 Eval(lib, "[0, port, ['debug', 'breakpoints', '1', 'green'], [], []]");
334 Service::HandleIsolateMessage(isolate, service_msg); 334 Service::HandleIsolateMessage(isolate, service_msg);
335 handler.HandleNextMessage(); 335 handler.HandleNextMessage();
336 EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\"," 336 EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\","
337 "\"message\":\"Unrecognized subcommand: green\"," 337 "\"message\":\"Unrecognized subcommand: green\","
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 vmlib.index()); 461 vmlib.index());
462 Service::HandleIsolateMessage(isolate, service_msg); 462 Service::HandleIsolateMessage(isolate, service_msg);
463 handler.HandleNextMessage(); 463 handler.HandleNextMessage();
464 ExpectSubstringF( 464 ExpectSubstringF(
465 handler.msg(), 465 handler.msg(),
466 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," 466 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\","
467 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," 467 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false,"
468 "\"location\":{\"type\":\"Location\"," 468 "\"location\":{\"type\":\"Location\","
469 "\"script\":{\"type\":\"@Script\"," 469 "\"script\":{\"type\":\"@Script\","
470 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 470 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
471 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," 471 "\"name\":\"test-lib\",\"kind\":\"script\"},"
472 "\"tokenPos\":11}}", 472 "\"tokenPos\":11}}",
473 vmlib.index()); 473 vmlib.index());
474 474
475 pause_line_number = -1; 475 pause_line_number = -1;
476 Dart_SetPausedEventHandler(HandlePausedEvent); 476 Dart_SetPausedEventHandler(HandlePausedEvent);
477 477
478 // Run the program. 478 // Run the program.
479 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); 479 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
480 EXPECT_VALID(result); 480 EXPECT_VALID(result);
481 481
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 Dart_Handle valid_id = Dart_NewInteger(arr_id); 515 Dart_Handle valid_id = Dart_NewInteger(arr_id);
516 EXPECT_VALID(valid_id); 516 EXPECT_VALID(valid_id);
517 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id)); 517 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id));
518 518
519 Array& service_msg = Array::Handle(); 519 Array& service_msg = Array::Handle();
520 520
521 // null 521 // null
522 service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]"); 522 service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]");
523 Service::HandleIsolateMessage(isolate, service_msg); 523 Service::HandleIsolateMessage(isolate, service_msg);
524 handler.HandleNextMessage(); 524 handler.HandleNextMessage();
525 handler.filterMsg("name"); 525 handler.filterMsg("vmName");
526 EXPECT_STREQ( 526 EXPECT_STREQ(
527 "{\"type\":\"Null\",\"id\":\"objects\\/null\"," 527 "{\"type\":\"Null\",\"id\":\"objects\\/null\","
528 "\"valueAsString\":\"null\"}", 528 "\"valueAsString\":\"null\"}",
529 handler.msg()); 529 handler.msg());
530 530
531 // not initialized 531 // not initialized
532 service_msg = Eval(lib, "[0, port, ['objects', 'not-initialized'], [], []]"); 532 service_msg = Eval(lib, "[0, port, ['objects', 'not-initialized'], [], []]");
533 Service::HandleIsolateMessage(isolate, service_msg); 533 Service::HandleIsolateMessage(isolate, service_msg);
534 handler.HandleNextMessage(); 534 handler.HandleNextMessage();
535 handler.filterMsg("name"); 535 handler.filterMsg("vmName");
536 EXPECT_STREQ( 536 EXPECT_STREQ(
537 "{\"type\":\"Null\",\"id\":\"objects\\/not-initialized\"," 537 "{\"type\":\"Null\",\"id\":\"objects\\/not-initialized\","
538 "\"valueAsString\":\"<not initialized>\"}", 538 "\"valueAsString\":\"<not initialized>\"}",
539 handler.msg()); 539 handler.msg());
540 540
541 // being initialized 541 // being initialized
542 service_msg = Eval(lib, 542 service_msg = Eval(lib,
543 "[0, port, ['objects', 'being-initialized'], [], []]"); 543 "[0, port, ['objects', 'being-initialized'], [], []]");
544 Service::HandleIsolateMessage(isolate, service_msg); 544 Service::HandleIsolateMessage(isolate, service_msg);
545 handler.HandleNextMessage(); 545 handler.HandleNextMessage();
546 handler.filterMsg("name"); 546 handler.filterMsg("vmName");
547 EXPECT_STREQ( 547 EXPECT_STREQ(
548 "{\"type\":\"Null\",\"id\":\"objects\\/being-initialized\"," 548 "{\"type\":\"Null\",\"id\":\"objects\\/being-initialized\","
549 "\"valueAsString\":\"<being initialized>\"}", 549 "\"valueAsString\":\"<being initialized>\"}",
550 handler.msg()); 550 handler.msg());
551 551
552 // optimized out 552 // optimized out
553 service_msg = Eval(lib, "[0, port, ['objects', 'optimized-out'], [], []]"); 553 service_msg = Eval(lib, "[0, port, ['objects', 'optimized-out'], [], []]");
554 Service::HandleIsolateMessage(isolate, service_msg); 554 Service::HandleIsolateMessage(isolate, service_msg);
555 handler.HandleNextMessage(); 555 handler.HandleNextMessage();
556 handler.filterMsg("name"); 556 handler.filterMsg("vmName");
557 EXPECT_STREQ( 557 EXPECT_STREQ(
558 "{\"type\":\"Null\",\"id\":\"objects\\/optimized-out\"," 558 "{\"type\":\"Null\",\"id\":\"objects\\/optimized-out\","
559 "\"valueAsString\":\"<optimized out>\"}", 559 "\"valueAsString\":\"<optimized out>\"}",
560 handler.msg()); 560 handler.msg());
561 561
562 // collected 562 // collected
563 service_msg = Eval(lib, "[0, port, ['objects', 'collected'], [], []]"); 563 service_msg = Eval(lib, "[0, port, ['objects', 'collected'], [], []]");
564 Service::HandleIsolateMessage(isolate, service_msg); 564 Service::HandleIsolateMessage(isolate, service_msg);
565 handler.HandleNextMessage(); 565 handler.HandleNextMessage();
566 handler.filterMsg("name"); 566 handler.filterMsg("vmName");
567 EXPECT_STREQ( 567 EXPECT_STREQ(
568 "{\"type\":\"Null\",\"id\":\"objects\\/collected\"," 568 "{\"type\":\"Null\",\"id\":\"objects\\/collected\","
569 "\"valueAsString\":\"<collected>\"}", 569 "\"valueAsString\":\"<collected>\"}",
570 handler.msg()); 570 handler.msg());
571 571
572 // expired 572 // expired
573 service_msg = Eval(lib, "[0, port, ['objects', 'expired'], [], []]"); 573 service_msg = Eval(lib, "[0, port, ['objects', 'expired'], [], []]");
574 Service::HandleIsolateMessage(isolate, service_msg); 574 Service::HandleIsolateMessage(isolate, service_msg);
575 handler.HandleNextMessage(); 575 handler.HandleNextMessage();
576 handler.filterMsg("name"); 576 handler.filterMsg("vmName");
577 EXPECT_STREQ( 577 EXPECT_STREQ(
578 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," 578 "{\"type\":\"Null\",\"id\":\"objects\\/expired\","
579 "\"valueAsString\":\"<expired>\"}", 579 "\"valueAsString\":\"<expired>\"}",
580 handler.msg()); 580 handler.msg());
581 581
582 // bool 582 // bool
583 service_msg = Eval(lib, "[0, port, ['objects', 'bool-true'], [], []]"); 583 service_msg = Eval(lib, "[0, port, ['objects', 'bool-true'], [], []]");
584 Service::HandleIsolateMessage(isolate, service_msg); 584 Service::HandleIsolateMessage(isolate, service_msg);
585 handler.HandleNextMessage(); 585 handler.HandleNextMessage();
586 handler.filterMsg("name"); 586 handler.filterMsg("vmName");
587 EXPECT_STREQ( 587 EXPECT_STREQ(
588 "{\"type\":\"Bool\",\"id\":\"objects\\/bool-true\"," 588 "{\"type\":\"Bool\",\"id\":\"objects\\/bool-true\","
589 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/46\"," 589 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/46\","
590 "\"user_name\":\"bool\"},\"valueAsString\":\"true\"}", 590 "\"name\":\"bool\"},\"valueAsString\":\"true\"}",
591 handler.msg()); 591 handler.msg());
592 592
593 // int 593 // int
594 service_msg = Eval(lib, "[0, port, ['objects', 'int-123'], [], []]"); 594 service_msg = Eval(lib, "[0, port, ['objects', 'int-123'], [], []]");
595 Service::HandleIsolateMessage(isolate, service_msg); 595 Service::HandleIsolateMessage(isolate, service_msg);
596 handler.HandleNextMessage(); 596 handler.HandleNextMessage();
597 handler.filterMsg("name"); 597 handler.filterMsg("vmName");
598 EXPECT_STREQ( 598 EXPECT_STREQ(
599 "{\"type\":\"Smi\"," 599 "{\"type\":\"Smi\","
600 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," 600 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\","
601 "\"user_name\":\"_Smi\"}," 601 "\"name\":\"_Smi\",},"
602 "\"fields\":[]," 602 "\"fields\":[],"
603 "\"id\":\"objects\\/int-123\"," 603 "\"id\":\"objects\\/int-123\","
604 "\"valueAsString\":\"123\"}", 604 "\"valueAsString\":\"123\"}",
605 handler.msg()); 605 handler.msg());
606 606
607 // object id ring / valid 607 // object id ring / valid
608 service_msg = Eval(lib, "[0, port, ['objects', '$validId'], [], []]"); 608 service_msg = Eval(lib, "[0, port, ['objects', '$validId'], [], []]");
609 Service::HandleIsolateMessage(isolate, service_msg); 609 Service::HandleIsolateMessage(isolate, service_msg);
610 handler.HandleNextMessage(); 610 handler.HandleNextMessage();
611 handler.filterMsg("name"); 611 handler.filterMsg("vmName");
612 handler.filterMsg("size"); 612 handler.filterMsg("size");
613 handler.filterMsg("id"); 613 handler.filterMsg("id");
614 EXPECT_STREQ( 614 EXPECT_STREQ(
615 "{\"type\":\"Array\"," 615 "{\"type\":\"Array\","
616 "\"class\":{\"type\":\"@Class\",\"user_name\":\"_List\"}," 616 "\"class\":{\"type\":\"@Class\",\"name\":\"_List\",},"
617 "\"fields\":[]," 617 "\"fields\":[],"
618 "\"length\":1," 618 "\"length\":1,"
619 "\"elements\":[{" 619 "\"elements\":[{"
620 "\"index\":0," 620 "\"index\":0,"
621 "\"value\":{\"type\":\"@String\"," 621 "\"value\":{\"type\":\"@String\","
622 "\"class\":{\"type\":\"@Class\",\"user_name\":\"_OneByteString\"}," 622 "\"class\":{\"type\":\"@Class\",\"name\":\"_OneByteString\",},"
623 "\"valueAsString\":\"\\\"value\\\"\"}}]}", 623 "\"valueAsString\":\"\\\"value\\\"\"}}]}",
624 handler.msg()); 624 handler.msg());
625 625
626 // object id ring / invalid => expired 626 // object id ring / invalid => expired
627 service_msg = Eval(lib, "[0, port, ['objects', '99999999'], [], []]"); 627 service_msg = Eval(lib, "[0, port, ['objects', '99999999'], [], []]");
628 Service::HandleIsolateMessage(isolate, service_msg); 628 Service::HandleIsolateMessage(isolate, service_msg);
629 handler.HandleNextMessage(); 629 handler.HandleNextMessage();
630 handler.filterMsg("name"); 630 handler.filterMsg("vmName");
631 EXPECT_STREQ( 631 EXPECT_STREQ(
632 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," 632 "{\"type\":\"Null\",\"id\":\"objects\\/expired\","
633 "\"valueAsString\":\"<expired>\"}", 633 "\"valueAsString\":\"<expired>\"}",
634 handler.msg()); 634 handler.msg());
635 635
636 // expired/eval => error 636 // expired/eval => error
637 service_msg = Eval(lib, "[0, port, ['objects', 'expired', 'eval'], [], []]"); 637 service_msg = Eval(lib, "[0, port, ['objects', 'expired', 'eval'], [], []]");
638 Service::HandleIsolateMessage(isolate, service_msg); 638 Service::HandleIsolateMessage(isolate, service_msg);
639 handler.HandleNextMessage(); 639 handler.HandleNextMessage();
640 handler.filterMsg("name"); 640 handler.filterMsg("vmName");
641 EXPECT_STREQ( 641 EXPECT_STREQ(
642 "{\"type\":\"Error\",\"id\":\"\"," 642 "{\"type\":\"Error\",\"id\":\"\","
643 "\"message\":\"expected at most 2 arguments but found 3\\n\"," 643 "\"message\":\"expected at most 2 arguments but found 3\\n\","
644 "\"request\":{\"arguments\":[\"objects\",\"expired\",\"eval\"]," 644 "\"request\":{\"arguments\":[\"objects\",\"expired\",\"eval\"],"
645 "\"option_keys\":[],\"option_values\":[]}}", 645 "\"option_keys\":[],\"option_values\":[]}}",
646 handler.msg()); 646 handler.msg());
647 647
648 // int/eval => good 648 // int/eval => good
649 service_msg = Eval(lib, 649 service_msg = Eval(lib,
650 "[0, port, ['objects', 'int-123', 'eval'], " 650 "[0, port, ['objects', 'int-123', 'eval'], "
651 "['expr'], ['this+99']]"); 651 "['expr'], ['this+99']]");
652 Service::HandleIsolateMessage(isolate, service_msg); 652 Service::HandleIsolateMessage(isolate, service_msg);
653 handler.HandleNextMessage(); 653 handler.HandleNextMessage();
654 handler.filterMsg("name"); 654 handler.filterMsg("vmName");
655 EXPECT_STREQ( 655 EXPECT_STREQ(
656 "{\"type\":\"@Smi\"," 656 "{\"type\":\"@Smi\","
657 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," 657 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\","
658 "\"user_name\":\"_Smi\"}," 658 "\"name\":\"_Smi\",},"
659 "\"id\":\"objects\\/int-222\"," 659 "\"id\":\"objects\\/int-222\","
660 "\"valueAsString\":\"222\"}", 660 "\"valueAsString\":\"222\"}",
661 handler.msg()); 661 handler.msg());
662 662
663 // eval returning null works 663 // eval returning null works
664 service_msg = Eval(lib, 664 service_msg = Eval(lib,
665 "[0, port, ['objects', 'int-123', 'eval'], " 665 "[0, port, ['objects', 'int-123', 'eval'], "
666 "['expr'], ['null']]"); 666 "['expr'], ['null']]");
667 Service::HandleIsolateMessage(isolate, service_msg); 667 Service::HandleIsolateMessage(isolate, service_msg);
668 handler.HandleNextMessage(); 668 handler.HandleNextMessage();
669 handler.filterMsg("name"); 669 handler.filterMsg("vmName");
670 EXPECT_STREQ( 670 EXPECT_STREQ(
671 "{\"type\":\"@Null\",\"id\":\"objects\\/null\"," 671 "{\"type\":\"@Null\",\"id\":\"objects\\/null\","
672 "\"valueAsString\":\"null\"}", 672 "\"valueAsString\":\"null\"}",
673 handler.msg()); 673 handler.msg());
674 674
675 // object id ring / invalid => expired 675 // object id ring / invalid => expired
676 service_msg = Eval(lib, "[0, port, ['objects', '99999999', 'eval'], " 676 service_msg = Eval(lib, "[0, port, ['objects', '99999999', 'eval'], "
677 "['expr'], ['this']]"); 677 "['expr'], ['this']]");
678 Service::HandleIsolateMessage(isolate, service_msg); 678 Service::HandleIsolateMessage(isolate, service_msg);
679 handler.HandleNextMessage(); 679 handler.HandleNextMessage();
680 handler.filterMsg("name"); 680 handler.filterMsg("vmName");
681 EXPECT_STREQ( 681 EXPECT_STREQ(
682 "{\"type\":\"Error\",\"id\":\"\",\"kind\":\"EvalExpired\"," 682 "{\"type\":\"Error\",\"id\":\"\",\"kind\":\"EvalExpired\","
683 "\"message\":\"attempt to evaluate against expired object\\n\"," 683 "\"message\":\"attempt to evaluate against expired object\\n\","
684 "\"request\":{\"arguments\":[\"objects\",\"99999999\",\"eval\"]," 684 "\"request\":{\"arguments\":[\"objects\",\"99999999\",\"eval\"],"
685 "\"option_keys\":[\"expr\"],\"option_values\":[\"this\"]}}", 685 "\"option_keys\":[\"expr\"],\"option_values\":[\"this\"]}}",
686 handler.msg()); 686 handler.msg());
687 687
688 // Extra arg to eval. 688 // Extra arg to eval.
689 service_msg = Eval(lib, 689 service_msg = Eval(lib,
690 "[0, port, ['objects', 'int-123', 'eval', 'foo'], " 690 "[0, port, ['objects', 'int-123', 'eval', 'foo'], "
691 "['expr'], ['this+99']]"); 691 "['expr'], ['this+99']]");
692 Service::HandleIsolateMessage(isolate, service_msg); 692 Service::HandleIsolateMessage(isolate, service_msg);
693 handler.HandleNextMessage(); 693 handler.HandleNextMessage();
694 handler.filterMsg("name"); 694 handler.filterMsg("vmName");
695 EXPECT_STREQ( 695 EXPECT_STREQ(
696 "{\"type\":\"Error\",\"id\":\"\"," 696 "{\"type\":\"Error\",\"id\":\"\","
697 "\"message\":\"expected at most 3 arguments but found 4\\n\"," 697 "\"message\":\"expected at most 3 arguments but found 4\\n\","
698 "\"request\":{\"arguments\":[\"objects\",\"int-123\",\"eval\",\"foo\"]," 698 "\"request\":{\"arguments\":[\"objects\",\"int-123\",\"eval\",\"foo\"],"
699 "\"option_keys\":[\"expr\"],\"option_values\":[\"this+99\"]}}", 699 "\"option_keys\":[\"expr\"],\"option_values\":[\"this+99\"]}}",
700 handler.msg()); 700 handler.msg());
701 701
702 // Retained by single instance. 702 // Retained by single instance.
703 service_msg = Eval(lib, 703 service_msg = Eval(lib,
704 "[0, port, ['objects', '$validId', 'retained'], [], []]"); 704 "[0, port, ['objects', '$validId', 'retained'], [], []]");
705 Service::HandleIsolateMessage(isolate, service_msg); 705 Service::HandleIsolateMessage(isolate, service_msg);
706 handler.HandleNextMessage(); 706 handler.HandleNextMessage();
707 handler.filterMsg("name"); 707 handler.filterMsg("vmName");
708 ExpectSubstringF(handler.msg(), 708 ExpectSubstringF(handler.msg(),
709 "\"id\":\"objects\\/int-%" Pd "\"", 709 "\"id\":\"objects\\/int-%" Pd "\"",
710 arr.raw()->Size() + arr.At(0)->Size()); 710 arr.raw()->Size() + arr.At(0)->Size());
711 711
712 // Retaining path to 'arr', limit 1. 712 // Retaining path to 'arr', limit 1.
713 service_msg = Eval( 713 service_msg = Eval(
714 lib, 714 lib,
715 "[0, port, ['objects', '$validId', 'retaining_path'], ['limit'], ['1']]"); 715 "[0, port, ['objects', '$validId', 'retaining_path'], ['limit'], ['1']]");
716 Service::HandleIsolateMessage(isolate, service_msg); 716 Service::HandleIsolateMessage(isolate, service_msg);
717 handler.HandleNextMessage(); 717 handler.HandleNextMessage();
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg()); 890 EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg());
891 EXPECT_SUBSTRING("\"url\":\"test-lib\"", handler.msg()); 891 EXPECT_SUBSTRING("\"url\":\"test-lib\"", handler.msg());
892 892
893 // Evaluate an expression from a library. 893 // Evaluate an expression from a library.
894 service_msg = EvalF(lib, 894 service_msg = EvalF(lib,
895 "[0, port, ['libraries', '%" Pd "', 'eval'], " 895 "[0, port, ['libraries', '%" Pd "', 'eval'], "
896 "['expr'], ['libVar - 1']]", 896 "['expr'], ['libVar - 1']]",
897 vmlib.index()); 897 vmlib.index());
898 Service::HandleIsolateMessage(isolate, service_msg); 898 Service::HandleIsolateMessage(isolate, service_msg);
899 handler.HandleNextMessage(); 899 handler.HandleNextMessage();
900 handler.filterMsg("name"); 900 handler.filterMsg("vmName");
901 EXPECT_STREQ( 901 EXPECT_STREQ(
902 "{\"type\":\"@Smi\"," 902 "{\"type\":\"@Smi\","
903 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," 903 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\","
904 "\"user_name\":\"_Smi\"},\"id\":\"objects\\/int-54320\"," 904 "\"name\":\"_Smi\",},\"id\":\"objects\\/int-54320\","
905 "\"valueAsString\":\"54320\"}", 905 "\"valueAsString\":\"54320\"}",
906 handler.msg()); 906 handler.msg());
907 } 907 }
908 908
909 909
910 TEST_CASE(Service_Classes) { 910 TEST_CASE(Service_Classes) {
911 const char* kScript = 911 const char* kScript =
912 "var port;\n" // Set to our mock port by C++. 912 "var port;\n" // Set to our mock port by C++.
913 "\n" 913 "\n"
914 "class A {\n" 914 "class A {\n"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 ExpectSubstringF(handler.msg(), "\"allocationStats\":"); 969 ExpectSubstringF(handler.msg(), "\"allocationStats\":");
970 ExpectSubstringF(handler.msg(), "\"tokenPos\":"); 970 ExpectSubstringF(handler.msg(), "\"tokenPos\":");
971 ExpectSubstringF(handler.msg(), "\"endTokenPos\":"); 971 ExpectSubstringF(handler.msg(), "\"endTokenPos\":");
972 972
973 // Evaluate an expression from class A. 973 // Evaluate an expression from class A.
974 service_msg = EvalF(lib, 974 service_msg = EvalF(lib,
975 "[0, port, ['classes', '%" Pd "', 'eval'], " 975 "[0, port, ['classes', '%" Pd "', 'eval'], "
976 "['expr'], ['cobra + 100000']]", cid); 976 "['expr'], ['cobra + 100000']]", cid);
977 Service::HandleIsolateMessage(isolate, service_msg); 977 Service::HandleIsolateMessage(isolate, service_msg);
978 handler.HandleNextMessage(); 978 handler.HandleNextMessage();
979 handler.filterMsg("name"); 979 handler.filterMsg("vmName");
980 EXPECT_STREQ( 980 EXPECT_STREQ(
981 "{\"type\":\"@Smi\"," 981 "{\"type\":\"@Smi\","
982 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," 982 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\","
983 "\"user_name\":\"_Smi\"}," 983 "\"name\":\"_Smi\",},"
984 "\"id\":\"objects\\/int-111235\"," 984 "\"id\":\"objects\\/int-111235\","
985 "\"valueAsString\":\"111235\"}", 985 "\"valueAsString\":\"111235\"}",
986 handler.msg()); 986 handler.msg());
987 987
988 // Request function 'b' from class A. 988 // Request function 'b' from class A.
989 service_msg = EvalF(lib, 989 service_msg = EvalF(lib,
990 "[0, port, ['classes', '%" Pd "', 'functions', 'b']," 990 "[0, port, ['classes', '%" Pd "', 'functions', 'b'],"
991 "[], []]", cid); 991 "[], []]", cid);
992 Service::HandleIsolateMessage(isolate, service_msg); 992 Service::HandleIsolateMessage(isolate, service_msg);
993 handler.HandleNextMessage(); 993 handler.HandleNextMessage();
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 OS::SNPrint(buf, sizeof(buf), 1444 OS::SNPrint(buf, sizeof(buf),
1445 "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]", 1445 "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]",
1446 vmlib.index()); 1446 vmlib.index());
1447 1447
1448 service_msg = Eval(lib, buf); 1448 service_msg = Eval(lib, buf);
1449 Service::HandleIsolateMessage(isolate, service_msg); 1449 Service::HandleIsolateMessage(isolate, service_msg);
1450 handler.HandleNextMessage(); 1450 handler.HandleNextMessage();
1451 OS::SNPrint(buf, sizeof(buf), 1451 OS::SNPrint(buf, sizeof(buf),
1452 "{\"type\":\"Script\"," 1452 "{\"type\":\"Script\","
1453 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 1453 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1454 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1454 "\"name\":\"test-lib\","
1455 "\"kind\":\"script\"," 1455 "\"kind\":\"script\","
1456 "\"owning_library\":{\"type\":\"@Library\"," 1456 "\"owning_library\":{\"type\":\"@Library\","
1457 "\"id\":\"libraries\\/%" Pd "\",\"user_name\":\"\",\"name\":\"\"," 1457 "\"id\":\"libraries\\/%" Pd "\",\"name\":\"\","
1458 "\"url\":\"test-lib\"}," 1458 "\"url\":\"test-lib\"},"
1459 "\"source\":\"var port;\\n\\nmain() {\\n}\"," 1459 "\"source\":\"var port;\\n\\nmain() {\\n}\","
1460 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}", 1460 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}",
1461 vmlib.index(), vmlib.index()); 1461 vmlib.index(), vmlib.index());
1462 EXPECT_STREQ(buf, handler.msg()); 1462 EXPECT_STREQ(buf, handler.msg());
1463 } 1463 }
1464 1464
1465 1465
1466 // TODO(zra): Remove when tests are ready to enable. 1466 // TODO(zra): Remove when tests are ready to enable.
1467 #if !defined(TARGET_ARCH_ARM64) 1467 #if !defined(TARGET_ARCH_ARM64)
(...skipping 26 matching lines...) Expand all
1494 1494
1495 Array& service_msg = Array::Handle(); 1495 Array& service_msg = Array::Handle();
1496 service_msg = Eval(lib, "[0, port, ['coverage'], [], []]"); 1496 service_msg = Eval(lib, "[0, port, ['coverage'], [], []]");
1497 Service::HandleIsolateMessage(isolate, service_msg); 1497 Service::HandleIsolateMessage(isolate, service_msg);
1498 handler.HandleNextMessage(); 1498 handler.HandleNextMessage();
1499 1499
1500 char buf[1024]; 1500 char buf[1024];
1501 OS::SNPrint(buf, sizeof(buf), 1501 OS::SNPrint(buf, sizeof(buf),
1502 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," 1502 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1503 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 1503 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1504 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1504 "\"name\":\"test-lib\","
1505 "\"kind\":\"script\"},\"hits\":" 1505 "\"kind\":\"script\"},\"hits\":"
1506 "[5,1,6,1]}", 1506 "[5,1,6,1]}",
1507 vmlib.index()); 1507 vmlib.index());
1508 EXPECT_SUBSTRING(buf, handler.msg()); 1508 EXPECT_SUBSTRING(buf, handler.msg());
1509 } 1509 }
1510 1510
1511 1511
1512 TEST_CASE(Service_LibrariesScriptsCoverage) { 1512 TEST_CASE(Service_LibrariesScriptsCoverage) {
1513 const char* kScript = 1513 const char* kScript =
1514 "var port;\n" // Set to our mock port by C++. 1514 "var port;\n" // Set to our mock port by C++.
(...skipping 27 matching lines...) Expand all
1542 "[], []]", 1542 "[], []]",
1543 vmlib.index()); 1543 vmlib.index());
1544 1544
1545 service_msg = Eval(lib, buf); 1545 service_msg = Eval(lib, buf);
1546 Service::HandleIsolateMessage(isolate, service_msg); 1546 Service::HandleIsolateMessage(isolate, service_msg);
1547 handler.HandleNextMessage(); 1547 handler.HandleNextMessage();
1548 OS::SNPrint(buf, sizeof(buf), 1548 OS::SNPrint(buf, sizeof(buf),
1549 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1549 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1550 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," 1550 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1551 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 1551 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1552 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1552 "\"name\":\"test-lib\","
1553 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", vmlib.index()); 1553 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", vmlib.index());
1554 EXPECT_STREQ(buf, handler.msg()); 1554 EXPECT_STREQ(buf, handler.msg());
1555 } 1555 }
1556 1556
1557 1557
1558 TEST_CASE(Service_LibrariesCoverage) { 1558 TEST_CASE(Service_LibrariesCoverage) {
1559 const char* kScript = 1559 const char* kScript =
1560 "var port;\n" // Set to our mock port by C++. 1560 "var port;\n" // Set to our mock port by C++.
1561 "\n" 1561 "\n"
1562 "var x = 7;\n" 1562 "var x = 7;\n"
(...skipping 24 matching lines...) Expand all
1587 vmlib.index()); 1587 vmlib.index());
1588 1588
1589 Array& service_msg = Array::Handle(); 1589 Array& service_msg = Array::Handle();
1590 service_msg = Eval(lib, buf); 1590 service_msg = Eval(lib, buf);
1591 Service::HandleIsolateMessage(isolate, service_msg); 1591 Service::HandleIsolateMessage(isolate, service_msg);
1592 handler.HandleNextMessage(); 1592 handler.HandleNextMessage();
1593 OS::SNPrint(buf, sizeof(buf), 1593 OS::SNPrint(buf, sizeof(buf),
1594 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1594 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1595 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," 1595 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1596 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 1596 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1597 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1597 "\"name\":\"test-lib\","
1598 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", 1598 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}",
1599 vmlib.index()); 1599 vmlib.index());
1600 EXPECT_STREQ(buf, handler.msg()); 1600 EXPECT_STREQ(buf, handler.msg());
1601 } 1601 }
1602 1602
1603 1603
1604 TEST_CASE(Service_ClassesCoverage) { 1604 TEST_CASE(Service_ClassesCoverage) {
1605 const char* kScript = 1605 const char* kScript =
1606 "var port;\n" // Set to our mock port by C++. 1606 "var port;\n" // Set to our mock port by C++.
1607 "\n" 1607 "\n"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1651 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i); 1651 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i);
1652 1652
1653 Array& service_msg = Array::Handle(); 1653 Array& service_msg = Array::Handle();
1654 service_msg = Eval(lib, buf); 1654 service_msg = Eval(lib, buf);
1655 Service::HandleIsolateMessage(isolate, service_msg); 1655 Service::HandleIsolateMessage(isolate, service_msg);
1656 handler.HandleNextMessage(); 1656 handler.HandleNextMessage();
1657 OS::SNPrint(buf, sizeof(buf), 1657 OS::SNPrint(buf, sizeof(buf),
1658 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1658 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1659 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," 1659 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1660 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 1660 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1661 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1661 "\"name\":\"test-lib\","
1662 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", 1662 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}",
1663 vmlib.index()); 1663 vmlib.index());
1664 EXPECT_STREQ(buf, handler.msg()); 1664 EXPECT_STREQ(buf, handler.msg());
1665 } 1665 }
1666 1666
1667 1667
1668 TEST_CASE(Service_ClassesFunctionsCoverage) { 1668 TEST_CASE(Service_ClassesFunctionsCoverage) {
1669 const char* kScript = 1669 const char* kScript =
1670 "var port;\n" // Set to our mock port by C++. 1670 "var port;\n" // Set to our mock port by C++.
1671 "\n" 1671 "\n"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 "'bar', 'coverage'], [], []]", i); 1723 "'bar', 'coverage'], [], []]", i);
1724 1724
1725 Array& service_msg = Array::Handle(); 1725 Array& service_msg = Array::Handle();
1726 service_msg = Eval(lib, buf); 1726 service_msg = Eval(lib, buf);
1727 Service::HandleIsolateMessage(isolate, service_msg); 1727 Service::HandleIsolateMessage(isolate, service_msg);
1728 handler.HandleNextMessage(); 1728 handler.HandleNextMessage();
1729 OS::SNPrint(buf, sizeof(buf), 1729 OS::SNPrint(buf, sizeof(buf),
1730 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1730 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1731 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," 1731 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1732 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," 1732 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1733 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1733 "\"name\":\"test-lib\","
1734 "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", vmlib.index()); 1734 "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", vmlib.index());
1735 EXPECT_STREQ(buf, handler.msg()); 1735 EXPECT_STREQ(buf, handler.msg());
1736 } 1736 }
1737 1737
1738 #endif 1738 #endif
1739 1739
1740 1740
1741 TEST_CASE(Service_AllocationProfile) { 1741 TEST_CASE(Service_AllocationProfile) {
1742 const char* kScript = 1742 const char* kScript =
1743 "var port;\n" // Set to our mock port by C++. 1743 "var port;\n" // Set to our mock port by C++.
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
2024 service_msg = Eval(lib, "[0, port, ['profile'], ['tags'], ['hidden']]"); 2024 service_msg = Eval(lib, "[0, port, ['profile'], ['tags'], ['hidden']]");
2025 Service::HandleIsolateMessage(isolate, service_msg); 2025 Service::HandleIsolateMessage(isolate, service_msg);
2026 handler.HandleNextMessage(); 2026 handler.HandleNextMessage();
2027 // Expect error. 2027 // Expect error.
2028 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); 2028 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
2029 } 2029 }
2030 2030
2031 #endif // !defined(TARGET_ARCH_ARM64) 2031 #endif // !defined(TARGET_ARCH_ARM64)
2032 2032
2033 } // namespace dart 2033 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/service/protocol.md ('k') | tests/standalone/vmservice/isolate_class_field_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698