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

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

Issue 2974233002: VM: Re-format to use at most one newline between functions (Closed)
Patch Set: Rebase and merge Created 3 years, 5 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
« no previous file with comments | « runtime/vm/service_isolate.cc ('k') | runtime/vm/signal_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_tools_api.h" 7 #include "include/dart_tools_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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 } 65 }
66 66
67 const char* msg() const { return _msg; } 67 const char* msg() const { return _msg; }
68 68
69 virtual Isolate* isolate() const { return Isolate::Current(); } 69 virtual Isolate* isolate() const { return Isolate::Current(); }
70 70
71 private: 71 private:
72 char* _msg; 72 char* _msg;
73 }; 73 };
74 74
75
76 static RawArray* Eval(Dart_Handle lib, const char* expr) { 75 static RawArray* Eval(Dart_Handle lib, const char* expr) {
77 const String& dummy_isolate_id = String::Handle(String::New("isolateId")); 76 const String& dummy_isolate_id = String::Handle(String::New("isolateId"));
78 Dart_Handle expr_val = Dart_EvaluateExpr(lib, NewString(expr)); 77 Dart_Handle expr_val = Dart_EvaluateExpr(lib, NewString(expr));
79 EXPECT_VALID(expr_val); 78 EXPECT_VALID(expr_val);
80 Zone* zone = Thread::Current()->zone(); 79 Zone* zone = Thread::Current()->zone();
81 const GrowableObjectArray& value = 80 const GrowableObjectArray& value =
82 Api::UnwrapGrowableObjectArrayHandle(zone, expr_val); 81 Api::UnwrapGrowableObjectArrayHandle(zone, expr_val);
83 const Array& result = Array::Handle(Array::MakeFixedLength(value)); 82 const Array& result = Array::Handle(Array::MakeFixedLength(value));
84 GrowableObjectArray& growable = GrowableObjectArray::Handle(); 83 GrowableObjectArray& growable = GrowableObjectArray::Handle();
85 growable ^= result.At(4); 84 growable ^= result.At(4);
86 // Append dummy isolate id to parameter values. 85 // Append dummy isolate id to parameter values.
87 growable.Add(dummy_isolate_id); 86 growable.Add(dummy_isolate_id);
88 Array& array = Array::Handle(Array::MakeFixedLength(growable)); 87 Array& array = Array::Handle(Array::MakeFixedLength(growable));
89 result.SetAt(4, array); 88 result.SetAt(4, array);
90 growable ^= result.At(5); 89 growable ^= result.At(5);
91 // Append dummy isolate id to parameter values. 90 // Append dummy isolate id to parameter values.
92 growable.Add(dummy_isolate_id); 91 growable.Add(dummy_isolate_id);
93 array = Array::MakeFixedLength(growable); 92 array = Array::MakeFixedLength(growable);
94 result.SetAt(5, array); 93 result.SetAt(5, array);
95 return result.raw(); 94 return result.raw();
96 } 95 }
97 96
98
99 static RawArray* EvalF(Dart_Handle lib, const char* fmt, ...) { 97 static RawArray* EvalF(Dart_Handle lib, const char* fmt, ...) {
100 va_list args; 98 va_list args;
101 va_start(args, fmt); 99 va_start(args, fmt);
102 intptr_t len = OS::VSNPrint(NULL, 0, fmt, args); 100 intptr_t len = OS::VSNPrint(NULL, 0, fmt, args);
103 va_end(args); 101 va_end(args);
104 102
105 char* buffer = Thread::Current()->zone()->Alloc<char>(len + 1); 103 char* buffer = Thread::Current()->zone()->Alloc<char>(len + 1);
106 va_list args2; 104 va_list args2;
107 va_start(args2, fmt); 105 va_start(args2, fmt);
108 OS::VSNPrint(buffer, (len + 1), fmt, args2); 106 OS::VSNPrint(buffer, (len + 1), fmt, args2);
109 va_end(args2); 107 va_end(args2);
110 108
111 return Eval(lib, buffer); 109 return Eval(lib, buffer);
112 } 110 }
113 111
114
115 static RawFunction* GetFunction(const Class& cls, const char* name) { 112 static RawFunction* GetFunction(const Class& cls, const char* name) {
116 const Function& result = Function::Handle( 113 const Function& result = Function::Handle(
117 cls.LookupDynamicFunction(String::Handle(String::New(name)))); 114 cls.LookupDynamicFunction(String::Handle(String::New(name))));
118 EXPECT(!result.IsNull()); 115 EXPECT(!result.IsNull());
119 return result.raw(); 116 return result.raw();
120 } 117 }
121 118
122
123 static RawClass* GetClass(const Library& lib, const char* name) { 119 static RawClass* GetClass(const Library& lib, const char* name) {
124 const Class& cls = Class::Handle( 120 const Class& cls = Class::Handle(
125 lib.LookupClass(String::Handle(Symbols::New(Thread::Current(), name)))); 121 lib.LookupClass(String::Handle(Symbols::New(Thread::Current(), name))));
126 EXPECT(!cls.IsNull()); // No ambiguity error expected. 122 EXPECT(!cls.IsNull()); // No ambiguity error expected.
127 return cls.raw(); 123 return cls.raw();
128 } 124 }
129 125
130
131 static void HandleIsolateMessage(Isolate* isolate, const Array& msg) { 126 static void HandleIsolateMessage(Isolate* isolate, const Array& msg) {
132 TransitionNativeToVM transition(Thread::Current()); 127 TransitionNativeToVM transition(Thread::Current());
133 Service::HandleIsolateMessage(isolate, msg); 128 Service::HandleIsolateMessage(isolate, msg);
134 } 129 }
135 130
136
137 static void HandleRootMessage(const Array& message) { 131 static void HandleRootMessage(const Array& message) {
138 TransitionNativeToVM transition(Thread::Current()); 132 TransitionNativeToVM transition(Thread::Current());
139 Service::HandleRootMessage(message); 133 Service::HandleRootMessage(message);
140 } 134 }
141 135
142
143 TEST_CASE(Service_IsolateStickyError) { 136 TEST_CASE(Service_IsolateStickyError) {
144 const char* kScript = "main() => throw 'HI THERE STICKY';\n"; 137 const char* kScript = "main() => throw 'HI THERE STICKY';\n";
145 138
146 Isolate* isolate = thread->isolate(); 139 Isolate* isolate = thread->isolate();
147 isolate->set_is_runnable(true); 140 isolate->set_is_runnable(true);
148 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 141 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
149 EXPECT_VALID(lib); 142 EXPECT_VALID(lib);
150 Library& vmlib = Library::Handle(); 143 Library& vmlib = Library::Handle();
151 vmlib ^= Api::UnwrapHandle(lib); 144 vmlib ^= Api::UnwrapHandle(lib);
152 EXPECT(!vmlib.IsNull()); 145 EXPECT(!vmlib.IsNull());
(...skipping 23 matching lines...) Expand all
176 169
177 JSONStream js; 170 JSONStream js;
178 isolate->PrintJSON(&js, false); 171 isolate->PrintJSON(&js, false);
179 // Error and PauseExit set. 172 // Error and PauseExit set.
180 EXPECT_SUBSTRING("\"error\":", js.ToCString()); 173 EXPECT_SUBSTRING("\"error\":", js.ToCString());
181 EXPECT_SUBSTRING("HI THERE STICKY", js.ToCString()); 174 EXPECT_SUBSTRING("HI THERE STICKY", js.ToCString());
182 EXPECT_SUBSTRING("PauseExit", js.ToCString()); 175 EXPECT_SUBSTRING("PauseExit", js.ToCString());
183 } 176 }
184 } 177 }
185 178
186
187 TEST_CASE(Service_IdZones) { 179 TEST_CASE(Service_IdZones) {
188 Zone* zone = thread->zone(); 180 Zone* zone = thread->zone();
189 Isolate* isolate = thread->isolate(); 181 Isolate* isolate = thread->isolate();
190 ObjectIdRing* ring = isolate->object_id_ring(); 182 ObjectIdRing* ring = isolate->object_id_ring();
191 183
192 const String& test_a = String::Handle(zone, String::New("a")); 184 const String& test_a = String::Handle(zone, String::New("a"));
193 const String& test_b = String::Handle(zone, String::New("b")); 185 const String& test_b = String::Handle(zone, String::New("b"));
194 const String& test_c = String::Handle(zone, String::New("c")); 186 const String& test_c = String::Handle(zone, String::New("c"));
195 const String& test_d = String::Handle(zone, String::New("d")); 187 const String& test_d = String::Handle(zone, String::New("d"));
196 188
(...skipping 14 matching lines...) Expand all
211 EXPECT_STREQ("objects/0", reuse_zone.GetServiceId(test_a)); 203 EXPECT_STREQ("objects/0", reuse_zone.GetServiceId(test_a));
212 EXPECT_STREQ("objects/0", reuse_zone.GetServiceId(test_a)); 204 EXPECT_STREQ("objects/0", reuse_zone.GetServiceId(test_a));
213 EXPECT_STREQ("objects/3", reuse_zone.GetServiceId(test_b)); 205 EXPECT_STREQ("objects/3", reuse_zone.GetServiceId(test_b));
214 EXPECT_STREQ("objects/3", reuse_zone.GetServiceId(test_b)); 206 EXPECT_STREQ("objects/3", reuse_zone.GetServiceId(test_b));
215 EXPECT_STREQ("objects/4", reuse_zone.GetServiceId(test_c)); 207 EXPECT_STREQ("objects/4", reuse_zone.GetServiceId(test_c));
216 EXPECT_STREQ("objects/4", reuse_zone.GetServiceId(test_c)); 208 EXPECT_STREQ("objects/4", reuse_zone.GetServiceId(test_c));
217 EXPECT_STREQ("objects/5", reuse_zone.GetServiceId(test_d)); 209 EXPECT_STREQ("objects/5", reuse_zone.GetServiceId(test_d));
218 EXPECT_STREQ("objects/5", reuse_zone.GetServiceId(test_d)); 210 EXPECT_STREQ("objects/5", reuse_zone.GetServiceId(test_d));
219 } 211 }
220 212
221
222 TEST_CASE(Service_Code) { 213 TEST_CASE(Service_Code) {
223 const char* kScript = 214 const char* kScript =
224 "var port;\n" // Set to our mock port by C++. 215 "var port;\n" // Set to our mock port by C++.
225 "\n" 216 "\n"
226 "class A {\n" 217 "class A {\n"
227 " var a;\n" 218 " var a;\n"
228 " dynamic b() {}\n" 219 " dynamic b() {}\n"
229 " dynamic c() {\n" 220 " dynamic c() {\n"
230 " var d = () { b(); };\n" 221 " var d = () { b(); };\n"
231 " return d;\n" 222 " return d;\n"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 // Request malformed native code. 320 // Request malformed native code.
330 service_msg = EvalF(lib, 321 service_msg = EvalF(lib,
331 "[0, port, '0', 'getObject', ['objectId'], " 322 "[0, port, '0', 'getObject', ['objectId'], "
332 "['code/native%" Px "']]", 323 "['code/native%" Px "']]",
333 address); 324 address);
334 HandleIsolateMessage(isolate, service_msg); 325 HandleIsolateMessage(isolate, service_msg);
335 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 326 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
336 EXPECT_SUBSTRING("\"error\"", handler.msg()); 327 EXPECT_SUBSTRING("\"error\"", handler.msg());
337 } 328 }
338 329
339
340 TEST_CASE(Service_TokenStream) { 330 TEST_CASE(Service_TokenStream) {
341 const char* kScript = 331 const char* kScript =
342 "var port;\n" // Set to our mock port by C++. 332 "var port;\n" // Set to our mock port by C++.
343 "\n" 333 "\n"
344 "main() {\n" 334 "main() {\n"
345 "}"; 335 "}";
346 336
347 Isolate* isolate = thread->isolate(); 337 Isolate* isolate = thread->isolate();
348 isolate->set_is_runnable(true); 338 isolate->set_is_runnable(true);
349 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 339 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
(...skipping 29 matching lines...) Expand all
379 HandleIsolateMessage(isolate, service_msg); 369 HandleIsolateMessage(isolate, service_msg);
380 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 370 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
381 371
382 // Check type. 372 // Check type.
383 EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg()); 373 EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg());
384 EXPECT_SUBSTRING("\"_vmType\":\"TokenStream\"", handler.msg()); 374 EXPECT_SUBSTRING("\"_vmType\":\"TokenStream\"", handler.msg());
385 // Check for members array. 375 // Check for members array.
386 EXPECT_SUBSTRING("\"members\":[", handler.msg()); 376 EXPECT_SUBSTRING("\"members\":[", handler.msg());
387 } 377 }
388 378
389
390 TEST_CASE(Service_PcDescriptors) { 379 TEST_CASE(Service_PcDescriptors) {
391 const char* kScript = 380 const char* kScript =
392 "var port;\n" // Set to our mock port by C++. 381 "var port;\n" // Set to our mock port by C++.
393 "\n" 382 "\n"
394 "class A {\n" 383 "class A {\n"
395 " var a;\n" 384 " var a;\n"
396 " dynamic b() {}\n" 385 " dynamic b() {}\n"
397 " dynamic c() {\n" 386 " dynamic c() {\n"
398 " var d = () { b(); };\n" 387 " var d = () { b(); };\n"
399 " return d;\n" 388 " return d;\n"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 id); 432 id);
444 HandleIsolateMessage(isolate, service_msg); 433 HandleIsolateMessage(isolate, service_msg);
445 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 434 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
446 // Check type. 435 // Check type.
447 EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg()); 436 EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg());
448 EXPECT_SUBSTRING("\"_vmType\":\"PcDescriptors\"", handler.msg()); 437 EXPECT_SUBSTRING("\"_vmType\":\"PcDescriptors\"", handler.msg());
449 // Check for members array. 438 // Check for members array.
450 EXPECT_SUBSTRING("\"members\":[", handler.msg()); 439 EXPECT_SUBSTRING("\"members\":[", handler.msg());
451 } 440 }
452 441
453
454 TEST_CASE(Service_LocalVarDescriptors) { 442 TEST_CASE(Service_LocalVarDescriptors) {
455 const char* kScript = 443 const char* kScript =
456 "var port;\n" // Set to our mock port by C++. 444 "var port;\n" // Set to our mock port by C++.
457 "\n" 445 "\n"
458 "class A {\n" 446 "class A {\n"
459 " var a;\n" 447 " var a;\n"
460 " dynamic b() {}\n" 448 " dynamic b() {}\n"
461 " dynamic c() {\n" 449 " dynamic c() {\n"
462 " var d = () { b(); };\n" 450 " var d = () { b(); };\n"
463 " return d;\n" 451 " return d;\n"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 id); 495 id);
508 HandleIsolateMessage(isolate, service_msg); 496 HandleIsolateMessage(isolate, service_msg);
509 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 497 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
510 // Check type. 498 // Check type.
511 EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg()); 499 EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg());
512 EXPECT_SUBSTRING("\"_vmType\":\"LocalVarDescriptors\"", handler.msg()); 500 EXPECT_SUBSTRING("\"_vmType\":\"LocalVarDescriptors\"", handler.msg());
513 // Check for members array. 501 // Check for members array.
514 EXPECT_SUBSTRING("\"members\":[", handler.msg()); 502 EXPECT_SUBSTRING("\"members\":[", handler.msg());
515 } 503 }
516 504
517
518 static void WeakHandleFinalizer(void* isolate_callback_data, 505 static void WeakHandleFinalizer(void* isolate_callback_data,
519 Dart_WeakPersistentHandle handle, 506 Dart_WeakPersistentHandle handle,
520 void* peer) {} 507 void* peer) {}
521 508
522
523 TEST_CASE(Service_PersistentHandles) { 509 TEST_CASE(Service_PersistentHandles) {
524 const char* kScript = 510 const char* kScript =
525 "var port;\n" // Set to our mock port by C++. 511 "var port;\n" // Set to our mock port by C++.
526 "\n" 512 "\n"
527 "class A {\n" 513 "class A {\n"
528 " var a;\n" 514 " var a;\n"
529 "}\n" 515 "}\n"
530 "var global = new A();\n" 516 "var global = new A();\n"
531 "main() {\n" 517 "main() {\n"
532 " return global;\n" 518 " return global;\n"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 service_msg = Eval(lib, "[0, port, '0', '_getPersistentHandles', [], []]"); 564 service_msg = Eval(lib, "[0, port, '0', '_getPersistentHandles', [], []]");
579 HandleIsolateMessage(isolate, service_msg); 565 HandleIsolateMessage(isolate, service_msg);
580 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 566 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
581 EXPECT_SUBSTRING("\"type\":\"_PersistentHandles\"", handler.msg()); 567 EXPECT_SUBSTRING("\"type\":\"_PersistentHandles\"", handler.msg());
582 // Verify that old persistent handles are not present. 568 // Verify that old persistent handles are not present.
583 EXPECT_NOTSUBSTRING("\"peer\":\"0xdeadbeef\"", handler.msg()); 569 EXPECT_NOTSUBSTRING("\"peer\":\"0xdeadbeef\"", handler.msg());
584 EXPECT_NOTSUBSTRING("\"name\":\"A\"", handler.msg()); 570 EXPECT_NOTSUBSTRING("\"name\":\"A\"", handler.msg());
585 EXPECT_NOTSUBSTRING("\"externalSize\":\"128\"", handler.msg()); 571 EXPECT_NOTSUBSTRING("\"externalSize\":\"128\"", handler.msg());
586 } 572 }
587 573
588
589 TEST_CASE(Service_Address) { 574 TEST_CASE(Service_Address) {
590 const char* kScript = 575 const char* kScript =
591 "var port;\n" // Set to our mock port by C++. 576 "var port;\n" // Set to our mock port by C++.
592 "\n" 577 "\n"
593 "main() {\n" 578 "main() {\n"
594 "}"; 579 "}";
595 580
596 Isolate* isolate = thread->isolate(); 581 Isolate* isolate = thread->isolate();
597 isolate->set_is_runnable(true); 582 isolate->set_is_runnable(true);
598 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 583 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 "['address'], ['7']]"); 619 "['address'], ['7']]");
635 HandleIsolateMessage(isolate, service_msg); 620 HandleIsolateMessage(isolate, service_msg);
636 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 621 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
637 // TODO(turnidge): Should this be a ServiceException instead? 622 // TODO(turnidge): Should this be a ServiceException instead?
638 EXPECT_SUBSTRING( 623 EXPECT_SUBSTRING(
639 "{\"type\":\"Sentinel\",\"kind\":\"Free\"," 624 "{\"type\":\"Sentinel\",\"kind\":\"Free\","
640 "\"valueAsString\":\"<free>\"", 625 "\"valueAsString\":\"<free>\"",
641 handler.msg()); 626 handler.msg());
642 } 627 }
643 628
644
645 static bool alpha_callback(const char* name, 629 static bool alpha_callback(const char* name,
646 const char** option_keys, 630 const char** option_keys,
647 const char** option_values, 631 const char** option_values,
648 intptr_t num_options, 632 intptr_t num_options,
649 void* user_data, 633 void* user_data,
650 const char** result) { 634 const char** result) {
651 *result = strdup("alpha"); 635 *result = strdup("alpha");
652 return true; 636 return true;
653 } 637 }
654 638
655
656 static bool beta_callback(const char* name, 639 static bool beta_callback(const char* name,
657 const char** option_keys, 640 const char** option_keys,
658 const char** option_values, 641 const char** option_values,
659 intptr_t num_options, 642 intptr_t num_options,
660 void* user_data, 643 void* user_data,
661 const char** result) { 644 const char** result) {
662 *result = strdup("beta"); 645 *result = strdup("beta");
663 return false; 646 return false;
664 } 647 }
665 648
666
667 TEST_CASE(Service_EmbedderRootHandler) { 649 TEST_CASE(Service_EmbedderRootHandler) {
668 const char* kScript = 650 const char* kScript =
669 "var port;\n" // Set to our mock port by C++. 651 "var port;\n" // Set to our mock port by C++.
670 "\n" 652 "\n"
671 "var x = 7;\n" 653 "var x = 7;\n"
672 "main() {\n" 654 "main() {\n"
673 " x = x * x;\n" 655 " x = x * x;\n"
674 " x = x / 13;\n" 656 " x = x / 13;\n"
675 "}"; 657 "}";
676 658
677 Dart_RegisterRootServiceRequestCallback("alpha", alpha_callback, NULL); 659 Dart_RegisterRootServiceRequestCallback("alpha", alpha_callback, NULL);
678 Dart_RegisterRootServiceRequestCallback("beta", beta_callback, NULL); 660 Dart_RegisterRootServiceRequestCallback("beta", beta_callback, NULL);
679 661
680 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 662 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
681 EXPECT_VALID(lib); 663 EXPECT_VALID(lib);
682 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); 664 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
683 EXPECT_VALID(result); 665 EXPECT_VALID(result);
684 666
685 // Build a mock message handler and wrap it in a dart port. 667 // Build a mock message handler and wrap it in a dart port.
686 ServiceTestMessageHandler handler; 668 ServiceTestMessageHandler handler;
687 Dart_Port port_id = PortMap::CreatePort(&handler); 669 Dart_Port port_id = PortMap::CreatePort(&handler);
688 Dart_Handle port = Api::NewHandle(thread, SendPort::New(port_id)); 670 Dart_Handle port = Api::NewHandle(thread, SendPort::New(port_id));
689 EXPECT_VALID(port); 671 EXPECT_VALID(port);
690 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 672 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
691 673
692
693 Array& service_msg = Array::Handle(); 674 Array& service_msg = Array::Handle();
694 service_msg = Eval(lib, "[0, port, '\"', 'alpha', [], []]"); 675 service_msg = Eval(lib, "[0, port, '\"', 'alpha', [], []]");
695 HandleRootMessage(service_msg); 676 HandleRootMessage(service_msg);
696 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 677 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
697 EXPECT_STREQ("{\"jsonrpc\":\"2.0\", \"result\":alpha,\"id\":\"\\\"\"}", 678 EXPECT_STREQ("{\"jsonrpc\":\"2.0\", \"result\":alpha,\"id\":\"\\\"\"}",
698 handler.msg()); 679 handler.msg());
699 service_msg = Eval(lib, "[0, port, 1, 'beta', [], []]"); 680 service_msg = Eval(lib, "[0, port, 1, 'beta', [], []]");
700 HandleRootMessage(service_msg); 681 HandleRootMessage(service_msg);
701 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 682 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
702 EXPECT_STREQ("{\"jsonrpc\":\"2.0\", \"error\":beta,\"id\":1}", handler.msg()); 683 EXPECT_STREQ("{\"jsonrpc\":\"2.0\", \"error\":beta,\"id\":1}", handler.msg());
703 } 684 }
704 685
705
706 TEST_CASE(Service_EmbedderIsolateHandler) { 686 TEST_CASE(Service_EmbedderIsolateHandler) {
707 const char* kScript = 687 const char* kScript =
708 "var port;\n" // Set to our mock port by C++. 688 "var port;\n" // Set to our mock port by C++.
709 "\n" 689 "\n"
710 "var x = 7;\n" 690 "var x = 7;\n"
711 "main() {\n" 691 "main() {\n"
712 " x = x * x;\n" 692 " x = x * x;\n"
713 " x = x / 13;\n" 693 " x = x / 13;\n"
714 "}"; 694 "}";
715 695
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage()); 769 EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
790 // Expect error. 770 // Expect error.
791 EXPECT_SUBSTRING("\"error\"", handler.msg()); 771 EXPECT_SUBSTRING("\"error\"", handler.msg());
792 } 772 }
793 773
794 #endif // !defined(TARGET_ARCH_ARM64) 774 #endif // !defined(TARGET_ARCH_ARM64)
795 775
796 #endif // !PRODUCT 776 #endif // !PRODUCT
797 777
798 } // namespace dart 778 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/service_isolate.cc ('k') | runtime/vm/signal_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698