flutter/packages/flutter_tools/test/protocol_discovery_test.dart

55 lines
1.8 KiB
Dart
Raw Normal View History

2016-03-04 23:01:26 +00:00
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'package:flutter_tools/src/protocol_discovery.dart';
import 'package:test/test.dart';
2016-03-04 23:01:26 +00:00
import 'src/mocks.dart';
void main() {
2016-03-04 23:01:26 +00:00
group('service_protocol', () {
test('Discovery Heartbeat', () async {
MockDeviceLogReader logReader = new MockDeviceLogReader();
ProtocolDiscovery discoverer =
new ProtocolDiscovery(logReader, ProtocolDiscovery.kObservatoryService);
2016-03-04 23:01:26 +00:00
// Get next port future.
2016-03-12 08:32:34 +00:00
Future<int> nextPort = discoverer.nextPort();
2016-03-04 23:01:26 +00:00
expect(nextPort, isNotNull);
2016-03-04 23:01:26 +00:00
// Inject some lines.
logReader.addLine('HELLO WORLD');
logReader.addLine('Observatory listening on http://127.0.0.1:9999');
2016-03-04 23:01:26 +00:00
// Await the port.
expect(await nextPort, 9999);
2016-03-04 23:01:26 +00:00
// Get next port future.
nextPort = discoverer.nextPort();
logReader.addLine('Observatory listening on http://127.0.0.1:3333');
2016-03-04 23:01:26 +00:00
expect(await nextPort, 3333);
2016-03-04 23:01:26 +00:00
// Get next port future.
nextPort = discoverer.nextPort();
// Inject some bad lines.
logReader.addLine('Observatory listening on http://127.0.0.1');
logReader.addLine('Observatory listening on http://127.0.0.1:');
logReader.addLine('Observatory listening on http://127.0.0.1:apple');
2016-03-04 23:01:26 +00:00
int port = await nextPort.timeout(
const Duration(milliseconds: 100), onTimeout: () => 77);
// Expect the timeout port.
expect(port, 77);
// Get next port future.
nextPort = discoverer.nextPort();
logReader.addLine('I/flutter : Observatory listening on http://127.0.0.1:52584');
expect(await nextPort, 52584);
discoverer.cancel();
logReader.dispose();
2016-03-04 23:01:26 +00:00
});
});
}