Download the PHP package ehab-talaat/laravel-tornado without Composer

On this page you can find all versions of the php package ehab-talaat/laravel-tornado. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-tornado

🌪️ Laravel Tornado

HTTP stress testing for Laravel — built to feel native.

Test any endpoint directly from Artisan. Live request feed, full stats, smart body generation, auth support, multi-step sequences, and beautiful HTML reports.

PHP Laravel


Table of Contents


Installation

Laravel auto-discovers the package. No config file needed.

Requirements: PHP 8.1+, Laravel 10/11/12, Guzzle 7+


Quick Start


Commands

tornado — Stress test a single endpoint

Examples


tornado:sequence — Multi-step user flow

Examples


Options Reference

tornado options

Option Default Description
url (required) Relative /api/x or absolute https://…
--method GET HTTP method: GET, POST, PUT, PATCH, DELETE
--requests 100 Total number of requests
--concurrency 10 Simultaneous requests
--timeout 10 Per-request timeout in seconds
--header — Repeatable: --header="Key: Value"
--body — Raw JSON string for POST/PUT
--smart — Auto-generate body from validation rules
--auth — Auth driver: sanctum or passport
--export — Export format: json or html
--no-live — Skip live feed, show summary only

tornado:sequence options

Option Default Description
file (optional) Path to JSON sequence file
--flows 10 How many full user flows to simulate
--concurrency 5 Concurrent flows at a time
--export — Export each step: json or html

Features

🎯 Interactive Mode

Run php artisan tornado with no arguments and Tornado asks you everything:


🧠 Smart Mode — Auto-generate request body

Tornado reads your controller's validation rules and generates realistic fake data automatically using Faker. No need to write --body manually.

Supported validation styles:

Usage:

What Tornado generates per rule/field:

Rule / Field name Generated value
email rule fake()->safeEmail()
url rule fake()->url()
integer / numeric fake()->numberBetween(min, max)
boolean fake()->boolean()
date fake()->date()
uuid fake()->uuid()
field contains name fake()->name()
field contains password Password@123 format
field contains phone fake()->phoneNumber()
field contains address fake()->address()
field contains city fake()->city()
field contains price / amount fake()->randomFloat(2, 1, 999)
field ends with _id fake()->numberBetween(1, 100)

A fresh fake value is generated for every single request.


🔐 Auth Mode — Authenticated routes

Tornado logs in once, gets the token, and injects it into all requests automatically.

Interactive:

Direct (skip prompts):

Supported drivers:

Driver Login endpoints tried
sanctum /api/login, /login, /api/auth/login, /api/sanctum/token
passport /oauth/token, /api/oauth/token

Supported response shapes (any of these work out of the box):


📊 Export Reports

Save results for sharing or comparing over time.

Files are saved to storage/tornado/ with a timestamp:

JSON report structure:

HTML report includes:


🔗 Sequence Mode — Multi-step flows

Simulate a real user flow: login → browse → create → logout. Each step passes data to the next via extract.

JSON file format

Run it:

How extract works

Use dot-notation to pull any value from a JSON response:

Then use {token}, {user_id}, {company_id} as placeholders in any later step's URL, headers, or body:

Step-level options

Override load settings per step:

If omitted, the step inherits --flows and --concurrency from the command.

Interactive sequence


Reading the Output

Live feed

Final summary

What the metrics mean

Metric What it tells you
RPS Requests per second your server handled
P50 Half your users are faster than this
P95 95% of users are faster than this — your real-world experience
P99 Your worst-case users
Failed % High = DB overload, rate limiting, or crashes
500 errors Check storage/logs/laravel.log

Performance benchmarks

P95 response Rating
< 100ms 🟢 Excellent
100–300ms 🟡 Good
300–800ms 🟠 Needs work
> 800ms 🔴 Critical

License

MIT — Ehab Talaat


All versions of laravel-tornado with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
laravel/framework Version ^10.0|^11.0|^12.0|^13.0
guzzlehttp/guzzle Version ^7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package ehab-talaat/laravel-tornado contains the following files

Loading the files please wait ...