This will leave you with testkey.pem and testcertificate.pem which you can use with the server.

Compiling flip_in_mem_edsm_server

These days, all of the SSL dependencies have been checked into the tree. All you need to do is:

ninja -C out/Debug flip_in_mem_edsm_server

Generating Benchmark Data

If running flip_in_mem_edsm_server in server mode, you'll want something for it to serve. The easiest way to generate that data is to launch chrome with the following command-line-flag

chrome --record-mode

Chrome will then store everything in the cache... so you'll want to go and visit whatever sites you'd like to benchmark later-- chrome will be storing that on disk as you go. Keep in mind it stores the whole shebang, including cookies, so be aware if sending these files to your colleagues!

Unfortunately, you're not done yet. We still have to dump the chrome cache files into a format that the flip_in_mem_edsm_server can read. That will require another binary, so lets build it now: As far as I know, this binary only works on Windows.

ninja -C out/Debug flip_in_mem_edsm_server

Running flip_in_mem_edsm_server

Assuming that you already have cached data from Chrome that you want to benchmark and the SSL files (from above), you'd stick all of those files into:

$CWD/GET_ (assuming that the method of the requests was GET. If you wanted responses to a request with HEAD method, then you'd stick the appropriate responses into a directory named HEAD_, etc).

You'd put the test cert and key into the $CWD/cert.pem and $CWD/key.pem, respectively.

At this point you can run the flip_in_mem_edsm_server by doing:

./out/Debug/flip_in_mem_edsm_server

By default, the server will look for key.pem and cert.pem in the current-working-directory, and will run HTTPS on port 16002, and SPDY (SSL) on port 10040.

Another common use-case would be to want to serve HTTP and SPDY (NO-SSL). To do this, find FLAGS_use_ssl = true; and change it to FLAGS_use_ssl = false; then recompile.

Yet another common use-case would be to serve files which were *not* captured by Chrome's record mode. To do this, you'll want to turn off URL encoding (or figure out how to encode your URLs..).

You can turn off encoding by finding FLAGS_need_to_encode_url = true; and changing the 'true' to 'false' and then (of course) recompiling.

The binary supports these flags:

-accept_backlog_size (The size of the TCP accept backlog) type: int32

default: 1024

-accepts_per_wake (The number of times that accept() will be called when

the alarm goes off when the accept_using_alarm flag is set to true. If

set to 0, accept() will be performed until the accept queue is completely

This should download the LATEST version of chrome, and create icons for you to run chromium against a local server in both SPDY and non-SPDY modes.

Since the server is built (by default) with SSL support turned on, SPDY-SSL and HTTPS will work with it.... HTTP will not. If you wish to benchmark HTTP, you'll need to find the FLAGS_use_ssl variable in the serve and set that to false and recompile (sorry!).