- Dart:Scalable Application Development
- Davy Mitchell Sergey Akopkokhyants Ivo Balbaert
- 209字
- 2021-07-09 18:56:24
Load testing revisited
The initial load testing application was rather limited, and though of use, it did not give a realistic picture with so many requests thrown at once at the server application without waiting for a response.
Updating the load tester
The new version of the load testing application will make a single HTTP call and await the result before calling the next. This takes place in the main.dart
source file. Note that the main function itself in now marked as async
. The await
command is used in the calling loop of the main
function, as follows:
main() async { print("Starting..."); var url = "http://127.0.0.1:8080/index.html"; var hc = new HttpClient(); var watch = new Stopwatch(); int attemptedRequests = 200; print("Starting testing..."); watch.start(); for (int i = 0; i < attemptedRequests; i++) { await callWebPage(hc, url, i, watch); } watch.stop(); print("${watch.elapsed.inMilliseconds}"); }
The callWebPage
method needs to be marked as async
too, as await
will be used twice:
callWebPage(HttpClient webClient, String targetURL, int requestNumber, Stopwatch watch) async { HttpClientRequest request; HttpClientResponse response; request = await webClient.getUrl(Uri.parse(targetURL)); response = await request.close(); print("$requestNumber, ${response.statusCode}, ${watch.elapsed.inMilliseconds}"); }
The two operations of unknown duration, the URL fetch and closing of the response, are waited upon before the output to the screen is processed.
推薦閱讀
- Oracle WebLogic Server 12c:First Look
- 實用防銹油配方與制備200例
- Mastering Swift 2
- INSTANT Sinatra Starter
- 新一代SDN:VMware NSX 網絡原理與實踐
- TMS320LF240x芯片原理、設計及應用
- Getting Started with Python and Raspberry Pi
- Microsoft HoloLens By Example
- Java高級程序設計
- Python實戰指南:手把手教你掌握300個精彩案例
- Mastering Vim
- Building Scalable Apps with Redis and Node.js
- Getting Started with Backbone Marionette
- 軟件定義存儲:原理、實踐與生態
- MongoDB進階與實戰:微服務整合、性能優化、架構管理