bigbench 0.0.2 → 0.0.3

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.
Files changed (49) hide show
  1. data/README.textile +103 -2
  2. data/bigbench.gemspec +5 -2
  3. data/doc/BigBench.html +167 -4
  4. data/doc/BigBench/Benchmark.html +12 -0
  5. data/doc/BigBench/Benchmark/Benchmark.html +12 -0
  6. data/doc/BigBench/Benchmark/Looper.html +12 -0
  7. data/doc/BigBench/Bot.html +12 -0
  8. data/doc/BigBench/Configuration.html +12 -0
  9. data/doc/BigBench/Configuration/Config.html +12 -0
  10. data/doc/BigBench/Configuration/InvalidOptions.html +12 -0
  11. data/doc/BigBench/Executor.html +12 -0
  12. data/doc/BigBench/Executor/InvalidCommand.html +12 -0
  13. data/doc/BigBench/Fragment.html +12 -0
  14. data/doc/BigBench/Fragment/Fragment.html +13 -1
  15. data/doc/BigBench/Output.html +12 -0
  16. data/doc/BigBench/PostProcessor.html +378 -0
  17. data/doc/BigBench/PostProcessor/Environment.html +243 -0
  18. data/doc/BigBench/PostProcessor/InvalidProcessor.html +231 -0
  19. data/doc/BigBench/PostProcessor/Processor.html +306 -0
  20. data/doc/BigBench/PostProcessor/Statistics.html +225 -0
  21. data/doc/BigBench/PostProcessor/Test.html +223 -0
  22. data/doc/BigBench/Runner.html +12 -0
  23. data/doc/BigBench/Runner/NoBenchmarksDefined.html +12 -0
  24. data/doc/BigBench/Store.html +12 -0
  25. data/doc/BigBench/Tracker.html +12 -0
  26. data/doc/BigBench/Tracker/Tracker.html +12 -0
  27. data/doc/EventMachineLoop.html +12 -0
  28. data/doc/Float.html +12 -0
  29. data/doc/Gemfile.html +12 -0
  30. data/doc/Helpers.html +12 -0
  31. data/doc/Object.html +12 -0
  32. data/doc/Rakefile.html +23 -9
  33. data/doc/created.rid +40 -36
  34. data/doc/index.html +12 -0
  35. data/doc/js/search_index.js +1 -1
  36. data/doc/lib/bigbench/help/executor_txt.html +12 -0
  37. data/doc/table_of_contents.html +62 -13
  38. data/lib/bigbench.rb +6 -3
  39. data/lib/bigbench/benchmark.rb +1 -2
  40. data/lib/bigbench/executor.rb +2 -0
  41. data/lib/bigbench/fragment.rb +1 -1
  42. data/lib/bigbench/post_processor.rb +206 -0
  43. data/lib/bigbench/post_processor/statistics.rb +123 -0
  44. data/lib/bigbench/version.rb +1 -1
  45. data/spec/helpers.rb +1 -0
  46. data/spec/post_processor_spec.rb +71 -0
  47. data/spec/post_processors/statistics_spec.rb +14 -0
  48. data/spec/tests/result.ljson +43 -0
  49. metadata +147 -30
@@ -42,6 +42,7 @@ benchmark "login and logout" => "http://localhost:3000" do
42
42
  post "/logout", :params => { :name => "test@user.com" }
43
43
  end
44
44
 
45
+ post_process :statistics
45
46
 
46
47
 
47
48
 
@@ -67,11 +68,11 @@ bc.. bigbench run bots example.rb redis_url:port redis_password
67
68
 
68
69
  p. This will upload the test receipt to all bots and make them run it. Every bot reports its results back to the redis and the local machine then combines, and writes them to the output file. So you test with the same receipts and get the same results, no matter if your testing from the local host or with multiple bots.
69
70
 
70
-
71
+ !http://southdesign.github.com/bigbench/images/structure.png(BigBench Request Structure)!
71
72
 
72
73
  h2. Output
73
74
 
74
- How does the recorded output look like? It's in the @*.ljson*@ format which is nothing else but a textfile with a complete JSON object on every line. It looks like this:
75
+ How does the recorded output look like? It's in the @*.ljson@ format which is nothing else but a textfile with a complete JSON object on every line. It looks like this:
75
76
 
