                 * Regression testing for HAProxy with varnishtest *


This little README file is about how to compile and run varnishtest test case files (VTC files) to test HAProxy for any regression.

To do so, you will have to compile varnishtest program sources which comes with
Varnish cache application. varnishtest is a very useful program which has been
developed to test Varnish cache application. varnishtest has been modified in
collaboration with Varnish cache conceptor Poul-Henning Kamp to support HAProxy in
addition to Varnish cache.


* varnishtest compilation *

  - Clone recent Varnish cache sources which may be found in this GitHub repository
    https://github.com/varnishcache/varnish-cache:

    $ git clone https://github.com/varnishcache/varnish-cache

  - Compile Varnish cache sources:

    $ cd varnish-cache && ./autogen.sh && ./configure && make

  Then varnishtest program may be found in bin/varnishtest directory.
  VTC files for Varnish cache may be found in bin/varnishtest/tests directory.
  The Varnish cache manuals are located in 'man' directory. You will have to
  have a look at varnishtest(7) and vtc(7) manuals.

  Some information may also be found in doc/regression-testing.txt in HAProxy
  sources.


* varnishtest execution *

  You must set HAPROXY_PROGRAM environment variable to give the location
  of the HAProxy program to test to varnishtest:

    $ HAPROXY_PROGRAM=<my haproxy program> varnishtest ...

  The HAProxy VTC files found in HAProxy sources may be run with the reg-tests
  Makefile target. You must set the VARNISHTEST_PROGRAM environment variable to
  give the location of the varnishtest program which has been previously compiled.

    $ VARNISHTEST_PROGRAM=<my varnishtest program> HAPROXY_PROGRAM=<my haproxy program> make reg-tests

  Note that varnishtest is run with -t5 and -l option. -l option is to keep
  keep varnishtest temporary directory in case of failed test cases. core files
  may be found in this directory (if enabled by ulimit).


* varnishtest patches for HAProxy VTC files *

  When producing a patch to add a VCT regression testing file to reg-tests directory,
  please follow these simple rules:

    - Add the commit number on the first line.
    - Then, copy and paste the commit log.
    - If your VTC file needs others files, use the same basename as that of the VTC
      file.
    - Put these files in a directory with the same name as the code area concerned
      by the bug ('peers', 'lua', 'acl' etc).


