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()); |