protocol_discovery_test.dart 1.8 KB
Newer Older
1 2 3 4 5 6
// 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';

7 8
import 'package:flutter_tools/src/protocol_discovery.dart';
import 'package:test/test.dart';
9 10 11

import 'src/mocks.dart';

12
void main() {
13 14 15
  group('service_protocol', () {
    test('Discovery Heartbeat', () async {
      MockDeviceLogReader logReader = new MockDeviceLogReader();
16 17
      ProtocolDiscovery discoverer =
          new ProtocolDiscovery(logReader, ProtocolDiscovery.kObservatoryService);
Devon Carew's avatar
Devon Carew committed
18

19
      // Get next port future.
Ian Hickson's avatar
Ian Hickson committed
20
      Future<int> nextPort = discoverer.nextPort();
21
      expect(nextPort, isNotNull);
Devon Carew's avatar
Devon Carew committed
22

23 24
      // Inject some lines.
      logReader.addLine('HELLO WORLD');
Devon Carew's avatar
Devon Carew committed
25
      logReader.addLine('Observatory listening on http://127.0.0.1:9999');
26 27
      // Await the port.
      expect(await nextPort, 9999);
Devon Carew's avatar
Devon Carew committed
28

29 30
      // Get next port future.
      nextPort = discoverer.nextPort();
Devon Carew's avatar
Devon Carew committed
31
      logReader.addLine('Observatory listening on http://127.0.0.1:3333');
32
      expect(await nextPort, 3333);
Devon Carew's avatar
Devon Carew committed
33

34 35 36 37 38
      // 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:');
Devon Carew's avatar
Devon Carew committed
39
      logReader.addLine('Observatory listening on http://127.0.0.1:apple');
40 41 42 43
      int port = await nextPort.timeout(
      const Duration(milliseconds: 100), onTimeout: () => 77);
      // Expect the timeout port.
      expect(port, 77);
Devon Carew's avatar
Devon Carew committed
44

45 46
      // Get next port future.
      nextPort = discoverer.nextPort();
Devon Carew's avatar
Devon Carew committed
47
      logReader.addLine('I/flutter : Observatory listening on http://127.0.0.1:52584');
48
      expect(await nextPort, 52584);
Devon Carew's avatar
Devon Carew committed
49 50

      discoverer.cancel();
51
      logReader.dispose();
52 53 54
    });
  });
}