Chromium Code Reviews| Index: runtime/tests/vm/dart/spawn_shutdown_test.dart |
| diff --git a/runtime/tests/vm/dart/spawn_shutdown_test.dart b/runtime/tests/vm/dart/spawn_shutdown_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..965cf18e98615e4d02aed46063048503dccd15af |
| --- /dev/null |
| +++ b/runtime/tests/vm/dart/spawn_shutdown_test.dart |
| @@ -0,0 +1,32 @@ |
| +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| +// for details. 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 'dart:isolate'; |
| + |
| +// Spawn an isolate |foo| that will continue trying to spawn isolates even after |
| +// the timer in |main| completes. This test ensures that the VM can shutdown |
| +// correctly even while an isolate is attempting to spawn more isolates. |
| + |
| +isolate1(sendPort) { |
| + var receivePort = new ReceivePort(); |
| + sendPort.send(receivePort.sendPort); |
| + receivePort.listen((msg) {}); |
| +} |
| + |
| +void foo(int count) { |
| + for (int i = 0; i < count; i++) { |
|
Ivan Posva
2015/08/17 13:35:51
We should just continuously be spawning isolates a
zra
2015/08/18 06:23:14
Done.
|
| + var receivePort = new ReceivePort(); |
| + Isolate.spawn(isolate1, receivePort.sendPort); |
| + receivePort.listen((sendPort) { |
| + Isolate.spawn(isolate1,sendPort); |
| + receivePort.close(); |
| + }); |
| + } |
| +} |
| + |
| +void main() { |
| + Isolate.spawn(foo, 100); |
| + new Timer(const Duration(seconds: 10), () {}); |
| +} |