Files
sdk/tests/lib/developer/timeline_test.dart
T
John McCutchan 291befa1cd Redo TimelineTask API
A TimelineTask represents an asynchronous track of operations on the timeline.

The old API allowed multiple isolates to emit events simultaneously on the same task or to start / finish events in any order. This isn't supported by our UI and probably many other tools that consume trace-event.

With this change, operations within a TimelineTask must complete in the reverse order of their start calls (aka a stack). You can pass a TimelineTask from one isolate to another but you must first complete all open operations before passing it.

Example:

var task = new TimelineTask();

task.start('Some phase');
await someFuture;
task.finish();

Also: Add support for instant events.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1412183008 .
2015-11-11 10:59:38 -08:00

24 lines
567 B
Dart

// 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:developer';
import 'package:expect/expect.dart';
void testUnbalancedStartFinish() {
Timeline.startSync('A');
Timeline.finishSync();
bool exceptionCaught = false;
try {
Timeline.finishSync();
} catch (e) {
exceptionCaught = true;
}
Expect.isTrue(exceptionCaught);
}
void main() {
testUnbalancedStartFinish();
}