76
77
  bc.. {"elapsed":0.002233,"start":1333981203.542233,"stop":1333981203.54279,"duration":0,"benchmark":"index page","url":"http://localhost:3000/","path":"/","method":"get","status":"200"}
77
78
  {"elapsed":0.00331,"start":1333981203.5434968,"stop":1333981203.5438669,"duration":0,"benchmark":"index page","url":"http://localhost:3000/","path":"/","method":"get","status":"200"}
@@ -95,6 +96,82 @@ p. The advantage with this file format is, that it can be parsed and computed ve
95
96
 
96
97
 
97
98
 
99
+ h2. Post Processors
100
+
101
+ After the benchmark has finished you can create hooks and write plugins that do something with the collected data. To setup a hook simply use the @post_process@ method to add a block or run a predefined plugin:
102
+
103
+ bc.. # Run BigBench::PostProcessor::Statistics
104
+ post_process :statistics
105
+
106
+ # Run a block that could do anything
107
+ post_process do
108
+
109
+ total_trackings, total_errors = 0, 0
110
+ each_tracking do |tracking|
111
+ total_trackings += 1
112
+ total_errors += 1 unless tracking[:status] == 200
113
+ end
114
+
115
+ Twitter.post "Just run BigBench with #{total_trackings} trackings and #{total_errors} errors."
116
+
117
+ end
118
+
119
+ p. It's very easy to write a post processor. The basic structure is like this:
120
+
121
+ bc.. module BigBench
122
+ module PostProcessor
123
+ module SamplePostProcessor
124
+
125
+ def self.run!
126
+ # Do whatever you want here
127
+ end
128
+
129
+ end
130
+ end
131
+ end
132
+
133
+ p. You can hook it in with:
134
+
135
+ bc.. post_process :sample_post_processor
136
+ # or
137
+ post_process BigBench::PostProcessor::SamplePostProcessor
138
+
139
+ p. Contribute, create great post processors and send me a pull request!
140
+
141
+ h3. Statistics
142
+
143
+ p. The statistics post processor computes a simple overview of the benchmark and prints it to the terminal like this:
144
+
145
+ bc.. BigBench Statistics
146
+ +---------------------------+------------------+---------+
147
+ | Name | Value | Percent |
148
+ +---------------------------+------------------+---------+
149
+ | Total Requests: | 52,469 | 100% |
150
+ | Total Errors: | 0 | 0.0% |
151
+ | | | |
152
+ | Average Requests/Second: | 437 Requests/sec | |
153
+ | Average Request Duration: | 1 ms | |
154
+ | | | |
155
+ | Max Request Duration: | 181 ms | |
156
+ | Min Request Duration: | 1 ms | |
157
+ | | | |
158
+ | Status Codes: | | |
159
+ | 200 | 52469 | 100.0% |
160
+ | | | |
161
+ | HTTP Methods | | |
162
+ | get | 34980 | 66.7% |
163
+ | post | 17489 | 33.3% |
164
+ | | | |
165
+ | URL Paths: | | |
166
+ | / | 34979 | 66.7% |
167
+ | /basic/auth | 17490 | 33.3% |
168
+ +---------------------------+------------------+---------+
169
+ 19 rows in set
170
+
171
+
172
+
173
+
174
+
98
175
  h2. Load Comparison
99
176
 
100
177
  BigBench is awfully good at creating high loads on web servers. A quick benchmark comparison to "Apache's JMeter":http://jmeter.apache.org/ shows that BigBench is able to create 16% more load than JMeter.
@@ -117,3 +194,27 @@ h3. Test Results
117
194
  | Total Requests | 48.014 | 55.484 |
118
195
  | Requests/sec | 377 | 462 |
119
196
  | Percentages | 100%% | 116% |
197
+
198
+
199
+ h2. Version History
200
+
201
+ h3. 0.3
202
+
203
+ * Added post processors hook that run after the benchmark with a simple plugin structure
204
+ * Added a first basic post processor that computes the benchmark statistics and prints them in the terminal
205
+ * Added ability to execute a block of code after running the benchmark. The code can do anything usefully like send emails, post twitter notifications or startup new servers
206
+
207
+ h3. 0.2
208
+
209
+ * @Net::HTTP@ was too slow. Only reached 35% of Apache's JMeter load. Changed requesting structure to "eventmachine":https://github.com/eventmachine/eventmachine using "em-http-request":https://github.com/igrigorik/em-http-request
210
+ * Compared to JMeter it can create 16% *more* load than JMeter now
211
+ * Changed config option from @threads@ to @users@ due to a better understanding
212
+ * Added basic auth support
213
+ * Added params hashes for request content
214
+
215
+ h3. 0.1
216
+
217
+ * Initial Version using @Net::HTTP@
218
+ * Local and bot testing
219
+ * LJSON output
220
+ * Global configuration
@@ -20,15 +20,18 @@ Gem::Specification.new do |s|
20
20
  s.rdoc_options << '--include' << 'lib/bigbench/help/'
