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
@@ -0,0 +1,123 @@
1
+ module BigBench
2
+ module PostProcessor
3
+ module Statistics
4
+
5
+ def self.run!
6
+ calculate
7
+ puts "\nBigBench Statistics"
8
+ puts Hirb::Helpers::Table.render results, :fields => [:name, :value, :percent], :header_filter => :capitalize
9
+ end
10
+
11
+ private
12
+
13
+ def self.calculate
14
+
15
+ # Prepare Variables
16
+ @total = {
17
+ :requests => 0,
18
+ :duration => 0,
19
+ :errors => 0,
20
+ :status_codes => {},
21
+ :http_methods => {},
22
+ :url_paths => {}
23
+ }
24
+
25
+ @average = {
26
+ :requests_per_second => 0,
27
+ :duration_in_ms => 0,
28
+ :errors_in_percent => 0,
29
+ :status_codes_in_percent => {},
30
+ :http_methods_in_percent => {},
31
+ :url_paths_in_percent => {}
32
+ }
33
+
34
+ @max = {
35
+ :duration_in_ms => 0
36
+ }
37
+
38
+ @min = {
39
+ :duration_in_ms => 9_999_999
40
+ }
41
+
42
+ # Calculate Values
43
+ each_tracking do |tracking|
44
+ @total[:requests] += 1
45
+ @total[:duration] += tracking[:duration]
46
+ @total[:errors] += 1 unless tracking[:status].to_i == 200
47
+
48
+ @total[:status_codes][tracking[:status]] = 0 unless @total[:status_codes].key?(tracking[:status])
49
+ @total[:status_codes][tracking[:status]] += 1
50
+
51
+ @total[:http_methods][tracking[:method]] = 0 unless @total[:http_methods].key?(tracking[:method])
52
+ @total[:http_methods][tracking[:method]] += 1
53
+
54
+ @total[:url_paths][tracking[:path]] = 0 unless @total[:url_paths].key?(tracking[:path])
55
+ @total[:url_paths][tracking[:path]] += 1
56
+
57
+ @max[:duration_in_ms] = tracking[:duration] if tracking[:duration] > @max[:duration_in_ms]
58
+ @min[:duration_in_ms] = tracking[:duration] if tracking[:duration] < @min[:duration_in_ms]
59
+ end
60
+
61
+ @average[:requests_per_second] = @total[:requests] / BigBench.config.duration
62
+ @average[:duration_in_ms] = @total[:duration] / @total[:requests]
63
+ @average[:errors_in_percent] = (@total[:errors].to_f / @total[:requests].to_f) * 100
64
+ @total[:status_codes].each{ |status, count| @average[:status_codes_in_percent][status] = (count.to_f / @total[:requests].to_f) * 100 }
65
+ @total[:http_methods].each{ |method, count| @average[:http_methods_in_percent][method] = (count.to_f / @total[:requests].to_f) * 100 }
66
+ @total[:url_paths].each{ |path, count| @average[:url_paths_in_percent][path] = (count.to_f / @total[:requests].to_f) * 100 }
67
+ end
68
+
69
+ # Combines the calculated values to a list
70
+ def self.results
71
+ [
72
+ {
73
+ :name => "Total Requests:",
74
+ :value => "#{number_with_delimiter @total[:requests]}",
75
+ :percent => "100%"
76
+ },
77
+ {
78
+ :name => "Total Errors:",
79
+ :value => "#{number_with_delimiter @total[:errors]}",
80
+ :percent => "#{format "%3.1f", @average[:errors_in_percent]}%"
81
+ },
82
+ {},
83
+ {
84
+ :name => "Average Requests/Second:",
85
+ :value => "#{number_with_delimiter @average[:requests_per_second]} Requests/sec"
86
+ },
87
+ {
88
+ :name => "Average Request Duration:",
89
+ :value => "#{number_with_delimiter @average[:duration_in_ms]} ms"
90
+ },
91
+ {},
92
+ {
93
+ :name => "Max Request Duration:",
94
+ :value => "#{number_with_delimiter @max[:duration_in_ms]} ms"
95
+ },
96
+ {
97
+ :name => "Min Request Duration:",
98
+ :value => "#{number_with_delimiter @min[:duration_in_ms]} ms"
99
+ }
100
+ ] +
101
+ add_list("Status Codes:", :status_codes, :status_codes_in_percent) +
102
+ add_list("HTTP Methods", :http_methods, :http_methods_in_percent) +
103
+ add_list("URL Paths:", :url_paths, :url_paths_in_percent)
104
+ end
105
+
106
+ # Builds a list for the output table
107
+ def self.add_list(name, element, element_percent)
108
+ [
109
+ {},
110
+ { :name => name }
111
+ ] +
112
+ @total[element].map{ |element, count|
113
+ {
114
+ :name => " #{element}",
115
+ :value => "#{count}",
116
+ :percent => "#{format "%3.1f", @average[element_percent][element]}%"
117
+ }
118
+ }
119
+ end
120
+
121
+ end
122
+ end
123
+ end
@@ -1,3 +1,3 @@
1
1
  module BigBench
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -13,5 +13,6 @@ RSpec.configure do |config|
13
13
  config.before(:each) {
14
14
  BigBench::Configuration.reset!
15
15
  BigBench::Benchmark.reset!
16
+ BigBench::PostProcessor.reset!
16
17
  }
