mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 17:40:04 +00:00
[IO] - Use try/catch in lookupAddresses instead of Future error.
Applying patch from @aam for using try/catch in lookupAddresses instead of Future error. This will be cherry picked into the stable branch to ensure we address the expedient issue in https://github.com/dart-lang/sdk/issues/53334 TEST=new test added. Change-Id: Ia5375cbd118d8d6437cf6869383f173cab48aa3f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323684 Commit-Queue: Siva Annamalai <asiva@google.com> Reviewed-by: Alexander Aprelev <aam@google.com>
This commit is contained in:
parent
194951a41f
commit
f7ef52616a
68
pkg/vm_service/test/break_on_unhandled_exception_test.dart
Normal file
68
pkg/vm_service/test/break_on_unhandled_exception_test.dart
Normal file
|
@ -0,0 +1,68 @@
|
|||
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
// VMOptions=--verbose_debug
|
||||
|
||||
// Test checks to make sure we don't encounter any unhandled exceptions
|
||||
// in the URL lookup code.
|
||||
// (please see https://github.com/dart-lang/sdk/issues/53334 for more details).
|
||||
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:expect/expect.dart';
|
||||
|
||||
import 'common/service_test_common.dart';
|
||||
import 'common/test_helper.dart';
|
||||
|
||||
// AUTOGENERATED START
|
||||
//
|
||||
// Update these constants by running:
|
||||
//
|
||||
// dart runtime/observatory/tests/service/update_line_numbers.dart <test.dart>
|
||||
//
|
||||
const int LINE_0 = 46;
|
||||
// AUTOGENERATED END
|
||||
const String file = "break_on_unhandled_exception_test.dart";
|
||||
|
||||
Future<int> testFunction() async {
|
||||
try {
|
||||
var client = new HttpClient();
|
||||
final urlstr = 'https://www.bbc.co.uk/';
|
||||
final uri = Uri.parse(urlstr);
|
||||
var response = await client.getUrl(uri);
|
||||
Expect.equals(urlstr, response.uri.toString());
|
||||
return 0;
|
||||
} catch (e) {
|
||||
print(e.toString());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void testMain() async {
|
||||
debugger();
|
||||
final ret = await testFunction();
|
||||
Expect.equals(ret, 0);
|
||||
print("Done"); // LINE_0
|
||||
}
|
||||
|
||||
final tests = <IsolateTest>[
|
||||
hasStoppedAtBreakpoint,
|
||||
|
||||
// Add breakpoint
|
||||
setBreakpointAtUriAndLine(file, LINE_0),
|
||||
|
||||
resumeIsolate,
|
||||
|
||||
hasStoppedAtBreakpoint,
|
||||
stoppedAtLine(LINE_0),
|
||||
resumeIsolate,
|
||||
];
|
||||
|
||||
void main(args) => runIsolateTests(
|
||||
args,
|
||||
tests,
|
||||
'break_on_unhandled_exception_test.dart',
|
||||
pause_on_unhandled_exceptions: true,
|
||||
testeeConcurrent: testMain,
|
||||
);
|
|
@ -627,8 +627,10 @@ base class _NativeSocket extends _NativeSocketNativeWrapper
|
|||
// Only report an error if no address lookups were sucessful.
|
||||
var anySuccess = false;
|
||||
|
||||
void lookupAddresses(InternetAddressType type, Completer<void> done) {
|
||||
lookup(host, type: type).then((addresses) {
|
||||
void lookupAddresses(
|
||||
InternetAddressType type, Completer<void> done) async {
|
||||
try {
|
||||
final addresses = await lookup(host, type: type);
|
||||
anySuccess = true;
|
||||
if (done.isCompleted) {
|
||||
// By the time lookup is done, [connectNext] might have
|
||||
|
@ -637,14 +639,14 @@ base class _NativeSocket extends _NativeSocketNativeWrapper
|
|||
}
|
||||
controller.add(addresses);
|
||||
done.complete();
|
||||
}, onError: (e, st) {
|
||||
} catch (e, st) {
|
||||
if (done.isCompleted) {
|
||||
// By the time lookup is done, [connectNext] might have
|
||||
// been able to connect to one of the resolved addresses.
|
||||
return;
|
||||
}
|
||||
done.completeError(e, st);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const concurrentLookupDelay = Duration(milliseconds: 10);
|
||||
|
|
Loading…
Reference in a new issue