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

Side by Side Diff: tests/standalone/io/http_shutdown_test.dart

Issue 11411121: Generate an error for active connections when the HTTP client is shutdown (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixed long line Created 8 years 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 5
6 #import("dart:isolate"); 6 #import("dart:isolate");
7 #import("dart:io"); 7 #import("dart:io");
8 8
9 void test1(int totalConnections) { 9 void test1(int totalConnections) {
10 // Server which just closes immediately. 10 // Server which just closes immediately.
11 HttpServer server = new HttpServer(); 11 HttpServer server = new HttpServer();
12 server.listen("127.0.0.1", 0, backlog: totalConnections); 12 server.listen("127.0.0.1", 0, backlog: totalConnections);
13 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { 13 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) {
14 response.outputStream.close(); 14 response.outputStream.close();
15 }; 15 };
16 16
17 int count = 0; 17 int count = 0;
18 HttpClient client = new HttpClient(); 18 HttpClient client = new HttpClient();
19 for (int i = 0; i < totalConnections; i++) { 19 for (int i = 0; i < totalConnections; i++) {
20 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); 20 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/");
21 conn.onRequest = (HttpClientRequest request) { 21 conn.onRequest = (HttpClientRequest request) {
22 request.outputStream.close(); 22 request.outputStream.close();
23 }; 23 };
24 conn.onResponse = (HttpClientResponse response) { 24 conn.onResponse = (HttpClientResponse response) {
25 count++; 25 response.inputStream.onClosed = () {
26 if (count == totalConnections) { 26 count++;
27 client.shutdown(); 27 if (count == totalConnections) {
28 server.close(); 28 client.shutdown();
29 } 29 server.close();
30 }
31 };
30 }; 32 };
31 } 33 }
32 } 34 }
33 35
34 36
35 void test2(int totalConnections) { 37 void test2(int totalConnections) {
36 // Server which responds without waiting for request body. 38 // Server which responds without waiting for request body.
37 HttpServer server = new HttpServer(); 39 HttpServer server = new HttpServer();
38 server.listen("127.0.0.1", 0, backlog: totalConnections); 40 server.listen("127.0.0.1", 0, backlog: totalConnections);
39 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { 41 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) {
40 response.outputStream.writeString("!dlrow ,olleH"); 42 response.outputStream.writeString("!dlrow ,olleH");
41 response.outputStream.close(); 43 response.outputStream.close();
42 }; 44 };
43 45
44 int count = 0; 46 int count = 0;
45 HttpClient client = new HttpClient(); 47 HttpClient client = new HttpClient();
46 for (int i = 0; i < totalConnections; i++) { 48 for (int i = 0; i < totalConnections; i++) {
47 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); 49 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/");
48 conn.onRequest = (HttpClientRequest request) { 50 conn.onRequest = (HttpClientRequest request) {
49 request.contentLength = -1; 51 request.contentLength = -1;
50 request.outputStream.writeString("Hello, world!"); 52 request.outputStream.writeString("Hello, world!");
51 request.outputStream.close(); 53 request.outputStream.close();
52 }; 54 };
53 conn.onResponse = (HttpClientResponse response) { 55 conn.onResponse = (HttpClientResponse response) {
54 count++; 56 response.inputStream.onData = response.inputStream.read;
55 if (count == totalConnections) { 57 response.inputStream.onClosed = () {
56 client.shutdown(); 58 count++;
57 server.close(); 59 if (count == totalConnections) {
58 } 60 client.shutdown();
61 server.close();
62 }
63 };
59 }; 64 };
60 } 65 }
61 } 66 }
62 67
63 68
64 void test3(int totalConnections) { 69 void test3(int totalConnections) {
65 // Server which responds when request body has been received. 70 // Server which responds when request body has been received.
66 HttpServer server = new HttpServer(); 71 HttpServer server = new HttpServer();
67 server.listen("127.0.0.1", 0, backlog: totalConnections); 72 server.listen("127.0.0.1", 0, backlog: totalConnections);
68 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { 73 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) {
69 request.inputStream.onData = () { 74 request.inputStream.onData = () {
70 request.inputStream.read(); 75 request.inputStream.read();
71 }; 76 };
72 request.inputStream.onClosed = () { 77 request.inputStream.onClosed = () {
73 response.outputStream.writeString("!dlrow ,olleH"); 78 response.outputStream.writeString("!dlrow ,olleH");
74 response.outputStream.close(); 79 response.outputStream.close();
75 }; 80 };
76 }; 81 };
77 82
78 int count = 0; 83 int count = 0;
79 HttpClient client = new HttpClient(); 84 HttpClient client = new HttpClient();
80 for (int i = 0; i < totalConnections; i++) { 85 for (int i = 0; i < totalConnections; i++) {
81 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); 86 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/");
82 conn.onRequest = (HttpClientRequest request) { 87 conn.onRequest = (HttpClientRequest request) {
83 request.contentLength = -1; 88 request.contentLength = -1;
84 request.outputStream.writeString("Hello, world!"); 89 request.outputStream.writeString("Hello, world!");
85 request.outputStream.close(); 90 request.outputStream.close();
86 }; 91 };
87 conn.onResponse = (HttpClientResponse response) { 92 conn.onResponse = (HttpClientResponse response) {
88 count++; 93 response.inputStream.onData = response.inputStream.read;
89 if (count == totalConnections) { 94 response.inputStream.onClosed = () {
90 client.shutdown(); 95 count++;
91 server.close(); 96 if (count == totalConnections) {
92 } 97 client.shutdown();
98 server.close();
99 }
100 };
93 }; 101 };
94 } 102 }
95 } 103 }
96 104
97 105
98 void test4() { 106 void test4() {
99 var server = new HttpServer(); 107 var server = new HttpServer();
100 server.listen("127.0.0.1", 0); 108 server.listen("127.0.0.1", 0);
101 server.defaultRequestHandler = (var request, var response) { 109 server.defaultRequestHandler = (var request, var response) {
102 request.inputStream.onClosed = () { 110 request.inputStream.onClosed = () {
103 new Timer.repeating(100, (timer) { 111 new Timer.repeating(100, (timer) {
104 if (server.connectionsInfo().total == 0) { 112 if (server.connectionsInfo().total == 0) {
105 server.close(); 113 server.close();
106 timer.cancel(); 114 timer.cancel();
107 } 115 }
108 }); 116 });
109 response.outputStream.close(); 117 response.outputStream.close();
110 }; 118 };
111 }; 119 };
112 120
113 var client= new HttpClient(); 121 var client= new HttpClient();
114 var conn = client.get("127.0.0.1", server.port, "/"); 122 var conn = client.get("127.0.0.1", server.port, "/");
115 conn.onResponse = (var response) { 123 conn.onResponse = (var response) {
124 response.inputStream.onData = response.inputStream.read;
116 response.inputStream.onClosed = () { 125 response.inputStream.onClosed = () {
117 client.shutdown(); 126 client.shutdown();
118 }; 127 };
119 }; 128 };
120 } 129 }
121 130
122 131
123 void test5(int totalConnections) { 132 void test5(int totalConnections) {
124 var server = new HttpServer(); 133 var server = new HttpServer();
125 server.listen("127.0.0.1", 0, backlog: totalConnections); 134 server.listen("127.0.0.1", 0, backlog: totalConnections);
126 server.defaultRequestHandler = (var request, var response) { 135 server.defaultRequestHandler = (var request, var response) {
127 request.inputStream.onClosed = () { 136 request.inputStream.onClosed = () {
128 response.outputStream.close(); 137 response.outputStream.close();
129 }; 138 };
130 }; 139 };
131 server.onError = (e) => { }; 140 server.onError = (e) => { };
132 141
133 // Create a number of client requests and keep then active. Then 142 // Create a number of client requests and keep then active. Then
134 // close the client and wait for the server to lose all active 143 // close the client and wait for the server to lose all active
135 // connections. 144 // connections.
136 var client= new HttpClient(); 145 var client= new HttpClient();
137 for (int i = 0; i < totalConnections; i++) { 146 for (int i = 0; i < totalConnections; i++) {
138 var conn = client.post("127.0.0.1", server.port, "/"); 147 var conn = client.post("127.0.0.1", server.port, "/");
139 conn.onRequest = (req) { req.outputStream.write([0]); }; 148 conn.onRequest = (req) { req.outputStream.write([0]); };
149 conn.onError = (e) => Expect.isTrue(e is HttpException);
140 } 150 }
141 bool clientClosed = false; 151 bool clientClosed = false;
142 new Timer.repeating(100, (timer) { 152 new Timer.repeating(100, (timer) {
143 if (!clientClosed) { 153 if (!clientClosed) {
144 if (server.connectionsInfo().total == totalConnections) { 154 if (server.connectionsInfo().total == totalConnections) {
145 clientClosed = true; 155 clientClosed = true;
146 client.shutdown(); 156 client.shutdown(force: true);
147 } 157 }
148 } else { 158 } else {
149 if (server.connectionsInfo().total == 0) { 159 if (server.connectionsInfo().total == 0) {
150 server.close(); 160 server.close();
151 timer.cancel(); 161 timer.cancel();
152 } 162 }
153 } 163 }
154 }); 164 });
155 } 165 }
156 166
157 167
158 void main() { 168 void main() {
159 test1(1); 169 test1(1);
160 test1(10); 170 test1(10);
161 test2(1); 171 test2(1);
162 test2(10); 172 test2(10);
163 test3(1); 173 test3(1);
164 test3(10); 174 test3(10);
165 test4(); 175 test4();
166 test5(1); 176 test5(1);
167 test5(10); 177 test5(10);
168 } 178 }
OLDNEW
« sdk/lib/io/http.dart ('K') | « tests/standalone/io/http_session_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698