| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
| 6 import 'dart:async'; | 6 import 'dart:async'; |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 | 8 |
| 9 const SESSION_ID = "DARTSESSID"; | 9 const SESSION_ID = "DARTSESSID"; |
| 10 | 10 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 } | 30 } |
| 31 return request.close(); | 31 return request.close(); |
| 32 }) | 32 }) |
| 33 .then((response) { | 33 .then((response) { |
| 34 return response.fold(getSessionId(response.cookies), (v, _) => v); | 34 return response.fold(getSessionId(response.cookies), (v, _) => v); |
| 35 }); | 35 }); |
| 36 } | 36 } |
| 37 | 37 |
| 38 void testSessions(int sessionCount) { | 38 void testSessions(int sessionCount) { |
| 39 var client = new HttpClient(); | 39 var client = new HttpClient(); |
| 40 HttpServer.bind().then((server) { | 40 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 41 var sessions = new Set(); | 41 var sessions = new Set(); |
| 42 server.listen((request) { | 42 server.listen((request) { |
| 43 sessions.add(request.session.id); | 43 sessions.add(request.session.id); |
| 44 request.response.close(); | 44 request.response.close(); |
| 45 }); | 45 }); |
| 46 | 46 |
| 47 var futures = []; | 47 var futures = []; |
| 48 for (int i = 0; i < sessionCount; i++) { | 48 for (int i = 0; i < sessionCount; i++) { |
| 49 futures.add(connectGetSession(client, server.port).then((session) { | 49 futures.add(connectGetSession(client, server.port).then((session) { |
| 50 Expect.isNotNull(session); | 50 Expect.isNotNull(session); |
| 51 Expect.isTrue(sessions.contains(session)); | 51 Expect.isTrue(sessions.contains(session)); |
| 52 return connectGetSession(client, server.port, session).then((session2) { | 52 return connectGetSession(client, server.port, session).then((session2) { |
| 53 Expect.equals(session2, session); | 53 Expect.equals(session2, session); |
| 54 Expect.isTrue(sessions.contains(session2)); | 54 Expect.isTrue(sessions.contains(session2)); |
| 55 return session2; | 55 return session2; |
| 56 }); | 56 }); |
| 57 })); | 57 })); |
| 58 } | 58 } |
| 59 Future.wait(futures).then((clientSessions) { | 59 Future.wait(futures).then((clientSessions) { |
| 60 Expect.equals(sessions.length, sessionCount); | 60 Expect.equals(sessions.length, sessionCount); |
| 61 Expect.setEquals(new Set.from(clientSessions), sessions); | 61 Expect.setEquals(new Set.from(clientSessions), sessions); |
| 62 server.close(); | 62 server.close(); |
| 63 client.close(); | 63 client.close(); |
| 64 }); | 64 }); |
| 65 }); | 65 }); |
| 66 } | 66 } |
| 67 | 67 |
| 68 void testTimeout(int sessionCount) { | 68 void testTimeout(int sessionCount) { |
| 69 var client = new HttpClient(); | 69 var client = new HttpClient(); |
| 70 HttpServer.bind().then((server) { | 70 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 71 server.sessionTimeout = 0; | 71 server.sessionTimeout = 0; |
| 72 var timeouts = []; | 72 var timeouts = []; |
| 73 server.listen((request) { | 73 server.listen((request) { |
| 74 var c = new Completer(); | 74 var c = new Completer(); |
| 75 timeouts.add(c.future); | 75 timeouts.add(c.future); |
| 76 request.session.onTimeout = () { | 76 request.session.onTimeout = () { |
| 77 c.complete(null); | 77 c.complete(null); |
| 78 }; | 78 }; |
| 79 request.response.close(); | 79 request.response.close(); |
| 80 }); | 80 }); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 96 Future.wait(futures).then((_) { | 96 Future.wait(futures).then((_) { |
| 97 server.close(); | 97 server.close(); |
| 98 client.close(); | 98 client.close(); |
| 99 }); | 99 }); |
| 100 }); | 100 }); |
| 101 }); | 101 }); |
| 102 }); | 102 }); |
| 103 } | 103 } |
| 104 | 104 |
| 105 void testSessionsData() { | 105 void testSessionsData() { |
| 106 HttpServer.bind().then((server) { | 106 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 107 bool firstHit = false; | 107 bool firstHit = false; |
| 108 bool secondHit = false; | 108 bool secondHit = false; |
| 109 server.listen((request) { | 109 server.listen((request) { |
| 110 var c = new Completer(); | 110 var c = new Completer(); |
| 111 var session = request.session; | 111 var session = request.session; |
| 112 if (session.isNew) { | 112 if (session.isNew) { |
| 113 Expect.isFalse(firstHit); | 113 Expect.isFalse(firstHit); |
| 114 Expect.isFalse(secondHit); | 114 Expect.isFalse(secondHit); |
| 115 firstHit = true; | 115 firstHit = true; |
| 116 session["data"] = "some data"; | 116 session["data"] = "some data"; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 }); | 148 }); |
| 149 }); | 149 }); |
| 150 }); | 150 }); |
| 151 } | 151 } |
| 152 | 152 |
| 153 void main() { | 153 void main() { |
| 154 testSessions(1); | 154 testSessions(1); |
| 155 testTimeout(5); | 155 testTimeout(5); |
| 156 testSessionsData(); | 156 testSessionsData(); |
| 157 } | 157 } |
| OLD | NEW |