GithubHelp home page GithubHelp logo

jstop / wind.tunnel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from firelyteam/wind.tunnel

0.0 0.0 0.0 25.5 MB

FHIR server performance testing

License: BSD 3-Clause "New" or "Revised" License

Python 81.82% Shell 16.64% Dockerfile 1.54%

wind.tunnel's Introduction

Windtunnel (beta)

Performance & stress testing for your FHIR server.

This is the first release to gauge the community interest and we'd love to hear your feedback on it. For feedback and known issues, see here.

Setup

First, prepare the server under test with sample data. Either upload all Synthea bundles yourself or do:

  1. Zip up all of the resource to upload with atool: apack upload.zip performance-data/
  2. Upload zip with Vonkloader: vonkloader -file:upload.zip -collectionHandling:Split -server:http://<my server>

Install Python dependencies

  1. Install Python dependencies using pip (if you don't have it, install first): pip install influxdb jsonpath_rw statistics psutil pathlib fhirclient numpy monotonic

Extra - own private dashboard

It's also possible to setup your own, private dashboard by hosting your own InfluxDB+Grafana and importing the dashboard used.

Running performance tests

Run start_performance_test.sh - parameters supported are:

  • --backend (required): backend in use by target host (mongo, postgres, memory, sqlite, or sqlserver)
  • --host (optional): system under test (eg. http://localhost)
  • --influxdb (required): InfluxDB intake to sends results to (eg. http://grafana-locust-firely.westeurope.cloudapp.azure.com:9086)
  • --duration (optional): customise how long to run each test for. By default, each test is run for 5mins. The format is that of the --run-time option of Locust itself, e.g. like '1h30m'
# example: run performance tests against localhost:4080
./start_performance_test.sh --backend mongo --host http://localhost:4080 --influxdb http://grafana-locust-firely.westeurope.cloudapp.azure.com:9086

Viewing performance test results

Results are available on online:

  1. Go to inspect-particular-test-run
  2. In the Select run dropdown, select your particular test run
  3. Copy the year+time timestamp and paste it into the From: field in the time range top-right
  4. Paste the timestamp plus two hours into the To: field

See gif of the process.

Aggregated results are available at overview-of-all-runs-results.

Running stress tests

Stress testing is different from performance testing: whereas performance testing will help you see how better (or worse) you're doing in different scenarios, stress testing will push your configuration to the max to see what you can handle.

Run start_stress_test.sh - parameters supported are:

  • --host (required): system under test (eg. http://localhost)
  • --ignore-lock (optional): allow stress test to run even while another performance or stress test is running
 ./start_stress_test.sh --host http://localhost

Viewing stress test results

Open up the results on http://localhost:8089.

Built With

  • Python
  • Locust - An open source load testing tool
  • InfluxDB - Scalable datastore for metrics, events, and real-time analytics
  • Grafana - The tool for beautiful monitoring and metric analytics & dashboards for Graphite, InfluxDB & Prometheus & More

Authors

  • Lilian Minne
  • Vadim Peretokin

License

BSD 3-clause.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.