Automatically select main isolate instead of the test runner isolate when connecting to test runs
- Vorherrschende Sprache
- Dart
- Sterne
- 1.7k
- Forks
- 404
- Ø Merge
- 6 T. 17 Std.
- Gemergte PRs (30 T.)
- 18
Beschreibung
I don't know if this is a DevTools issue or something else, but I'm also not sure how to determine which.
When running tests, CPU profiling never seems to collect any data. For example given a sample project with a `bin/main.dart` that calls a function in `lib` that blocks for 5s, and a test that does the same:
## bin/main.dart
```dart
import 'package:cpu_profile/cpu_profile.dart' as cpu_profile;
void main(List arguments) {
print('starting'); // breakpoint
cpu_profile.calculate();
print('done!'); // breakpoint
}
```
## lib/cpu_profile.dart
```dart
int calculate() {
var start = DateTime.now();
while (start.difference(DateTime.now()).inSeconds.abs() < 5) {}
return 6 * 7;
}
```
## test/cpu_profile_test.dart
```dart
import 'package:cpu_profile/cpu_profile.dart' as cpu_profile;
import 'package:test/test.dart';
void main() {
test('calculate', () {
print('starting'); // breakpoint
cpu_profile.calculate();
print('done!'); // breakpoint
});
}
```
For `bin/main.dart`:
- Open `bin/main.dart`
- Add breakpoints on the marked lines
- Run in debug mode and hit the first breakpoint
- Open DevTools CPU profile, enable profiling, and start recording
- Resume execution and wait for it to hit the second breakpoint
- Stop CPU profiling and observe the results
Perform the same steps but using the test instead, and the profiler doesn't show any data:
Beitragsleitfaden
Rechercherichtung
Reproduce the issue with bin/main.dart and test/cpu_profile_test.dart, following the breakpoint and CPU profiling steps in the report. Start by tracing how DevTools connects to a test run and selects an isolate; done means profiling the test run captures the work in cpu_profile.calculate() and shows data like the standalone program.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- dart
- Bereich
- devtools, performance, testing
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100