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

Unified Diff: tests/standalone/io/http_session_test.dart

Issue 12316036: Merge IO v2 branch to bleeding edge (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased to r18818 Created 7 years, 10 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 | « tests/standalone/io/http_server_test.dart ('k') | tests/standalone/io/http_shutdown_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/standalone/io/http_session_test.dart
diff --git a/tests/standalone/io/http_session_test.dart b/tests/standalone/io/http_session_test.dart
index 796408f17185d6d02560dc27e8bc1670dd458a45..69f6a6b0d9b0f096099903986311ba635886a182 100644
--- a/tests/standalone/io/http_session_test.dart
+++ b/tests/standalone/io/http_session_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2013, 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.
@@ -20,89 +20,137 @@ String getSessionId(List<Cookie> cookies) {
return id;
}
-Future<String> connectGetSession(int port, [String session]) {
- var c = new Completer();
- var client = new HttpClient();
- var conn = client.get("127.0.0.1", port, "/");
- conn.onRequest = (request) {
- if (session != null) {
- request.cookies.add(new Cookie(SESSION_ID, session));
- }
- request.outputStream.close();
- };
- conn.onResponse = (response) {
- response.inputStream.onData = response.inputStream.read;
- response.inputStream.onClosed = () {
- client.shutdown();
- c.complete(getSessionId(response.cookies));
- };
- };
- return c.future;
+Future<String> connectGetSession(
+ HttpClient client, int port, [String session]) {
+ return client.get("127.0.0.1", port, "/")
+ .then((request) {
+ if (session != null) {
+ request.cookies.add(new Cookie(SESSION_ID, session));
+ }
+ return request.close();
+ })
+ .then((response) {
+ return response.reduce(getSessionId(response.cookies), (v, _) => v);
+ });
}
void testSessions(int sessionCount) {
- HttpServer server = new HttpServer();
- server.listen("127.0.0.1", 0);
- var sessions = new Set();
- server.defaultRequestHandler = (request, response) {
- sessions.add(request.session().id);
- response.outputStream.close();
- };
+ var client = new HttpClient();
+ HttpServer.bind().then((server) {
+ var sessions = new Set();
+ server.listen((request) {
+ sessions.add(request.session.id);
+ request.response.close();
+ });
- var futures = [];
- for (int i = 0; i < sessionCount; i++) {
- futures.add(connectGetSession(server.port).then((session) {
- Expect.isNotNull(session);
- Expect.isTrue(sessions.contains(session));
- return connectGetSession(server.port, session).then((session2) {
- Expect.equals(session2, session);
- Expect.isTrue(sessions.contains(session2));
- return session2;
+ var futures = [];
+ for (int i = 0; i < sessionCount; i++) {
+ futures.add(connectGetSession(client, server.port).then((session) {
+ Expect.isNotNull(session);
+ Expect.isTrue(sessions.contains(session));
+ return connectGetSession(client, server.port, session).then((session2) {
+ Expect.equals(session2, session);
+ Expect.isTrue(sessions.contains(session2));
+ return session2;
});
- }));
- }
- Future.wait(futures).then((clientSessions) {
- Expect.equals(sessions.length, sessionCount);
- Expect.setEquals(new Set.from(clientSessions), sessions);
- server.close();
+ }));
+ }
+ Future.wait(futures).then((clientSessions) {
+ Expect.equals(sessions.length, sessionCount);
+ Expect.setEquals(new Set.from(clientSessions), sessions);
+ server.close();
+ client.close();
+ });
});
}
void testTimeout(int sessionCount) {
- HttpServer server = new HttpServer();
- server.sessionTimeout = 0;
- server.listen("127.0.0.1", 0);
- var timeouts = [];
- server.defaultRequestHandler = (request, response) {
- var c = new Completer();
- timeouts.add(c.future);
- request.session().onTimeout = () {
- c.complete(null);
- };
- response.outputStream.close();
- };
+ var client = new HttpClient();
+ HttpServer.bind().then((server) {
+ server.sessionTimeout = 0;
+ var timeouts = [];
+ server.listen((request) {
+ var c = new Completer();
+ timeouts.add(c.future);
+ request.session.onTimeout = () {
+ c.complete(null);
+ };
+ request.response.close();
+ });
- var futures = [];
- for (int i = 0; i < sessionCount; i++) {
- futures.add(connectGetSession(server.port));
- }
- Future.wait(futures).then((clientSessions) {
- Future.wait(timeouts).then((_) {
- futures = [];
- for (var id in clientSessions) {
- futures.add(connectGetSession(server.port, id).then((session) {
- Expect.isNotNull(session);
- Expect.notEquals(id, session);
- }));
- }
- Future.wait(futures).then((_) {
- server.close();
+ var futures = [];
+ for (int i = 0; i < sessionCount; i++) {
+ futures.add(connectGetSession(client, server.port));
+ }
+ Future.wait(futures).then((clientSessions) {
+ Future.wait(timeouts).then((_) {
+ futures = [];
+ for (var id in clientSessions) {
+ futures.add(connectGetSession(
+ client, server.port, id).then((session) {
+ Expect.isNotNull(session);
+ Expect.notEquals(id, session);
+ }));
+ }
+ Future.wait(futures).then((_) {
+ server.close();
+ client.close();
+ });
});
});
});
}
+void testSessionsData() {
+ HttpServer.bind().then((server) {
+ bool firstHit = false;
+ bool secondHit = false;
+ server.listen((request) {
+ var c = new Completer();
+ var session = request.session;
+ if (session.isNew) {
+ Expect.isFalse(firstHit);
+ Expect.isFalse(secondHit);
+ firstHit = true;
+ session["data"] = "some data";
+ } else {
+ Expect.isTrue(firstHit);
+ Expect.isFalse(secondHit);
+ secondHit = true;
+ Expect.isTrue(session.containsKey("data"));
+ Expect.equals("some data", session["data"]);
+ };
+ request.response.close();
+ });
+
+ var client = new HttpClient();
+ client.get("127.0.0.1", server.port, "/")
+ .then((request) => request.close())
+ .then((response) {
+ response.listen((_) {}, onDone: () {
+ var id = getSessionId(response.cookies);
+ Expect.isNotNull(id);
+ client.get("127.0.0.1", server.port, "/")
+ .then((request) {
+ request.cookies.add(new Cookie(SESSION_ID, id));
+ return request.close();
+ })
+ .then((response) {
+ response.listen((_) {}, onDone: () {
+ Expect.isTrue(firstHit);
+ Expect.isTrue(secondHit);
+ Expect.equals(id, getSessionId(response.cookies));
+ server.close();
+ client.close();
+ });
+ });
+ });
+ });
+ });
+}
+
void main() {
- testSessions(5);
+ testSessions(1);
testTimeout(5);
+ testSessionsData();
}
« no previous file with comments | « tests/standalone/io/http_server_test.dart ('k') | tests/standalone/io/http_shutdown_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698