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

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

Issue 299143007: Show flags in Observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: gen js + code review Created 6 years, 6 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
« no previous file with comments | « runtime/vm/service.cc ('k') | no next file » | 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_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 1027 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1061 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1059 EXPECT_VALID(port); 1062 EXPECT_VALID(port);
1060 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1063 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1061 1064
1062 Instance& service_msg = Instance::Handle(); 1065 Instance& service_msg = Instance::Handle();
1063 service_msg = Eval(lib, "[port, ['vm'], [], []]"); 1066 service_msg = Eval(lib, "[port, ['vm'], [], []]");
1064 1067
1065 Service::HandleRootMessage(service_msg); 1068 Service::HandleRootMessage(service_msg);
1066 handler.HandleNextMessage(); 1069 handler.HandleNextMessage();
1067 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg()); 1070 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg());
1068 EXPECT_SUBSTRING("\"architecture\"", handler.msg()); 1071 EXPECT_SUBSTRING("\"targetCPU\"", handler.msg());
1072 EXPECT_SUBSTRING("\"hostCPU\"", handler.msg());
1069 EXPECT_SUBSTRING("\"version\"", handler.msg()); 1073 EXPECT_SUBSTRING("\"version\"", handler.msg());
1070 EXPECT_SUBSTRING("\"uptime\"", handler.msg()); 1074 EXPECT_SUBSTRING("\"uptime\"", handler.msg());
1071 EXPECT_SUBSTRING("\"isolates\"", handler.msg()); 1075 EXPECT_SUBSTRING("\"isolates\"", handler.msg());
1072 } 1076 }
1073 1077
1074 1078
1079 TEST_CASE(Service_Flags) {
1080 const char* kScript =
1081 "var port;\n" // Set to our mock port by C++.
1082 "\n"
1083 "main() {\n"
1084 "}";
1085
1086 Isolate* isolate = Isolate::Current();
1087 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1088 EXPECT_VALID(lib);
1089
1090 // Build a mock message handler and wrap it in a dart port.
1091 ServiceTestMessageHandler handler;
1092 Dart_Port port_id = PortMap::CreatePort(&handler);
1093 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1094 EXPECT_VALID(port);
1095 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1096
1097 Instance& service_msg = Instance::Handle();
1098 service_msg = Eval(lib, "[port, ['flags'], [], []]");
1099
1100 // Make sure we can get the FlagList.
1101 Service::HandleRootMessage(service_msg);
1102 handler.HandleNextMessage();
1103 EXPECT_SUBSTRING("\"type\":\"FlagList\",\"id\":\"flags\"", handler.msg());
1104 EXPECT_SUBSTRING(
1105 "\"name\":\"service_testing_flag\",\"comment\":\"Comment\","
1106 "\"flagType\":\"bool\",\"valueAsString\":\"false\"",
1107 handler.msg());
1108
1109 // Modify a flag through the vm service.
1110 service_msg = Eval(lib,
1111 "[port, ['flags', 'set'], "
1112 "['name', 'value'], ['service_testing_flag', 'true']]");
1113 Service::HandleRootMessage(service_msg);
1114 handler.HandleNextMessage();
1115 EXPECT_SUBSTRING("Success", handler.msg());
1116
1117 // Make sure that the flag changed.
1118 service_msg = Eval(lib, "[port, ['flags'], [], []]");
1119 Service::HandleRootMessage(service_msg);
1120 handler.HandleNextMessage();
1121 EXPECT_SUBSTRING(
1122 "\"name\":\"service_testing_flag\",\"comment\":\"Comment\","
1123 "\"flagType\":\"bool\",\"valueAsString\":\"true\"",
1124 handler.msg());
1125 }
1126
1127
1075 TEST_CASE(Service_Scripts) { 1128 TEST_CASE(Service_Scripts) {
1076 const char* kScript = 1129 const char* kScript =
1077 "var port;\n" // Set to our mock port by C++. 1130 "var port;\n" // Set to our mock port by C++.
1078 "\n" 1131 "\n"
1079 "main() {\n" 1132 "main() {\n"
1080 "}"; 1133 "}";
1081 1134
1082 Isolate* isolate = Isolate::Current(); 1135 Isolate* isolate = Isolate::Current();
1083 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); 1136 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
1084 EXPECT_VALID(h_lib); 1137 EXPECT_VALID(h_lib);
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1438 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); 1491 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]");
1439 Service::HandleIsolateMessage(isolate, service_msg); 1492 Service::HandleIsolateMessage(isolate, service_msg);
1440 handler.HandleNextMessage(); 1493 handler.HandleNextMessage();
1441 // Expect error. 1494 // Expect error.
1442 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); 1495 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
1443 } 1496 }
1444 1497
1445 #endif // !defined(TARGET_ARCH_ARM64) 1498 #endif // !defined(TARGET_ARCH_ARM64)
1446 1499
1447 } // namespace dart 1500 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698