Files
sdk/pkg/analysis_server/test/domain_server_test.dart
T
paulberry@google.com 783aca1892 Analysis server context ID is now specified by the client.
This allows the client to start sending commands that use the context
immediately, without having to wait for a response to find out the
context ID.

If the client tries to create two contexts with the same ID, that is
an error.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//243753002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35185 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 22:20:53 +00:00

129 lines
5.3 KiB
Dart

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library test.domain.server;
import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/domain_server.dart';
import 'package:analysis_server/src/protocol.dart';
import 'package:unittest/unittest.dart';
import 'mocks.dart';
main() {
group('ServerDomainHandler', () {
test('createContext', ServerDomainHandlerTest.createContext);
test('deleteContext_alreadyDeleted', ServerDomainHandlerTest.deleteContext_alreadyDeleted);
test('deleteContext_doesNotExist', ServerDomainHandlerTest.deleteContext_doesNotExist);
test('deleteContext_existing', ServerDomainHandlerTest.deleteContext_existing);
test('shutdown', ServerDomainHandlerTest.shutdown);
test('version', ServerDomainHandlerTest.version);
});
}
class ServerDomainHandlerTest {
static void createContext() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
Request createRequest = new Request('0', ServerDomainHandler.CREATE_CONTEXT_METHOD);
createRequest.setParameter(ServerDomainHandler.SDK_DIRECTORY_PARAM, sdkPath);
createRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, 'ctx');
Response response = handler.handleRequest(createRequest);
expect(response.id, equals('0'));
expect(response.error, isNull);
expect(response.result, isEmpty);
}
static void createContext_alreadyExists() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
Request createRequest = new Request('0', ServerDomainHandler.CREATE_CONTEXT_METHOD);
createRequest.setParameter(ServerDomainHandler.SDK_DIRECTORY_PARAM, sdkPath);
createRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, 'ctx');
Response response = handler.handleRequest(createRequest);
expect(response.error, isNull);
response = handler.handleRequest(createRequest);
expect(response.error, isNotNull);
}
static void deleteContext_alreadyDeleted() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
String contextId = 'ctx';
Request createRequest = new Request('0', ServerDomainHandler.CREATE_CONTEXT_METHOD);
createRequest.setParameter(ServerDomainHandler.SDK_DIRECTORY_PARAM, sdkPath);
createRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, contextId);
handler.handleRequest(createRequest);
Request deleteRequest = new Request('0', ServerDomainHandler.DELETE_CONTEXT_METHOD);
deleteRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, contextId);
handler.handleRequest(deleteRequest);
Response response = handler.handleRequest(deleteRequest);
expect(response.id, equals('0'));
expect(response.error, isNotNull);
}
static void deleteContext_doesNotExist() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
Request deleteRequest = new Request('0', ServerDomainHandler.DELETE_CONTEXT_METHOD);
deleteRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, 'xyzzy');
Response response = handler.handleRequest(deleteRequest);
expect(response.id, equals('0'));
expect(response.error, isNotNull);
}
static void deleteContext_existing() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
String contextId = 'ctx';
Request createRequest = new Request('0', ServerDomainHandler.CREATE_CONTEXT_METHOD);
createRequest.setParameter(ServerDomainHandler.SDK_DIRECTORY_PARAM, sdkPath);
createRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, contextId);
handler.createContext(createRequest);
Request deleteRequest = new Request('0', ServerDomainHandler.DELETE_CONTEXT_METHOD);
deleteRequest.setParameter(ServerDomainHandler.CONTEXT_ID_PARAM, contextId);
Response response = handler.handleRequest(deleteRequest);
expect(response.toJson(), equals({
Response.ID: '0',
Response.ERROR: null
}));
}
static void shutdown() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
expect(server.running, isTrue);
Request shutdownRequest = new Request('0', ServerDomainHandler.SHUTDOWN_METHOD);
Response response = handler.handleRequest(shutdownRequest);
expect(response.toJson(), equals({
Response.ID: '0',
Response.ERROR: null
}));
expect(server.running, isFalse);
}
static void version() {
AnalysisServer server = new AnalysisServer(new MockServerChannel());
ServerDomainHandler handler = new ServerDomainHandler(server);
Request versionRequest = new Request('0', ServerDomainHandler.VERSION_METHOD);
Response response = handler.handleRequest(versionRequest);
expect(response.toJson(), equals({
Response.ID: '0',
Response.ERROR: null,
Response.RESULT: {
ServerDomainHandler.VERSION_RESULT: '0.0.1'
}
}));
}
}