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

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

Issue 392933003: vm/observatory: Clean up script access (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 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"
(...skipping 1282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 TEST_CASE(Service_Scripts) { 1293 TEST_CASE(Service_Scripts) {
1294 const char* kScript = 1294 const char* kScript =
1295 "var port;\n" // Set to our mock port by C++. 1295 "var port;\n" // Set to our mock port by C++.
1296 "\n" 1296 "\n"
1297 "main() {\n" 1297 "main() {\n"
1298 "}"; 1298 "}";
1299 1299
1300 Isolate* isolate = Isolate::Current(); 1300 Isolate* isolate = Isolate::Current();
1301 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); 1301 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
1302 EXPECT_VALID(h_lib); 1302 EXPECT_VALID(h_lib);
1303 Library& lib = Library::Handle();
1304 lib ^= Api::UnwrapHandle(h_lib);
1305 EXPECT(!lib.IsNull());
1303 1306
1304 // Build a mock message handler and wrap it in a dart port. 1307 // Build a mock message handler and wrap it in a dart port.
1305 ServiceTestMessageHandler handler; 1308 ServiceTestMessageHandler handler;
1306 Dart_Port port_id = PortMap::CreatePort(&handler); 1309 Dart_Port port_id = PortMap::CreatePort(&handler);
1307 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1310 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1308 EXPECT_VALID(port); 1311 EXPECT_VALID(port);
1309 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1312 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1310 1313
1311 Array& service_msg = Array::Handle(); 1314 Array& service_msg = Array::Handle();
1312 service_msg = Eval(h_lib, "[0, port, ['scripts', 'test-lib'], [], []]"); 1315 char buf[1024];
1316 OS::SNPrint(buf, sizeof(buf),
1317 "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]",
1318 lib.index());
1319
1320 service_msg = Eval(h_lib, buf);
1313 Service::HandleIsolateMessage(isolate, service_msg); 1321 Service::HandleIsolateMessage(isolate, service_msg);
1314 handler.HandleNextMessage(); 1322 handler.HandleNextMessage();
1315 EXPECT_STREQ( 1323 OS::SNPrint(buf, sizeof(buf),
1316 "{\"type\":\"Script\",\"id\":\"scripts\\/test-lib\"," 1324 "{\"type\":\"Script\","
1317 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1325 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1318 "\"kind\":\"script\"," 1326 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1319 "\"source\":\"var port;\\n\\nmain() {\\n}\"," 1327 "\"kind\":\"script\","
1320 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}", 1328 "\"owning_library\":{\"type\":\"@Library\","
1321 handler.msg()); 1329 "\"id\":\"libraries\\/%" Pd "\",\"user_name\":\"\",\"name\":\"\","
1330 "\"url\":\"test-lib\"},"
1331 "\"source\":\"var port;\\n\\nmain() {\\n}\","
1332 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}",
1333 lib.index(), lib.index());
1334 EXPECT_STREQ(buf, handler.msg());
1322 } 1335 }
1323 1336
1324 1337
1325 // TODO(zra): Remove when tests are ready to enable. 1338 // TODO(zra): Remove when tests are ready to enable.
1326 #if !defined(TARGET_ARCH_ARM64) 1339 #if !defined(TARGET_ARCH_ARM64)
1327 1340
1328 TEST_CASE(Service_Coverage) { 1341 TEST_CASE(Service_Coverage) {
1329 const char* kScript = 1342 const char* kScript =
1330 "var port;\n" // Set to our mock port by C++. 1343 "var port;\n" // Set to our mock port by C++.
1331 "\n" 1344 "\n"
(...skipping 16 matching lines...) Expand all
1348 ServiceTestMessageHandler handler; 1361 ServiceTestMessageHandler handler;
1349 Dart_Port port_id = PortMap::CreatePort(&handler); 1362 Dart_Port port_id = PortMap::CreatePort(&handler);
1350 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1363 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1351 EXPECT_VALID(port); 1364 EXPECT_VALID(port);
1352 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1365 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1353 1366
1354 Array& service_msg = Array::Handle(); 1367 Array& service_msg = Array::Handle();
1355 service_msg = Eval(h_lib, "[0, port, ['coverage'], [], []]"); 1368 service_msg = Eval(h_lib, "[0, port, ['coverage'], [], []]");
1356 Service::HandleIsolateMessage(isolate, service_msg); 1369 Service::HandleIsolateMessage(isolate, service_msg);
1357 handler.HandleNextMessage(); 1370 handler.HandleNextMessage();
1358 EXPECT_SUBSTRING( 1371
1359 "{\"source\":\"test-lib\",\"script\":{" 1372 // Look up the service id for the library containg the test-lib script.
1360 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1373 const GrowableObjectArray& libs =
1374 GrowableObjectArray::Handle(isolate->object_store()->libraries());
1375 intptr_t i;
1376 for (i = 0; i < libs.Length(); i++) {
1377 if (libs.At(i) == lib.raw()) {
1378 break;
1379 }
1380 }
1381 ASSERT(i != libs.Length());
1382
1383 char buf[1024];
1384 OS::SNPrint(buf, sizeof(buf),
1385 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1386 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1361 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1387 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1362 "\"kind\":\"script\"},\"hits\":" 1388 "\"kind\":\"script\"},\"hits\":"
1363 "[5,1,6,1]}", handler.msg()); 1389 "[5,1,6,1]}", i);
1390 EXPECT_SUBSTRING(buf, handler.msg());
1364 } 1391 }
1365 1392
1366 1393
1367 TEST_CASE(Service_ScriptsCoverage) { 1394 TEST_CASE(Service_LibrariesScriptsCoverage) {
1368 const char* kScript = 1395 const char* kScript =
1369 "var port;\n" // Set to our mock port by C++. 1396 "var port;\n" // Set to our mock port by C++.
1370 "\n" 1397 "\n"
1371 "var x = 7;\n" 1398 "var x = 7;\n"
1372 "main() {\n" 1399 "main() {\n"
1373 " x = x * x;\n" 1400 " x = x * x;\n"
1374 " x = x / 13;\n" 1401 " x = x / 13;\n"
1375 "}"; 1402 "}";
1376 1403
1377 Isolate* isolate = Isolate::Current(); 1404 Isolate* isolate = Isolate::Current();
1378 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); 1405 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
1379 EXPECT_VALID(h_lib); 1406 EXPECT_VALID(h_lib);
1380 Library& lib = Library::Handle(); 1407 Library& lib = Library::Handle();
1381 lib ^= Api::UnwrapHandle(h_lib); 1408 lib ^= Api::UnwrapHandle(h_lib);
1382 EXPECT(!lib.IsNull()); 1409 EXPECT(!lib.IsNull());
1383 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); 1410 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL);
1384 EXPECT_VALID(result); 1411 EXPECT_VALID(result);
1385 1412
1386 // Build a mock message handler and wrap it in a dart port. 1413 // Build a mock message handler and wrap it in a dart port.
1387 ServiceTestMessageHandler handler; 1414 ServiceTestMessageHandler handler;
1388 Dart_Port port_id = PortMap::CreatePort(&handler); 1415 Dart_Port port_id = PortMap::CreatePort(&handler);
1389 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1416 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1390 EXPECT_VALID(port); 1417 EXPECT_VALID(port);
1391 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1418 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1392 1419
1393 Array& service_msg = Array::Handle(); 1420 Array& service_msg = Array::Handle();
1394 service_msg = Eval( 1421 char buf[1024];
1395 h_lib, "[0, port, ['scripts', 'test-lib', 'coverage'], [], []]"); 1422 OS::SNPrint(buf, sizeof(buf),
1423 "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib', 'coverage'], "
1424 "[], []]",
1425 lib.index());
1426
1427 service_msg = Eval(h_lib, buf);
1396 Service::HandleIsolateMessage(isolate, service_msg); 1428 Service::HandleIsolateMessage(isolate, service_msg);
1397 handler.HandleNextMessage(); 1429 handler.HandleNextMessage();
1398 EXPECT_STREQ( 1430 OS::SNPrint(buf, sizeof(buf),
1399 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1431 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1400 "{\"source\":\"test-lib\",\"script\":{" 1432 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1401 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1433 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1402 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1434 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1403 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg()); 1435 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", lib.index());
1436 EXPECT_STREQ(buf, handler.msg());
1404 } 1437 }
1405 1438
1406 1439
1407 TEST_CASE(Service_LibrariesCoverage) { 1440 TEST_CASE(Service_LibrariesCoverage) {
1408 const char* kScript = 1441 const char* kScript =
1409 "var port;\n" // Set to our mock port by C++. 1442 "var port;\n" // Set to our mock port by C++.
1410 "\n" 1443 "\n"
1411 "var x = 7;\n" 1444 "var x = 7;\n"
1412 "main() {\n" 1445 "main() {\n"
1413 " x = x * x;\n" 1446 " x = x * x;\n"
(...skipping 27 matching lines...) Expand all
1441 } 1474 }
1442 ASSERT(i != libs.Length()); 1475 ASSERT(i != libs.Length());
1443 char buf[1024]; 1476 char buf[1024];
1444 OS::SNPrint(buf, sizeof(buf), 1477 OS::SNPrint(buf, sizeof(buf),
1445 "[0, port, ['libraries', '%" Pd "', 'coverage'], [], []]", i); 1478 "[0, port, ['libraries', '%" Pd "', 'coverage'], [], []]", i);
1446 1479
1447 Array& service_msg = Array::Handle(); 1480 Array& service_msg = Array::Handle();
1448 service_msg = Eval(h_lib, buf); 1481 service_msg = Eval(h_lib, buf);
1449 Service::HandleIsolateMessage(isolate, service_msg); 1482 Service::HandleIsolateMessage(isolate, service_msg);
1450 handler.HandleNextMessage(); 1483 handler.HandleNextMessage();
1451 EXPECT_STREQ( 1484 OS::SNPrint(buf, sizeof(buf),
1452 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1485 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1453 "{\"source\":\"test-lib\",\"script\":{" 1486 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1454 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1487 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1455 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1488 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1456 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg()); 1489 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", lib.index());
1490 EXPECT_STREQ(buf, handler.msg());
1457 } 1491 }
1458 1492
1459 1493
1460 TEST_CASE(Service_ClassesCoverage) { 1494 TEST_CASE(Service_ClassesCoverage) {
1461 const char* kScript = 1495 const char* kScript =
1462 "var port;\n" // Set to our mock port by C++. 1496 "var port;\n" // Set to our mock port by C++.
1463 "\n" 1497 "\n"
1464 "class Foo {\n" 1498 "class Foo {\n"
1465 " var x;\n" 1499 " var x;\n"
1466 " Foo(this.x);\n" 1500 " Foo(this.x);\n"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1503 } 1537 }
1504 ASSERT(i != table->NumCids()); 1538 ASSERT(i != table->NumCids());
1505 char buf[1024]; 1539 char buf[1024];
1506 OS::SNPrint(buf, sizeof(buf), 1540 OS::SNPrint(buf, sizeof(buf),
1507 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i); 1541 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i);
1508 1542
1509 Array& service_msg = Array::Handle(); 1543 Array& service_msg = Array::Handle();
1510 service_msg = Eval(h_lib, buf); 1544 service_msg = Eval(h_lib, buf);
1511 Service::HandleIsolateMessage(isolate, service_msg); 1545 Service::HandleIsolateMessage(isolate, service_msg);
1512 handler.HandleNextMessage(); 1546 handler.HandleNextMessage();
1513 EXPECT_STREQ( 1547 OS::SNPrint(buf, sizeof(buf),
1514 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1548 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1515 "{\"source\":\"test-lib\",\"script\":{" 1549 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1516 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1550 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1517 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1551 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1518 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", handler.msg()); 1552 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", lib.index());
1553 EXPECT_STREQ(buf, handler.msg());
1519 } 1554 }
1520 1555
1521 1556
1522 TEST_CASE(Service_ClassesFunctionsCoverage) { 1557 TEST_CASE(Service_ClassesFunctionsCoverage) {
1523 const char* kScript = 1558 const char* kScript =
1524 "var port;\n" // Set to our mock port by C++. 1559 "var port;\n" // Set to our mock port by C++.
1525 "\n" 1560 "\n"
1526 "class Foo {\n" 1561 "class Foo {\n"
1527 " var x;\n" 1562 " var x;\n"
1528 " Foo(this.x);\n" 1563 " Foo(this.x);\n"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1576 1611
1577 char buf[1024]; 1612 char buf[1024];
1578 OS::SNPrint(buf, sizeof(buf), 1613 OS::SNPrint(buf, sizeof(buf),
1579 "[0, port, ['classes', '%" Pd "', 'functions'," 1614 "[0, port, ['classes', '%" Pd "', 'functions',"
1580 "'% " Pd "', 'coverage'], [], []]", i, function_id); 1615 "'% " Pd "', 'coverage'], [], []]", i, function_id);
1581 1616
1582 Array& service_msg = Array::Handle(); 1617 Array& service_msg = Array::Handle();
1583 service_msg = Eval(h_lib, buf); 1618 service_msg = Eval(h_lib, buf);
1584 Service::HandleIsolateMessage(isolate, service_msg); 1619 Service::HandleIsolateMessage(isolate, service_msg);
1585 handler.HandleNextMessage(); 1620 handler.HandleNextMessage();
1586 EXPECT_STREQ( 1621 OS::SNPrint(buf, sizeof(buf),
1587 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1622 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1588 "{\"source\":\"test-lib\",\"script\":{" 1623 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
1589 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1624 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
1590 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1625 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1591 "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", handler.msg()); 1626 "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", lib.index());
1627 EXPECT_STREQ(buf, handler.msg());
1592 } 1628 }
1593 1629
1594 #endif 1630 #endif
1595 1631
1596 1632
1597 TEST_CASE(Service_AllocationProfile) { 1633 TEST_CASE(Service_AllocationProfile) {
1598 const char* kScript = 1634 const char* kScript =
1599 "var port;\n" // Set to our mock port by C++. 1635 "var port;\n" // Set to our mock port by C++.
1600 "\n" 1636 "\n"
1601 "var x = 7;\n" 1637 "var x = 7;\n"
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hidden']]"); 1922 service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hidden']]");
1887 Service::HandleIsolateMessage(isolate, service_msg); 1923 Service::HandleIsolateMessage(isolate, service_msg);
1888 handler.HandleNextMessage(); 1924 handler.HandleNextMessage();
1889 // Expect error. 1925 // Expect error.
1890 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); 1926 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
1891 } 1927 }
1892 1928
1893 #endif // !defined(TARGET_ARCH_ARM64) 1929 #endif // !defined(TARGET_ARCH_ARM64)
1894 1930
1895 } // namespace dart 1931 } // 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