Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1445)

Unified Diff: tests/standalone/vmservice/test_helper.dart

Issue 112223002: WebSocket client for VM service (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/standalone/vmservice/test_helper.dart
diff --git a/tests/standalone/vmservice/test_helper.dart b/tests/standalone/vmservice/test_helper.dart
index 94c8ab8215a140425880f091e4e975f9cb31cc2d..128226071ffb9ac4a6f77981d7523e9c159e7275 100644
--- a/tests/standalone/vmservice/test_helper.dart
+++ b/tests/standalone/vmservice/test_helper.dart
@@ -9,6 +9,47 @@ import 'dart:convert';
import 'dart:io';
import 'package:expect/expect.dart';
+abstract class ServiceWebSocketRequestHelper {
+ final String url;
+ final Completer _completer = new Completer();
+ WebSocket _socket;
+
+ ServiceWebSocketRequestHelper(this.url);
+
+ // Returns [this] when connected.
+ Future connect() {
+ return WebSocket.connect(url).then((ws) {
+ _socket = ws;
+ _socket.listen((message) {
+ var map = JSON.decode(message);
+ var response = JSON.decode(map['response']);
+ onResponse(map['seq'], response);
+ });
+ return this;
+ });
+ }
+
+ void complete() {
+ _completer.complete(this);
+ }
+
+ Future get completed => _completer.future;
+
+ // Must call complete.
+ void onResponse(var seq, Map response);
+ void runTest();
+
+ Future sendMessage(var seq, List<String> path) {
+ var map = {
+ 'seq': seq,
+ 'path': path
+ };
+ var message = JSON.encode(map);
+ _socket.add(message);
+ return _completer.future;
+ }
+}
+
abstract class VmServiceRequestHelper {
final Uri uri;
final HttpClient client;

Powered by Google App Engine
This is Rietveld 408576698