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

Side by Side Diff: tests/standalone/debugger/debug_lib.dart

Issue 14773038: Fixed debugger_test to wait until target process is dead (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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
« no previous file with comments | « no previous file | 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 // Library used by debugger wire protocol tests (standalone VM debugging). 5 // Library used by debugger wire protocol tests (standalone VM debugging).
6 6
7 library DartDebugger; 7 library DartDebugger;
8 8
9 import "dart:async"; 9 import "dart:async";
10 import "dart:io"; 10 import "dart:io";
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 onError: (e) { 481 onError: (e) {
482 String msg = "Error while connecting to debugee: $e"; 482 String msg = "Error while connecting to debugee: $e";
483 var trace = getAttachedStackTrace(e); 483 var trace = getAttachedStackTrace(e);
484 if (trace != null) msg += "\nStackTrace: $trace"; 484 if (trace != null) msg += "\nStackTrace: $trace";
485 error(msg); 485 error(msg);
486 close(killDebugee: true); 486 close(killDebugee: true);
487 }); 487 });
488 } 488 }
489 489
490 void close({killDebugee: false}) { 490 void close({killDebugee: false}) {
491 void exit() {
492 if (errorsDetected) throw "Errors detected";
493 exit(errors.length);
494 }
491 if (errorsDetected) { 495 if (errorsDetected) {
492 for (int i = 0; i < errors.length; i++) print(errors[i]); 496 for (int i = 0; i < errors.length; i++) print(errors[i]);
493 } 497 }
494 if (socket != null) socket.close(); 498 if (socket != null) {
499 socket.close().catchError((error) {
500 print("Error occured while closing socket: $error");
501 };
502 }
495 if (killDebugee) { 503 if (killDebugee) {
496 targetProcess.kill(); 504 if (!targetProcess.kill()) {
497 print("Target process killed"); 505 print("Could not send kill signal to target process.");
hausner 2013/05/15 15:43:36 After printing this, you still wait for the target
ricow1 2013/05/16 07:19:55 From the api docs: Returns true if the process is
kustermann 2013/05/16 08:06:08 We wait for the exitCode and if the target process
hausner 2013/05/16 15:38:32 Thanks for the explanation Rico and Martin. Thinki
506 } else {
507 print("Successfully sent kill signal to target process.");
508 }
509 targetProcess.exitCode.then((exitCode) {
510 exit();
511 });
512 } else {
513 exit();
498 } 514 }
499 if (errorsDetected) throw "Errors detected";
500 exit(errors.length);
501 } 515 }
502 } 516 }
503 517
504 518
505 bool RunScript(List script) { 519 bool RunScript(List script) {
506 var options = new Options(); 520 var options = new Options();
507 if (options.arguments.contains("--debuggee")) { 521 if (options.arguments.contains("--debuggee")) {
508 return false; 522 return false;
509 } 523 }
510 verboseWire = options.arguments.contains("--wire"); 524 verboseWire = options.arguments.contains("--wire");
511 525
512 // Pick a port in the upper half of the port number range. 526 // Pick a port in the upper half of the port number range.
513 var seed = new DateTime.now().millisecondsSinceEpoch; 527 var seed = new DateTime.now().millisecondsSinceEpoch;
514 Random random = new Random(seed); 528 Random random = new Random(seed);
515 var debugPort = random.nextInt(32000) + 32000; 529 var debugPort = random.nextInt(32000) + 32000;
516 print('using debug port $debugPort ...'); 530 print('using debug port $debugPort ...');
517 ServerSocket.bind('127.0.0.1', debugPort).then((ServerSocket s) { 531 ServerSocket.bind('127.0.0.1', debugPort).then((ServerSocket s) {
518 s.close(); 532 s.close();
519 var targetOpts = [ "--debug:$debugPort" ]; 533 var targetOpts = [ "--debug:$debugPort" ];
520 // --verbose_debug is necessary so the test knows when the debuggee 534 // --verbose_debug is necessary so the test knows when the debuggee
521 // is initialized. 535 // is initialized.
522 targetOpts.add("--verbose_debug"); 536 targetOpts.add("--verbose_debug");
523 targetOpts.add(options.script); 537 targetOpts.add(options.script);
524 targetOpts.add("--debuggee"); 538 targetOpts.add("--debuggee");
525 print('args: ${targetOpts.join(" ")}'); 539 print('args: ${targetOpts.join(" ")}');
526 540
527 Process.start(options.executable, targetOpts).then((Process process) { 541 Process.start(options.executable, targetOpts).then((Process process) {
528 print("Debug target process started"); 542 print("Debug target process started");
529 process.stdin.close(); 543 process.stdin.close();
530 process.exitCode.then((int exitCode) { 544 process.exitCode.then((int exitCode) {
531 if (exitCode != 0) throw "bad exit code: $exitCode"; 545 if (exitCode != 0) throw "bad exit code: $exitCode";
532 print("Debug target process exited with exit code $exitCode"); 546 print("Debug target process exited with exit code $exitCode");
533 }); 547 });
534 var debugger = 548 var debugger =
535 new Debugger(process, debugPort, new DebugScript(script)); 549 new Debugger(process, debugPort, new DebugScript(script));
536 }); 550 });
537 }, 551 },
538 onError: (e) { 552 onError: (e) {
539 if (++retries >= 3) { 553 if (++retries >= 3) {
540 print('unable to find unused port: $e'); 554 print('unable to find unused port: $e');
541 var trace = getAttachedStackTrace(e); 555 var trace = getAttachedStackTrace(e);
542 if (trace != null) print("StackTrace: $trace"); 556 if (trace != null) print("StackTrace: $trace");
543 return -1; 557 return -1;
544 } else { 558 } else {
545 // Retry with another random port. 559 // Retry with another random port.
546 RunScript(script); 560 RunScript(script);
547 } 561 }
548 }); 562 });
549 return true; 563 return true;
550 } 564 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698