Skip to content

zunnigare/ammo

 
 

Repository files navigation

Ammo · Under Development GitHub GitHub package.json version GitHub last commit

Ammo's logo

Ammo is an open-source tool that converts HTTP calls into ready-to-use stress engines' scripts (like Gatling). It handles the conversion from HTTP request / response to Scala / Gatling script. The goal is to make stress testing easier and faster for everyone.

Ammo is built on top of Javascript / Typescript, Node, Express, Socket.io, React, Material-UI and uses Cypress, Jest & Storybook for its tests.

Introduction

While there are excellent stress test engines out there (Gatling or Neoload for instance), their usage is oftentimes cumbersome, making them completely out-of-reach for small businesses and painful to use for the bigger ones.

Ammo aims at providing a very simple tool that will capture a test session and automatically convert it to Gatling scripts, removing the need for manual scripting. And even though stress test engines already provide recorders, Ammo offers a better interface, better automation and engine-agnostic tooling to achieve the same goal more easily.

Architecture

Ammo itself consists of 2 things :

  • An API that receives HTTP requests & responses (which we call connector requests) in the /backend folder
  • A web application that receives the connector requests (forwarded by the API) and converts them into scripts in the (in the /frontend folder).

For Ammo to be useful, first you need to send the connector requests to its API, that is, you need to plug a listener to your piece of software to track every HTTP call (ie, you need to write what we call a connector). Once you've intercepted a call, you can send it to Ammo's API.

Ammo's architecture

This leaves you with the opportunity to intercept calls in any application (whether it is a website or a software etc.). We provide a web connector that covers most needs regarding websites & web applications, but you could write your own connector. Ammo's API is an agnostic entry point.

You can find the official Ammo web connector here. Please refer to its README as to how to use it.

Scope

For the time being Ammo only generates Gatling scripts. Also, we chose the Cypress realworld app (that we forked here) for the scope of Ammo's capabilites. That is, our goal is to be able to run a complete recording of this application (we basically run all the Cypress tests and make sure they are correctly scripted on Ammo's end).

If you want to add a new engine export to Ammo, or want to add use-cases that are not featured in the Cypress real world app, feel free to contribute. We chose this app as a starting point but obviously it does not contain every possible HTTP interaction there is.

Installing

Ammo can be cloned and installed just by running:

npm install

And then started with:

npm start

Ammo should open at http://localhost:3000.

Remember, as stated above, you might also need to use the web connector to be started. If you don't, you can still test Ammo by using Postman. There is a collection of Postman calls in the backend/postman folder.

Useful Resources

Gatling

Neoload

Cypress realworld app

Contributors

Axel Chandelier
Axel Chandelier

Gaël Ferrand
Gaël Ferrand

License

MIT · Developped by Othrys

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 94.3%
  • JavaScript 4.8%
  • Other 0.9%