dart-archive / vm_service_client

A Darty client for the VM service protocol
https://pub.dev/packages/vm_service_client
BSD 3-Clause "New" or "Revised" License
12 stars 19 forks source link

Seems broken with 1.16 #5

Closed kevmoo closed 7 years ago

kevmoo commented 8 years ago
00:01 +5 -2: test/error_test.dart: for an async error includes error metadata
  The null object does not have a getter 'kind'.

  NoSuchMethodError: method not found: 'kind'
  Receiver: null
  Arguments: []
  dart:core                   Object.noSuchMethod
  test/error_test.dart 30:20  main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  _Completer.completeError
  test/error_test.dart 35:6   main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  Future.Future.microtask
  test/error_test.dart        main.<fn>.<fn>

00:01 +5 -2: test/client_test.dart: returns the VM service version
  Expected: <0>
    Actual: <3>

  package:test                                            expect
  test/client_test.dart 23:5                              main.<fn>.<async>
  dart:async                                              _SyncCompleter.complete
  package:vm_service_client/vm_service_client.dart 215:7  VMServiceClient.getVersion.<async>
  dart:async                                              _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25               Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7                Client._handleResponse
  dart:async                                              _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36                 Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                              _Completer.completeError
  test/client_test.dart 24:4                              main.<fn>.<async>
  dart:async                                              _SyncCompleter.complete
  package:vm_service_client/vm_service_client.dart 215:7  VMServiceClient.getVersion.<async>
  dart:async                                              _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25               Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7                Client._handleResponse
  dart:async                                              _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36                 Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                              _asyncThenWrapperHelper
  test/client_test.dart                                   main.<fn>

00:01 +9 -3: test/error_test.dart: for an async error parses the stack trace
  The null object does not have a method 'getTrace'.

  NoSuchMethodError: method not found: 'getTrace'
  Receiver: null
  Arguments: []
  dart:core                   Object.noSuchMethod
  test/error_test.dart 38:31  main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  _Completer.completeError
  test/error_test.dart 40:6   main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  Future.Future.microtask
  test/error_test.dart        main.<fn>.<fn>

00:02 +11 -4: test/error_test.dart: for a sync error includes error metadata
  The null object does not have a getter 'kind'.

  NoSuchMethodError: method not found: 'kind'
  Receiver: null
  Arguments: []
  dart:core                   Object.noSuchMethod
  test/error_test.dart 56:20  main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  _Completer.completeError
  test/error_test.dart 62:6   main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  Future.Future.microtask
  test/error_test.dart        main.<fn>.<fn>

00:02 +15 -5: test/error_test.dart: for a sync error parses the stack trace
  The null object does not have a method 'getTrace'.

  NoSuchMethodError: method not found: 'getTrace'
  Receiver: null
  Arguments: []
  dart:core                   Object.noSuchMethod
  test/error_test.dart 65:31  main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  _Completer.completeError
  test/error_test.dart 67:6   main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  Future.Future.microtask
  test/error_test.dart        main.<fn>.<fn>

00:02 +16 -6: test/client_test.dart: onIsolateStart emits an event when an isolate starts
  Expected: not null
    Actual: <null>

  package:test                                      expect
  test/client_test.dart 62:5                        main.<fn>.<async>
  dart:async                                        _SyncCompleter.complete
  package:vm_service_client/src/isolate.dart 233:7  VMIsolateRef.load.<async>
  dart:async                                        _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 51:5     Scope.sendRequest.<async>
  dart:async                                        _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25         Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7          Client._handleResponse
  dart:async                                        _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36           Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                        _Completer.completeError
  test/client_test.dart 64:4                        main.<fn>.<async>
  dart:async                                        _SyncCompleter.complete
  package:vm_service_client/src/isolate.dart 233:7  VMIsolateRef.load.<async>
  dart:async                                        _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 51:5     Scope.sendRequest.<async>
  dart:async                                        _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25         Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7          Client._handleResponse
  dart:async                                        _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36           Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                        _asyncThenWrapperHelper
  test/client_test.dart                             main.<fn>

00:05 +54 -7: test/isolate_test.dart: events: onServiceExtensionAdded fires when an extension is added
  Class 'VMRunnableIsolate' has no instance getter 'onServiceExtensionAdded'.

  NoSuchMethodError: method not found: 'onServiceExtensionAdded'
  Receiver: Instance of 'VMRunnableIsolate'
  Arguments: []
  dart:core                                      Object.noSuchMethod
  test/isolate_test.dart 179:28                  main.<fn>.<fn>.<async>
  dart:async                                     _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 51:5  Scope.sendRequest.<async>
  dart:async                                     _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25      Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7       Client._handleResponse
  dart:async                                     _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36        Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                     _Completer.completeError
  test/isolate_test.dart 180:6                   main.<fn>.<fn>.<async>
  dart:async                                     _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 51:5  Scope.sendRequest.<async>
  dart:async                                     _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25      Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7       Client._handleResponse
  dart:async                                     _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36        Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                     _asyncThenWrapperHelper
  test/isolate_test.dart                         main.<fn>.<fn>

