From 12bbaba9ae044d0ea77da4dd5e4db15eed403f09 Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Thu, 19 Apr 2018 23:36:15 -0700 Subject: [PATCH] Do exponential backoff for all exceptions in VMService::defaultOpenChannel. (#16785) We were trying to only catch WebSocketException, but in fact SocketException can be thrown as well. --- packages/flutter_tools/lib/src/vmservice.dart | 2 +- packages/flutter_tools/test/vmservice_test.dart | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 3948cc841f3..bd2399b58bf 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -53,7 +53,7 @@ Future> _defaultOpenChannel(Uri uri) async { attempts += 1; try { socket = await io.WebSocket.connect(uri.toString()); - } on io.WebSocketException catch(e) { + } catch (e) { printTrace('Exception attempting to connect to observatory: $e'); printTrace('This was attempt #$attempts. Will retry in $delay.'); await new Future.delayed(delay); diff --git a/packages/flutter_tools/test/vmservice_test.dart b/packages/flutter_tools/test/vmservice_test.dart index 9b882303ef6..cc76885feb7 100644 --- a/packages/flutter_tools/test/vmservice_test.dart +++ b/packages/flutter_tools/test/vmservice_test.dart @@ -4,17 +4,19 @@ import 'package:test/test.dart'; -import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/base/port_scanner.dart'; import 'package:flutter_tools/src/vmservice.dart'; +import 'src/common.dart'; +import 'src/context.dart'; + void main() { group('VMService', () { - test('fails connection eagerly in the connect() method', () async { + testUsingContext('fails connection eagerly in the connect() method', () async { final int port = await const HostPortScanner().findAvailablePort(); expect( VMService.connect(Uri.parse('http://localhost:$port')), - throwsA(const isInstanceOf()), + throwsToolExit(), ); }); });