21
21
 
22
22
  s.add_development_dependency "rspec"
23
- s.add_development_dependency "active_support"
23
+ s.add_development_dependency "activesupport", '>= 3.2.0'
24
+ s.add_development_dependency "actionpack", '>= 3.2.0'
24
25
  s.add_development_dependency "rack"
25
26
  s.add_development_dependency "thin"
26
27
  s.add_development_dependency "eventmachine"
27
28
  s.add_development_dependency "em-http-request"
28
29
  s.add_development_dependency "sinatra"
29
30
 
31
+ s.add_runtime_dependency "activesupport", '>= 3.2.0'
32
+ s.add_runtime_dependency "actionpack", '>= 3.2.0'
30
33
  s.add_runtime_dependency "redis"
31
- s.add_runtime_dependency "active_support"
32
34
  s.add_runtime_dependency "eventmachine"
33
35
  s.add_runtime_dependency "em-http-request"
36
+ s.add_runtime_dependency "hirb"
34
37
  end
@@ -54,6 +54,8 @@
54
54
  <li>lib/bigbench/executor.rb
55
55
  <li>lib/bigbench/fragment.rb
56
56
  <li>lib/bigbench/output.rb
57
+ <li>lib/bigbench/post_processor/statistics.rb
58
+ <li>lib/bigbench/post_processor.rb
57
59
  <li>lib/bigbench/runner.rb
58
60
  <li>lib/bigbench/store.rb
59
61
  <li>lib/bigbench/tracker.rb
@@ -88,8 +90,14 @@
88
90
 
89
91
  <li><a href="#method-c-load_test-21">::load_test!</a>
90
92
 
93
+ <li><a href="#method-c-post_process">::post_process</a>
94
+
95
+ <li><a href="#method-c-post_processors">::post_processors</a>
96
+
91
97
  <li><a href="#method-c-run-21">::run!</a>
92
98
 
99
+ <li><a href="#method-c-run_post_processors-21">::run_post_processors!</a>
100
+
93
101
  <li><a href="#method-c-write_local_trackings_to_file-21">::write_local_trackings_to_file!</a>
94
102
 
95
103
  <li><a href="#method-c-write_store_trackings_to_file-21">::write_store_trackings_to_file!</a>
@@ -147,6 +155,18 @@
147
155
 
148
156
  <li><a href="./BigBench/Output.html">BigBench::Output</a>
149
157
 
158
+ <li><a href="./BigBench/PostProcessor.html">BigBench::PostProcessor</a>
159
+
160
+ <li><a href="./BigBench/PostProcessor/Environment.html">BigBench::PostProcessor::Environment</a>
161
+
162
+ <li><a href="./BigBench/PostProcessor/InvalidProcessor.html">BigBench::PostProcessor::InvalidProcessor</a>
163
+
164
+ <li><a href="./BigBench/PostProcessor/Processor.html">BigBench::PostProcessor::Processor</a>
165
+
166
+ <li><a href="./BigBench/PostProcessor/Statistics.html">BigBench::PostProcessor::Statistics</a>
167
+
168
+ <li><a href="./BigBench/PostProcessor/Test.html">BigBench::PostProcessor::Test</a>
169
+
150
170
  <li><a href="./BigBench/Runner.html">BigBench::Runner</a>
151
171
 
152
172
  <li><a href="./BigBench/Runner/NoBenchmarksDefined.html">BigBench::Runner::NoBenchmarksDefined</a>
@@ -240,8 +260,7 @@
240
260
  <div class="method-source-code" id="benchmark-source">
241
261
  <pre><span class="ruby-comment"># File lib/bigbench/benchmark.rb, line 101</span>
