log incoming vm service messages in FlutterVMService::runInView (#148596)

In service of https://github.com/flutter/flutter/issues/146879. Please see https://github.com/flutter/flutter/issues/146879#issuecomment-2118629953.

In summary, when the test flakes, `onRunnable` is not completing despite the VmService object receiving an `IsolateRunnable` event. 

This PR adds some logging code to print all events received inside of `FlutterVmService::runInView`.
This commit is contained in:
Andrew Kolos 2024-05-20 11:55:24 -07:00 committed by GitHub
parent d9cf066191
commit 04cd1619a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -581,7 +581,23 @@ class FlutterVmService {
); );
// Do nothing, since the tool is already subscribed. // Do nothing, since the tool is already subscribed.
} }
// TODO(andrewkolos): this is to assist in troubleshooting https://github.com/flutter/flutter/issues/146879
// and should be reverted once this issue is resolved.
unawaited(service.onReceive.firstWhere((String message) {
_logger.printTrace('runInView VM service onReceive listener received "$message"');
final dynamic messageAsJson = jsonDecode(message);
// ignore: avoid_dynamic_calls -- Temporary code.
final dynamic messageKind = messageAsJson['params']?['event']?['kind'];
if (messageKind == 'IsolateRunnable') {
_logger.printTrace('Received IsolateRunnable event from onReceive.');
return true;
}
return false;
}));
final Future<void> onRunnable = service.onIsolateEvent.firstWhere((vm_service.Event event) { final Future<void> onRunnable = service.onIsolateEvent.firstWhere((vm_service.Event event) {
_logger.printTrace('runInView VM service onIsolateEvent listener received $event');
return event.kind == vm_service.EventKind.kIsolateRunnable; return event.kind == vm_service.EventKind.kIsolateRunnable;
}); });
_logger.printTrace('Calling $kRunInViewMethod...'); _logger.printTrace('Calling $kRunInViewMethod...');