Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
e3cb2c3f
Unverified
Commit
e3cb2c3f
authored
Nov 14, 2019
by
Jonah Williams
Committed by
GitHub
Nov 14, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reland: Allow specifying device-vmservice-port and host-vmservice-port (#44853)
parent
6d45f220
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
160 additions
and
45 deletions
+160
-45
android_device.dart
packages/flutter_tools/lib/src/android/android_device.dart
+2
-1
attach.dart
packages/flutter_tools/lib/src/commands/attach.dart
+6
-2
drive.dart
packages/flutter_tools/lib/src/commands/drive.dart
+1
-1
run.dart
packages/flutter_tools/lib/src/commands/run.dart
+2
-1
desktop_device.dart
packages/flutter_tools/lib/src/desktop_device.dart
+5
-1
device.dart
packages/flutter_tools/lib/src/device.dart
+7
-4
devices.dart
packages/flutter_tools/lib/src/ios/devices.dart
+4
-3
simulators.dart
packages/flutter_tools/lib/src/ios/simulators.dart
+6
-2
mdns_discovery.dart
packages/flutter_tools/lib/src/mdns_discovery.dart
+22
-8
protocol_discovery.dart
packages/flutter_tools/lib/src/protocol_discovery.dart
+19
-8
flutter_command.dart
packages/flutter_tools/lib/src/runner/flutter_command.dart
+44
-7
flutter_tester.dart
packages/flutter_tools/lib/src/tester/flutter_tester.dart
+4
-2
devices_test.dart
...es/flutter_tools/test/general.shard/ios/devices_test.dart
+4
-4
protocol_discovery_test.dart
...ter_tools/test/general.shard/protocol_discovery_test.dart
+34
-1
No files found.
packages/flutter_tools/lib/src/android/android_device.dart
View file @
e3cb2c3f
...
...
@@ -549,7 +549,8 @@ class AndroidDevice extends Device {
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
getLogReader
(),
portForwarder:
portForwarder
,
hostPort:
debuggingOptions
.
observatoryPort
,
hostPort:
debuggingOptions
.
hostVmServicePort
,
devicePort:
debuggingOptions
.
deviceVmServicePort
,
ipv6:
ipv6
,
);
}
...
...
packages/flutter_tools/lib/src/commands/attach.dart
View file @
e3cb2c3f
...
...
@@ -232,7 +232,8 @@ class AttachCommand extends FlutterCommand {
observatoryUri
=
await
MDnsObservatoryDiscovery
.
instance
.
getObservatoryUri
(
appId
,
device
,
usesIpv6
,
usesIpv6:
usesIpv6
,
deviceVmservicePort:
deviceVmservicePort
,
);
}
// If MDNS discovery fails or we're not on iOS, fallback to ProtocolDiscovery.
...
...
@@ -242,6 +243,9 @@ class AttachCommand extends FlutterCommand {
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
device
.
getLogReader
(),
portForwarder:
device
.
portForwarder
,
ipv6:
ipv6
,
devicePort:
deviceVmservicePort
,
hostPort:
hostVmservicePort
,
);
printStatus
(
'Waiting for a connection from Flutter on
${device.name}
...'
);
observatoryUri
=
await
observatoryDiscovery
.
uri
;
...
...
@@ -259,7 +263,7 @@ class AttachCommand extends FlutterCommand {
device
,
debugUri
?.
host
??
hostname
,
devicePort
??
debugUri
.
port
,
observatory
Port
,
hostVmservice
Port
,
debugUri
?.
path
,
);
}
...
...
packages/flutter_tools/lib/src/commands/drive.dart
View file @
e3cb2c3f
...
...
@@ -273,7 +273,7 @@ Future<LaunchResult> _startApp(DriveCommand command) async {
debuggingOptions:
DebuggingOptions
.
enabled
(
command
.
getBuildInfo
(),
startPaused:
true
,
observatoryPort:
command
.
observatory
Port
,
hostVmServicePort:
command
.
hostVmservice
Port
,
verboseSystemLogs:
command
.
verboseSystemLogs
,
cacheSkSL:
command
.
cacheSkSL
,
dumpSkpOnShaderCompilation:
command
.
dumpSkpOnShaderCompilation
,
...
...
packages/flutter_tools/lib/src/commands/run.dart
View file @
e3cb2c3f
...
...
@@ -315,7 +315,8 @@ class RunCommand extends RunCommandBase {
traceSystrace:
argResults
[
'trace-systrace'
],
dumpSkpOnShaderCompilation:
dumpSkpOnShaderCompilation
,
cacheSkSL:
cacheSkSL
,
observatoryPort:
observatoryPort
,
deviceVmServicePort:
deviceVmservicePort
,
hostVmServicePort:
hostVmservicePort
,
verboseSystemLogs:
argResults
[
'verbose-system-logs'
],
initializePlatform:
argResults
[
'web-initialize-platform'
],
hostname:
featureFlags
.
isWebEnabled
?
argResults
[
'web-hostname'
]
:
''
,
...
...
packages/flutter_tools/lib/src/desktop_device.dart
View file @
e3cb2c3f
...
...
@@ -109,7 +109,11 @@ abstract class DesktopDevice extends Device {
return
LaunchResult
.
succeeded
();
}
_deviceLogReader
.
initializeProcess
(
process
);
final
ProtocolDiscovery
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
_deviceLogReader
);
final
ProtocolDiscovery
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
_deviceLogReader
,
devicePort:
debuggingOptions
?.
deviceVmServicePort
,
hostPort:
debuggingOptions
?.
hostVmServicePort
,
ipv6:
ipv6
,
);
try
{
final
Uri
observatoryUri
=
await
observatoryDiscovery
.
uri
;
onAttached
(
package
,
buildMode
,
process
);
...
...
packages/flutter_tools/lib/src/device.dart
View file @
e3cb2c3f
...
...
@@ -502,7 +502,8 @@ class DebuggingOptions {
this
.
cacheSkSL
=
false
,
this
.
useTestFonts
=
false
,
this
.
verboseSystemLogs
=
false
,
this
.
observatoryPort
,
this
.
hostVmServicePort
,
this
.
deviceVmServicePort
,
this
.
initializePlatform
=
true
,
this
.
hostname
,
this
.
port
,
...
...
@@ -522,7 +523,8 @@ class DebuggingOptions {
traceSystrace
=
false
,
dumpSkpOnShaderCompilation
=
false
,
verboseSystemLogs
=
false
,
observatoryPort
=
null
,
hostVmServicePort
=
null
,
deviceVmServicePort
=
null
,
browserLaunch
=
true
,
vmserviceOutFile
=
null
;
...
...
@@ -542,14 +544,15 @@ class DebuggingOptions {
final
bool
verboseSystemLogs
;
/// Whether to invoke webOnlyInitializePlatform in Flutter for web.
final
bool
initializePlatform
;
final
int
observatoryPort
;
final
int
hostVmServicePort
;
final
int
deviceVmServicePort
;
final
String
port
;
final
String
hostname
;
final
bool
browserLaunch
;
/// A file where the vmservice uri should be written after the application is started.
final
String
vmserviceOutFile
;
bool
get
hasObservatoryPort
=>
observatory
Port
!=
null
;
bool
get
hasObservatoryPort
=>
hostVmService
Port
!=
null
;
}
class
LaunchResult
{
...
...
packages/flutter_tools/lib/src/ios/devices.dart
View file @
e3cb2c3f
...
...
@@ -356,7 +356,8 @@ class IOSDevice extends Device {
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
getLogReader
(
app:
package
),
portForwarder:
portForwarder
,
hostPort:
debuggingOptions
.
observatoryPort
,
hostPort:
debuggingOptions
.
hostVmServicePort
,
devicePort:
debuggingOptions
.
deviceVmServicePort
,
ipv6:
ipv6
,
);
}
...
...
@@ -383,8 +384,8 @@ class IOSDevice extends Device {
localUri
=
await
MDnsObservatoryDiscovery
.
instance
.
getObservatoryUri
(
packageId
,
this
,
ipv6
,
debuggingOptions
.
observatory
Port
,
usesIpv6:
ipv6
,
hostVmservicePort:
debuggingOptions
.
hostVmService
Port
,
);
if
(
localUri
!=
null
)
{
UsageEvent
(
'ios-mdns'
,
'success'
).
send
();
...
...
packages/flutter_tools/lib/src/ios/simulators.dart
View file @
e3cb2c3f
...
...
@@ -374,14 +374,18 @@ class IOSSimulator extends Device {
if
(
debuggingOptions
.
disableServiceAuthCodes
)
'--disable-service-auth-codes'
,
if
(
debuggingOptions
.
skiaDeterministicRendering
)
'--skia-deterministic-rendering'
,
if
(
debuggingOptions
.
useTestFonts
)
'--use-test-fonts'
,
'--observatory-port=
${debuggingOptions.
observatory
Port ?? 0}
'
,
'--observatory-port=
${debuggingOptions.
hostVmService
Port ?? 0}
'
,
],
];
ProtocolDiscovery
observatoryDiscovery
;
if
(
debuggingOptions
.
debuggingEnabled
)
{
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
getLogReader
(
app:
package
),
ipv6:
ipv6
);
getLogReader
(
app:
package
),
ipv6:
ipv6
,
hostPort:
debuggingOptions
.
hostVmServicePort
,
devicePort:
debuggingOptions
.
deviceVmServicePort
,
);
}
// Launch the updated application in the simulator.
...
...
packages/flutter_tools/lib/src/mdns_discovery.dart
View file @
e3cb2c3f
...
...
@@ -50,7 +50,8 @@ class MDnsObservatoryDiscovery {
/// If it is null and there is only one available instance of Observatory,
/// it will return that instance's information regardless of what application
/// the Observatory instance is for.
Future
<
MDnsObservatoryDiscoveryResult
>
query
({
String
applicationId
})
async
{
// TODO(jonahwilliams): use `deviceVmservicePort` to filter mdns results.
Future
<
MDnsObservatoryDiscoveryResult
>
query
({
String
applicationId
,
int
deviceVmservicePort
})
async
{
printTrace
(
'Checking for advertised Dart observatories...'
);
try
{
await
client
.
start
();
...
...
@@ -136,14 +137,27 @@ class MDnsObservatoryDiscovery {
}
}
Future
<
Uri
>
getObservatoryUri
(
String
applicationId
,
Device
device
,
[
bool
usesIpv6
=
false
,
int
observatoryPort
])
async
{
final
MDnsObservatoryDiscoveryResult
result
=
await
query
(
applicationId:
applicationId
);
Future
<
Uri
>
getObservatoryUri
(
String
applicationId
,
Device
device
,
{
bool
usesIpv6
=
false
,
int
hostVmservicePort
,
int
deviceVmservicePort
,
})
async
{
final
MDnsObservatoryDiscoveryResult
result
=
await
query
(
applicationId:
applicationId
,
deviceVmservicePort:
deviceVmservicePort
,
);
Uri
observatoryUri
;
if
(
result
!=
null
)
{
final
String
host
=
usesIpv6
?
InternetAddress
.
loopbackIPv6
.
address
:
InternetAddress
.
loopbackIPv4
.
address
;
observatoryUri
=
await
buildObservatoryUri
(
device
,
host
,
result
.
port
,
observatoryPort
,
result
.
authCode
);
observatoryUri
=
await
buildObservatoryUri
(
device
,
host
,
result
.
port
,
hostVmservicePort
,
result
.
authCode
,
);
}
return
observatoryUri
;
}
...
...
@@ -159,7 +173,7 @@ Future<Uri> buildObservatoryUri(
Device
device
,
String
host
,
int
devicePort
,
[
int
observatory
Port
,
int
hostVmservice
Port
,
String
authCode
,
])
async
{
String
path
=
'/'
;
...
...
@@ -171,7 +185,7 @@ Future<Uri> buildObservatoryUri(
if
(!
path
.
endsWith
(
'/'
))
{
path
+=
'/'
;
}
final
int
localPort
=
observatoryPort
??
await
device
.
portForwarder
.
forward
(
devicePort
);
return
Uri
(
scheme:
'http'
,
host:
host
,
port:
local
Port
,
path:
path
);
final
int
actualHostPort
=
hostVmservicePort
??
await
device
.
portForwarder
.
forward
(
devicePort
);
return
Uri
(
scheme:
'http'
,
host:
host
,
port:
actualHost
Port
,
path:
path
);
}
packages/flutter_tools/lib/src/protocol_discovery.dart
View file @
e3cb2c3f
...
...
@@ -4,6 +4,8 @@
import
'dart:async'
;
import
'package:meta/meta.dart'
;
import
'base/io.dart'
;
import
'device.dart'
;
import
'globals.dart'
;
...
...
@@ -16,6 +18,7 @@ class ProtocolDiscovery {
this
.
serviceName
,
{
this
.
portForwarder
,
this
.
hostPort
,
this
.
devicePort
,
this
.
ipv6
,
})
:
assert
(
logReader
!=
null
)
{
_deviceLogSubscription
=
logReader
.
logLines
.
listen
(
_handleLine
);
...
...
@@ -24,8 +27,9 @@ class ProtocolDiscovery {
factory
ProtocolDiscovery
.
observatory
(
DeviceLogReader
logReader
,
{
DevicePortForwarder
portForwarder
,
int
hostPort
,
bool
ipv6
=
false
,
@required
int
hostPort
,
@required
int
devicePort
,
@required
bool
ipv6
,
})
{
const
String
kObservatoryService
=
'Observatory'
;
return
ProtocolDiscovery
.
_
(
...
...
@@ -33,6 +37,7 @@ class ProtocolDiscovery {
kObservatoryService
,
portForwarder:
portForwarder
,
hostPort:
hostPort
,
devicePort:
devicePort
,
ipv6:
ipv6
,
);
}
...
...
@@ -41,6 +46,7 @@ class ProtocolDiscovery {
final
String
serviceName
;
final
DevicePortForwarder
portForwarder
;
final
int
hostPort
;
final
int
devicePort
;
final
bool
ipv6
;
final
Completer
<
Uri
>
_completer
=
Completer
<
Uri
>();
...
...
@@ -71,17 +77,22 @@ class ProtocolDiscovery {
if
(
match
!=
null
)
{
try
{
uri
=
Uri
.
parse
(
match
[
1
]);
}
catch
(
error
,
stackTrace
)
{
}
on
FormatException
catch
(
error
,
stackTrace
)
{
_stopScrapingLogs
();
_completer
.
completeError
(
error
,
stackTrace
);
}
}
if
(
uri
!=
null
)
{
assert
(!
_completer
.
isCompleted
);
_stopScrapingLogs
();
_completer
.
complete
(
uri
);
if
(
uri
==
null
)
{
return
;
}
if
(
devicePort
!=
null
&&
uri
.
port
!=
devicePort
)
{
printTrace
(
'skipping potential observatory
$uri
due to device port mismatch'
);
return
;
}
assert
(!
_completer
.
isCompleted
);
_stopScrapingLogs
();
_completer
.
complete
(
uri
);
}
Future
<
Uri
>
_forwardPort
(
Uri
deviceUri
)
async
{
...
...
packages/flutter_tools/lib/src/runner/flutter_command.dart
View file @
e3cb2c3f
...
...
@@ -216,23 +216,60 @@ abstract class FlutterCommand extends Command<void> {
/// Adds options for connecting to the Dart VM observatory port.
void
usesPortOptions
()
{
argParser
.
addOption
(
observatoryPortOption
,
help:
'Listen to the given port for an observatory debugger connection.
\n
'
help:
'(deprecated use host-vmservice-port instead)'
'Listen to the given port for an observatory debugger connection.
\n
'
'Specifying port 0 (the default) will find a random free port.'
,
);
argParser
.
addOption
(
'device-vmservice-port'
,
help:
'Look for vmservice connections only from the specified port.
\n
'
'Specifying port 0 (the default) will accept the first vmservice '
'discovered.'
,
);
argParser
.
addOption
(
'host-vmservice-port'
,
help:
'When a device-side vmservice port is forwarded to a host-side '
'port, use this value as the host port.
\n
Specifying port 0 '
'(the default) will find a random free host port.'
);
_usesPortOption
=
true
;
}
/// Gets the observatory port provided to in the 'observatory-port' option.
/// Gets the vmservice port provided to in the 'observatory-port' or
/// 'host-vmservice-port option.
///
/// Only one of "host-vmservice-port" and "observatory-port" may be
/// specified.
///
/// If no port is set, returns null.
int
get
hostVmservicePort
{
if
(!
_usesPortOption
||
(
argResults
[
'observatory-port'
]
==
null
&&
argResults
[
'host-vmservice-port'
]
==
null
))
{
return
null
;
}
if
(
argResults
.
wasParsed
(
'observatory-port'
)
&&
argResults
.
wasParsed
(
'host-vmservice-port'
))
{
throwToolExit
(
'Only one of "--observatory-port" and '
'"--host-vmservice-port" may be specified.'
);
}
try
{
return
int
.
parse
(
argResults
[
'observatory-port'
]
??
argResults
[
'host-vmservice-port'
]);
}
on
FormatException
catch
(
error
)
{
throwToolExit
(
'Invalid port for `--observatory-port/--host-vmservice-port`:
$error
'
);
}
return
null
;
}
/// Gets the vmservice port provided to in the 'device-vmservice-port' option.
///
/// If no port is set, returns null.
int
get
observatory
Port
{
if
(!
_usesPortOption
||
argResults
[
'
observatory
-port'
]
==
null
)
{
int
get
deviceVmservice
Port
{
if
(!
_usesPortOption
||
argResults
[
'
device-vmservice
-port'
]
==
null
)
{
return
null
;
}
try
{
return
int
.
parse
(
argResults
[
'
observatory
-port'
]);
}
catch
(
error
)
{
throwToolExit
(
'Invalid port for `--
observatory
-port`:
$error
'
);
return
int
.
parse
(
argResults
[
'
device-vmservice
-port'
]);
}
on
FormatException
catch
(
error
)
{
throwToolExit
(
'Invalid port for `--
device-vmservice
-port`:
$error
'
);
}
return
null
;
}
...
...
packages/flutter_tools/lib/src/tester/flutter_tester.dart
View file @
e3cb2c3f
...
...
@@ -134,7 +134,7 @@ class FlutterTesterDevice extends Device {
command
.
add
(
'--disable-service-auth-codes'
);
}
if
(
debuggingOptions
.
hasObservatoryPort
)
{
command
.
add
(
'--observatory-port=
${debuggingOptions.
observatory
Port}
'
);
command
.
add
(
'--observatory-port=
${debuggingOptions.
hostVmService
Port}
'
);
}
}
...
...
@@ -187,7 +187,9 @@ class FlutterTesterDevice extends Device {
final
ProtocolDiscovery
observatoryDiscovery
=
ProtocolDiscovery
.
observatory
(
getLogReader
(),
hostPort:
debuggingOptions
.
observatoryPort
,
hostPort:
debuggingOptions
.
hostVmServicePort
,
devicePort:
debuggingOptions
.
deviceVmServicePort
,
ipv6:
ipv6
,
);
final
Uri
observatoryUri
=
await
observatoryDiscovery
.
uri
;
...
...
packages/flutter_tools/test/general.shard/ios/devices_test.dart
View file @
e3cb2c3f
...
...
@@ -259,7 +259,7 @@ void main() {
port:
1234
,
path:
'observatory'
,
);
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
any
))
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
usesIpv6:
anyNamed
(
'usesIpv6'
)
))
.
thenAnswer
((
Invocation
invocation
)
=>
Future
<
Uri
>.
value
(
uri
));
final
LaunchResult
launchResult
=
await
device
.
startApp
(
mockApp
,
...
...
@@ -329,7 +329,7 @@ void main() {
mockLogReader
.
addLine
(
'Foo'
);
mockLogReader
.
addLine
(
'Observatory listening on http://127.0.0.1:
$devicePort
'
);
});
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
any
))
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
usesIpv6:
anyNamed
(
'usesIpv6'
)
))
.
thenAnswer
((
Invocation
invocation
)
=>
Future
<
Uri
>.
value
(
null
));
final
LaunchResult
launchResult
=
await
device
.
startApp
(
mockApp
,
...
...
@@ -362,7 +362,7 @@ void main() {
mockLogReader
.
addLine
(
'Foo'
);
mockLogReader
.
addLine
(
'Observatory listening on http:/:/127.0.0.1:
$devicePort
'
);
});
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
any
))
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
usesIpv6:
anyNamed
(
'usesIpv6'
)
))
.
thenAnswer
((
Invocation
invocation
)
=>
Future
<
Uri
>.
value
(
null
));
final
LaunchResult
launchResult
=
await
device
.
startApp
(
mockApp
,
...
...
@@ -411,7 +411,7 @@ void main() {
port:
1234
,
path:
'observatory'
,
);
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
any
))
when
(
mockMDnsObservatoryDiscovery
.
getObservatoryUri
(
any
,
any
,
usesIpv6:
anyNamed
(
'usesIpv6'
)
))
.
thenAnswer
((
Invocation
invocation
)
=>
Future
<
Uri
>.
value
(
uri
));
List
<
String
>
args
;
...
...
packages/flutter_tools/test/general.shard/protocol_discovery_test.dart
View file @
e3cb2c3f
...
...
@@ -17,6 +17,8 @@ void main() {
ProtocolDiscovery
discoverer
;
group
(
'no port forwarding'
,
()
{
int
devicePort
;
/// Performs test set-up functionality that must be performed as part of
/// the `test()` pass and not part of the `setUp()` pass.
///
...
...
@@ -35,7 +37,7 @@ void main() {
/// See also: [runZoned]
void
initialize
()
{
logReader
=
MockDeviceLogReader
();
discoverer
=
ProtocolDiscovery
.
observatory
(
logReader
);
discoverer
=
ProtocolDiscovery
.
observatory
(
logReader
,
ipv6:
false
,
hostPort:
null
,
devicePort:
devicePort
);
}
tearDown
(()
{
...
...
@@ -119,6 +121,28 @@ void main() {
expect
(
uri
.
port
,
54804
);
expect
(
'
$uri
'
,
'http://127.0.0.1:54804/PTwjm8Ii8qg=/'
);
});
testUsingContext
(
'skips uri if port does not match the requested vmservice - requested last'
,
()
async
{
devicePort
=
12346
;
initialize
();
final
Future
<
Uri
>
uriFuture
=
discoverer
.
uri
;
logReader
.
addLine
(
'I/flutter : Observatory listening on http://127.0.0.1:12345/PTwjm8Ii8qg=/'
);
logReader
.
addLine
(
'I/flutter : Observatory listening on http://127.0.0.1:12346/PTwjm8Ii8qg=/'
);
final
Uri
uri
=
await
uriFuture
;
expect
(
uri
.
port
,
12346
);
expect
(
'
$uri
'
,
'http://127.0.0.1:12346/PTwjm8Ii8qg=/'
);
});
testUsingContext
(
'skips uri if port does not match the requested vmservice - requested first'
,
()
async
{
devicePort
=
12346
;
initialize
();
final
Future
<
Uri
>
uriFuture
=
discoverer
.
uri
;
logReader
.
addLine
(
'I/flutter : Observatory listening on http://127.0.0.1:12346/PTwjm8Ii8qg=/'
);
logReader
.
addLine
(
'I/flutter : Observatory listening on http://127.0.0.1:12345/PTwjm8Ii8qg=/'
);
final
Uri
uri
=
await
uriFuture
;
expect
(
uri
.
port
,
12346
);
expect
(
'
$uri
'
,
'http://127.0.0.1:12346/PTwjm8Ii8qg=/'
);
});
});
group
(
'port forwarding'
,
()
{
...
...
@@ -127,6 +151,9 @@ void main() {
final
ProtocolDiscovery
discoverer
=
ProtocolDiscovery
.
observatory
(
logReader
,
portForwarder:
MockPortForwarder
(
99
),
hostPort:
null
,
devicePort:
null
,
ipv6:
false
,
);
// Get next port future.
...
...
@@ -146,6 +173,8 @@ void main() {
logReader
,
portForwarder:
MockPortForwarder
(
99
),
hostPort:
1243
,
devicePort:
null
,
ipv6:
false
,
);
// Get next port future.
...
...
@@ -165,6 +194,8 @@ void main() {
logReader
,
portForwarder:
MockPortForwarder
(
99
),
hostPort:
0
,
devicePort:
null
,
ipv6:
false
,
);
// Get next port future.
...
...
@@ -185,6 +216,7 @@ void main() {
portForwarder:
MockPortForwarder
(
99
),
hostPort:
54777
,
ipv6:
true
,
devicePort:
null
,
);
// Get next port future.
...
...
@@ -205,6 +237,7 @@ void main() {
portForwarder:
MockPortForwarder
(
99
),
hostPort:
54777
,
ipv6:
true
,
devicePort:
null
,
);
// Get next port future.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment