~ubuntu-branches/ubuntu/trusty/varnish/trusty-proposed

« back to all changes in this revision

Viewing changes to doc/sphinx/reference/varnishtest.rst

  • Committer: Package Import Robot
  • Author(s): Stig Sandbeck Mathisen, Stig Sandbeck Mathisen, Tollef Fog Heen
  • Date: 2013-05-05 15:53:14 UTC
  • mfrom: (0.1.16)
  • Revision ID: package-import@ubuntu.com-20130505155314-i99wuol99cfwzrtv
Tags: 3.0.3-1
[ Stig Sandbeck Mathisen ]
* New upstream release

[ Tollef Fog Heen ]
* Make varnishlog's and varnishncsa's init script exit with the exit
  status of status_of_proc to make them useful.  Fixes upstream trac
  #1226.

[ Stig Sandbeck Mathisen ]
* Do not rewrite /etc/default/varnish on upgrade.
  Thanks to Andreas Beckmann <anbe@debian.org> (Closes: 698577)
* Undo mangling of /etc/default/varnish that happened during lenny->squeeze
  upgrade.
  Thanks to Andreas Beckmann <anbe@debian.org> (Closes: 698577)

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
------------------------
8
8
 
9
9
:Author: Stig Sandbeck Mathisen
10
 
:Date:   2010-05-31
11
 
:Version: 1.0
 
10
:Author: Kristian Lyngstøl
 
11
:Date:   2011-11-15
 
12
:Version: 1.1
12
13
:Manual section: 1
13
14
 
14
15
 
15
16
SYNOPSIS
16
17
========
17
 
     varnishtest [-n iter] [-q] [-v] file [file ...]
 
18
 
 
19
     varnishtest [-iklLqv] [-n iter] [-D name=val] [-j jobs] [-t duration] file [file ...]
18
20
 
19
21
DESCRIPTION
20
22
===========
24
26
 
25
27
The varnishtest program, when started and given one or more script
26
28
files, can create a number of threads representing backends, some
27
 
threads representing clients, and a varnishd process.
 
29
threads representing clients, and a varnishd process. This is then used to
 
30
simulate a transaction to provoke a specific behavior.
28
31
 
29
32
The following options are available:
30
33
 
31
 
-n iter     Run iter number of iterations.
32
 
 
33
 
-q          Be quiet.
34
 
 
35
 
-v          Be verbose.
36
 
 
37
 
-t          Dunno.
38
 
 
39
 
file        File to use as a script
 
34
-D name=val      Define macro for use in scripts
 
35
 
 
36
-i               Find varnishd in build tree
 
37
 
 
38
-j jobs          Run this many tests in parallel
 
39
 
 
40
-k               Continue on test failure
 
41
 
 
42
-l               Leave /tmp/vtc.* if test fails
 
43
 
 
44
-L               Always leave /tmp/vtc.*
 
45
 
 
46
-n iterations    Run tests this many times
 
47
 
 
48
-q               Quiet mode: report only failures
 
49
 
 
50
-t duration      Time tests out after this long
 
51
 
 
52
-v               Verbose mode: always report test log
 
53
 
 
54
-h               Show help
 
55
 
 
56
file             File to use as a script
 
57
 
 
58
 
 
59
Macro definitions that can be overridden.
 
60
 
 
61
varnishd         Path to varnishd to use [varnishd]
40
62
 
41
63
 
42
64
SCRIPTS
43
65
=======
44
66
 
45
 
Example script
46
 
~~~~~~~~~~~~~~
47
 
::
48
 
 
49
 
    # Start a varnish instance called "v1"
50
 
    varnish v1 -arg "-b localhost:9080" -start
51
 
    
52
 
    # Create a server thread called "s1"
53
 
    server s1 {
54
 
        # Receive a request
55
 
        rxreq
56
 
        # Send a standard response
57
 
        txresp -hdr "Connection: close" -body "012345\n"
58
 
    }
59
 
    
60
 
    # Start the server thread
61
 
    server s1 -start
62
 
    
63
 
    # Create a client thread called "c1"
64
 
    client c1 {
65
 
        # Send a request
66
 
        txreq -url "/"
67
 
        # Wait for a response
68
 
        rxresp
69
 
    # Insist that it be a success
70
 
    expect resp.status == 200
71
 
    }
72
 
    
73
 
    # Run the client
