| OLD | NEW |
| 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" |
| 11 #include "vm/globals.h" | 11 #include "vm/globals.h" |
| 12 #include "vm/message_handler.h" | 12 #include "vm/message_handler.h" |
| 13 #include "vm/object_id_ring.h" | 13 #include "vm/object_id_ring.h" |
| 14 #include "vm/os.h" | 14 #include "vm/os.h" |
| 15 #include "vm/port.h" | 15 #include "vm/port.h" |
| 16 #include "vm/service.h" | 16 #include "vm/service.h" |
| 17 #include "vm/unit_test.h" | 17 #include "vm/unit_test.h" |
| 18 | 18 |
| 19 namespace dart { | 19 namespace dart { |
| 20 | 20 |
| 21 // This flag is used in the Service_Flags test below. |
| 22 DEFINE_FLAG(bool, service_testing_flag, false, "Comment"); |
| 23 |
| 21 class ServiceTestMessageHandler : public MessageHandler { | 24 class ServiceTestMessageHandler : public MessageHandler { |
| 22 public: | 25 public: |
| 23 ServiceTestMessageHandler() : _msg(NULL) {} | 26 ServiceTestMessageHandler() : _msg(NULL) {} |
| 24 | 27 |
| 25 ~ServiceTestMessageHandler() { | 28 ~ServiceTestMessageHandler() { |
| 26 free(_msg); | 29 free(_msg); |
| 27 } | 30 } |
| 28 | 31 |
| 29 bool HandleMessage(Message* message) { | 32 bool HandleMessage(Message* message) { |
| 30 if (_msg != NULL) { | 33 if (_msg != NULL) { |
| (...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1046 Service::HandleRootMessage(service_msg); | 1049 Service::HandleRootMessage(service_msg); |
| 1047 handler.HandleNextMessage(); | 1050 handler.HandleNextMessage(); |
| 1048 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg()); | 1051 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg()); |
| 1049 EXPECT_SUBSTRING("\"architecture\"", handler.msg()); | 1052 EXPECT_SUBSTRING("\"architecture\"", handler.msg()); |
| 1050 EXPECT_SUBSTRING("\"version\"", handler.msg()); | 1053 EXPECT_SUBSTRING("\"version\"", handler.msg()); |
| 1051 EXPECT_SUBSTRING("\"uptime\"", handler.msg()); | 1054 EXPECT_SUBSTRING("\"uptime\"", handler.msg()); |
| 1052 EXPECT_SUBSTRING("\"isolates\"", handler.msg()); | 1055 EXPECT_SUBSTRING("\"isolates\"", handler.msg()); |
| 1053 } | 1056 } |
| 1054 | 1057 |
| 1055 | 1058 |
| 1059 TEST_CASE(Service_Flags) { |
| 1060 const char* kScript = |
| 1061 "var port;\n" // Set to our mock port by C++. |
| 1062 "\n" |
| 1063 "main() {\n" |
| 1064 "}"; |
| 1065 |
| 1066 Isolate* isolate = Isolate::Current(); |
| 1067 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
| 1068 EXPECT_VALID(lib); |
| 1069 |
| 1070 // Build a mock message handler and wrap it in a dart port. |
| 1071 ServiceTestMessageHandler handler; |
| 1072 Dart_Port port_id = PortMap::CreatePort(&handler); |
| 1073 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
| 1074 EXPECT_VALID(port); |
| 1075 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
| 1076 |
| 1077 Instance& service_msg = Instance::Handle(); |
| 1078 service_msg = Eval(lib, "[port, ['flags'], [], []]"); |
| 1079 |
| 1080 // Make sure we can get the FlagList. |
| 1081 Service::HandleRootMessage(service_msg); |
| 1082 handler.HandleNextMessage(); |
| 1083 EXPECT_SUBSTRING("\"type\":\"FlagList\",\"id\":\"flags\"", handler.msg()); |
| 1084 EXPECT_SUBSTRING( |
| 1085 "\"name\":\"service_testing_flag\",\"comment\":\"Comment\"," |
| 1086 "\"flagType\":\"bool\",\"valueAsString\":\"false\"", |
| 1087 handler.msg()); |
| 1088 |
| 1089 // Modify a flag through the vm service. |
| 1090 service_msg = Eval(lib, |
| 1091 "[port, ['flags', 'set'], " |
| 1092 "['name', 'value'], ['service_testing_flag', 'true']]"); |
| 1093 Service::HandleRootMessage(service_msg); |
| 1094 handler.HandleNextMessage(); |
| 1095 EXPECT_SUBSTRING("Success", handler.msg()); |
| 1096 |
| 1097 // Make sure that the flag changed. |
| 1098 service_msg = Eval(lib, "[port, ['flags'], [], []]"); |
| 1099 Service::HandleRootMessage(service_msg); |
| 1100 handler.HandleNextMessage(); |
| 1101 EXPECT_SUBSTRING( |
| 1102 "\"name\":\"service_testing_flag\",\"comment\":\"Comment\"," |
| 1103 "\"flagType\":\"bool\",\"valueAsString\":\"true\"", |
| 1104 handler.msg()); |
| 1105 } |
| 1106 |
| 1107 |
| 1056 TEST_CASE(Service_Scripts) { | 1108 TEST_CASE(Service_Scripts) { |
| 1057 const char* kScript = | 1109 const char* kScript = |
| 1058 "var port;\n" // Set to our mock port by C++. | 1110 "var port;\n" // Set to our mock port by C++. |
| 1059 "\n" | 1111 "\n" |
| 1060 "main() {\n" | 1112 "main() {\n" |
| 1061 "}"; | 1113 "}"; |
| 1062 | 1114 |
| 1063 Isolate* isolate = Isolate::Current(); | 1115 Isolate* isolate = Isolate::Current(); |
| 1064 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); | 1116 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); |
| 1065 EXPECT_VALID(h_lib); | 1117 EXPECT_VALID(h_lib); |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1419 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); | 1471 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); |
| 1420 Service::HandleIsolateMessage(isolate, service_msg); | 1472 Service::HandleIsolateMessage(isolate, service_msg); |
| 1421 handler.HandleNextMessage(); | 1473 handler.HandleNextMessage(); |
| 1422 // Expect error. | 1474 // Expect error. |
| 1423 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); | 1475 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); |
| 1424 } | 1476 } |
| 1425 | 1477 |
| 1426 #endif // !defined(TARGET_ARCH_ARM64) | 1478 #endif // !defined(TARGET_ARCH_ARM64) |
| 1427 | 1479 |
| 1428 } // namespace dart | 1480 } // namespace dart |
| OLD | NEW |