Curl-loader is an open-source tool written in C-language, simulating application load and application behavior of thousands and tens of thousand 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 tool is useful for performance loading of various application services, for testing web and ftp servers and traffic generation. Activities of each virtual client are logged and collected statistics includes information about resolving, connection establishment, sending of requests, receiving responses, headers and data received/sent, errors from network, TLS/SSL and application (HTTP, FTP) level events and errors.

Virtual clients are grouped together to the so-called batches of clients, performing the same sort of activities, like:

- authentication login;

- user activity simulation by fetching several URLs with configurable timeouts in between;

- logoff.

The tool can be easily extended to generate sftp, telnet, tftp, ldap, ssh, scp etc other application protocols, supported by the great libcurl library.

- Virtual clients number. The tool runs, depending on your HW and scenario, 2500-100 000 and more simultaneously loading clients, all from a single curl-loader process. Actual number of clients may be several times higher, and it is limited mainly by memory. Each client loads from its “personal” source IP-address, 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.

Key Features of Curl-loader:

- 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 and PUT, 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 supported;

- 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. The logfile is automatically rewinded, when reaching configurable size preventing disk crashes;

- Logging of responses (headers and bodies) to files.

- Pre-cooked batch configuration (test plan) examples;

- Load Status GUI at console and with output to file;

- Status and statistics for each virtual client, which are logged to file;

Download Free Curl-loader

Post By Gishore J Kallarackal (2,121 Posts)

Gishore J Kallarackal is the founder of techgurulive. The purpose of this site is to share information about free resources that techies can use for reference. You can follow me on the social web, subscribe to the RSS Feed or sign up for the email newsletter for your daily dose of tech tips & tutorials. You can content me via @twitter or e-mail.

Website: → Techgurulive