00:06 +69 -8: test/instance_test.dart: for a client with no code: a type
  Expected: '_GrowableList<int>'
    Actual: 'List<int>'
     Which: is different.
  Expected: _GrowableL ...
    Actual: List<int>
            ^
   Differ at offset 0

  package:test                                    expect
  test/instance_test.dart 333:7                   main.<fn>.<fn>.<async>
  dart:async                                      _SyncCompleter.complete
  test/instance_test.dart 350:3                   _evaluate.<async>
  dart:async                                      _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 67:25  Scope.evaluate.<async>
  dart:async                                      _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 51:5   Scope.sendRequest.<async>
  dart:async                                      _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25       Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7        Client._handleResponse
  dart:async                                      _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36         Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                      _Completer.completeError
  test/instance_test.dart 344:6                   main.<fn>.<fn>.<async>
  dart:async                                      _SyncCompleter.complete
  test/instance_test.dart 350:3                   _evaluate.<async>
  dart:async                                      _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 67:25  Scope.evaluate.<async>
  dart:async                                      _SyncCompleter.complete
  package:vm_service_client/src/scope.dart 51:5   Scope.sendRequest.<async>
  dart:async                                      _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25       Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7        Client._handleResponse
  dart:async                                      _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36         Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                      _asyncThenWrapperHelper
  test/instance_test.dart                         main.<fn>.<fn>

00:09 +85 -8: Some tests failed.
~/source/github/vm_service_client/ (master)> dart --version
Dart VM version: 1.16.0-edge.c86ad33bca96d06906571966cbd7040e2ad4d1d4 (Thu Mar 31 13:53:38 2016) on "macos_x64"
nex3 commented 8 years ago

cc @johnmccutchan @turnidge

I'm going to look into this further, but at first glance it seems like a regression in the VM service protocol—it shouldn't have any backwards-incompatible changes without bumping the major version, and I don't think the client relies on any behavior that's described as subject to change.

nex3 commented 8 years ago

The error_test issues seem to be caused by the getIsolate RPC returning an isolate without an error set when the isolate was started with "pause on exit" set and it closed because of an error. Here's an inspector view of the isolate JSON; note that the pauseEvent is PauseExit, but there's no error field.

nex3 commented 8 years ago

The client_test failure seems to be caused by an isolate being started in an unpaused state despite --pause-isolates-on-start being passed. See the Isolate JSON in which the pause event is "None".

The isolate_test failure is a bug in 71ca7155e237166c99b1540de98c866a0af37b54, and the instance_test failure is caused by a change in the core libraries rather than the protocol. Neither of those are VM service client issues, and they can all be fixed locally.

nex3 commented 8 years ago

I've filed dart-lang/sdk#26203 and dart-lang/sdk#26204 to track the VM service issues; I'm going to use this issue to track the issues in this package.

kevmoo commented 8 years ago

Still seeing three failures w/ bleeding edge SDK at https://github.com/dart-lang/sdk/commit/4ab1219bf93a33a2a3d4803e053ccd70ce190371

00:01 +3 -1: test/client_test.dart: returns the VM service version
  Expected: <0>
    Actual: <4>

  package:test                                            expect
  test/client_test.dart 23:5                              main.<fn>.<async>
  dart:async                                              _SyncCompleter.complete
  package:vm_service_client/vm_service_client.dart 215:7  VMServiceClient.getVersion.<async>
  dart:async                                              _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25               Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7                Client._handleResponse
  dart:async                                              _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36                 Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                              _Completer.completeError
  test/client_test.dart 24:4                              main.<fn>.<async>
  dart:async                                              _SyncCompleter.complete
  package:vm_service_client/vm_service_client.dart 215:7  VMServiceClient.getVersion.<async>
  dart:async                                              _SyncCompleter.complete
  package:json_rpc_2/src/client.dart 178:25               Client._handleSingleResponse
  package:json_rpc_2/src/client.dart 168:7                Client._handleResponse
  dart:async                                              _StreamController.add
  package:json_rpc_2/src/peer.dart 117:36                 Peer.listen.<fn>
  ===== asynchronous gap ===========================
  dart:async                                              _asyncThenWrapperHelper
  test/client_test.dart                                   main.<fn>

00:02 +20 -2: test/error_test.dart: for a sync error includes error metadata
  The null object does not have a getter 'kind'.

  NoSuchMethodError: method not found: 'kind'
  Receiver: null
  Arguments: []
  dart:core                   Object.noSuchMethod
  test/error_test.dart 56:20  main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  _Completer.completeError
  test/error_test.dart 62:6   main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  Future.Future.microtask
  test/error_test.dart        main.<fn>.<fn>

00:02 +22 -3: test/error_test.dart: for a sync error parses the stack trace
  The null object does not have a method 'getTrace'.

  NoSuchMethodError: method not found: 'getTrace'
  Receiver: null
  Arguments: []
  dart:core                   Object.noSuchMethod
  test/error_test.dart 65:31  main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  _Completer.completeError
  test/error_test.dart 67:6   main.<fn>.<fn>.<async>
  ===== asynchronous gap ===========================
  dart:async                  Future.Future.microtask
  test/error_test.dart        main.<fn>.<fn>
nex3 commented 8 years ago

It looks like dart-lang/sdk#26203 isn't really fixed yet, but the intended fix did increase the VM service version.

nex3 commented 7 years ago

I believe this is fixed now.