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

Unified Diff: runtime/vm/service_test.cc

Issue 897193002: Finish moving service protocol to json rpc. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/service/vmservice.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/service_test.cc
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index ee6659a7e358ed2b227696d92a65aa8ef3c22506..17691b415fd2cbb7c552b98546a8153ecd9f82b1 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -184,7 +184,7 @@ TEST_CASE(Service_Isolate) {
Array& service_msg = Array::Handle();
// Get the isolate summary.
- service_msg = Eval(lib, "[0, port, [], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getIsolate', [], []]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
@@ -248,7 +248,8 @@ TEST_CASE(Service_Objects) {
Array& service_msg = Array::Handle();
// null
- service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/null']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
handler.filterMsg("_vmName");
@@ -257,59 +258,9 @@ TEST_CASE(Service_Objects) {
"\"valueAsString\":\"null\",\"class\":",
handler.msg());
- // not initialized
- service_msg = Eval(lib, "[0, port, ['objects', 'not-initialized'], [], []]");
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- handler.filterMsg("_vmName");
- EXPECT_STREQ(
- "{\"type\":\"Sentinel\",\"id\":\"objects\\/not-initialized\","
- "\"valueAsString\":\"<not initialized>\"}",
- handler.msg());
-
- // being initialized
- service_msg = Eval(lib,
- "[0, port, ['objects', 'being-initialized'], [], []]");
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- handler.filterMsg("_vmName");
- EXPECT_STREQ(
- "{\"type\":\"Sentinel\",\"id\":\"objects\\/being-initialized\","
- "\"valueAsString\":\"<being initialized>\"}",
- handler.msg());
-
- // optimized out
- service_msg = Eval(lib, "[0, port, ['objects', 'optimized-out'], [], []]");
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- handler.filterMsg("_vmName");
- EXPECT_STREQ(
- "{\"type\":\"Sentinel\",\"id\":\"objects\\/optimized-out\","
- "\"valueAsString\":\"<optimized out>\"}",
- handler.msg());
-
- // collected
- service_msg = Eval(lib, "[0, port, ['objects', 'collected'], [], []]");
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- handler.filterMsg("_vmName");
- EXPECT_STREQ(
- "{\"type\":\"Sentinel\",\"id\":\"objects\\/collected\","
- "\"valueAsString\":\"<collected>\"}",
- handler.msg());
-
- // expired
- service_msg = Eval(lib, "[0, port, ['objects', 'expired'], [], []]");
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- handler.filterMsg("_vmName");
- EXPECT_STREQ(
- "{\"type\":\"Sentinel\",\"id\":\"objects\\/expired\","
- "\"valueAsString\":\"<expired>\"}",
- handler.msg());
-
// bool
- service_msg = Eval(lib, "[0, port, ['objects', 'bool-true'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/bool-true']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
handler.filterMsg("_vmName");
@@ -323,7 +274,8 @@ TEST_CASE(Service_Objects) {
handler.msg());
// int
- service_msg = Eval(lib, "[0, port, ['objects', 'int-123'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/int-123']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
handler.filterMsg("_vmName");
@@ -337,7 +289,8 @@ TEST_CASE(Service_Objects) {
handler.msg());
// object id ring / valid
- service_msg = Eval(lib, "[0, port, ['objects', '$validId'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/$validId']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
handler.filterMsg("_vmName");
@@ -356,7 +309,8 @@ TEST_CASE(Service_Objects) {
handler.msg());
// object id ring / invalid => expired
- service_msg = Eval(lib, "[0, port, ['objects', '99999999'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/99999999']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
handler.filterMsg("_vmName");
@@ -541,9 +495,10 @@ TEST_CASE(Service_Libraries) {
Array& service_msg = Array::Handle();
// Request library.
- service_msg = EvalF(lib,
- "[0, port, ['libraries', '%" Pd "'], [], []]",
- vmlib.index());
+ service_msg =
+ EvalF(lib,
+ "[0, port, 'getObject', ['objectId'], ['libraries/%" Pd "']]",
+ vmlib.index());
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg());
@@ -594,17 +549,15 @@ TEST_CASE(Service_Classes) {
Array& service_msg = Array::Handle();
// Request an invalid class id.
- service_msg = Eval(lib, "[0, port, ['classes', '999999'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/999999']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- EXPECT_STREQ(
- "{\"type\":\"Error\","
- "\"message\":\"999999 is not a valid class id.\","
- "\"request\":{\"arguments\":[\"classes\",\"999999\"],"
- "\"option_keys\":[],\"option_values\":[]}}", handler.msg());
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Request the class A over the service.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
@@ -616,8 +569,8 @@ TEST_CASE(Service_Classes) {
// Request function 'b' from class A.
service_msg = EvalF(lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'b'],"
- "[], []]", cid);
+ "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/functions/b']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Function\"", handler.msg());
@@ -626,8 +579,8 @@ TEST_CASE(Service_Classes) {
"\"name\":\"b\",", cid);
// Request field 0 from class A.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "', 'fields', '0'],"
- "[], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/fields/0']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Field\"", handler.msg());
@@ -636,74 +589,51 @@ TEST_CASE(Service_Classes) {
"\"name\":\"a\",", cid);
// Invalid sub command.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "', 'huh', '0'],"
- "[], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/huh']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\",\"message\":\"Invalid sub collection huh\""
- ",\"request\":"
- "{\"arguments\":[\"classes\",\"%" Pd "\",\"huh\",\"0\"],\"option_keys\":[],"
- "\"option_values\":[]}}", cid);
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Invalid field request.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "', 'fields', '9'],"
- "[], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/fields/9']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\",\"message\":\"Field 9 not found\","
- "\"request\":{\"arguments\":[\"classes\",\"%" Pd "\",\"fields\",\"9\"],"
- "\"option_keys\":[],\"option_values\":[]}}", cid);
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Invalid function request.
service_msg = EvalF(lib,
- "[0, port, ['classes', '%" Pd "', 'functions', '9'],"
- "[], []]", cid);
+ "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/functions/9']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\",\"message\":\"Function 9 not found\","
- "\"request\":{\"arguments\":[\"classes\",\"%" Pd "\",\"functions\",\"9\"],"
- "\"option_keys\":[],\"option_values\":[]}}", cid);
-
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Invalid field subcommand.
service_msg = EvalF(lib,
- "[0, port, ['classes', '%" Pd "', 'fields', '9', 'x']"
- ",[], []]", cid);
+ "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/fields/9']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\",\"message\":\"Command too long\","
- "\"request\":"
- "{\"arguments\":[\"classes\",\"%" Pd "\",\"fields\",\"9\",\"x\"],"
- "\"option_keys\":[],\"option_values\":[]}}", cid);
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Invalid function command.
service_msg = EvalF(lib,
- "[0, port, ['classes', '%" Pd "', 'functions', '0',"
- "'x', 'y'], [], []]", cid);
+ "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/functions/0/x/y']]",
+ cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\","
- "\"message\":\"Command should have 4 or 5 arguments\","
- "\"request\":"
- "{\"arguments\":[\"classes\",\"%" Pd "\",\"functions\",\"0\",\"x\",\"y\"],"
- "\"option_keys\":[],\"option_values\":[]}}", cid);
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Invalid function subcommand with valid function id.
service_msg = EvalF(lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'b',"
- "'x'], [], []]", cid);
+ "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/functions/b/x']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\",\"message\":\"Invalid sub command x\","
- "\"request\":"
- "{\"arguments\":[\"classes\",\"%" Pd "\",\"functions\",\"b\",\"x\"],"
- "\"option_keys\":[],\"option_values\":[]}}", cid);
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Retained size of all instances of class B.
const Class& class_b = Class::Handle(GetClass(vmlib, "B"));
@@ -748,127 +678,6 @@ TEST_CASE(Service_Classes) {
}
-TEST_CASE(Service_SetSource) {
- const char* kScript =
- "var port;\n" // Set to our mock port by C++.
- "\n"
- "class A {\n"
- " a() { return 1; }\n"
- " b() { return 0; }\n"
- " c(String f) { return f.length; }\n"
- "}\n"
- "main() {\n"
- " var z = new A();\n"
- " return z.a();\n"
- "}\n"
- "runB() {\n"
- " var z = new A();\n"
- " return z.b();\n"
- "}\n"
- "runC() {\n"
- " var z = new A();\n"
- " return z.c();\n"
- "}\n";
-
- Isolate* isolate = Isolate::Current();
- Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
- EXPECT_VALID(lib);
- Library& vmlib = Library::Handle();
- vmlib ^= Api::UnwrapHandle(lib);
- EXPECT(!vmlib.IsNull());
- Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
- EXPECT_VALID(result);
- const Class& class_a = Class::Handle(GetClass(vmlib, "A"));
- EXPECT(!class_a.IsNull());
- intptr_t cid = class_a.id();
-
- // Build a mock message handler and wrap it in a dart port.
- ServiceTestMessageHandler handler;
- Dart_Port port_id = PortMap::CreatePort(&handler);
- Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
- EXPECT_VALID(port);
- EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
-
- Array& service_msg = Array::Handle();
-
- // Request the class A over the service.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid);
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
- ExpectSubstringF(handler.msg(),
- "\"id\":\"classes\\/%" Pd "\",\"name\":\"A\",", cid);
- ExpectSubstringF(handler.msg(), "\"allocationStats\":");
- ExpectSubstringF(handler.msg(), "\"tokenPos\":");
- ExpectSubstringF(handler.msg(), "\"endTokenPos\":");
-
- // Request function 'b' from class A.
- service_msg = EvalF(lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'b'],"
- "[], []]", cid);
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- EXPECT_SUBSTRING("\"type\":\"Function\"", handler.msg());
- ExpectSubstringF(handler.msg(),
- "\"id\":\"classes\\/%" Pd "\\/functions\\/b\","
- "\"name\":\"b\",", cid);
-
- // Invalid set source of function 'b' from class A.
- service_msg = EvalF(
- lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'b', 'set_source'],"
- "[], []]", cid);
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
- EXPECT_SUBSTRING("set_source expects a 'source' option", handler.msg());
-
- // Set source (with syntax error) of function 'b' from class A.
- service_msg = EvalF(
- lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'b', 'set_source'],"
- "['source'], ['b() { return 4 }']]", cid);
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
-
- // Set source of function 'b' from class A.
- service_msg = EvalF(
- lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'b', 'set_source'],"
- "['source'], ['b() { return 4; }']]", cid);
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- EXPECT_SUBSTRING("Success", handler.msg());
-
- // Run function 'b' see that it is executing replaced code.
- result = Dart_Invoke(lib, NewString("runB"), 0, NULL);
- EXPECT_VALID(result);
- ASSERT(Dart_IsInteger(result));
- int64_t r;
- result = Dart_IntegerToInt64(result, &r);
- EXPECT_VALID(result);
- EXPECT_EQ(4, r);
-
- // Set source of function 'c' from class A, changing its signature.
- service_msg = EvalF(
- lib,
- "[0, port, ['classes', '%" Pd "', 'functions', 'c', 'set_source'],"
- "['source'], ['c() { return 99; }']]", cid);
- Service::HandleIsolateMessage(isolate, service_msg);
- handler.HandleNextMessage();
- EXPECT_SUBSTRING("Success", handler.msg());
-
- // Run function 'c' see that it is executing replaced code.
- result = Dart_Invoke(lib, NewString("runC"), 0, NULL);
- EXPECT_VALID(result);
- ASSERT(Dart_IsInteger(result));
- result = Dart_IntegerToInt64(result, &r);
- EXPECT_VALID(result);
- EXPECT_EQ(99, r);
-}
-
-
TEST_CASE(Service_Types) {
const char* kScript =
"var port;\n" // Set to our mock port by C++.
@@ -901,7 +710,8 @@ TEST_CASE(Service_Types) {
Array& service_msg = Array::Handle();
// Request the class A over the service.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "']]]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
@@ -910,8 +720,8 @@ TEST_CASE(Service_Types) {
"\"id\":\"classes\\/%" Pd "\"", cid);
// Request canonical type 0 from class A.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "', 'types', '0'],"
- "[], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/types/0']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Type\"", handler.msg());
@@ -920,8 +730,8 @@ TEST_CASE(Service_Types) {
"\"id\":\"classes\\/%" Pd "\\/types\\/0\"", cid);
// Request canonical type 1 from class A.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "', 'types', '1'],"
- "[], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/types/1']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("\"type\":\"Type\"", handler.msg());
@@ -930,16 +740,11 @@ TEST_CASE(Service_Types) {
"\"id\":\"classes\\/%" Pd "\\/types\\/1\"", cid);
// Request for non-existent canonical type from class A.
- service_msg = EvalF(lib, "[0, port, ['classes', '%" Pd "', 'types', '42'],"
- "[], []]", cid);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['classes/%" Pd "/types/42']]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- ExpectSubstringF(handler.msg(),
- "{\"type\":\"Error\","
- "\"message\":\"Canonical type 42 not found\""
- ",\"request\":"
- "{\"arguments\":[\"classes\",\"%" Pd "\",\"types\",\"42\"],"
- "\"option_keys\":[],\"option_values\":[]}}", cid);
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
}
@@ -991,17 +796,15 @@ TEST_CASE(Service_Code) {
Array& service_msg = Array::Handle();
// Request an invalid code object.
- service_msg = Eval(lib, "[0, port, ['code', '0'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObject', ['objectId'], ['code/0']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- EXPECT_STREQ(
- "{\"type\":\"Error\",\"message\":\"Malformed code id: 0\","
- "\"request\":{\"arguments\":[\"code\",\"0\"],"
- "\"option_keys\":[],\"option_values\":[]}}", handler.msg());
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// The following test checks that a code object can be found only
// at compile_timestamp()-code.EntryPoint().
- service_msg = EvalF(lib, "[0, port, ['code', '%" Px64"-%" Px "'], [], []]",
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['code/%" Px64"-%" Px "']]",
compile_timestamp,
entry);
Service::HandleIsolateMessage(isolate, service_msg);
@@ -1020,44 +823,29 @@ TEST_CASE(Service_Code) {
// Request code object at compile_timestamp-code.EntryPoint() + 16
// Expect this to fail because the address is not the entry point.
uintptr_t address = entry + 16;
- service_msg = EvalF(lib, "[0, port, ['code', '%" Px64"-%" Px "'], [], []]",
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['code/%" Px64"-%" Px "']]",
compile_timestamp,
address);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- {
- // Only perform a partial match.
- const intptr_t kBufferSize = 512;
- char buffer[kBufferSize];
- OS::SNPrint(buffer, kBufferSize-1,
- "Could not find code with id: %" Px64 "-%" Px "",
- compile_timestamp,
- address);
- EXPECT_SUBSTRING(buffer, handler.msg());
- }
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Request code object at (compile_timestamp - 1)-code.EntryPoint()
// Expect this to fail because the timestamp is wrong.
address = entry;
- service_msg = EvalF(lib, "[0, port, ['code', '%" Px64"-%" Px "'], [], []]",
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['code/%" Px64"-%" Px "']]",
compile_timestamp - 1,
address);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- {
- // Only perform a partial match.
- const intptr_t kBufferSize = 512;
- char buffer[kBufferSize];
- OS::SNPrint(buffer, kBufferSize-1,
- "Could not find code with id: %" Px64 "-%" Px "",
- compile_timestamp - 1,
- address);
- EXPECT_SUBSTRING(buffer, handler.msg());
- }
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
// Request native code at address. Expect the null code object back.
address = last;
- service_msg = EvalF(lib, "[0, port, ['code', 'native-%" Px "'], [], []]",
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['code/native-%" Px "']]",
address);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
@@ -1066,11 +854,12 @@ TEST_CASE(Service_Code) {
handler.msg());
// Request malformed native code.
- service_msg = EvalF(lib, "[0, port, ['code', 'native%" Px "'], [], []]",
+ service_msg = EvalF(lib, "[0, port, 'getObject', ['objectId'], "
+ "['code/native%" Px "']]",
address);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
- EXPECT_SUBSTRING("\"message\":\"Malformed code id:", handler.msg());
+ EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
}
@@ -1109,7 +898,8 @@ TEST_CASE(Service_TokenStream) {
Array& service_msg = Array::Handle();
// Fetch object.
- service_msg = EvalF(lib, "[0, port, ['objects', '%" Pd "'], [], []]", id);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/%" Pd "']]", id);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
@@ -1170,7 +960,8 @@ TEST_CASE(Service_PcDescriptors) {
Array& service_msg = Array::Handle();
// Fetch object.
- service_msg = EvalF(lib, "[0, port, ['objects', '%" Pd "'], [], []]", id);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/%" Pd "']]", id);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
// Check type.
@@ -1230,7 +1021,8 @@ TEST_CASE(Service_LocalVarDescriptors) {
Array& service_msg = Array::Handle();
// Fetch object.
- service_msg = EvalF(lib, "[0, port, ['objects', '%" Pd "'], [], []]", id);
+ service_msg = EvalF(lib, "[0, port, 'getObject', "
+ "['objectId'], ['objects/%" Pd "']]", id);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
// Check type.
@@ -1260,7 +1052,7 @@ TEST_CASE(Service_VM) {
EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
Array& service_msg = Array::Handle();
- service_msg = Eval(lib, "[0, port, ['vm'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getVM', [], []]");
Service::HandleRootMessage(service_msg);
handler.HandleNextMessage();
@@ -1292,7 +1084,7 @@ TEST_CASE(Service_Flags) {
EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
Array& service_msg = Array::Handle();
- service_msg = Eval(lib, "[0, port, ['flags'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getFlagList', [], []]");
// Make sure we can get the FlagList.
Service::HandleRootMessage(service_msg);
@@ -1305,14 +1097,14 @@ TEST_CASE(Service_Flags) {
// Modify a flag through the vm service.
service_msg = Eval(lib,
- "[0, port, ['flags', 'set'], "
+ "[0, port, 'setFlag', "
"['name', 'value'], ['service_testing_flag', 'true']]");
Service::HandleRootMessage(service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING("Success", handler.msg());
// Make sure that the flag changed.
- service_msg = Eval(lib, "[0, port, ['flags'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getFlagList', [], []]");
Service::HandleRootMessage(service_msg);
handler.HandleNextMessage();
EXPECT_SUBSTRING(
@@ -1346,8 +1138,9 @@ TEST_CASE(Service_Scripts) {
Array& service_msg = Array::Handle();
char buf[1024];
OS::SNPrint(buf, sizeof(buf),
- "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]",
- vmlib.index());
+ "[0, port, 'getObject', "
+ "['objectId'], ['libraries/%" Pd "/scripts/test-lib']]",
+ vmlib.index());
service_msg = Eval(lib, buf);
Service::HandleIsolateMessage(isolate, service_msg);
@@ -1490,8 +1283,11 @@ TEST_CASE(Service_Address) {
char buf[1024];
bool ref = offset % 2 == 0;
OS::SNPrint(buf, sizeof(buf),
- ref ? "[0, port, ['address', '%" Px "'], ['ref'], ['true']]" :
- "[0, port, ['address', '%" Px "', ], [], []]",
+ (ref
+ ? "[0, port, 'getObjectByAddress', "
+ "['address', 'ref'], ['%" Px "', 'true']]"
+ : "[0, port, 'getObjectByAddress', "
+ "['address'], ['%" Px "']]"),
addr);
service_msg = Eval(lib, buf);
Service::HandleIsolateMessage(isolate, service_msg);
@@ -1502,7 +1298,8 @@ TEST_CASE(Service_Address) {
EXPECT_SUBSTRING("foobar", handler.msg());
}
// Expect null when no object is found.
- service_msg = Eval(lib, "[0, port, ['address', '7'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'getObjectByAddress', "
+ "['address'], ['7']]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
// TODO(turnidge): Should this be a ServiceException instead?
@@ -1514,8 +1311,6 @@ TEST_CASE(Service_Address) {
static const char* alpha_callback(
const char* name,
- const char** arguments,
- intptr_t num_arguments,
const char** option_keys,
const char** option_values,
intptr_t num_options,
@@ -1526,8 +1321,6 @@ static const char* alpha_callback(
static const char* beta_callback(
const char* name,
- const char** arguments,
- intptr_t num_arguments,
const char** option_keys,
const char** option_values,
intptr_t num_options,
@@ -1564,11 +1357,11 @@ TEST_CASE(Service_EmbedderRootHandler) {
Array& service_msg = Array::Handle();
- service_msg = Eval(lib, "[0, port, ['alpha'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'alpha', [], []]");
Service::HandleRootMessage(service_msg);
handler.HandleNextMessage();
EXPECT_STREQ("alpha", handler.msg());
- service_msg = Eval(lib, "[0, port, ['beta'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'beta', [], []]");
Service::HandleRootMessage(service_msg);
handler.HandleNextMessage();
EXPECT_STREQ("beta", handler.msg());
@@ -1601,11 +1394,11 @@ TEST_CASE(Service_EmbedderIsolateHandler) {
EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
Array& service_msg = Array::Handle();
- service_msg = Eval(lib, "[0, port, ['alpha'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'alpha', [], []]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_STREQ("alpha", handler.msg());
- service_msg = Eval(lib, "[0, port, ['beta'], [], []]");
+ service_msg = Eval(lib, "[0, port, 'beta', [], []]");
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
EXPECT_STREQ("beta", handler.msg());
« no previous file with comments | « runtime/vm/service/vmservice.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698