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

Unified Diff: samples/tests/src/chat/chat_server_test.dart

Issue 8274034: Make the sample tests run using the standard test configuration (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « samples/tests/samples/testcfg.py ('k') | samples/tests/src/chat/http_parser_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samples/tests/src/chat/chat_server_test.dart
diff --git a/samples/tests/src/chat/chat_server_test.dart b/samples/tests/src/chat/chat_server_test.dart
deleted file mode 100644
index 9eac2496244c0bdd1497b58e1ce4957ab1889fc4..0000000000000000000000000000000000000000
--- a/samples/tests/src/chat/chat_server_test.dart
+++ /dev/null
@@ -1,317 +0,0 @@
-// Copyright (c) 2011, 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("chat_server_test.dart");
-#import("../../../chat/http.dart");
-#import("../../../../client/json/dart_json.dart");
-#import("../../../chat/chat_server_lib.dart");
-
-
-// Message to start chat test client running in an isolate.
-class ChatTestClientStart {
- ChatTestClientStart(int this.totalClients,
- int this.messagesToSend,
- int this.messagesToReceive,
- int this.port);
-
- int totalClients;
- int messagesToSend;
- int messagesToReceive;
- int port;
-}
-
-
-// Chat server test client for running in a separate isolate. When
-// this test client is started it will join the chat topic, send a
-// number of messages, receive the expected number of messages and
-// leave the topic.
-class ChatTestClient extends Isolate {
- void main() {
-
- SendPort statusPort; // Port to reply to when test has finished.
- HTTPClient httpClient; // HTTP client connection factory.
-
- int totalClients; // Total number of clients in the test.
- int messagesToSend; // Number of messages to send.
- int messagesToReceive; // Numbe rof messages expected to be received.
- int port; // TCP/IP port for server.
-
- String sessionId; // Session id when connected.
- int sendMessageNumber; // Number of messages sent.
- int joinCount;
- int messageCount;
- int receiveMessageNumber; // Number of messages received.
-
- void leave() {
- HTTPClientRequest request;
- HTTPClientResponse response;
-
- void leaveResponseHandler(String data) {
- Expect.equals(HTTPStatus.OK, response.statusCode);
- var responseData = JSON.parse(data);
- Expect.equals("leave", responseData["response"]);
-
- // Test done.
- statusPort.send("Test succeeded", null);
- }
-
- Map messageRequest = new Map();
- messageRequest["request"] = "leave";
- messageRequest["sessionId"] = sessionId;
- request = httpClient.open("POST", "127.0.0.1", port, "/leave");
- request.writeString(JSON.stringify(messageRequest));
- request.responseReceived =
- void _(HTTPClientResponse r) {
- response = r;
- response.dataEnd = leaveResponseHandler;
- };
- request.writeDone();
- }
-
- void receive() {
- HTTPClientRequest request;
- HTTPClientResponse response;
-
- void receiveResponseHandler(String data) {
- Expect.equals(HTTPStatus.OK, response.statusCode);
- var responseData = JSON.parse(data);
- Expect.equals("receive", responseData["response"]);
- Expect.equals(null, responseData["disconnect"]);
- receiveMessageNumber += responseData["messages"].length;
- for (int i = 0; i < responseData["messages"].length; i++) {
- Map message = responseData["messages"][i];
- if (message["type"] == "join") {
- joinCount++;
- } else if (message["type"] == "message") {
- messageCount++;
- } else {
- Expect.equals("leave", message["type"]);
- }
- if (totalClients == 1) {
- // Test the exact messages when this is the only client.
- Expect.equals(messagesToSend + 1, responseData["messages"].length);
- Expect.equals(i, message["number"]);
- if (i == 0) {
- Expect.equals("join", message["type"]);
- } else {
- Expect.equals("message", message["type"]);
- Expect.equals("message " + (i - 1).toString(), message["message"]);
- }
- }
- }
-
- // Receive all expected messages then leave.
- if (messageCount < messagesToReceive) {
- receive();
- } else {
- Expect.equals(messagesToReceive, messageCount);
- Expect.equals(totalClients, joinCount);
- leave();
- }
- }
-
- Map messageRequest = new Map();
- messageRequest["request"] = "receive";
- messageRequest["sessionId"] = sessionId;
- messageRequest["nextMessage"] = receiveMessageNumber;
- request = httpClient.open("POST", "127.0.0.1", port, "/receive");
- request.writeString(JSON.stringify(messageRequest));
- request.responseReceived =
- void _(HTTPClientResponse r) {
- response = r;
- response.dataEnd = receiveResponseHandler;
- };
- request.writeDone();
- }
-
- void sendMessage() {
- HTTPClientRequest request;
- HTTPClientResponse response;
-
- void sendResponseHandler(String data) {
- Expect.equals(HTTPStatus.OK, response.statusCode);
- var responseData = JSON.parse(data);
- Expect.equals("message", responseData["response"]);
- sendMessageNumber++;
- if (sendMessageNumber < messagesToSend) {
- sendMessage();
- } else {
- receive();
- }
- }
-
- Map messageRequest = new Map();
- messageRequest["request"] = "message";
- messageRequest["sessionId"] = sessionId;
- messageRequest["message"] = "message " + sendMessageNumber;
- request = httpClient.open("POST", "127.0.0.1", port, "/message");
- request.writeString(JSON.stringify(messageRequest));
- request.responseReceived =
- void _(HTTPClientResponse r) {
- response = r;
- response.dataEnd = sendResponseHandler;
- };
- request.writeDone();
- }
-
- void join() {
- HTTPClientRequest request;
- HTTPClientResponse response;
-
- void joinResponseHandler(String data) {
- Expect.equals(HTTPStatus.OK, response.statusCode);
- var responseData = JSON.parse(data);
- Expect.equals("join", responseData["response"]);
- sessionId = responseData["sessionId"];
- Expect.isTrue(sessionId != null);
-
- joinCount = 0;
- messageCount = 0;
- sendMessageNumber = 0;
- receiveMessageNumber = 0;
- sendMessage();
- }
-
- Map joinRequest = new Map();
- joinRequest["request"] = "join";
- joinRequest["handle"] = "test1";
- request = httpClient.open("POST", "127.0.0.1", port, "/join");
- request.writeString(JSON.stringify(joinRequest));
- request.responseReceived =
- void _(HTTPClientResponse r) {
- response = r;
- response.dataEnd = joinResponseHandler;
- };
- request.writeDone();
- }
-
- this.port.receive(
- void _(var message, SendPort replyTo) {
- totalClients = message.totalClients;
- messagesToSend = message.messagesToSend;
- messagesToReceive = message.messagesToReceive;
- port = message.port;
- statusPort = replyTo;
-
- // Create a HTTP client factory.
- httpClient = new HTTPClient();
-
- // Start the client by joining the chat topic.
- join();
- });
- }
-}
-
-
-class TestMain {
- TestMain.start(int this.clientCount, int this.messageCount)
- : serverStatusPort = new ReceivePort(),
- serverPort = null,
- finishedClients = 0 {
- new ChatServer().spawn().then(void _(SendPort port) {
- serverPort = port;
- start();
- });
- }
-
- void start() {
- // Handle status messages from the server.
- serverStatusPort.receive(
- (var message, SendPort replyTo) {
- if (message.isStarted) {
- // When the server is started start all test clients.
- for (int i = 0; i < clientCount; i++) {
- ChatTestClientStart command =
- new ChatTestClientStart(clientCount,
- messageCount,
- messageCount * this.clientCount,
- message.port);
- clientPorts[i].send(command, clientStatusPorts[i].toSendPort());
- }
- } else if (message.isError) {
- print("Could not start server - probably error \"Address already in use\" from bind.");
- serverStatusPort.close();
- }
- });
-
- // Prepare the requested number of clients.
- clientPorts = new List<SendPort>(clientCount);
- int liveClientsCount = 0;
- clientStatusPorts = new List<ReceivePort>(clientCount);
- for (int i = 0; i < clientCount; i++) {
- ReceivePort statusPort = new ReceivePort();
- statusPort.receive(
- void _(var message, SendPort replyTo) {
- // First and only message from the client indicates that
- // the test is done.
- Expect.equals("Test succeeded", message);
- statusPort.close();
- finishedClients++;
-
- // If all clients are finished shutdown the server.
- if (finishedClients == clientCount) {
- // Send server stop message to the server.
- serverPort.send(new ChatServerCommand.stop(),
- serverStatusPort.toSendPort());
-
- // Close the last port to terminate the test.
- serverStatusPort.close();
- }
- });
-
- clientStatusPorts[i] = statusPort;
- new ChatTestClient().spawn().then((SendPort p) {
- clientPorts[i] = p;
- liveClientsCount++;
- if (liveClientsCount == clientCount) {
- // Once all clients are running send server start message to
- // the server. Use port 0 for an ephemeral port. The actual
- // port will be returned with the server started message.
- serverPort.send(new ChatServerCommand.start("127.0.0.1", 0, false),
- serverStatusPort.toSendPort());
- }
- });
- }
-
- }
-
- int clientCount; // Number of clients to run.
- int messageCount; // Number of messages per clients to send.
- int finishedClients; // Number of clients finished.
-
- // Ports for communicating with the server.
- SendPort serverPort;
- ReceivePort serverStatusPort;
- // Ports for communicating with the clients.
- List<SendPort> clientPorts;
- List<ReceivePort> clientStatusPorts;
-}
-
-
-void testOneClient() {
- TestMain testMain = new TestMain.start(1, 5);
-}
-
-
-void testTwoClients() {
- TestMain testMain = new TestMain.start(2, 5);
-}
-
-
-void testTwoClientsMoreMessages() {
- TestMain testMain = new TestMain.start(2, 10);
-}
-
-
-void testTenClients() {
- TestMain testMain = new TestMain.start(10, 2);
-}
-
-
-void main() {
- testOneClient();
- testTwoClients();
- testTwoClientsMoreMessages;
- testTenClients();
-}
« no previous file with comments | « samples/tests/samples/testcfg.py ('k') | samples/tests/src/chat/http_parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698