HTTEST(1) User Commands HTTEST(1)NAME
httest - test HTTP driven application
SYNOPSIS
httest [OPTIONS] scripts
DESCRIPTION
httest is a script based tool for testing and benchmarking web applications, web servers, proxy servers and web browsers. httest can emu-
late clients and servers in the same test script, very useful for testing proxys.
OPTIONS -V --version
Print version number and exit
-h --help
Display usage information (this message)
-n --suppress
do no print start and OK|FAILED
-s --silent
silent mode
-e --error
log level error
-w --warn
log level warn
-i --info
log level info
-d --debug
log level debug for script debugging
-p --debug-system
log level debug-system to log more details
-L --list-commands
List all available script commands
-C --help-command
Print help for specific command
-t --duration
Print test duration
-T --timestamp
Time stamp on every run
-S --shell
Shell mode
-S --shell
Shell mode
-D --define
Define variables
EXAMPLES
httest script.htt
httest -Ts script.htt
SCRIPTS
httest is script based. The following script examples can be but into a scripte i.e. sample.htt and can be called like
httest sample.htt
SIMPLE SCRIPT
Get a page and do expect return code 200 OK.
CLIENT
_REQ www.google.ch 80
__GET /search?q=apache HTTP/1.1
__Host: www.google.ch
__
_EXPECT headers "HTTP/1.1 200 OK"
_WAIT
END
CUT AND PAST SCRIPT
Cut and past from a HTTP stream, i.e we cut the apache host to access it in the second request.
CLIENT
_REQ www.google.ch 80
__GET /search?q=apache HTTP/1.1
__Host: www.google.ch
__
_MATCH body '<a href="http://([^/]*)/" class=l>Welcome! - The <em>Apache</em> HTTP Server Project' APACHE_HOST
_WAIT
_REQ $APACHE_HOST 80
__GET / HTTP/1.1
__Host: $APACHE_HOST
__
_WAIT
END
CLIENT SERVER SCRIPT
We can hold client and server in the same host. Actually multiple client and multiple server. Very useful to test forward or reverse prox-
ies. Or a webapplication which communicat itself with third party servers i.e. mail server.
This is a very basic selfcontained test you can run on any maschine.
CLIENT
_REQ localhost 8080
__GET /foo HTTP/1.1
__Host: localhost
__
_WAIT
END
SERVER 8080
_RES
_EXPECT "/foo"
_WAIT
__HTTP/1.1 200 OK
__Content-Length: AUTO
__
__Hello World
END
SSL SCRIPT
Of course SSL do also work with httest, just put "SSL:" before port.
CLIENT
_REQ localhost SSL:8080
__GET /foo HTTP/1.1
__Host: localhost
__
_WAIT
END
SERVER SSL:8080
_RES
_EXPECT "/foo"
_WAIT
__HTTP/1.1 200 OK
__Content-Length: AUTO
__
__Hello World
END
AUTHOR
Written by Christian Liesch
REPORTING BUGS
Report bugs to http://sourceforge.net/projects/htt
COPYRIGHT
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU-
LAR PURPOSE.
httest 2.2.6 June 2012 HTTEST(1)
Check Out this Related Man Page
Plack::Test(3pm) User Contributed Perl Documentation Plack::Test(3pm)NAME
Plack::Test - Test PSGI applications with various backends
SYNOPSIS
use Plack::Test;
# named params
test_psgi
app => sub {
my $env = shift;
return [ 200, [ 'Content-Type' => 'text/plain' ], [ "Hello World" ] ],
},
client => sub {
my $cb = shift;
my $req = HTTP::Request->new(GET => "http://localhost/hello");
my $res = $cb->($req);
like $res->content, qr/Hello World/;
};
use HTTP::Request::Common;
# positional params (app, client)
my $app = sub { return [ 200, [], [ "Hello "] ] };
test_psgi $app, sub {
my $cb = shift;
my $res = $cb->(GET "/");
is $res->content, "Hello";
};
DESCRIPTION
Plack::Test is a unified interface to test PSGI applications using HTTP::Request and HTTP::Response objects. It also allows you to run PSGI
applications in various ways. The default backend is "Plack::Test::MockHTTP", but you may also use any Plack::Handler implementation to run
live HTTP requests against at web server
FUNCTIONS
test_psgi
test_psgi $app, $client;
test_psgi app => $app, client => $client;
Runs the client test code $client against a PSGI application $app. The client callback gets one argument $cb, a callback that accepts
an "HTTP::Request" object and returns an "HTTP::Response" object.
Use HTTP::Request::Common to import shortcuts for creating requests for "GET", "POST", "DELETE", and "PUT" operations.
For your convenience, the "HTTP::Request" given to the callback automatically uses the HTTP protocol and the localhost (127.0.0.1 by
default), so the following code just works:
use HTTP::Request::Common;
test_psgi $app, sub {
my $cb = shift;
my $res = $cb->(GET "/hello");
};
Note that however, it is not a good idea to pass an arbitrary (i.e. user-input) string to "GET" or even "HTTP::Request->new" by
assuming that it always represents a path, because:
my $req = GET "//foo/bar";
would represent a request for a URL that has no scheme, has a hostname foo and a path /bar, instead of a path //foo/bar which you might
actually want.
OPTIONS
Specify the Plack::Test backend using the environment variable "PLACK_TEST_IMPL" or $Plack::Test::Impl package variable.
The available values for the backend are:
MockHTTP
(Default) Creates a PSGI env hash out of HTTP::Request object, runs the PSGI application in-process and returns HTTP::Response.
Server
Runs one of Plack::Handler backends ("Standalone" by default) and sends live HTTP requests to test.
ExternalServer
Runs tests against an external server specified in the "PLACK_TEST_EXTERNALSERVER_URI" environment variable instead of spawning the
application in a server locally.
For instance, test your application with the "HTTP::Server::ServerSimple" server backend with:
> env PLACK_TEST_IMPL=Server PLACK_SERVER=HTTP::Server::ServerSimple
prove -l t/test.t
AUTHOR
Tatsuhiko Miyagawa
perl v5.14.2 2011-09-20 Plack::Test(3pm)