74
 
    client c1 -run
75
 
    
76
 
    # Wait for the server to die
77
 
    server s1 -wait
78
 
 
79
 
    # (Forcefully) Stop the varnish instance.
80
 
    varnish v1 -stop
81
 
 
82
 
Example script output
83
 
~~~~~~~~~~~~~~~~~~~~~
84
 
 
85
 
The output, running this script looks as follows. The "bargraph" at
86
 
the beginning of the line is an indication of the level of detail in
87
 
the line. The second field where the message comes from. The rest of
88
 
the line is anyones guess :-)
89
 
::
90
 
 
91
 
    #  TEST tests/b00000.vtc starting
92
 
    ### v1  CMD: cd ../varnishd && ./varnishd -d -d -n v1 -a :9081 -T :9001 -b localhost:9080
93
 
    ### v1  opening CLI connection
94
 
    #### v1  debug| NB: Storage size limited to 2GB on 32 bit architecture,\n
95
 
    #### v1  debug| NB: otherwise we could run out of address space.\n
96
 
    #### v1  debug| storage_file: filename: ./varnish.Shkoq5 (unlinked) size 2047 MB.\n
97
 
    ### v1  CLI connection fd = 3
98
 
    #### v1  CLI TX| start
99
 
    #### v1  debug| Using old SHMFILE\n
100
 
    #### v1  debug| Notice: locking SHMFILE in core failed: Operation not permitted\n
101
 
    #### v1  debug| bind(): Address already in use\n
102
 
    #### v1  debug| rolling(1)...
103
 
    #### v1  debug| \n
104
 
    #### v1  debug| rolling(2)...\n
105
 
    #### v1  debug| Debugging mode, enter "start" to start child\n
106
 
    ### v1  CLI 200 <start>
107
 
    ##  s1  Starting server
108
 
    ### s1  listen on :9080 (fd 6)
109
 
    ##  c1  Starting client
110
 
    ##  c1  Waiting for client
111
 
    ##  s1  started on :9080
112
 
    ##  c1  started
113
 
    ### c1  connect to :9081
114
 
    ### c1  connected to :9081 fd is 8
115
 
    #### c1  | GET / HTTP/1.1\r\n
116
 
    #### c1  | \r\n
117
 
    ### c1  rxresp
118
 
    #### s1  Accepted socket 7
119
 
    ### s1  rxreq
120
 
    #### s1  | GET / HTTP/1.1\r\n
121
 
    #### s1  | X-Varnish: 422080121\r\n
122
 
    #### s1  | X-Forwarded-For: 127.0.0.1\r\n
123
 
    #### s1  | Host: localhost\r\n
124
 
    #### s1  | \r\n
125
 
    #### s1  http[ 0] | GET
126
 
    #### s1  http[ 1] | /
127
 
    #### s1  http[ 2] | HTTP/1.1
128
 
    #### s1  http[ 3] | X-Varnish: 422080121
129
 
    #### s1  http[ 4] | X-Forwarded-For: 127.0.0.1
130
 
    #### s1  http[ 5] | Host: localhost
131
 
    #### s1  | HTTP/1.1 200 Ok\r\n
132
 
    #### s1  | Connection: close\r\n
133
 
    #### s1  | \r\n
134
 
    #### s1  | 012345\n
135
 
    #### s1  | \r\n
136
 
    ##  s1  ending
137
 
    #### c1  | HTTP/1.1 200 Ok\r\n
138
 
    #### c1  | Content-Length: 9\r\n
139
 
    #### c1  | Date: Mon, 16 Jun 2008 22:16:55 GMT\r\n
140
 
    #### c1  | X-Varnish: 422080121\r\n
141
 
    #### c1  | Age: 0\r\n
142
 
    #### c1  | Via: 1.1 varnish\r\n
143
 
    #### c1  | Connection: keep-alive\r\n
144
 
    #### c1  | \r\n
145
 
    #### c1  http[ 0] | HTTP/1.1
146
 
    #### c1  http[ 1] | 200
147
 
    #### c1  http[ 2] | Ok
148
 
    #### c1  http[ 3] | Content-Length: 9
149
 
    #### c1  http[ 4] | Date: Mon, 16 Jun 2008 22:16:55 GMT
150
 
    #### c1  http[ 5] | X-Varnish: 422080121
151
 
    #### c1  http[ 6] | Age: 0