17
18
  end
@@ -0,0 +1,71 @@
1
+ require_relative "./helpers"
2
+
3
+ describe BigBench::PostProcessor do
4
+
5
+ it "should raise an exception for empty or unfound processors" do
6
+ lambda{ BigBench.post_process }.should raise_exception BigBench::PostProcessor::InvalidProcessor
7
+ end
8
+
9
+ it "should allow to add and run post processor blocks blocks" do
10
+ BigBench.post_process do
11
+ "Finished test"
12
+ end
13
+
14
+ BigBench.post_process do
15
+ "Doing something useful"
16
+ end
17
+
18
+ module BigBench::PostProcessor::Test
19
+ def self.run!
20
+ "Post Processor Module"
21
+ end
22
+ end
23
+
24
+ BigBench.post_process BigBench::PostProcessor::Test
25
+
26
+ BigBench.post_processors.size.should == 3
27
+
28
+ BigBench.post_processors[0].run!.should == "Finished test"
29
+ BigBench.post_processors[1].run!.should == "Doing something useful"
30
+ BigBench.post_processors[2].run!.should == "Post Processor Module"
31
+ end
32
+
33
+ it "should run all post processors" do
34
+
35
+ BigBench.post_process do
36
+ "Finished test"
37
+ end
38
+
39
+ BigBench.post_process do
40
+ "Doing something useful"
41
+ end
42
+
43
+ module BigBench::PostProcessor::Test
44
+ def self.run!
45
+ "Post Processor Module"
46
+ end
47
+ end
48
+ BigBench.post_process BigBench::PostProcessor::Test
49
+
50
+ BigBench::PostProcessor.run!.should == BigBench.post_processors
51
+
52
+ end
53
+
54
+ it "should offer a tracking iterator" do
55
+
56
+ BigBench.config.output = "spec/tests/result.ljson"
57
+
58
+ module BigBench::PostProcessor::Test
59
+ def self.run!
60
+ counter = 0
61
+ each_tracking { |tracking| counter += 1 }
62
+ counter
63
+ end
64
+ end
65
+ BigBench.post_process BigBench::PostProcessor::Test
66
+
67
+ BigBench.post_processors.first.run!.should == 43
68
+
69
+ end
70
+
71
+ end
@@ -0,0 +1,14 @@
1
+ require_relative "../helpers"
2
+
3
+ describe BigBench::PostProcessor::Statistics do
4
+
5
+ it "should run and create the following statistics" do
6
+
7
+ BigBench.config.output = "spec/tests/result.ljson"
8
+ BigBench.post_process :statistics
9
+
10
+ lambda{ BigBench.post_processors.first.run! }.should_not raise_exception
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,43 @@
1
+ {"elapsed":2.502132,"start":1333986292.1755981,"stop":1333986293.618884,"duration":1443,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
2
+ {"elapsed":4.275389,"start":1333986294.371367,"stop":1333986295.392141,"duration":1020,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
3
+ {"elapsed":5.306626,"start":1333986295.637063,"stop":1333986296.423378,"duration":786,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
4
+ {"elapsed":6.643666,"start":1333986296.834964,"stop":1333986297.760418,"duration":925,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
5
+ {"elapsed":8.127475,"start":1333986298.2454379,"stop":1333986299.2442272,"duration":998,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
6
+ {"elapsed":9.703017,"start":1333986299.750936,"stop":1333986300.8197691,"duration":1068,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
7
+ {"elapsed":11.513122,"start":1333986301.381033,"stop":1333986302.629874,"duration":1248,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
8
+ {"elapsed":12.721786,"start":1333986303.243708,"stop":1333986303.838538,"duration":594,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
9
+ {"elapsed":13.73535,"start":1333986304.1656692,"stop":1333986304.8521018,"duration":686,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
10
+ {"elapsed":14.938443,"start":1333986305.219116,"stop":1333986306.0551949,"duration":836,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
11
+ {"elapsed":16.294044,"start":1333986306.49764,"stop":1333986307.410796,"duration":913,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
12
+ {"elapsed":16.41464,"start":1333986307.437985,"stop":1333986307.531392,"duration":93,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
13
+ {"elapsed":16.524551,"start":1333986307.5588028,"stop":1333986307.641303,"duration":82,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
14
+ {"elapsed":16.640192,"start":1333986307.668624,"stop":1333986307.756944,"duration":88,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
15
+ {"elapsed":16.760833,"start":1333986307.787391,"stop":1333986307.877585,"duration":90,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
16
+ {"elapsed":16.878825,"start":1333986307.9076228,"stop":1333986307.995577,"duration":87,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
17
+ {"elapsed":16.995504,"start":1333986308.022909,"stop":1333986308.112256,"duration":89,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
18
+ {"elapsed":17.113787,"start":1333986308.139185,"stop":1333986308.230539,"duration":91,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
19
+ {"elapsed":17.232144,"start":1333986308.261399,"stop":1333986308.348896,"duration":87,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
20
+ {"elapsed":17.345458,"start":1333986308.376383,"stop":1333986308.46221,"duration":85,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
21
+ {"elapsed":17.459344,"start":1333986308.490112,"stop":1333986308.576096,"duration":85,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
22
+ {"elapsed":17.57588,"start":1333986308.605825,"stop":1333986308.692632,"duration":86,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
23
+ {"elapsed":17.687035,"start":1333986308.7194262,"stop":1333986308.803787,"duration":84,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
24
+ {"elapsed":17.801004,"start":1333986308.831064,"stop":1333986308.9177558,"duration":86,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
25
+ {"elapsed":17.920141,"start":1333986308.950012,"stop":1333986309.036893,"duration":86,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
26
+ {"elapsed":18.037123,"start":1333986309.0648289,"stop":1333986309.1538749,"duration":89,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
27
+ {"elapsed":18.153809,"start":1333986309.182177,"stop":1333986309.270561,"duration":88,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
28
+ {"elapsed":18.273781,"start":1333986309.300137,"stop":1333986309.3905332,"duration":90,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
29
+ {"elapsed":18.390928,"start":1333986309.418423,"stop":1333986309.50768,"duration":89,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
30
+ {"elapsed":18.507181,"start":1333986309.5362098,"stop":1333986309.6239328,"duration":87,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
31
+ {"elapsed":18.624433,"start":1333986309.650999,"stop":1333986309.741185,"duration":90,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
32
+ {"elapsed":18.752505,"start":1333986309.7682931,"stop":1333986309.869257,"duration":100,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
33
+ {"elapsed":18.870098,"start":1333986309.900154,"stop":1333986309.98685,"duration":86,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
34
+ {"elapsed":18.98567,"start":1333986310.015139,"stop":1333986310.102422,"duration":87,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
35
+ {"elapsed":19.102123,"start":1333986310.132919,"stop":1333986310.218875,"duration":85,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"403"}
36
+ {"elapsed":19.218279,"start":1333986310.247736,"stop":1333986310.335031,"duration":87,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
37
+ {"elapsed":19.361961,"start":1333986310.363012,"stop":1333986310.478713,"duration":115,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
38
+ {"elapsed":19.477817,"start":1333986310.508875,"stop":1333986310.594569,"duration":85,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"404"}
39
+ {"elapsed":19.591187,"start":1333986310.622381,"stop":1333986310.7079391,"duration":85,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
40
+ {"elapsed":19.708906,"start":1333986310.7354271,"stop":1333986310.825658,"duration":90,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
41
+ {"elapsed":19.821122,"start":1333986310.8533351,"stop":1333986310.9378738,"duration":84,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
42
+ {"elapsed":19.935828,"start":1333986310.969072,"stop":1333986311.05258,"duration":83,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
43
+ {"elapsed":20.059597,"start":1333986311.085511,"stop":1333986311.176349,"duration":90,"benchmark":"index page","url":"http://www.google.de/","path":"/","method":"get","status":"200"}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigbench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-11 00:00:00.000000000 Z
12
+ date: 2012-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70208090432920 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,47 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70208090432920
25
- - !ruby/object:Gem::Dependency
26
- name: active_support
27
- requirement: &70208090448540 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
28
25
  none: false
29
26
  requirements:
30
27
  - - ! '>='
31
28
  - !ruby/object:Gem::Version
32
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 3.2.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70208090448540
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.2.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: actionpack
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 3.2.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.0
36
62
  - !ruby/object:Gem::Dependency
37
63
  name: rack
38
- requirement: &70208090447540 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
39
65
  none: false
40
66
  requirements:
41
67
  - - ! '>='
@@ -43,10 +69,15 @@ dependencies:
43
69
  version: '0'
44
70
  type: :development
45
71
  prerelease: false
46
- version_requirements: *70208090447540
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
47
78
  - !ruby/object:Gem::Dependency
48
79
  name: thin
49
- requirement: &70208090446660 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
50
81
  none: false
51
82
  requirements:
52
83
  - - ! '>='
@@ -54,10 +85,15 @@ dependencies:
54
85
  version: '0'
55
86
  type: :development
56
87
  prerelease: false
57
- version_requirements: *70208090446660
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
58
94
  - !ruby/object:Gem::Dependency
59
95
  name: eventmachine
60
- requirement: &70208090445720 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
61
97
  none: false
62
98
  requirements:
63
99
  - - ! '>='
@@ -65,10 +101,15 @@ dependencies:
65
101
  version: '0'
66
102
  type: :development
67
103
  prerelease: false
68
- version_requirements: *70208090445720
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
69
110
  - !ruby/object:Gem::Dependency
70
111
  name: em-http-request
71
- requirement: &70208090444280 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
72
113
  none: false
73
114
  requirements:
74
115
  - - ! '>='
@@ -76,10 +117,15 @@ dependencies:
76
117
  version: '0'
77
118
  type: :development
78
119
  prerelease: false
79
- version_requirements: *70208090444280
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
80
126
  - !ruby/object:Gem::Dependency
81
127
  name: sinatra
82
- requirement: &70208090443680 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
83
129
  none: false
84
130
  requirements:
85
131
  - - ! '>='
@@ -87,21 +133,47 @@ dependencies:
87
133
  version: '0'
88
134
  type: :development
89
135
  prerelease: false
90
- version_requirements: *70208090443680
91
- - !ruby/object:Gem::Dependency
92
- name: redis
93
- requirement: &70208090443100 !ruby/object:Gem::Requirement
136
+ version_requirements: !ruby/object:Gem::Requirement
94
137
  none: false
95
138
  requirements:
96
139
  - - ! '>='
97
140
  - !ruby/object:Gem::Version
98
141
  version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: activesupport
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: 3.2.0
99
150
  type: :runtime
100
151
  prerelease: false
101
- version_requirements: *70208090443100
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: 3.2.0
102
158
  - !ruby/object:Gem::Dependency
103
- name: active_support
104
- requirement: &70208090442180 !ruby/object:Gem::Requirement
159
+ name: actionpack
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: 3.2.0
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: 3.2.0
174
+ - !ruby/object:Gem::Dependency
175
+ name: redis
176
+ requirement: !ruby/object:Gem::Requirement
105
177
  none: false
106
178
  requirements:
107
179
  - - ! '>='
@@ -109,10 +181,15 @@ dependencies:
109
181
  version: '0'
110
182
  type: :runtime
111
183
  prerelease: false
112
- version_requirements: *70208090442180
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
113
190
  - !ruby/object:Gem::Dependency
114
191
  name: eventmachine
115
- requirement: &70208090440740 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
116
193
  none: false
117
194
  requirements:
118
195
  - - ! '>='
@@ -120,10 +197,15 @@ dependencies:
120
197
  version: '0'
121
198
  type: :runtime
122
199
  prerelease: false
123
- version_requirements: *70208090440740
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
124
206
  - !ruby/object:Gem::Dependency
125
207
  name: em-http-request
126
- requirement: &70208090456360 !ruby/object:Gem::Requirement
208
+ requirement: !ruby/object:Gem::Requirement
127
209
  none: false
128
210
  requirements:
129
211
  - - ! '>='
@@ -131,7 +213,28 @@ dependencies:
131
213
  version: '0'
132
214
  type: :runtime
133
215
  prerelease: false
134
- version_requirements: *70208090456360
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: hirb
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
135
238
  description: Setup a network of bots only waiting to attack a few lonesome servers
136
239
  and force them to their limits
137
240
  email:
@@ -163,6 +266,12 @@ files:
163
266
  - doc/BigBench/Fragment.html
164
267
  - doc/BigBench/Fragment/Fragment.html
165
268
  - doc/BigBench/Output.html
269
+ - doc/BigBench/PostProcessor.html
270
+ - doc/BigBench/PostProcessor/Environment.html
271
+ - doc/BigBench/PostProcessor/InvalidProcessor.html
272
+ - doc/BigBench/PostProcessor/Processor.html
273
+ - doc/BigBench/PostProcessor/Statistics.html
274
+ - doc/BigBench/PostProcessor/Test.html
166
275
  - doc/BigBench/Runner.html
167
276
  - doc/BigBench/Runner/NoBenchmarksDefined.html
168
277
  - doc/BigBench/Store.html
@@ -221,6 +330,8 @@ files:
221
330
  - lib/bigbench/help/executor.txt
222
331
  - lib/bigbench/initializers.rb
223
332
  - lib/bigbench/output.rb
333
+ - lib/bigbench/post_processor.rb
334
+ - lib/bigbench/post_processor/statistics.rb
224
335
  - lib/bigbench/runner.rb
225
336
  - lib/bigbench/store.rb
226
337
  - lib/bigbench/tracker.rb
@@ -233,10 +344,13 @@ files:
233
344
  - spec/helpers.rb
234
345
  - spec/lib/test_web_server.rb
235
346
  - spec/looper_spec.rb
347
+ - spec/post_processor_spec.rb
348
+ - spec/post_processors/statistics_spec.rb
236
349
  - spec/runner_spec.rb
237
350
  - spec/store_spec.rb
238
351
  - spec/tests/local.rb
239
352
  - spec/tests/local_invalid.rb
353
+ - spec/tests/result.ljson
240
354
  - spec/tracker_spec.rb
241
355
  - spec/webserver_spec.rb
242
356
  homepage: http://southdesign.github.com/bigbench
@@ -261,7 +375,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
261
375
  version: '0'
262
376
  requirements: []
263
377
  rubyforge_project: bigbench
264
- rubygems_version: 1.8.15
378
+ rubygems_version: 1.8.21
265
379
  signing_key:
266
380
  specification_version: 3
267
381
  summary: A large scale ruby penetration tool
@@ -274,9 +388,12 @@ test_files:
274
388
  - spec/helpers.rb
275
389
  - spec/lib/test_web_server.rb
276
390
  - spec/looper_spec.rb
391
+ - spec/post_processor_spec.rb
392
+ - spec/post_processors/statistics_spec.rb
277
393
  - spec/runner_spec.rb
278
394
  - spec/store_spec.rb
279
395
  - spec/tests/local.rb
280
396
  - spec/tests/local_invalid.rb
397
+ - spec/tests/result.ljson
281
398
  - spec/tracker_spec.rb
282
399
  - spec/webserver_spec.rb