242
262
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">benchmark</span>(<span class="ruby-identifier">options</span>)
243
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">block_given?</span>
244
- <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">options</span>, &amp;<span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span>)
263
+ <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">options</span>, &amp;<span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
245
264
  <span class="ruby-keyword">end</span></pre>
246
265
  </div><!-- benchmark-source -->
247
266
 
@@ -269,7 +288,7 @@
269
288
 
270
289
 
271
290
  <div class="method-source-code" id="benchmarks-source">
272
- <pre><span class="ruby-comment"># File lib/bigbench/benchmark.rb, line 107</span>
291
+ <pre><span class="ruby-comment"># File lib/bigbench/benchmark.rb, line 106</span>
273
292
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">benchmarks</span>
274
293
  <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">all</span>
275
294
  <span class="ruby-keyword">end</span></pre>
@@ -407,7 +426,7 @@ one</p>
407
426
 
408
427
 
409
428
  <div class="method-source-code" id="duration-source">
410
- <pre><span class="ruby-comment"># File lib/bigbench/benchmark.rb, line 112</span>
429
+ <pre><span class="ruby-comment"># File lib/bigbench/benchmark.rb, line 111</span>
411
430
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">duration</span>
412
431
  <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">max_duration</span>
413
432
  <span class="ruby-keyword">end</span></pre>
@@ -462,6 +481,120 @@ end'</span>
462
481
  </div><!-- load_test-21-method -->
463
482
 
464
483
 
484
+ <div id="method-c-post_process" class="method-detail ">
485
+
486
+ <div class="method-heading">
487
+ <span class="method-name">post_process</span><span
488
+ class="method-args">(processor = nil)</span>
489
+ <span class="method-click-advice">click to toggle source</span>
490
+ </div>
491
+
492
+
493
+ <div class="method-description">
494
+
495
+ <p>To setup a post processor simply do this:</p>
496
+
497
+ <pre>post_process do
498
+ # Some code that is executed after the tests, like a database update, twitter post, email etc.
499
+ end</pre>
500
+
501
+ <p>Or use one of the predefined post processor or write one yourself:</p>
502
+
503
+ <pre>post_process :statistics
504
+ post_process BigBench::PostProcessor::Statistics
505
+ post_process &quot;statistics&quot;</pre>
506
+
507
+ <p>All the upper lines include the same post processor. Symbols and strings
508
+ are camelized and constantized as the module name.</p>
509
+
510
+ <h2 id="method-c-post_process-label-Available+Methods+in+Processors">Available Methods in Processors</h2>
511
+
512
+ <p>Every post processor block or module supports the following methods and has
513
+ full <a
514
+ href="http://api.rubyonrails.org/classes/ActionView/Helpers.html">ActionView::Helper</a>
515
+ support.</p>
516
+ <dl class="rdoc-list label-list"><dt>each_tracking
517
+ <dd>
518
+ <p>A method that iterates through every collected tracking. It automatically
519
+ returns a hash with a single tracking of the following form:</p>
520
+
521
+ <pre class="ruby">{
522
+ :<span class="ruby-identifier">elapsed</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">2.502132</span>,
523
+ :<span class="ruby-identifier">start</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1333986292.1755981</span>,
524
+ :<span class="ruby-identifier">stop</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1333986293.618884</span>,
525
+ :<span class="ruby-identifier">duration</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1443</span>,
526
+ :<span class="ruby-identifier">benchmark</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;index page&quot;</span>,
527
+ :<span class="ruby-identifier">url</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;http://www.google.de/&quot;</span>,
528
+ :<span class="ruby-identifier">path</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;/&quot;</span>,
529
+ :<span class="ruby-identifier">method</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;get&quot;</span>,
530
+ :<span class="ruby-identifier">status</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">200</span>
531
+ }
532
+ </pre>
533
+
534
+ <p>It can be used like this:</p>
535
+
536
+ <pre class="ruby"><span class="ruby-identifier">post_process</span> <span class="ruby-keyword">do</span>
537
+
538
+ <span class="ruby-identifier">total_trackings</span>, <span class="ruby-identifier">total_errors</span> = <span class="ruby-value">0</span>, <span class="ruby-value">0</span>
539
+ <span class="ruby-identifier">each_tracking</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tracking</span><span class="ruby-operator">|</span>
540
+ <span class="ruby-identifier">total_trackings</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
541
+ <span class="ruby-identifier">total_errors</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">tracking</span>[:<span class="ruby-identifier">status</span>] <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
542
+ <span class="ruby-keyword">end</span>
543
+
544
+ <span class="ruby-constant">Twitter</span>.<span class="ruby-identifier">post</span> <span class="ruby-node">&quot;Just run BigBench with #{total_trackings} trackings and #{total_errors} errors.&quot;</span>
545
+
546
+ <span class="ruby-keyword">end</span>
547
+ </pre>
548
+ </dd></dl>
549
+
550
+
551
+
552
+ <div class="method-source-code" id="post_process-source">
553
+ <pre><span class="ruby-comment"># File lib/bigbench/post_processor.rb, line 192</span>
554
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">post_process</span> <span class="ruby-identifier">processor</span> = <span class="ruby-keyword">nil</span>
555
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">PostProcessor</span><span class="ruby-operator">::</span><span class="ruby-constant">InvalidProcessor</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">processor</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">block_given?</span>
556
+ <span class="ruby-identifier">block_given?</span> <span class="ruby-operator">?</span> <span class="ruby-constant">PostProcessor</span>.<span class="ruby-identifier">add</span>(&amp;<span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span>) <span class="ruby-operator">:</span> <span class="ruby-constant">PostProcessor</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">processor</span>)
557
+ <span class="ruby-keyword">end</span></pre>
558
+ </div><!-- post_process-source -->
559
+
560
+ </div>
561
+
562
+
563
+
564
+
565
+ </div><!-- post_process-method -->
566
+
567
+
568
+ <div id="method-c-post_processors" class="method-detail ">
569
+
570
+ <div class="method-heading">
571
+ <span class="method-name">post_processors</span><span
572
+ class="method-args">()</span>
573
+ <span class="method-click-advice">click to toggle source</span>
574
+ </div>
575
+
576
+
577
+ <div class="method-description">
578
+
579
+ <p>List all initialized post processors</p>
580
+
581
+
582
+
583
+ <div class="method-source-code" id="post_processors-source">
584
+ <pre><span class="ruby-comment"># File lib/bigbench/post_processor.rb, line 198</span>
585
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">post_processors</span>
586
+ <span class="ruby-constant">PostProcessor</span>.<span class="ruby-identifier">all</span>
587
+ <span class="ruby-keyword">end</span></pre>
588
+ </div><!-- post_processors-source -->
589
+
590
+ </div>
591
+
592
+
593
+
594
+
595
+ </div><!-- post_processors-method -->
596
+
597
+
465
598
  <div id="method-c-run-21" class="method-detail ">
