Skip to content

Commit

Permalink
Revert "Add ipv6 and observatory port support to the attach command." (
Browse files Browse the repository at this point in the history
…#25288)

* Revert "e5195ee47 Remove unnecessary includes of Ganesh headers (flutter/engine#7189) (#25282)"

This reverts commit f198d66.

* Revert "Validate style in TextField (#24587)"

This reverts commit 9a8e2f0.

* Revert "Allow snippets tool to be run from arbitrary CWDs (#25243)"

This reverts commit 4a110b6.

* Revert "Make doctor output consistent between VS Code/IntelliJ/Android Studio when plugins are missing (#25269)"

This reverts commit e29b023.

* Revert "Add ipv6 and observatory port support to the attach command. (#24537)"

This reverts commit 9150b3f.
  • Loading branch information
DaveShuckerow committed Dec 12, 2018
1 parent f30029b commit e6292c8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 130 deletions.
37 changes: 2 additions & 35 deletions packages/flutter_tools/lib/src/commands/attach.dart
Expand Up @@ -53,9 +53,6 @@ class AttachCommand extends FlutterCommand {
argParser
..addOption(
'debug-port',
help: 'Device port where the observatory is listening.',
)..addOption(
'observatory-port',
help: 'Local port where the observatory is listening.',
)..addOption('pid-file',
help: 'Specify a file to write the process id to. '
Expand All @@ -70,12 +67,6 @@ class AttachCommand extends FlutterCommand {
negatable: false,
help: 'Handle machine structured JSON command input and provide output '
'and progress in machine friendly format.',
)..addFlag('ipv6',
hide: true,
negatable: false,
help: 'Binds to IPv6 localhost instead of IPv4 when the flutter tool '
'forwards the host port to a device port. Not used when the '
'--debug-port flag is not set.',
);
hotRunnerFactory ??= HotRunnerFactory();
}
Expand All @@ -88,14 +79,6 @@ class AttachCommand extends FlutterCommand {
@override
final String description = 'Attach to a running application.';

// TODO(djshuckerow): this is now a confusing name. An explanation:
// The --observatory-port flag passed to `flutter run` is used to
// set up the port on the development macine that the Dart observatory
// listens to. This flag serves the same purpose in this command.
//
// The --debug-port flag passed only to `flutter attach` is used to
// set up the port on the device running a Flutter app to connect back
// to the host development machine.
int get observatoryPort {
if (argResults['debug-port'] == null)
return null;
Expand All @@ -113,12 +96,6 @@ class AttachCommand extends FlutterCommand {
if (await findTargetDevice() == null)
throwToolExit(null);
observatoryPort;
if (observatoryPort == null && argResults.wasParsed('ipv6')) {
throwToolExit(
'When the --debug-port is unknown, this command determines '
'the value of --ipv6 on its own.',
);
}
}

@override
Expand Down Expand Up @@ -186,24 +163,14 @@ class AttachCommand extends FlutterCommand {
);
printStatus('Waiting for a connection from Flutter on ${device.name}...');
observatoryUri = await observatoryDiscovery.uri;
// Determine ipv6 status from the scanned logs.
ipv6 = observatoryDiscovery.ipv6;
printStatus('Done.');
} finally {
await observatoryDiscovery?.cancel();
}
}
} else {
ipv6 = argResults['ipv6'];
// int.tryParse will throw if it is passed null, so we need to do this.
final int argObservatoryPort = argResults['observatory-port'] == null
? null
: int.tryParse(argResults['observatory-port']);
final int localPort = argObservatoryPort
?? await device.portForwarder.forward(devicePort);
observatoryUri = ipv6
? Uri.parse('http://[$ipv6Loopback]:$localPort/')
: Uri.parse('http://$ipv4Loopback:$localPort/');
final int localPort = await device.portForwarder.forward(devicePort);
observatoryUri = Uri.parse('http://$ipv4Loopback:$localPort/');
}
try {
final FlutterDevice flutterDevice = FlutterDevice(
Expand Down
113 changes: 18 additions & 95 deletions packages/flutter_tools/test/commands/attach_test.dart
Expand Up @@ -104,7 +104,6 @@ void main() {
debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUI: anyNamed('usesTerminalUI'),
ipv6: false,
),
)..thenReturn(MockHotRunner());

Expand Down Expand Up @@ -135,7 +134,6 @@ void main() {
debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUI: anyNamed('usesTerminalUI'),
ipv6: false,
),
)..called(1);

Expand All @@ -152,21 +150,6 @@ void main() {
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
});

