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

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

Issue 308003009: Add ServerOperation and queue. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Tweaks for review comments Created 6 years, 6 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
« no previous file with comments | « pkg/analysis_server/pubspec.yaml ('k') | pkg/analysis_server/test/domain_analysis_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.analysis_server; 5 library test.analysis_server;
6 6
7 import 'dart:async';
8
9 import 'package:analyzer/src/generated/engine.dart'; 7 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/generated/error.dart'; 8 import 'package:analyzer/src/generated/error.dart';
11 import 'package:analyzer/src/generated/source.dart'; 9 import 'package:analyzer/src/generated/source.dart';
12 import 'package:analysis_server/src/analysis_server.dart'; 10 import 'package:analysis_server/src/analysis_server.dart';
13 import 'package:analysis_server/src/constants.dart'; 11 import 'package:analysis_server/src/constants.dart';
14 import 'package:analysis_server/src/domain_server.dart'; 12 import 'package:analysis_server/src/domain_server.dart';
15 import 'package:analysis_server/src/protocol.dart'; 13 import 'package:analysis_server/src/protocol.dart';
16 import 'package:analysis_server/src/resource.dart'; 14 import 'package:analysis_server/src/resource.dart';
17 import 'package:mock/mock.dart'; 15 import 'package:mock/mock.dart';
18 import 'package:unittest/unittest.dart'; 16 import 'package:unittest/unittest.dart';
19 17
20 import 'mocks.dart'; 18 import 'mocks.dart';
21 19
22 class AnalysisServerTestHelper { 20 class AnalysisServerTestHelper {
23 MockServerChannel channel; 21 MockServerChannel channel;
24 AnalysisServer server; 22 AnalysisServer server;
25 MockAnalysisLogger logger; 23 MockAnalysisLogger logger;
26 24
27 AnalysisServerTestHelper() { 25 AnalysisServerTestHelper() {
28 channel = new MockServerChannel(); 26 channel = new MockServerChannel();
29 server = new AnalysisServer(channel, PhysicalResourceProvider.INSTANCE); 27 server = new AnalysisServer(channel, PhysicalResourceProvider.INSTANCE);
30 logger = new MockAnalysisLogger(); 28 logger = new MockAnalysisLogger();
31 AnalysisEngine.instance.logger = logger; 29 AnalysisEngine.instance.logger = logger;
32 } 30 }
33 } 31 }
34 32
35 main() { 33 main() {
36 group('AnalysisServer', () { 34 group('AnalysisServer', () {
37 test('addContextToWorkQueue_whenNotRunning', () {
38 AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
39 helper.server.running = false;
40 MockAnalysisContext context = new MockAnalysisContext();
41 helper.server.addContextToWorkQueue(context);
42 // Pump the event queue to make sure the server doesn't try to do any
43 // analysis.
44 return pumpEventQueue();
45 });
46
47 test('server.status notifications', () { 35 test('server.status notifications', () {
48 AnalysisServerTestHelper helper = new AnalysisServerTestHelper(); 36 AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
49 MockAnalysisContext context = new MockAnalysisContext(); 37 MockAnalysisContext context = new MockAnalysisContext();
50 MockSource source = new MockSource(); 38 MockSource source = new MockSource();
51 source.when(callsTo('get fullName')).alwaysReturn('foo.dart'); 39 source.when(callsTo('get fullName')).alwaysReturn('foo.dart');
52 source.when(callsTo('get isInSystemLibrary')).alwaysReturn(false); 40 source.when(callsTo('get isInSystemLibrary')).alwaysReturn(false);
53 ChangeNoticeImpl notice = new ChangeNoticeImpl(source); 41 ChangeNoticeImpl notice = new ChangeNoticeImpl(source);
54 notice.setErrors([], new LineInfo([0])); 42 notice.setErrors([], new LineInfo([0]));
55 AnalysisResult firstResult = new AnalysisResult([notice], 0, '', 0); 43 AnalysisResult firstResult = new AnalysisResult([notice], 0, '', 0);
56 AnalysisResult lastResult = new AnalysisResult(null, 1, '', 1); 44 AnalysisResult lastResult = new AnalysisResult(null, 1, '', 1);
57 context.when(callsTo("performAnalysisTask")) 45 context.when(callsTo("performAnalysisTask"))
58 ..thenReturn(firstResult, 3) 46 ..thenReturn(firstResult, 3)
59 ..thenReturn(lastResult); 47 ..thenReturn(lastResult);
60 helper.server.addContextToWorkQueue(context); 48 helper.server.schedulePerformAnalysisOperation(context);
61 // Pump the event queue to make sure the server has finished any 49 // Pump the event queue to make sure the server has finished any
62 // analysis. 50 // analysis.
63 return pumpEventQueue().then((_) { 51 return pumpEventQueue().then((_) {
64 List<Notification> notifications = helper.channel.notificationsReceived; 52 List<Notification> notifications = helper.channel.notificationsReceived;
65 expect(notifications.length, equals(9)); 53 expect(notifications, isNot(isEmpty));
66 Notification notification = notifications[notifications.length - 1]; 54 Notification notification = notifications[notifications.length - 1];
67 Map analysisStatus = notification.params['analysis']; 55 Map analysisStatus = notification.params['analysis'];
68 expect(analysisStatus['analyzing'], isFalse); 56 expect(analysisStatus['analyzing'], isFalse);
69 }); 57 });
70 }); 58 });
71 59
72 test('echo', () { 60 test('echo', () {
73 AnalysisServerTestHelper helper = new AnalysisServerTestHelper(); 61 AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
74 helper.server.handlers = [new EchoHandler()]; 62 helper.server.handlers = [new EchoHandler()];
75 var request = new Request('my22', 'echo'); 63 var request = new Request('my22', 'echo');
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 // %s formatting in its correction string. But no such errors or hints 104 // %s formatting in its correction string. But no such errors or hints
117 // currently exist! 105 // currently exist!
118 HintCode errorCode = HintCode.MISSING_RETURN; 106 HintCode errorCode = HintCode.MISSING_RETURN;
119 107
120 AnalysisError analysisError = 108 AnalysisError analysisError =
121 new AnalysisError.con2(source, 10, 5, errorCode, ['int']); 109 new AnalysisError.con2(source, 10, 5, errorCode, ['int']);
122 Map<String, Object> json = AnalysisServer.errorToJson(analysisError); 110 Map<String, Object> json = AnalysisServer.errorToJson(analysisError);
123 expect(json['correction'], equals(errorCode.correction)); 111 expect(json['correction'], equals(errorCode.correction));
124 }); 112 });
125 113
126 test('performTask_whenNotRunning', () {
127 AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
128 // If the server is shut down while there is analysis still pending,
129 // performTask() should notice that the server is no longer running and
130 // do no analysis.
131 MockAnalysisContext context = new MockAnalysisContext();
132 helper.server.addContextToWorkQueue(context);
133 helper.server.running = false;
134 // Pump the event queue to make sure the server doesn't try to do any
135 // analysis.
136 return pumpEventQueue();
137 });
138
139 test('shutdown', () { 114 test('shutdown', () {
140 AnalysisServerTestHelper helper = new AnalysisServerTestHelper(); 115 AnalysisServerTestHelper helper = new AnalysisServerTestHelper();
141 helper.server.handlers = [new ServerDomainHandler(helper.server)]; 116 helper.server.handlers = [new ServerDomainHandler(helper.server)];
142 var request = new Request('my28', METHOD_SHUTDOWN); 117 var request = new Request('my28', METHOD_SHUTDOWN);
143 return helper.channel.sendRequest(request) 118 return helper.channel.sendRequest(request)
144 .then((Response response) { 119 .then((Response response) {
145 expect(response.id, equals('my28')); 120 expect(response.id, equals('my28'));
146 expect(response.error, isNull); 121 expect(response.error, isNull);
147 }); 122 });
148 }); 123 });
(...skipping 15 matching lines...) Expand all
164 @override 139 @override
165 Response handleRequest(Request request) { 140 Response handleRequest(Request request) {
166 if (request.method == 'echo') { 141 if (request.method == 'echo') {
167 var response = new Response(request.id); 142 var response = new Response(request.id);
168 response.setResult('echo', true); 143 response.setResult('echo', true);
169 return response; 144 return response;
170 } 145 }
171 return null; 146 return null;
172 } 147 }
173 } 148 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/pubspec.yaml ('k') | pkg/analysis_server/test/domain_analysis_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698