railsbench 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/BUGS ADDED
@@ -0,0 +1,3 @@
1
+ - POST isn't supported (yet)
2
+ - documentation could be improved
3
+ - hoe's rake install doesn't work (which is actually hoe's problem)
data/CHANGELOG ADDED
File without changes
data/INSTALL ADDED
@@ -0,0 +1,55 @@
1
+ ============
2
+ INSTALLATION
3
+ ============
4
+
5
+ STEP 1: installing railsbench and PATH modifcation
6
+
7
+ If you obtained and installed railsbench as a gem, a script called
8
+ railsbench is available in you Ruby bin directory. railsbench is a
9
+ simple driver for the railsbench scripts, which are located in the gem
10
+ installation directory. Example:
11
+
12
+ railsbench perf_run 100 -bm=all
13
+
14
+ Alternatively, add the railsbench script directory to your search
15
+ path. The exact place can be found running
16
+
17
+ railsbench base
18
+
19
+ which prints the script directory path. After that change, individual
20
+ commands can be run directly:
21
+
22
+ railsbench perf_run 100 -bm=all
23
+
24
+ The environment variable RAILS_ROOT must be set and point to your apps
25
+ base directory, in order for railsbench to work properly.
26
+
27
+ If you obtained railsbench as a svn checkout, add the railsbench
28
+ script directory to your search path.
29
+
30
+
31
+ STEP 2: prepare your application for benchmarking
32
+
33
+ Manual installation:
34
+
35
+ Copy benchmarks.rb and benchmarks.yml into $RAILS_ROOT/config and
36
+ edit them to suit your needs. The provided default benchmark.yml
37
+ will run the root URL of your app.
38
+
39
+ Copy benchmarking.rb to $RAILS_ROOT/config/environments and add a
40
+ corresponding section to database.yml.
41
+
42
+ Automatic installation:
43
+
44
+ Run railsbench install. This will perform all of the above steps and
45
+ create a section in database.yml pointing to your development
46
+ database. In case you are worrying about possible results, you can
47
+ call railsbench install --dry-run first.
48
+
49
+
50
+ STEP 3: optional (but highly recommended)
51
+
52
+ Patch the ruby garbage collector using rubygc18{45}.patch, depending
53
+ on your ruby version. Recompile ruby and copy the ruby binary and
54
+ shared libs to where it was previously installed. See GCPATCH for
55
+ details on how to influence the patched ruby gc.
data/LICENSE ADDED
@@ -0,0 +1,222 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
3
+
4
+ 0. This License applies to any program or other work which contains
5
+ a notice placed by the copyright holder saying it may be distributed
6
+ under the terms of this General Public License. The "Program", below,
7
+ refers to any such program or work, and a "work based on the Program"
8
+ means either the Program or any derivative work under copyright law:
9
+ that is to say, a work containing the Program or a portion of it,
10
+ either verbatim or with modifications and/or translated into another
11
+ language. (Hereinafter, translation is included without limitation in
12
+ the term "modification".) Each licensee is addressed as "you".
13
+
14
+ Activities other than copying, distribution and modification are not
15
+ covered by this License; they are outside its scope. The act of
16
+ running the Program is not restricted, and the output from the Program
17
+ is covered only if its contents constitute a work based on the
18
+ Program (independent of having been made by running the Program).
19
+ Whether that is true depends on what the Program does.
20
+
21
+ 1. You may copy and distribute verbatim copies of the Program's
22
+ source code as you receive it, in any medium, provided that you
23
+ conspicuously and appropriately publish on each copy an appropriate
24
+ copyright notice and disclaimer of warranty; keep intact all the
25
+ notices that refer to this License and to the absence of any warranty;
26
+ and give any other recipients of the Program a copy of this License
27
+ along with the Program.
28
+
29
+ You may charge a fee for the physical act of transferring a copy, and
30
+ you may at your option offer warranty protection in exchange for a fee.
31
+
32
+ 2. You may modify your copy or copies of the Program or any portion
33
+ of it, thus forming a work based on the Program, and copy and
34
+ distribute such modifications or work under the terms of Section 1
35
+ above, provided that you also meet all of these conditions:
36
+
37
+ a) You must cause the modified files to carry prominent notices
38
+ stating that you changed the files and the date of any change.
39
+
40
+ b) You must cause any work that you distribute or publish, that in
41
+ whole or in part contains or is derived from the Program or any
42
+ part thereof, to be licensed as a whole at no charge to all third
43
+ parties under the terms of this License.
44
+
45
+ c) If the modified program normally reads commands interactively
46
+ when run, you must cause it, when started running for such
47
+ interactive use in the most ordinary way, to print or display an
48
+ announcement including an appropriate copyright notice and a
49
+ notice that there is no warranty (or else, saying that you provide
50
+ a warranty) and that users may redistribute the program under
51
+ these conditions, and telling the user how to view a copy of this
52
+ License. (Exception: if the Program itself is interactive but
53
+ does not normally print such an announcement, your work based on
54
+ the Program is not required to print an announcement.)
55
+
56
+ These requirements apply to the modified work as a whole. If
57
+ identifiable sections of that work are not derived from the Program,
58
+ and can be reasonably considered independent and separate works in
59
+ themselves, then this License, and its terms, do not apply to those
60
+ sections when you distribute them as separate works. But when you
61
+ distribute the same sections as part of a whole which is a work based
62
+ on the Program, the distribution of the whole must be on the terms of
63
+ this License, whose permissions for other licensees extend to the
64
+ entire whole, and thus to each and every part regardless of who wrote it.
65
+
66
+ Thus, it is not the intent of this section to claim rights or contest
67
+ your rights to work written entirely by you; rather, the intent is to
68
+ exercise the right to control the distribution of derivative or
69
+ collective works based on the Program.
70
+
71
+ In addition, mere aggregation of another work not based on the Program
72
+ with the Program (or with a work based on the Program) on a volume of
73
+ a storage or distribution medium does not bring the other work under
74
+ the scope of this License.
75
+
76
+ 3. You may copy and distribute the Program (or a work based on it,
77
+ under Section 2) in object code or executable form under the terms of
78
+ Sections 1 and 2 above provided that you also do one of the following:
79
+
80
+ a) Accompany it with the complete corresponding machine-readable
81
+ source code, which must be distributed under the terms of Sections
82
+ 1 and 2 above on a medium customarily used for software interchange; or,
83
+
84
+ b) Accompany it with a written offer, valid for at least three
85
+ years, to give any third party, for a charge no more than your
86
+ cost of physically performing source distribution, a complete
87
+ machine-readable copy of the corresponding source code, to be
88
+ distributed under the terms of Sections 1 and 2 above on a medium
89
+ customarily used for software interchange; or,
90
+
91
+ c) Accompany it with the information you received as to the offer
92
+ to distribute corresponding source code. (This alternative is
93
+ allowed only for noncommercial distribution and only if you
94
+ received the program in object code or executable form with such
95
+ an offer, in accord with Subsection b above.)
96
+
97
+ The source code for a work means the preferred form of the work for
98
+ making modifications to it. For an executable work, complete source
99
+ code means all the source code for all modules it contains, plus any
100
+ associated interface definition files, plus the scripts used to
101
+ control compilation and installation of the executable. However, as a
102
+ special exception, the source code distributed need not include
103
+ anything that is normally distributed (in either source or binary
104
+ form) with the major components (compiler, kernel, and so on) of the
105
+ operating system on which the executable runs, unless that component
106
+ itself accompanies the executable.
107
+
108
+ If distribution of executable or object code is made by offering
109
+ access to copy from a designated place, then offering equivalent
110
+ access to copy the source code from the same place counts as
111
+ distribution of the source code, even though third parties are not
112
+ compelled to copy the source along with the object code.
113
+
114
+ 4. You may not copy, modify, sublicense, or distribute the Program
115
+ except as expressly provided under this License. Any attempt
116
+ otherwise to copy, modify, sublicense or distribute the Program is
117
+ void, and will automatically terminate your rights under this License.
118
+ However, parties who have received copies, or rights, from you under
119
+ this License will not have their licenses terminated so long as such
120
+ parties remain in full compliance.
121
+
122
+ 5. You are not required to accept this License, since you have not
123
+ signed it. However, nothing else grants you permission to modify or
124
+ distribute the Program or its derivative works. These actions are
125
+ prohibited by law if you do not accept this License. Therefore, by
126
+ modifying or distributing the Program (or any work based on the
127
+ Program), you indicate your acceptance of this License to do so, and
128
+ all its terms and conditions for copying, distributing or modifying
129
+ the Program or works based on it.
130
+
131
+ 6. Each time you redistribute the Program (or any work based on the
132
+ Program), the recipient automatically receives a license from the
133
+ original licensor to copy, distribute or modify the Program subject to
134
+ these terms and conditions. You may not impose any further
135
+ restrictions on the recipients' exercise of the rights granted herein.
136
+ You are not responsible for enforcing compliance by third parties to
137
+ this License.
138
+
139
+ 7. If, as a consequence of a court judgment or allegation of patent
140
+ infringement or for any other reason (not limited to patent issues),
141
+ conditions are imposed on you (whether by court order, agreement or
142
+ otherwise) that contradict the conditions of this License, they do not
143
+ excuse you from the conditions of this License. If you cannot
144
+ distribute so as to satisfy simultaneously your obligations under this
145
+ License and any other pertinent obligations, then as a consequence you
146
+ may not distribute the Program at all. For example, if a patent
147
+ license would not permit royalty-free redistribution of the Program by
148
+ all those who receive copies directly or indirectly through you, then
149
+ the only way you could satisfy both it and this License would be to
150
+ refrain entirely from distribution of the Program.
151
+
152
+ If any portion of this section is held invalid or unenforceable under
153
+ any particular circumstance, the balance of the section is intended to
154
+ apply and the section as a whole is intended to apply in other
155
+ circumstances.
156
+
157
+ It is not the purpose of this section to induce you to infringe any
158
+ patents or other property right claims or to contest validity of any
159
+ such claims; this section has the sole purpose of protecting the
160
+ integrity of the free software distribution system, which is
161
+ implemented by public license practices. Many people have made
162
+ generous contributions to the wide range of software distributed
163
+ through that system in reliance on consistent application of that
164
+ system; it is up to the author/donor to decide if he or she is willing
165
+ to distribute software through any other system and a licensee cannot
166
+ impose that choice.
167
+
168
+ This section is intended to make thoroughly clear what is believed to
169
+ be a consequence of the rest of this License.
170
+
171
+ 8. If the distribution and/or use of the Program is restricted in
172
+ certain countries either by patents or by copyrighted interfaces, the
173
+ original copyright holder who places the Program under this License
174
+ may add an explicit geographical distribution limitation excluding
175
+ those countries, so that distribution is permitted only in or among
176
+ countries not thus excluded. In such case, this License incorporates
177
+ the limitation as if written in the body of this License.
178
+
179
+ 9. The Free Software Foundation may publish revised and/or new versions
180
+ of the General Public License from time to time. Such new versions will
181
+ be similar in spirit to the present version, but may differ in detail to
182
+ address new problems or concerns.
183
+
184
+ Each version is given a distinguishing version number. If the Program
185
+ specifies a version number of this License which applies to it and "any
186
+ later version", you have the option of following the terms and conditions
187
+ either of that version or of any later version published by the Free
188
+ Software Foundation. If the Program does not specify a version number of
189
+ this License, you may choose any version ever published by the Free Software
190
+ Foundation.
191
+
192
+ 10. If you wish to incorporate parts of the Program into other free
193
+ programs whose distribution conditions are different, write to the author
194
+ to ask for permission. For software which is copyrighted by the Free
195
+ Software Foundation, write to the Free Software Foundation; we sometimes
196
+ make exceptions for this. Our decision will be guided by the two goals
197
+ of preserving the free status of all derivatives of our free software and
198
+ of promoting the sharing and reuse of software generally.
199
+
200
+ NO WARRANTY
201
+
202
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
203
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
204
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
205
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
206
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
207
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
208
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
209
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
210
+ REPAIR OR CORRECTION.
211
+
212
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
213
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
214
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
215
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
216
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
217
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
218
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
219
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
220
+ POSSIBILITY OF SUCH DAMAGES.
221
+
222
+ END OF TERMS AND CONDITIONS
data/Manifest.txt ADDED
@@ -0,0 +1,38 @@
1
+ BUGS
2
+ CHANGELOG
3
+ INSTALL
4
+ install.rb
5
+ LICENSE
6
+ Manifest.txt
7
+ README
8
+ Rakefile
9
+ setup.rb
10
+ ruby184gc.patch
11
+ ruby185gc.patch
12
+ bin/railsbench
13
+ lib/railsbench/version.rb
14
+ lib/railsbench/gc_info.rb
15
+ lib/railsbench/perf_info.rb
16
+ lib/railsbench/perf_utils.rb
17
+ lib/railsbench/write_headers_only.rb
18
+ lib/railsbench/railsbenchmark.rb
19
+ lib/benchmark.rb
20
+ script/perf_bench
21
+ script/perf_comp
22
+ script/perf_comp_gc
23
+ script/perf_diff
24
+ script/perf_diff_gc
25
+ script/perf_html
26
+ script/perf_loop
27
+ script/perf_plot
28
+ script/perf_plot_gc
29
+ script/perf_prof
30
+ script/perf_run
31
+ script/perf_run_gc
32
+ script/perf_tex
33
+ script/perf_times
34
+ script/perf_times_gc
35
+ script/run_urls
36
+ config/benchmarking.rb
37
+ config/benchmarks.rb
38
+ config/benchmarks.yml
data/README ADDED
@@ -0,0 +1,254 @@
1
+ Railsbench is a small collection of ruby and shell scripts which make
2
+ measuring raw performance of rails apps a snap. All tests are run from
3
+ the command prompt making performance regression testing easy.
4
+
5
+ In addition, a patch for the ruby garbage collector is provided, which
6
+ can be used to reduce the amount of time spent doing garbage
7
+ collection, trading memory for speed, as usual (see file GCPATCH for
8
+ details). In addition, applying the patch will enhance performance
9
+ data obtained from the various scripts (and some won't run at all
10
+ without the patch).
11
+
12
+ This software was written and conceived by Stefan Kaes. The author can
13
+ be reached via email: <skaes@gmx.net>. Please send comments, bug
14
+ reports, patches or feature requests to this address.
15
+
16
+
17
+ FILES
18
+
19
+ railsbench.rb
20
+ - defines classes RailsBenchmark and RailsBenchmarkWithActiveRecordStore
21
+ switches:
22
+ -gcXXX : perform gc after XXX requests
23
+ -log[=level] : turn on rails logging (at given level)
24
+ -nochache : turn off rails caching
25
+ -path : print $: after loading rails and exit
26
+
27
+ config/bechmarks.yml
28
+ - specification of urls to benchmark
29
+ install into $RAILS_ROOT/config
30
+
31
+ config/benchmarks.rb
32
+ - defines constant RAILSBENCH which is used by script perf_bench
33
+ modify this to add custom argument processing
34
+ install to $RAILS_ROOT/config
35
+
36
+ perf_bench n options
37
+ - main ruby script to run a given benchmark
38
+ switches (in addition to railsbench switches):
39
+ -mix : alternates urls in given benchmark
40
+
41
+ run_urls n options
42
+ - run a given benchmark (without benchmarking)
43
+ useful for checking response codes, like so:
44
+
45
+ run_urls 1 -bm=all | grep Status:
46
+
47
+ switches as for perf_bench plus
48
+ -warmup : run all uris once before measuring
49
+ -svlPV : run test using SVL Ruby Performance Validator
50
+ -svlMV : run test using SVL Ruby Memory Validator
51
+
52
+ perf_run n [ option-string [ config-name ] ]
53
+ - run a given benchmark, store performance data in a file
54
+ in directory $RAILS_PERF_DATA and print results
55
+
56
+ perf_diff n common-options option-string1 option-string2 [ config-name1 [ config-name2 ] ]
57
+ - run a given benchmark with two different sets of arguments
58
+ store data into directory $RAILS_PERF_DATA and print
59
+ comparison data
60
+
61
+ perf_loop n options
62
+ - used by perf_run and perf_diff
63
+ calls perf_bench $RAILS_PERF_RUNS times
64
+
65
+ perf_times file
66
+ - analyse and print performance data
67
+
68
+ perf_comp [-narrow] [-skip_urls] file1 file2
69
+ - compare two performance data sets and print results
70
+ -narrow => produce narrow output
71
+ -skip_urls => don't print url map (use with -narrow)
72
+
73
+ perf_html [-nocss] [-gc] [file]
74
+ - format output taken from perf_comp and produce a HTML table
75
+ for inclusion in HTML pages. Reads from standard input.
76
+ options:
77
+ -noccs suppress css output
78
+ -notable suppress table output
79
+ -gc include gc statistics
80
+
81
+ perf_run_gc n [ option-string [ config-name ] ]
82
+ - run a given benchmark, store performance data in a file
83
+ in directory $RAILS_PERF_DATA and print results
84
+ - requires Ruby GC patch
85
+
86
+ perf_times_gc file
87
+ - analyse and print garbage collection statistics, which you
88
+ can produce by running perf_run_gc
89
+
90
+ perf_diff_gc n common-options option-string1 option-string2 [ config-name1 [ config-name2 ] ]
91
+ - run a given benchmark with two different sets of arguments
92
+ store GC data into directory $RAILS_PERF_DATA and print
93
+ GC stats comparison using perf_comp_gc
94
+ - requires Ruby GC patch
95
+
96
+ perf_comp_gc file1 file2
97
+ - compare two GC performance data sets and print results
98
+
99
+ perf_prof n [ option-string [ config-name ] ]
100
+ - run a given benchmark using ruby-prof for profiling,
101
+ store profile data in a HTML file in directory $RAILS_PERF_DATA
102
+ file name is computed from date and benchmark name as described above
103
+ but has a .html extension instead of .txt
104
+
105
+ perf_plot n [ options ] file1 file2 ...
106
+ - plot performance data from raw performance files using gruff
107
+ see source for options
108
+
109
+ ENVIRONMENT
110
+
111
+ RAILS_ROOT
112
+ - must be set to point to your rails app
113
+
114
+ RAILS_PERF_DATA
115
+ - performance data sets will be stored into this directory
116
+ if not set, $HOME will be used
117
+
118
+ RAILS_PERF_RUNS
119
+ - the number of times perf_loop will run perf_bench on a single invocation
120
+ if not set, 3 runs will be performed
121
+
122
+ RAILS_BENCHMARK_FILE
123
+ - perf_bench sends its output to this file
124
+
125
+
126
+ USAGE
127
+
128
+ The two main scripts are named perf_run and perf_diff.
129
+
130
+ perf_run 100
131
+
132
+ runs the list of urls named "default" specified in benchmkarks.yml
133
+ (see below), requesting each url $RAILS_PERF_RUNS * 100 times.
134
+
135
+ perf_run 100 "-bm=list -aws"
136
+
137
+ runs the benchmark named 'list' and passes the expanded second
138
+ argument to the rails app. By processing arguments inside your
139
+ environment.rb file, you can set performance affecting options. For
140
+ example, you could load action web service only if -aws is passed and
141
+ measure the performance effect of omitting it.
142
+
143
+ Benchmark data is stored in directory $RAILS_PERF_DATA, which should
144
+ be set in your environment. If not set, $HOME is used. By default,
145
+ data is stored in file $RAILS_PERF_DATA/perf_run.$BENCHMARK.txt, where
146
+ BENCHMARK will be set according to the -bm option.
147
+
148
+ perf_run 100 "-bm=index -mail" mail
149
+
150
+ will store benchmark data in file
151
+
152
+ $RAILS_PERF_DATA/`current-date�.index.mail.txt.
153
+
154
+ You can get nicely formatted output of benchmark data by running
155
+
156
+ perf_times file
157
+
158
+ Script perf_run will automatically print the obtained data after
159
+ finishing the run using perf_times.
160
+
161
+ Script perf_diff runs a list of urls with two different option lists. So
162
+
163
+ perf_diff 100 "-bm=blogs -mysql_session" "-mail=0" "-mail=1" cf1 cf2
164
+
165
+ would run benchmark 'blogs' twice, first as
166
+
167
+ perf_run 100 "-bm=blogs -mysql_session -mail=0" cf1
168
+
169
+ and then
170
+
171
+ perf_run 100 "-bm=blogs -mysql_session -mail=1" cf2
172
+
173
+ printing a comparison of the bechmark data obtained after finishing
174
+ the second run. cf1 and cf2 can be omitted, in which case data is
175
+ stored in $RAILS_PERF_DATA/perf_run1.$BENCHMARK.txt and
176
+ $RAILS_PERF_DATA/perf_run2.$BENCHMARK.txt.
177
+
178
+ Script perf_bench can also be invoked manually to run a given
179
+ benchmark like so:
180
+
181
+ perf_bench 100 -bm=blogs -mysql_session -mail=1 >/dev/null
182
+
183
+ Performance data is sent to $RAILS_BENCHMARK_FILE, HTML output ends up
184
+ on stdout. If RAILS_BENCHMARK_FILE is not set, performance data is
185
+ sent to stderr.
186
+
187
+ Scripts perf_run_gc and perf_times_gc can be used to analyse GC performance:
188
+
189
+ perf_run_gc 100 "-bm=all -lib=stable11" gc.log
190
+ perf_times_gc gc.log
191
+
192
+ It will produce output looking like this:
193
+
194
+ GC data file: d:/perfdata/xp/perf_run.uncached.gc.txt
195
+
196
+ collections : 40
197
+ garbage total : 8188429
198
+ gc time total (sec) : 4.03
199
+ garbage per request : 2047.11
200
+ requests per collection: 100.00
201
+
202
+ mean stddev% min max
203
+ gc time(ms): 101.38 10.0 93.00 125.00
204
+ heap slots : 400000.00 0.0 400000.00 400000.00
205
+ live : 192914.31 0.2 191787.00 193197.00
206
+ freed : 207085.69 0.2 206803.00 208213.00
207
+ freelist : 0.00 0.0 0.00 0.00
208
+
209
+ Note that these numbers, especially requests per collection, are only
210
+ an approximation. This is due to the fact that run_urls will add one
211
+ final garbage collection call at the end of the run. Of course, higher
212
+ number of iterations will produce more accurate data. Also, if the
213
+ benchmark lists several uris, garbage per request will not give you
214
+ meaningful information.
215
+
216
+
217
+ CONFIGURATION
218
+
219
+ Benchmarks are configured through file benchmarks.yml. Example:
220
+
221
+ default:
222
+ index, other
223
+
224
+ index:
225
+ uri: /test/index
226
+ new_session: true
227
+
228
+ other:
229
+ -
230
+ uri: /test/list
231
+ -
232
+ uri: /test/alphabetic
233
+ query_params: page=7
234
+
235
+ defines 3 benchmarks:
236
+
237
+ "other" consists of 2 urls (/test/list and /test/alphabetic)
238
+ "index" will run (/test/index)
239
+ "default" will run all urls in "index" and "other"
240
+
241
+ uri: is mandatory, query_params: and new_session: are optional.
242
+
243
+ Instead of
244
+
245
+ uri: /test/alphabetic
246
+ query_params: page=7
247
+
248
+ one could have written
249
+
250
+ uri: /test/alphabetic?page=7
251
+
252
+ new_session: specifies whether a session cookie is sent with the
253
+ request (default). To make this work correctly, you need to set
254
+ session_data on the benchmarker instance. See benchmarks.rb for details.