{{lowercase}} {{Short description|Open-source software performance testing tool}} {{mi|{{Notability|Products|date=February 2013}} {{update|date=May 2026}}}} {{Infobox software| name = curl-loader | screenshot = | caption = | developer = curl-loader, open-source project | latest_release_version = 0.56 | latest_release_date = {{Start date and age|2012|01|10}} | operating_system = Linux | genre = Software performance testing | license = GPLv2 | website = {{URL|https://curl-loader.sourceforge.net/}} }}

'''curl-loader''' is an open-source software performance testing tool.

This C-based tool is developed and maintained by Dr. Robert Iakobashvili and Michael Moser. == Features == curl-loader is capable of simulating application behavior of hundreds of thousands of HTTP/HTTPS and FTP/FTPS clients, each with its own source IP-address. In contrast to other tools, curl-loader uses real client protocol stacks, namely, HTTP and FTP stacks of libcurl and TLS/SSL of openSSL, and simulates user behavior with support for login and authentication flavors.

It can run up to 2,500–100,000 and more virtual loading clients from a single curl-loader process. The actual number of virtual clients may be several times higher, limited mainly by memory availability. Each virtual client loads traffic from its "personal" source IP-address, or from the "common" IP-address shared by all clients, or from IP-addresses shared by some clients where a limited set of shared IP-addresses can be used by a batch of clients.

Major features:

* Rampup of the virtual clients number at loading start in either automatic or manual mode; * IPv4 and IPv6 addresses and URIs; * HTTP 1.1. GET, POST, PUT, DELETE, HEAD including file upload operations; * HTTP user authentication login with POST or GET+POST methods. Unique configurable username and password for each virtual client as well as configurable posted string (post-forms) are the options. Another option is loading of users with credentials from a tokens text file; * HTTP POST/GET forms with up to 16 tokens filled from a tokens text file; * HTTP user logoff with POST, GET+POST, or GET (cookies); POST logoff with configurable posted string (post-forms); * HTTP multipart form data POST-ing as in RFC1867; * HTTP Web and Proxy Authentication (HTTP 401 and 407 responses) with Basic, Digest (RFC2617) and NTLM; * HTTP 3xx redirections with unlimited number of redirections; * HTTP cookies and DNS caches; * FTP passive and active, FTP upload; * Full customization of client request HTTP/FTP headers ; * Transfer limit rate for each client download or upload operation on a per url bases; * URL fetching probability; * TCP connections reuse or re-establishment on a per URL bases; * Unlimited configurable number of URLs. Mixing of HTTP, HTTPS, FTP and FTPS urls in a single batch (test plan) configuration; * Connection establishment timers for each URL; * URL completion timers monitoring and enforcement for each client; * Inter/after URL "sleeping" timers, including random timers taken from a configurable interval; * Logfile with tracing activities for each virtual client; * Logging of responses (headers and bodies) to files; * Pre-cooked batch configuration (test plan) examples; * Load Status at console and with output to file; * Status and statistics for each virtual client which are logged to file;

The goal of curl-loader is to deliver a powerful and flexible open-source software performance testing client-side solution as a real alternative to Spirent Avalanche and IXIA IxLoad. Curl-loader is normally paired with nginx or Apache web server as the server-side.

== See also == * Software performance testing * Performance Engineering * Software testing

== References == {{refbegin}} * {{cite web | work=Linux Weekly News | title=curl-loader launched | url=https://lwn.net/Articles/241866/ | date=2007-07-16 | accessdate=August 7, 2007 }} {{refend}}

== External links ==

* {{official website|https://curl-loader.sourceforge.net/}}

Category:Load testing tools