Giter VIP home page Giter VIP logo

gatling's Introduction

Gatling Build Status Maven Central

What is Gatling ?

Gatling is a load test tool. It officially supports HTTP, WebSocket, Server-Sent-Events and JMS.

Motivation

  • Finding fancy GUIs not that convenient for describing load tests, what you want is a friendly expressive DSL?
  • Wanting something more convenient than huge XML dumps to store in your source version control system?
  • Fed up with having to host a farm of injecting servers because your tool uses blocking IO and one-thread-per-user architecture?

Gatling is for you!

Underlying technologies

Gatling is developed in Scala and built upon:

  • Netty for non blocking HTTP
  • Akka for virtual users orchestration

Questions, help?

Read the documentation.

Join the Gatling Community Forum.

Found a real bug? Raise an issue.

Partners

Takima     Highsoft AS    

gatling's People

Contributors

amerousful avatar blemale avatar ccedric avatar gatling-ci avatar gemiusz avatar github-brice-jaglin avatar gplassard avatar guilgaly avatar henri-tremblay avatar hugocrd avatar isammoc avatar jamespic avatar lloydwes avatar mushketyk avatar neoware avatar nire avatar notdryft avatar nremond avatar pdalpra avatar phisgr avatar pwielgolaski avatar rsertelon avatar scala-steward-gatling[bot] avatar siman avatar skuenzli avatar slandelle avatar stb13579 avatar tekul avatar tpetillot avatar ybenkhaled avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gatling's Issues

DSL: Easily create a http request

Requests could be either POST or GET requests.

For both types of requests, there could be parameters.

For POST requests, also refer to issue #14

POST JSON

We need to provide users with the ability to post JSON. Thay could simulate access to Web Services and/or Ajax calls etc.

Graphs - set step automatically for x axis

With a long scenario executing, there will also be a lot of different times showed on the X axis of the graphs.

When there are too much of these, they overlap and it is impossible to read the values.

Implement feeders

We need a way to provide context data from external feeds, like a file containing users and passwords.

Time Scale on Graphs

As we only log requests, times are discrete. The problem is that on the graph, the time axis is not normalized, therefore, all values are equally distributed even if the intervals between them are not the same.

pause() should have two definitions

When we call pause in the scenario, we should be able to specify either:

  • a value in seconds => pause(3) will make a pause of 3 seconds
  • a value followed by its TimeUnit => pause (3000, TimeUnit.SECONDS) will do the same as above

Implements a Stat Viewer

We need to produce charts. Probably use http://www.highcharts.com/demo/line-ajax

  1. At first, we can have static HTML pages generated from the raw data and accessing stats files.
  2. Once we can log and compute stats into a database, we'll need a webapp (maybe use an embedded jetty or tomcat)

Required pages :

global :
*) number of active sessions (total and per scenario) timed chart
*) number of requests per second (success and failures) timed chart --> count requests in 1 sec windows

per request name :
*) min, max, medium, standard deviation, 90% range
*) dispersion chart

Request body support

If the body is static (like file upload), make use of AHC zero copy capability.

If the body is dynamic, make use of a templating engine like freemarker.

Implement configuration mechanism

Lots of things should be configurable: Akka, AHC, stat handlers implementations, database, etc..

Have a look at configgy used by Akka.

Make JQuery and HighCharts files local

For development purpose, JQuery and Highcharts files are accessed via internet.

For users to be able to use Gatling offline, these files need to be in the package.

POST XML

As well as JSON, we need to provide support for XML requests

Save scenario execution data to file

  • Date du run -- done
  • timestamp de l'envoi de la requete -- done
  • temps de réponse -- done
  • nom de scnério -- done
  • nom de la requete -- done
  • userId -- done
  • OK/KO + message -- new issue #5

Binaries packaging

Decide what kind of packaging we'd provide : a zip bundle with predefined folders (lib, conf, scenario, etc...), a assembly with all the modules and dependencies, etc...

Precompile templates

We can precompile templates with a maven plugin.

For now, there is a problem as it uses a Servlet dependant Context. (see comment in pom of gatling-stats)

Feeder as a queue

Make feeder as a queue and store its content in the context when a request asks for it.

Implement a stat computer

We need a module to compute stats from raw data, like nb of transaction per sec.

  1. At first, we probably just need a simple implementation that consumes raw files and generate as many files as graphs.

  2. In the long term, we'll need a clean implementation that logs and computes stats in a database.

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.