| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 import 'dart:convert'; | 6 import 'dart:convert'; |
| 7 import 'dart:io' as io; | 7 import 'dart:io' as io; |
| 8 import 'package:observatory/service_io.dart'; | 8 import 'package:observatory/service_io.dart'; |
| 9 import 'package:unittest/unittest.dart'; | 9 import 'package:unittest/unittest.dart'; |
| 10 import 'test_helper.dart'; | 10 import 'test_helper.dart'; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 var socket2 = await io.Socket.connect("127.0.0.1", serverSocket.port); | 25 var socket2 = await io.Socket.connect("127.0.0.1", serverSocket.port); |
| 26 socket2.write("foobarfoobar"); | 26 socket2.write("foobarfoobar"); |
| 27 await socket2.flush(); | 27 await socket2.flush(); |
| 28 } | 28 } |
| 29 | 29 |
| 30 var tcpTests = [ | 30 var tcpTests = [ |
| 31 // Initial. | 31 // Initial. |
| 32 (Isolate isolate) async { | 32 (Isolate isolate) async { |
| 33 var result = | 33 var result = |
| 34 await isolate.invokeRpcNoUpgrade('ext.dart.io.getOpenSockets', {}); | 34 await isolate.invokeRpcNoUpgrade('ext.dart.io.getOpenSockets', {}); |
| 35 expect(result['type'], equals('_opensockets')); | 35 expect(result['type'], equals('_opensockets')); |
| 36 // We expect 3 sockets to be open (in this order): | 36 // We expect 3 sockets to be open (in this order): |
| 37 // The server socket accepting connections, on port X | 37 // The server socket accepting connections, on port X |
| 38 // The accepted connection on the client, on port Y | 38 // The accepted connection on the client, on port Y |
| 39 // The client connection, on port X | 39 // The client connection, on port X |
| 40 if (result['data'].length != 5) { | 40 if (result['data'].length != 5) { |
| 41 print(result['data']); | 41 print(result['data']); |
| 42 } | 42 } |
| 43 expect(result['data'].length, equals(5)); | 43 expect(result['data'].length, equals(5)); |
| 44 // The first socket will have a name like listening:127.0.0.1:X | 44 // The first socket will have a name like listening:127.0.0.1:X |
| 45 // The second will have a name like 127.0.0.1:Y | 45 // The second will have a name like 127.0.0.1:Y |
| 46 // The third will have a name like 127.0.0.1:X | 46 // The third will have a name like 127.0.0.1:X |
| 47 expect(result['data'][0]['name'].startsWith('listening:127.0.0.1'), isTrue); | 47 expect(result['data'][0]['name'].startsWith('listening:127.0.0.1'), isTrue); |
| 48 expect(result['data'][1]['name'].startsWith('127.0.0.1:'), isTrue); | 48 expect(result['data'][1]['name'].startsWith('127.0.0.1:'), isTrue); |
| 49 expect(result['data'][2]['name'].startsWith('127.0.0.1:'), isTrue); | 49 expect(result['data'][2]['name'].startsWith('127.0.0.1:'), isTrue); |
| 50 | 50 |
| 51 var listening = await isolate.invokeRpcNoUpgrade( | 51 var listening = await isolate.invokeRpcNoUpgrade( |
| 52 'ext.dart.io.getSocketByID', {'id': result['data'][0]['id']}); | 52 'ext.dart.io.getSocketByID', { 'id' : result['data'][0]['id'] }); |
| 53 expect(listening['id'], equals(result['data'][0]['id'])); | 53 expect(listening['id'], equals(result['data'][0]['id'])); |
| 54 expect(listening['listening'], isTrue); | 54 expect(listening['listening'], isTrue); |
| 55 expect(listening['socketType'], equals('TCP')); | 55 expect(listening['socketType'], equals('TCP')); |
| 56 expect(listening['port'], greaterThanOrEqualTo(1024)); | 56 expect(listening['port'], greaterThanOrEqualTo(1024)); |
| 57 expect(listening['lastRead'], greaterThan(0)); | 57 expect(listening['lastRead'], greaterThan(0)); |
| 58 | 58 |
| 59 expect(listening['totalRead'], equals(2)); | 59 expect(listening['totalRead'], equals(2)); |
| 60 expect(listening['lastWrite'], equals(0)); | 60 expect(listening['lastWrite'], equals(0)); |
| 61 expect(listening['totalWritten'], equals(0)); | 61 expect(listening['totalWritten'], equals(0)); |
| 62 expect(listening['writeCount'], equals(0)); | 62 expect(listening['writeCount'], equals(0)); |
| 63 expect(listening['readCount'], equals(2)); | 63 expect(listening['readCount'], equals(2)); |
| 64 expect(listening['remoteHost'], equals('NA')); | 64 expect(listening['remoteHost'], equals('NA')); |
| 65 expect(listening['remotePort'], equals('NA')); | 65 expect(listening['remotePort'], equals('NA')); |
| 66 | 66 |
| 67 var client = await isolate.invokeRpcNoUpgrade( | 67 var client = await isolate.invokeRpcNoUpgrade( |
| 68 'ext.dart.io.getSocketByID', {'id': result['data'][1]['id']}); | 68 'ext.dart.io.getSocketByID', { 'id' : result['data'][1]['id'] }); |
| 69 expect(client['id'], equals(result['data'][1]['id'])); | 69 expect(client['id'], equals(result['data'][1]['id'])); |
| 70 | 70 |
| 71 var server = await isolate.invokeRpcNoUpgrade( | 71 var server = await isolate.invokeRpcNoUpgrade( |
| 72 'ext.dart.io.getSocketByID', {'id': result['data'][2]['id']}); | 72 'ext.dart.io.getSocketByID', { 'id' : result['data'][2]['id'] }); |
| 73 expect(server['id'], equals(result['data'][2]['id'])); | 73 expect(server['id'], equals(result['data'][2]['id'])); |
| 74 | 74 |
| 75 // We expect the client to be connected on the port and | 75 // We expect the client to be connected on the port and |
| 76 // host of the listening socket. | 76 // host of the listening socket. |
| 77 expect(client['remotePort'], equals(listening['port'])); | 77 expect(client['remotePort'], equals(listening['port'])); |
| 78 expect(client['remoteHost'], equals(listening['host'])); | 78 expect(client['remoteHost'], equals(listening['host'])); |
| 79 // We expect the third socket (accepted server) to be connected to the | 79 // We expect the third socket (accepted server) to be connected to the |
| 80 // same port and host as the listening socket (the listening one). | 80 // same port and host as the listening socket (the listening one). |
| 81 expect(server['port'], equals(listening['port'])); | 81 expect(server['port'], equals(listening['port'])); |
| 82 expect(server['host'], equals(listening['host'])); | 82 expect(server['host'], equals(listening['host'])); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 109 | 109 |
| 110 // Order | 110 // Order |
| 111 // Stopwatch resolution on windows can make us have the same timestamp. | 111 // Stopwatch resolution on windows can make us have the same timestamp. |
| 112 if (io.Platform.isWindows) { | 112 if (io.Platform.isWindows) { |
| 113 expect(server['lastRead'], greaterThanOrEqualTo(client['lastWrite'])); | 113 expect(server['lastRead'], greaterThanOrEqualTo(client['lastWrite'])); |
| 114 } else { | 114 } else { |
| 115 expect(server['lastRead'], greaterThan(client['lastWrite'])); | 115 expect(server['lastRead'], greaterThan(client['lastWrite'])); |
| 116 } | 116 } |
| 117 | 117 |
| 118 var secondClient = await isolate.invokeRpcNoUpgrade( | 118 var secondClient = await isolate.invokeRpcNoUpgrade( |
| 119 'ext.dart.io.getSocketByID', {'id': result['data'][3]['id']}); | 119 'ext.dart.io.getSocketByID', { 'id' : result['data'][3]['id'] }); |
| 120 expect(secondClient['id'], equals(result['data'][3]['id'])); | 120 expect(secondClient['id'], equals(result['data'][3]['id'])); |
| 121 var secondServer = await isolate.invokeRpcNoUpgrade( | 121 var secondServer = await isolate.invokeRpcNoUpgrade( |
| 122 'ext.dart.io.getSocketByID', {'id': result['data'][4]['id']}); | 122 'ext.dart.io.getSocketByID', { 'id' : result['data'][4]['id'] }); |
| 123 expect(secondServer['id'], equals(result['data'][4]['id'])); | 123 expect(secondServer['id'], equals(result['data'][4]['id'])); |
| 124 | 124 |
| 125 // We expect the client to be connected on the port and | 125 // We expect the client to be connected on the port and |
| 126 // host of the listening socket. | 126 // host of the listening socket. |
| 127 expect(secondClient['remotePort'], equals(listening['port'])); | 127 expect(secondClient['remotePort'], equals(listening['port'])); |
| 128 expect(secondClient['remoteHost'], equals(listening['host'])); | 128 expect(secondClient['remoteHost'], equals(listening['host'])); |
| 129 // We expect the third socket (accepted server) to be connected to the | 129 // We expect the third socket (accepted server) to be connected to the |
| 130 // same port and host as the listening socket (the listening one). | 130 // same port and host as the listening socket (the listening one). |
| 131 expect(secondServer['port'], equals(listening['port'])); | 131 expect(secondServer['port'], equals(listening['port'])); |
| 132 expect(secondServer['host'], equals(listening['host'])); | 132 expect(secondServer['host'], equals(listening['host'])); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 160 // Order | 160 // Order |
| 161 // Stopwatch resolution on windows make us sometimes report the same value. | 161 // Stopwatch resolution on windows make us sometimes report the same value. |
| 162 if (io.Platform.isWindows) { | 162 if (io.Platform.isWindows) { |
| 163 expect(server['lastRead'], greaterThanOrEqualTo(client['lastWrite'])); | 163 expect(server['lastRead'], greaterThanOrEqualTo(client['lastWrite'])); |
| 164 } else { | 164 } else { |
| 165 expect(server['lastRead'], greaterThan(client['lastWrite'])); | 165 expect(server['lastRead'], greaterThan(client['lastWrite'])); |
| 166 } | 166 } |
| 167 }, | 167 }, |
| 168 ]; | 168 ]; |
| 169 | 169 |
| 170 main(args) async => runIsolateTests(args, tcpTests, testeeBefore: setupTCP); | 170 main(args) async => runIsolateTests(args, tcpTests, testeeBefore:setupTCP); |
| OLD | NEW |