466
599
 
467
600
  <div class="method-heading">
@@ -494,6 +627,36 @@ end'</span>
494
627
  </div><!-- run-21-method -->
495
628
 
496
629
 
630
+ <div id="method-c-run_post_processors-21" class="method-detail ">
631
+
632
+ <div class="method-heading">
633
+ <span class="method-name">run_post_processors!</span><span
634
+ class="method-args">()</span>
635
+ <span class="method-click-advice">click to toggle source</span>
636
+ </div>
637
+
638
+
639
+ <div class="method-description">
640
+
641
+ <p>Runs all initialized post processors after the trackings have been written</p>
642
+
643
+
644
+
645
+ <div class="method-source-code" id="run_post_processors-21-source">
646
+ <pre><span class="ruby-comment"># File lib/bigbench/post_processor.rb, line 203</span>
647
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">run_post_processors!</span>
648
+ <span class="ruby-constant">PostProcessor</span>.<span class="ruby-identifier">run!</span>
649
+ <span class="ruby-keyword">end</span></pre>
650
+ </div><!-- run_post_processors-21-source -->
651
+
652
+ </div>
653
+
654
+
655
+
656
+
657
+ </div><!-- run_post_processors-21-method -->
658
+
659
+
497
660
  <div id="method-c-write_local_trackings_to_file-21" class="method-detail ">
498
661
 
499
662
  <div class="method-heading">
@@ -124,6 +124,18 @@
124
124
 
125
125
  <li><a href="../BigBench/Output.html">BigBench::Output</a>
126
126
 
