Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 // VMOptions=--error_on_bad_type --error_on_bad_override | 4 // VMOptions=--error_on_bad_type --error_on_bad_override |
| 5 | 5 |
| 6 import 'dart:async'; | 6 import 'dart:async'; |
| 7 import 'dart:convert'; | 7 import 'dart:convert'; |
| 8 import 'package:observatory/models.dart' as M; | 8 import 'package:observatory/models.dart' as M; |
| 9 import 'package:observatory/service_io.dart'; | 9 import 'package:observatory/service_io.dart'; |
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 112 } | 112 } |
| 113 | 113 |
| 114 // Spawn the script with no arguments or message and make sure | 114 // Spawn the script with no arguments or message and make sure |
| 115 // that we are notified. | 115 // that we are notified. |
| 116 Completer completer = new Completer(); | 116 Completer completer = new Completer(); |
| 117 var sub; | 117 var sub; |
| 118 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { | 118 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { |
| 119 if (event.kind == ServiceEvent.kIsolateSpawn) { | 119 if (event.kind == ServiceEvent.kIsolateSpawn) { |
| 120 expect(event.spawnToken, equals('mySpawnToken0')); | 120 expect(event.spawnToken, equals('mySpawnToken0')); |
| 121 expect(event.isolate, isNotNull); | 121 expect(event.isolate, isNotNull); |
| 122 expect(event.isolate.name, equals('devfs_file0.dart\$main')); | 122 expect(event.isolate.name, equals('devfs_file0.dart:main()')); |
| 123 completer.complete(event.isolate); | 123 completer.complete(event.isolate); |
| 124 sub.cancel(); | 124 sub.cancel(); |
| 125 } | 125 } |
| 126 }); | 126 }); |
| 127 result = await vm.invokeRpcNoUpgrade('_spawnUri', { | 127 result = await vm.invokeRpcNoUpgrade('_spawnUri', { |
| 128 'token': 'mySpawnToken0', | 128 'token': 'mySpawnToken0', |
| 129 'uri': '${fsUri}${filePaths[0]}', | 129 'uri': '${fsUri}${filePaths[0]}', |
| 130 }); | 130 }); |
| 131 expect(result['type'], equals('Success')); | 131 expect(result['type'], equals('Success')); |
| 132 var spawnedIsolate = await completer.future; | 132 var spawnedIsolate = await completer.future; |
| 133 | 133 |
| 134 // Wait for the spawned isolate to hit a breakpoint. | 134 // Wait for the spawned isolate to hit a breakpoint. |
| 135 await spawnedIsolate.load(); | 135 await spawnedIsolate.load(); |
| 136 await hasStoppedAtBreakpoint(spawnedIsolate); | 136 await hasStoppedAtBreakpoint(spawnedIsolate); |
| 137 | 137 |
| 138 // Make sure that we are running code from the spawned isolate. | 138 // Make sure that we are running code from the spawned isolate. |
| 139 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); | 139 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); |
| 140 expect(result.type, equals('Instance')); | 140 expect(result.type, equals('Instance')); |
| 141 expect(result.kind, equals(M.InstanceKind.string)); | 141 expect(result.kind, equals(M.InstanceKind.string)); |
| 142 expect(result.valueAsString, equals('I live!')); | 142 expect(result.valueAsString, equals('I live!')); |
| 143 | 143 |
| 144 // Spawn the script with arguments. | 144 // Spawn the script with arguments. |
| 145 completer = new Completer(); | 145 completer = new Completer(); |
| 146 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { | 146 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { |
| 147 if (event.kind == ServiceEvent.kIsolateSpawn) { | 147 if (event.kind == ServiceEvent.kIsolateSpawn) { |
| 148 expect(event.spawnToken, equals('mySpawnToken1')); | 148 expect(event.spawnToken, equals('mySpawnToken1')); |
| 149 expect(event.isolate, isNotNull); | 149 expect(event.isolate, isNotNull); |
| 150 expect(event.isolate.name, equals('devfs_file1.dart\$main')); | 150 expect(event.isolate.name, equals('devfs_file1.dart:main()')); |
| 151 completer.complete(event.isolate); | 151 completer.complete(event.isolate); |
| 152 sub.cancel(); | 152 sub.cancel(); |
| 153 } | 153 } |
| 154 }); | 154 }); |
| 155 result = await vm.invokeRpcNoUpgrade('_spawnUri', { | 155 result = await vm.invokeRpcNoUpgrade('_spawnUri', { |
| 156 'token': 'mySpawnToken1', | 156 'token': 'mySpawnToken1', |
| 157 'uri': '${fsUri}${filePaths[1]}', | 157 'uri': '${fsUri}${filePaths[1]}', |
| 158 'args': ['one', 'two', 'three'] | 158 'args': ['one', 'two', 'three'] |
| 159 }); | 159 }); |
| 160 expect(result['type'], equals('Success')); | 160 expect(result['type'], equals('Success')); |
| 161 spawnedIsolate = await completer.future; | 161 spawnedIsolate = await completer.future; |
| 162 | 162 |
| 163 // Wait for the spawned isolate to hit a breakpoint. | 163 // Wait for the spawned isolate to hit a breakpoint. |
| 164 await spawnedIsolate.load(); | 164 await spawnedIsolate.load(); |
| 165 await hasStoppedAtBreakpoint(spawnedIsolate); | 165 await hasStoppedAtBreakpoint(spawnedIsolate); |
| 166 | 166 |
| 167 // Make sure that we are running code from the spawned isolate. | 167 // Make sure that we are running code from the spawned isolate. |
| 168 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); | 168 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); |
| 169 expect(result.type, equals('Instance')); | 169 expect(result.type, equals('Instance')); |
| 170 expect(result.kind, equals(M.InstanceKind.string)); | 170 expect(result.kind, equals(M.InstanceKind.string)); |
| 171 expect(result.valueAsString, equals('I live, [one, two, three]!')); | 171 expect(result.valueAsString, equals('I live, [one, two, three]!')); |
| 172 | 172 |
| 173 // Spawn the script with arguments and message | 173 // Spawn the script with arguments and message |
| 174 completer = new Completer(); | 174 completer = new Completer(); |
| 175 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { | 175 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { |
| 176 if (event.kind == ServiceEvent.kIsolateSpawn) { | 176 if (event.kind == ServiceEvent.kIsolateSpawn) { |
| 177 expect(event.spawnToken, equals('mySpawnToken2')); | 177 expect(event.spawnToken, equals('mySpawnToken2')); |
| 178 expect(event.isolate, isNotNull); | 178 expect(event.isolate, isNotNull); |
| 179 expect(event.isolate.name, equals('devfs_file2.dart\$main')); | 179 expect(event.isolate.name, equals('devfs_file2.dart\:main()')); |
|
rmacnak
2017/08/24 19:00:19
The colon doesn't need to be escaped.
cbernaschina
2017/08/24 20:19:33
Done.
| |
| 180 completer.complete(event.isolate); | 180 completer.complete(event.isolate); |
| 181 sub.cancel(); | 181 sub.cancel(); |
| 182 } | 182 } |
| 183 }); | 183 }); |
| 184 result = await vm.invokeRpcNoUpgrade('_spawnUri', { | 184 result = await vm.invokeRpcNoUpgrade('_spawnUri', { |
| 185 'token': 'mySpawnToken2', | 185 'token': 'mySpawnToken2', |
| 186 'uri': '${fsUri}${filePaths[2]}', | 186 'uri': '${fsUri}${filePaths[2]}', |
| 187 'args': ['A', 'B', 'C'], | 187 'args': ['A', 'B', 'C'], |
| 188 'message': 'test' | 188 'message': 'test' |
| 189 }); | 189 }); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 202 | 202 |
| 203 // Delete the fs. | 203 // Delete the fs. |
| 204 result = await vm.invokeRpcNoUpgrade('_deleteDevFS', { | 204 result = await vm.invokeRpcNoUpgrade('_deleteDevFS', { |
| 205 'fsName': fsName, | 205 'fsName': fsName, |
| 206 }); | 206 }); |
| 207 expect(result['type'], equals('Success')); | 207 expect(result['type'], equals('Success')); |
| 208 }, | 208 }, |
| 209 ]; | 209 ]; |
| 210 | 210 |
| 211 main(args) async => runVMTests(args, tests); | 211 main(args) async => runVMTests(args, tests); |
| OLD | NEW |