Description: Cherokee is a flexible, very fast, lightweight Web server. It is implemented entirely in C, and has no dependencies beyond a standard C library. It is embeddable and extensible with plug-ins. It supports on-the-fly configuration by reading files or strings, TLS/SSL (via GNUTLS or OpenSSL), virtual hosts, authentication, cache friendly features, PHP, custom error management, and much more.
Keywords: cherokee web server httpd http

## Index → Development info

## Development: Quality Assurance

Cherokee has an automated battery of scripts intended to prevent regressions.

You should run all the QA tests before whenever you implement changes to the code base. Not only will this catch most simple errors and prevent regressions from appearing. It will also help you a lot in your development process.

Everything is located under the `/qa` directory, so have a look there. This will display all the parameters that you can use with Cherokee’s QA test suit:

       cd qa
       ./run-tests.py --help

You can use it to run all the tests, or the specific ones you want.

       ./run-tests.py

Not only that. The full QA bench can be run through a Cherokee proxy server. This is something implemented in order to test the handler_proxy module when it was incorporated to Cherokee’s code base.

The idea is pretty simple, and the process straightforward. We tell the QA bench to run through a proxy located in localhost:2222, for instance. We also tell it to wait until we hit enter (-d1) to start executing the lot:

       cd qa
       ./run-tests.py -Plocalhost:2222 -d1

As you’ll see, it will generate a configuration file for us to launch the proxy server:

      Server
             PID: 29909
            Path: ../cherokee/cherokee-worker
            Mods: ../cherokee/.libs/
            Deps: ../cherokee/
           Panic: ../cherokee/cherokee-panic
      Proxy conf: /tmp/tmprV6k4Hcherokee_proxy_cfg

At this point, we only have to open a new terminal, launch the Cherokee proxy server and hit enter to unlock the tester side of the QA bench:

        cherokee -C /tmp/tmprV6k4Hcherokee_proxy_cfg

Almost every single QA test can be run through the proxy server. There are a few exceptions though. Tests involving the X-Real-IP header will be skipped, for example. It is not a big deal anyway, those are around 5 o 6 test out of almost 250.