127
+ <li><a href="../BigBench/PostProcessor.html">BigBench::PostProcessor</a>
128
+
129
+ <li><a href="../BigBench/PostProcessor/Environment.html">BigBench::PostProcessor::Environment</a>
130
+
131
+ <li><a href="../BigBench/PostProcessor/InvalidProcessor.html">BigBench::PostProcessor::InvalidProcessor</a>
132
+
133
+ <li><a href="../BigBench/PostProcessor/Processor.html">BigBench::PostProcessor::Processor</a>
134
+
135
+ <li><a href="../BigBench/PostProcessor/Statistics.html">BigBench::PostProcessor::Statistics</a>
136
+
137
+ <li><a href="../BigBench/PostProcessor/Test.html">BigBench::PostProcessor::Test</a>
138
+
127
139
  <li><a href="../BigBench/Runner.html">BigBench::Runner</a>
128
140
 
129
141
  <li><a href="../BigBench/Runner/NoBenchmarksDefined.html">BigBench::Runner::NoBenchmarksDefined</a>
@@ -127,6 +127,18 @@
127
127
 
128
128
  <li><a href="../../BigBench/Output.html">BigBench::Output</a>
129
129
 
130
+ <li><a href="../../BigBench/PostProcessor.html">BigBench::PostProcessor</a>
131
+
132
+ <li><a href="../../BigBench/PostProcessor/Environment.html">BigBench::PostProcessor::Environment</a>
133
+
134
+ <li><a href="../../BigBench/PostProcessor/InvalidProcessor.html">BigBench::PostProcessor::InvalidProcessor</a>
135
+
136
+ <li><a href="../../BigBench/PostProcessor/Processor.html">BigBench::PostProcessor::Processor</a>
137
+
138
+ <li><a href="../../BigBench/PostProcessor/Statistics.html">BigBench::PostProcessor::Statistics</a>
139
+
140
+ <li><a href="../../BigBench/PostProcessor/Test.html">BigBench::PostProcessor::Test</a>
141
+
130
142
  <li><a href="../../BigBench/Runner.html">BigBench::Runner</a>
131
143
 
132
144
  <li><a href="../../BigBench/Runner/NoBenchmarksDefined.html">BigBench::Runner::NoBenchmarksDefined</a>
@@ -127,6 +127,18 @@
127
127
 
128
128
  <li><a href="../../BigBench/Output.html">BigBench::Output</a>
129
129
 
130
+ <li><a href="../../BigBench/PostProcessor.html">BigBench::PostProcessor</a>
131
+
132
+ <li><a href="../../BigBench/PostProcessor/Environment.html">BigBench::PostProcessor::Environment</a>
133
+
134
+ <li><a href="../../BigBench/PostProcessor/InvalidProcessor.html">BigBench::PostProcessor::InvalidProcessor</a>
135
+
136
+ <li><a href="../../BigBench/PostProcessor/Processor.html">BigBench::PostProcessor::Processor</a>
137
+
138
+ <li><a href="../../BigBench/PostProcessor/Statistics.html">BigBench::PostProcessor::Statistics</a>
139
+
140
+ <li><a href="../../BigBench/PostProcessor/Test.html">BigBench::PostProcessor::Test</a>
141
+
130
142
  <li><a href="../../BigBench/Runner.html">BigBench::Runner</a>
131
143
 
132
144
  <li><a href="../../BigBench/Runner/NoBenchmarksDefined.html">BigBench::Runner::NoBenchmarksDefined</a>
@@ -117,6 +117,18 @@
117
117
 
118
118
  <li><a href="../BigBench/Output.html">BigBench::Output</a>
119
119
 
120
+ <li><a href="../BigBench/PostProcessor.html">BigBench::PostProcessor</a>
121
+
122
+ <li><a href="../BigBench/PostProcessor/Environment.html">BigBench::PostProcessor::Environment</a>
123
+
124
+ <li><a href="../BigBench/PostProcessor/InvalidProcessor.html">BigBench::PostProcessor::InvalidProcessor</a>
125
+
126
+ <li><a href="../BigBench/PostProcessor/Processor.html">BigBench::PostProcessor::Processor</a>
127
+
128
+ <li><a href="../BigBench/PostProcessor/Statistics.html">BigBench::PostProcessor::Statistics</a>
129
+
130
+ <li><a href="../BigBench/PostProcessor/Test.html">BigBench::PostProcessor::Test</a>
131
+
120
132
  <li><a href="../BigBench/Runner.html">BigBench::Runner</a>
121
133
 
122
134
  <li><a href="../BigBench/Runner/NoBenchmarksDefined.html">BigBench::Runner::NoBenchmarksDefined</a>