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

Side by Side Diff: pkg/analysis_server/test/socket_server_test.dart

Issue 570453002: gracefully handle internal exceptions during request (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.socket.server; 5 library test.socket.server;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'mocks.dart'; 9 import 'mocks.dart';
10 10
11 import 'package:analysis_server/src/constants.dart'; 11 import 'package:analysis_server/src/constants.dart';
12 import 'package:analysis_server/src/protocol.dart'; 12 import 'package:analysis_server/src/protocol.dart';
13 import 'package:analysis_server/src/socket_server.dart'; 13 import 'package:analysis_server/src/socket_server.dart';
14 import 'package:analyzer/src/generated/sdk_io.dart'; 14 import 'package:analyzer/src/generated/sdk_io.dart';
15 import 'package:unittest/unittest.dart'; 15 import 'package:unittest/unittest.dart';
16 16
17 main() { 17 main() {
18 group('SocketServer', () { 18 group('SocketServer', () {
19 test('createAnalysisServer_successful', 19 test('createAnalysisServer_successful',
20 SocketServerTest.createAnalysisServer_successful); 20 SocketServerTest.createAnalysisServer_successful);
21 test('createAnalysisServer_alreadyStarted', 21 test('createAnalysisServer_alreadyStarted',
22 SocketServerTest.createAnalysisServer_alreadyStarted); 22 SocketServerTest.createAnalysisServer_alreadyStarted);
23 test('requestHandler_exception', SocketServerTest.requestHandler_exception);
24 test('requestHandler_futureException',
25 SocketServerTest.requestHandler_futureException);
23 }); 26 });
24 } 27 }
25 28
26 class SocketServerTest { 29 class SocketServerTest {
27 static Future createAnalysisServer_successful() { 30 static Future createAnalysisServer_successful() {
28 SocketServer server = new SocketServer(DirectoryBasedDartSdk.defaultSdk); 31 SocketServer server = new SocketServer(DirectoryBasedDartSdk.defaultSdk);
29 MockServerChannel channel = new MockServerChannel(); 32 MockServerChannel channel = new MockServerChannel();
30 server.createAnalysisServer(channel); 33 server.createAnalysisServer(channel);
31 channel.expectMsgCount(notificationCount: 1); 34 channel.expectMsgCount(notificationCount: 1);
32 expect(channel.notificationsReceived[0].event, SERVER_CONNECTED); 35 expect(channel.notificationsReceived[0].event, SERVER_CONNECTED);
(...skipping 21 matching lines...) Expand all
54 RequestErrorCode.SERVER_ALREADY_STARTED)); 57 RequestErrorCode.SERVER_ALREADY_STARTED));
55 channel2.sendRequest(new ServerShutdownParams().toRequest('0')).then( 58 channel2.sendRequest(new ServerShutdownParams().toRequest('0')).then(
56 (Response response) { 59 (Response response) {
57 expect(response.id, equals('0')); 60 expect(response.id, equals('0'));
58 expect(response.error, isNotNull); 61 expect(response.error, isNotNull);
59 expect(response.error.code, equals( 62 expect(response.error.code, equals(
60 RequestErrorCode.SERVER_ALREADY_STARTED)); 63 RequestErrorCode.SERVER_ALREADY_STARTED));
61 channel2.expectMsgCount(responseCount: 2); 64 channel2.expectMsgCount(responseCount: 2);
62 }); 65 });
63 } 66 }
67
68 static Future requestHandler_exception() {
69 SocketServer server = new SocketServer(DirectoryBasedDartSdk.defaultSdk);
70 MockServerChannel channel = new MockServerChannel();
71 server.createAnalysisServer(channel);
72 _MockRequestHandler handler = new _MockRequestHandler(false);
73 server.analysisServer.handlers = [handler];
74 var request = new ServerGetVersionParams().toRequest('0');
75 return channel.sendRequest(request).then((Response response) {
76 expect(response.id, equals('0'));
77 expect(response.error, isNotNull);
78 expect(response.error.code, equals(RequestErrorCode.SERVER_ERROR));
79 channel.expectMsgCount(responseCount: 1, notificationCount: 2);
80 expect(channel.notificationsReceived[1].event, SERVER_ERROR);
81 });
82 }
83
84 static Future requestHandler_futureException() {
85 SocketServer server = new SocketServer(DirectoryBasedDartSdk.defaultSdk);
86 MockServerChannel channel = new MockServerChannel();
87 server.createAnalysisServer(channel);
88 _MockRequestHandler handler = new _MockRequestHandler(true);
89 server.analysisServer.handlers = [handler];
90 var request = new ServerGetVersionParams().toRequest('0');
91 return channel.sendRequest(request).then((Response response) {
92 expect(response.id, equals('0'));
93 expect(response.error, isNull);
94 channel.expectMsgCount(responseCount: 1, notificationCount: 2);
95 expect(channel.notificationsReceived[1].event, SERVER_ERROR);
96 });
97 }
64 } 98 }
99
100 class _MockRequestHandler implements RequestHandler {
101 final bool futureException;
102
103 _MockRequestHandler(this.futureException);
104
105 @override
106 Response handleRequest(Request request) {
107 if (futureException) {
108 new Future(throwException);
109 return new Response(request.id);
110 }
111 throw 'mock request exception';
112 }
113
114 void throwException() {
115 throw 'mock future exception';
116 }
117 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/integration/protocol_matchers.dart ('k') | pkg/analysis_server/tool/spec/spec_input.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698