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

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: tweaks Created 6 years, 7 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
« runtime/vm/flags.cc ('K') | « 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 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« runtime/vm/flags.cc ('K') | « runtime/vm/service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698