Examples
The /examples/spray-can/ directory of the spray repository contains a number of example projects for spray-can, which are described here.
simple-http-client
This example demonstrates how you can use the three different client-side API levels for performing a simple request/response cycle.
Follow these steps to run it on your machine:
Clone the spray repository:
git clone git://github.com/spray/spray.git
Change into the base directory:
cd spray
Run SBT:
sbt "project simple-http-client" run
(If this doesn’t work for you your SBT runner cannot deal with grouped arguments. In this case you’ll have to run the commands
project simple-http-client
andrun
sequentially “inside” of SBT.)
simple-http-server
This examples implements a very simple web-site built with the spray-can HTTP Server. It shows off various features like streaming, stats support and timeout handling.
Follow these steps to run it on your machine:
Clone the spray repository:
git clone git://github.com/spray/spray.git
Change into the base directory:
cd spray
Run SBT:
sbt "project simple-http-server" run
(If this doesn’t work for you your SBT runner cannot deal with grouped arguments. In this case you’ll have to run the commands
project simple-http-server
andrun
sequentially “inside” of SBT.)Browse to http://127.0.0.1:8080/
Alternatively you can access the service with
curl
:curl -v 127.0.0.1:8080/ping
Stop the service with:
curl -v 127.0.0.1:8080/stop
server-benchmark
This example implements a very simple “ping/pong” server for benchmarking purposes, that mirrors the “JSON serialization” test setup from the techempower benchmark.
Follow these steps to run it on your machine:
Clone the spray repository:
git clone git://github.com/spray/spray.git
Change into the base directory:
cd spray
Run SBT:
sbt "project server-benchmark" run
(If this doesn’t work for you your SBT runner cannot deal with grouped arguments. In this case you’ll have to run the commands
project server-benchmark
andrun
sequentially “inside” of SBT.)Use a load-generation tool like ab, weighttp, wrk or the like to fire test requests, e.g.:
wrk -t4 -c100 -d10 http://127.0.0.1:8080/ping
If you start the server with re-start
rather than run
it will run in a forked JVM that has -verbose:gc
and
-XX:+PrintCompilation
flags set, so you can see how often GC is performed and whether the JIT compiler is “done”
with compiling all the hot spots.