| 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 // VMOptions= | 5 // VMOptions= | 
| 6 // VMOptions=--short_socket_read | 6 // VMOptions=--short_socket_read | 
| 7 // VMOptions=--short_socket_write | 7 // VMOptions=--short_socket_write | 
| 8 // VMOptions=--short_socket_read --short_socket_write | 8 // VMOptions=--short_socket_read --short_socket_write | 
| 9 | 9 | 
| 10 import "package:expect/expect.dart"; | 10 import "package:expect/expect.dart"; | 
| 11 import "dart:async"; | 11 import "dart:async"; | 
| 12 import "dart:io"; | 12 import "dart:io"; | 
| 13 | 13 | 
| 14 void test1(int totalConnections) { | 14 void test1(int totalConnections) { | 
| 15   // Server which just closes immediately. | 15   // Server which just closes immediately. | 
| 16   HttpServer.bind().then((server) { | 16   HttpServer.bind("127.0.0.1", 0).then((server) { | 
| 17     server.listen((HttpRequest request) { | 17     server.listen((HttpRequest request) { | 
| 18       request.response.close(); | 18       request.response.close(); | 
| 19     }); | 19     }); | 
| 20 | 20 | 
| 21     int count = 0; | 21     int count = 0; | 
| 22     HttpClient client = new HttpClient(); | 22     HttpClient client = new HttpClient(); | 
| 23     for (int i = 0; i < totalConnections; i++) { | 23     for (int i = 0; i < totalConnections; i++) { | 
| 24       client.get("127.0.0.1", server.port, "/") | 24       client.get("127.0.0.1", server.port, "/") | 
| 25         .then((HttpClientRequest request) => request.close()) | 25         .then((HttpClientRequest request) => request.close()) | 
| 26         .then((HttpClientResponse response) { | 26         .then((HttpClientResponse response) { | 
| 27           response.listen((_) {}, onDone: () { | 27           response.listen((_) {}, onDone: () { | 
| 28             count++; | 28             count++; | 
| 29             if (count == totalConnections) { | 29             if (count == totalConnections) { | 
| 30               client.close(); | 30               client.close(); | 
| 31               server.close(); | 31               server.close(); | 
| 32             } | 32             } | 
| 33           }); | 33           }); | 
| 34         }); | 34         }); | 
| 35     } | 35     } | 
| 36   }); | 36   }); | 
| 37 } | 37 } | 
| 38 | 38 | 
| 39 | 39 | 
| 40 void test2(int totalConnections, int outputStreamWrites) { | 40 void test2(int totalConnections, int outputStreamWrites) { | 
| 41   // Server which responds without waiting for request body. | 41   // Server which responds without waiting for request body. | 
| 42   HttpServer.bind().then((server) { | 42   HttpServer.bind("127.0.0.1", 0).then((server) { | 
| 43     server.listen((HttpRequest request) { | 43     server.listen((HttpRequest request) { | 
| 44       request.response.write("!dlrow ,olleH"); | 44       request.response.write("!dlrow ,olleH"); | 
| 45       request.response.close(); | 45       request.response.close(); | 
| 46     }); | 46     }); | 
| 47 | 47 | 
| 48     int count = 0; | 48     int count = 0; | 
| 49     HttpClient client = new HttpClient(); | 49     HttpClient client = new HttpClient(); | 
| 50     for (int i = 0; i < totalConnections; i++) { | 50     for (int i = 0; i < totalConnections; i++) { | 
| 51       client.get("127.0.0.1", server.port, "/") | 51       client.get("127.0.0.1", server.port, "/") | 
| 52         .then((HttpClientRequest request) { | 52         .then((HttpClientRequest request) { | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 76             server.close(); | 76             server.close(); | 
| 77           } | 77           } | 
| 78         }); | 78         }); | 
| 79     } | 79     } | 
| 80   }); | 80   }); | 
| 81 } | 81 } | 
| 82 | 82 | 
| 83 | 83 | 
| 84 void test3(int totalConnections) { | 84 void test3(int totalConnections) { | 
| 85   // Server which responds when request body has been received. | 85   // Server which responds when request body has been received. | 
| 86   HttpServer.bind().then((server) { | 86   HttpServer.bind("127.0.0.1", 0).then((server) { | 
| 87 | 87 | 
| 88   server.listen((HttpRequest request) { | 88   server.listen((HttpRequest request) { | 
| 89     request.listen((_) {}, onDone: () { | 89     request.listen((_) {}, onDone: () { | 
| 90       request.response.write("!dlrow ,olleH"); | 90       request.response.write("!dlrow ,olleH"); | 
| 91       request.response.close(); | 91       request.response.close(); | 
| 92     }); | 92     }); | 
| 93   }); | 93   }); | 
| 94 | 94 | 
| 95   int count = 0; | 95   int count = 0; | 
| 96   HttpClient client = new HttpClient(); | 96   HttpClient client = new HttpClient(); | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 110           } | 110           } | 
| 111         }); | 111         }); | 
| 112       }); | 112       }); | 
| 113   } | 113   } | 
| 114 | 114 | 
| 115   }); | 115   }); | 
| 116 } | 116 } | 
| 117 | 117 | 
| 118 | 118 | 
| 119 void test4() { | 119 void test4() { | 
| 120   HttpServer.bind().then((server) { | 120   HttpServer.bind("127.0.0.1", 0).then((server) { | 
| 121 | 121 | 
| 122   server.listen((var request) { | 122   server.listen((var request) { | 
| 123     request.listen((_) {}, onDone: () { | 123     request.listen((_) {}, onDone: () { | 
| 124       new Timer.periodic(new Duration(milliseconds: 100), (timer) { | 124       new Timer.periodic(new Duration(milliseconds: 100), (timer) { | 
| 125         if (server.connectionsInfo().total == 0) { | 125         if (server.connectionsInfo().total == 0) { | 
| 126           server.close(); | 126           server.close(); | 
| 127           timer.cancel(); | 127           timer.cancel(); | 
| 128         } | 128         } | 
| 129       }); | 129       }); | 
| 130       request.response.close(); | 130       request.response.close(); | 
| 131     }); | 131     }); | 
| 132   }); | 132   }); | 
| 133 | 133 | 
| 134   var client= new HttpClient(); | 134   var client= new HttpClient(); | 
| 135   client.get("127.0.0.1", server.port, "/") | 135   client.get("127.0.0.1", server.port, "/") | 
| 136     .then((request) => request.close()) | 136     .then((request) => request.close()) | 
| 137     .then((response) { | 137     .then((response) { | 
| 138       response.listen((_) {}, onDone: () { | 138       response.listen((_) {}, onDone: () { | 
| 139         client.close(); | 139         client.close(); | 
| 140       }); | 140       }); | 
| 141     }); | 141     }); | 
| 142 | 142 | 
| 143   }); | 143   }); | 
| 144 } | 144 } | 
| 145 | 145 | 
| 146 | 146 | 
| 147 void test5(int totalConnections) { | 147 void test5(int totalConnections) { | 
| 148   HttpServer.bind().then((server) { | 148   HttpServer.bind("127.0.0.1", 0).then((server) { | 
| 149     server.listen( | 149     server.listen( | 
| 150         (request) { | 150         (request) { | 
| 151           request.listen( | 151           request.listen( | 
| 152               (_) { }, | 152               (_) { }, | 
| 153               onDone: () { | 153               onDone: () { | 
| 154                 request.response.close(); | 154                 request.response.close(); | 
| 155                 request.response.done.catchError((e) {}); | 155                 request.response.done.catchError((e) {}); | 
| 156               }, | 156               }, | 
| 157               onError: (error) { }); | 157               onError: (error) { }); | 
| 158         }, | 158         }, | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 198   test1(10); | 198   test1(10); | 
| 199   test2(1, 10); | 199   test2(1, 10); | 
| 200   test2(10, 10); | 200   test2(10, 10); | 
| 201   test2(10, 1000); | 201   test2(10, 1000); | 
| 202   test3(1); | 202   test3(1); | 
| 203   test3(10); | 203   test3(10); | 
| 204   test4(); | 204   test4(); | 
| 205   test5(1); | 205   test5(1); | 
| 206   test5(10); | 206   test5(10); | 
| 207 } | 207 } | 
| OLD | NEW | 
|---|