152
 
    #### c1  http[ 7] | Via: 1.1 varnish
153
 
    #### c1  http[ 8] | Connection: keep-alive
154
 
    #### c1  EXPECT resp.status (200) == 200 (200) match
155
 
    ##  c1  ending
156
 
    ##  s1  Waiting for server
157
 
    #### v1  CLI TX| stop
158
 
    ### v1  CLI 200 <stop>
159
 
    #  TEST tests/b00000.vtc completed
160
 
 
161
 
If instead of 200 we had expected 201 with the line:::
162
 
 
163
 
  expect resp.status == 201
164
 
 
165
 
The output would have ended with:::
166
 
 
167
 
  #### c1  http[ 0] | HTTP/1.1
168
 
  #### c1  http[ 1] | 200
169
 
  #### c1  http[ 2] | Ok
170
 
  #### c1  http[ 3] | Content-Length: 9
171
 
  #### c1  http[ 4] | Date: Mon, 16 Jun 2008 22:26:35 GMT
172
 
  #### c1  http[ 5] | X-Varnish: 648043653 648043652
173
 
  #### c1  http[ 6] | Age: 6
174
 
  #### c1  http[ 7] | Via: 1.1 varnish
175
 
  #### c1  http[ 8] | Connection: keep-alive
176
 
  ---- c1  EXPECT resp.status (200) == 201 (201) failed
 
67
The script language used for Varnishtest is not a strictly defined
 
68
language. The best reference for writing scripts is the varnishtest program
 
69
itself. In the Varnish source code repository, under
 
70
`bin/varnishtest/tests/`, all the regression tests for Varnish are kept.
 
71
 
 
72
An example::
 
73
 
 
74
        varnishtest "#1029"
 
75
 
 
76
        server s1 {
 
77
                rxreq
 
78
                expect req.url == "/bar"
 
79
                txresp -gzipbody {[bar]}
 
80
 
 
81
                rxreq
 
82
                expect req.url == "/foo"
 
83
                txresp -body {<h1>FOO<esi:include src="/bar"/>BARF</h1>}
 
84
 
 
85
        } -start
 
86
 
 
87
        varnish v1 -vcl+backend {
 
88
                sub vcl_fetch {
 
89
                        set beresp.do_esi = true;
 
90
                        if (req.url == "/foo") {
 
91
                                set beresp.ttl = 0s;
 
92
                        } else {
 
93
                                set beresp.ttl = 10m;
 
94
                        }
 
95
                }
 
96
        } -start
 
97
 
 
98
        client c1 {
 
99
                txreq -url "/bar" -hdr "Accept-Encoding: gzip"
 
100
                rxresp
 
101
                gunzip
 
102
                expect resp.bodylen == 5
 
103
 
 
104
                txreq -url "/foo" -hdr "Accept-Encoding: gzip"
 
105
                rxresp
 
106
                expect resp.bodylen == 21
 
107
        } -run
 
108
 
 
109
When run, the above script will simulate a server (s1) that expects two
 
110
different requests. It will start a varnish server (v1) and add the backend
 
111
definition to the VCL specified (-vcl+backend). Finally it starts the
 
112
c1-client, which is a single client sending two requests.
177
113
 
178
114
SEE ALSO
179
115
========
180
116
 
 
117
* varnishtest source code repository with tests
181
118
* varnishhist(1)
182
119
* varnishlog(1)
183
120
* varnishncsa(1)
190
127
 
191
128
The varnishtest program was developed by Poul-Henning Kamp
192
129
⟨phk@phk.freebsd.dk⟩ in cooperation with Varnish Software AS.
193
 
This manual page
194
 
was written by Stig Sandbeck Mathisen ⟨ssm@linpro.no⟩ using examples
195
 
by Poul-Henning Kamp ⟨phk@phk.freebsd.dk⟩.
 
130
This manual page was originally written by Stig Sandbeck Mathisen
 
131
⟨ssm@linpro.no⟩ and updated by Kristian Lyngstøl
 
132
(kristian@varnish-cache.org).
196
133
 
197
134
COPYRIGHT
198
135
=========
200
137
This document is licensed under the same licence as Varnish
201
138
itself. See LICENCE for details.
202
139
 
203
 
* Copyright (c) 2007-2008 Varnish Software AS
 
140
* Copyright (c) 2007-2011 Varnish Software AS