// Copyright (c) 2013, 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.

// @dart = 2.9

// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups

// This test creates a lot of isolates.  This is meant to exhaust
// resources if the isolates aren't closed correctly (which happened
// in dart2js).

import 'dart:async';
import 'dart:isolate';

// TODO(12588): Remove this import when we have wrapper-less testing.
import 'dart:html';

worker(SendPort replyTo) {
  replyTo.send('Hello from Worker');
}

main() {
  try {
    // Create a Worker to confuse broken isolate implementation in dart2js.
    new Worker('data:application/javascript,').terminate();
  } catch (e) {
    // Ignored.
  }
  var doneClosure;
  int isolateCount = 0;
  spawnMany(reply) {
    if (reply != 'Hello from Worker') {
      throw new Exception('Unexpected reply from worker: $reply');
    }
    if (++isolateCount > 200) {
      window.postMessage('unittest-suite-success', '*');
      return;
    }
    ReceivePort response = new ReceivePort();
    var remote = Isolate.spawn(worker, response.sendPort);
    remote.then((_) => response.first).then(spawnMany);
    print('isolateCount = $isolateCount');
  }

  spawnMany('Hello from Worker');
  window.postMessage('unittest-suite-wait-for-done', '*');
}
