Jump to content

curl-loader

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
curl-loader
Developer(s)curl-loader, open-source project
Stable release
0.56 / January 10, 2012; 12 years ago (2012-01-10)
Repository
Operating systemLinux
TypeSoftware performance testing
LicenseGPLv2
Websitecurl-loader.sourceforge.net

curl-loader is an open-source software performance testing tool written in the C programming language.

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 is using real C-written 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.

The major features are:

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

  • 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 project 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 normally works in pair with nginx or Apache web server as the server-side.

The tool is developed and maintained by Dr. Robert Iakobashvili and Michael Moser.

See also

References

  • "curl-loader launched". Linux Weekly News. 2007-07-16. Retrieved August 7, 2007.