This change addresses flakiness in SSE tests caused by port conflicts and race conditions during connection teardown. Key changes: - Dynamically allocates ChromeDriver ports in `sse_smoke_test.dart` and `sse_client_test.dart` instead of using a hardcoded port (4444). This avoids conflicts when tests run in parallel on CI bots. - Adds support for locating ChromeDriver via the `CHROMEDRIVER_PATH` environment variable in both test suites. - Updates `sse_smoke_driver.dart` to introduce a brief delay before closing connections. This ensures the client-side SseClient has sufficient time to flush its final POST request to the server, avoiding "Bad state: No element" errors. - Modifies `test_helper.dart` to filter out `--mark_main_isolate_as_system_isolate` from arguments forwarded to spawned testee processes. This is necessary under modern `dart test` runners to ensure processes pause at start as expected. Change-Id: Idf45cd69f366ec6b6f81cfed955aea337b277dcc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508343 Auto-Submit: Ben Konyi <bkonyi@google.com> Reviewed-by: Mark Zhou <markzipan@google.com> Commit-Queue: Mark Zhou <markzipan@google.com>
Dart Runtime Services
Implementations of various Dart developer services based on package:dart_runtime_service.
Shared frontend, pluggable backend
package:dart_runtime_service provides a simple interface to create Dart services with common platform-agnostic features and behaviors, while also allowing for configuration of custom service backends. This removes the need for individual services to implement functionality common to most services, including:
- Launching and advertising a server
- Handling connections via various protocols (web sockets, SSE, HTTP)
- Authentication code verification
- Notification routing via stream subscriptions
- Client-registered service extension routing
- DevTools hosting
Roadmap
There are currently two planned runtime service implementations, with a focus on replacing dart:_vmservice and package:dwds:
-
package:dart_runtime_service_vm: an implementation of the Dart VM service protocol which can interact with the native runtimes. To be launched directly as an isolate bydartanddartaotruntime. -
package:dart_runtime_service_web: an implementation of the Dart VM service protocol which serves as a proxy to interact with a running web application. To eventually be launched usingdart web-development-serviceby developer tooling responsible for launching and managing DDC-based applications.
Future candidates for migration include:
-
package:dtd_impl: the implementation of the Dart Tooling Daemon (DTD), which implements a similar protocol to the VM service protocol. -
package:dds: the implementation of the Dart Development Service (DDS), which provides extensions to the VM service protocol. DDS reimplements much of the common functionality provided bypackage:dart_runtime_service, particularly around client management, stream subscriptions, and service extension routing.