testUsingContext('exits when ipv6 is specified and debug-port is not', () async {
testDeviceManager.addDevice(device);

final AttachCommand command = AttachCommand();
await expectLater(
createTestCommandRunner(command).run(<String>['attach', '--ipv6']),
throwsToolExit(
message: 'When the --debug-port is unknown, this command determines '
'the value of --ipv6 on its own.',
),
);
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
},);
});


Expand All @@ -187,8 +170,7 @@ void main() {
target: anyNamed('target'),
debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUI: anyNamed('usesTerminalUI'),
ipv6: false)).thenReturn(
usesTerminalUI: anyNamed('usesTerminalUI'))).thenReturn(
MockHotRunner());

testDeviceManager.addDevice(device);
Expand Down Expand Up @@ -217,92 +199,33 @@ void main() {
target: foo.path,
debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUI: anyNamed('usesTerminalUI'),
ipv6: false)).called(1);
usesTerminalUI: anyNamed('usesTerminalUI'))).called(1);
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
},);

group('forwarding to given port', () {
testUsingContext('forwards to given port', () async {
const int devicePort = 499;
const int hostPort = 42;
MockPortForwarder portForwarder;
MockAndroidDevice device;

setUp(() {
portForwarder = MockPortForwarder();
device = MockAndroidDevice();

when(device.portForwarder).thenReturn(portForwarder);
when(portForwarder.forward(devicePort)).thenAnswer((_) async => hostPort);
when(portForwarder.forwardedPorts).thenReturn(
<ForwardedPort>[ForwardedPort(hostPort, devicePort)]);
when(portForwarder.unforward(any)).thenAnswer((_) async => null);
});

testUsingContext('succeeds in ipv4 mode', () async {
testDeviceManager.addDevice(device);
final AttachCommand command = AttachCommand();

await createTestCommandRunner(command).run(
<String>['attach', '--debug-port', '$devicePort']);

verify(portForwarder.forward(devicePort)).called(1);
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
});

testUsingContext('succeeds in ipv6 mode', () async {
testDeviceManager.addDevice(device);
final AttachCommand command = AttachCommand();

await createTestCommandRunner(command).run(
<String>['attach', '--debug-port', '$devicePort', '--ipv6']);

verify(portForwarder.forward(devicePort)).called(1);
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
});

testUsingContext('skips in ipv4 mode with a provided observatory port', () async {
testDeviceManager.addDevice(device);
final AttachCommand command = AttachCommand();

await createTestCommandRunner(command).run(
<String>[
'attach',
'--debug-port',
'$devicePort',
'--observatory-port',
'$hostPort',
],
);
final MockPortForwarder portForwarder = MockPortForwarder();
final MockAndroidDevice device = MockAndroidDevice();

verifyNever(portForwarder.forward(devicePort));
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
});
when(device.portForwarder).thenReturn(portForwarder);
when(portForwarder.forward(devicePort)).thenAnswer((_) async => hostPort);
when(portForwarder.forwardedPorts).thenReturn(
<ForwardedPort>[ForwardedPort(hostPort, devicePort)]);
when(portForwarder.unforward(any)).thenAnswer((_) async => null);
testDeviceManager.addDevice(device);

testUsingContext('skips in ipv6 mode with a provided observatory port', () async {
testDeviceManager.addDevice(device);
final AttachCommand command = AttachCommand();
final AttachCommand command = AttachCommand();

await createTestCommandRunner(command).run(
<String>[
'attach',
'--debug-port',
'$devicePort',
'--observatory-port',
'$hostPort',
'--ipv6',
],
);
await createTestCommandRunner(command).run(
<String>['attach', '--debug-port', '$devicePort']);

verifyNever(portForwarder.forward(devicePort));
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
});
});
verify(portForwarder.forward(devicePort)).called(1);
}, overrides: <Type, Generator>{
FileSystem: () => testFileSystem,
},);

testUsingContext('exits when no device connected', () async {
final AttachCommand command = AttachCommand();
Expand Down

0 comments on commit e6292c8

Please sign in to comment.